--- a/doc-src/ROOT Mon Aug 27 16:10:54 2012 +0200
+++ b/doc-src/ROOT Mon Aug 27 16:48:41 2012 +0200
@@ -104,9 +104,8 @@
Logic
Isar
-session System (doc) in "System/Thy" = Pure +
- options [browser_info = false, document = false,
- document_dump = document, document_dump_mode = "tex"]
+session System (doc) in "System" = Pure +
+ options [document_variants = "system", thy_output_source]
theories
Basics
Interfaces
@@ -114,6 +113,18 @@
Presentation
Scala
Misc
+ files
+ "../IsarRef/style.sty"
+ "../iman.sty"
+ "../extra.sty"
+ "../ttbox.sty"
+ "../isar.sty"
+ "../underscore.sty"
+ "../manual.bib"
+ "document/browser_screenshot.eps"
+ "document/browser_screenshot.png"
+ "document/build"
+ "document/root.tex"
session Tutorial (doc) in "TutorialI" = HOL +
options [browser_info = false, document = false,
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/doc-src/System/Base.thy Mon Aug 27 16:48:41 2012 +0200
@@ -0,0 +1,8 @@
+theory Base
+imports Pure
+begin
+
+ML_file "../antiquote_setup.ML"
+setup Antiquote_Setup.setup
+
+end
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/doc-src/System/Basics.thy Mon Aug 27 16:48:41 2012 +0200
@@ -0,0 +1,554 @@
+theory Basics
+imports Base
+begin
+
+chapter {* The Isabelle system environment *}
+
+text {* This manual describes Isabelle together with related tools and
+ user interfaces as seen from a system oriented view. See also the
+ \emph{Isabelle/Isar Reference Manual}~\cite{isabelle-isar-ref} for
+ the actual Isabelle input language and related concepts, and
+ \emph{The Isabelle/Isar Implementation
+ Manual}~\cite{isabelle-implementation} for the main concepts of the
+ underlying implementation in Isabelle/ML.
+
+ \medskip The Isabelle system environment provides the following
+ basic infrastructure to integrate tools smoothly.
+
+ \begin{enumerate}
+
+ \item The \emph{Isabelle settings} mechanism provides process
+ environment variables to all Isabelle executables (including tools
+ and user interfaces).
+
+ \item The raw \emph{Isabelle process} (@{executable_ref
+ "isabelle-process"}) runs logic sessions either interactively or in
+ batch mode. In particular, this view abstracts over the invocation
+ of the actual ML system to be used. Regular users rarely need to
+ care about the low-level process.
+
+ \item The main \emph{Isabelle tool wrapper} (@{executable_ref
+ isabelle}) provides a generic startup environment Isabelle related
+ utilities, user interfaces etc. Such tools automatically benefit
+ from the settings mechanism.
+
+ \end{enumerate}
+*}
+
+
+section {* Isabelle settings \label{sec:settings} *}
+
+text {*
+ The Isabelle system heavily depends on the \emph{settings
+ mechanism}\indexbold{settings}. Essentially, this is a statically
+ scoped collection of environment variables, such as @{setting
+ ISABELLE_HOME}, @{setting ML_SYSTEM}, @{setting ML_HOME}. These
+ variables are \emph{not} intended to be set directly from the shell,
+ though. Isabelle employs a somewhat more sophisticated scheme of
+ \emph{settings files} --- one for site-wide defaults, another for
+ additional user-specific modifications. With all configuration
+ variables in clearly defined places, this scheme is more
+ maintainable and user-friendly than global shell environment
+ variables.
+
+ In particular, we avoid the typical situation where prospective
+ users of a software package are told to put several things into
+ their shell startup scripts, before being able to actually run the
+ program. Isabelle requires none such administrative chores of its
+ end-users --- the executables can be invoked straight away.
+ Occasionally, users would still want to put the @{file
+ "$ISABELLE_HOME/bin"} directory into their shell's search path, but
+ this is not required.
+*}
+
+
+subsection {* Bootstrapping the environment \label{sec:boot} *}
+
+text {* Isabelle executables need to be run within a proper settings
+ environment. This is bootstrapped as described below, on the first
+ invocation of one of the outer wrapper scripts (such as
+ @{executable_ref isabelle}). This happens only once for each
+ process tree, i.e.\ the environment is passed to subprocesses
+ according to regular Unix conventions.
+
+ \begin{enumerate}
+
+ \item The special variable @{setting_def ISABELLE_HOME} is
+ determined automatically from the location of the binary that has
+ been run.
+
+ You should not try to set @{setting ISABELLE_HOME} manually. Also
+ note that the Isabelle executables either have to be run from their
+ original location in the distribution directory, or via the
+ executable objects created by the @{tool install} tool. Symbolic
+ links are admissible, but a plain copy of the @{file
+ "$ISABELLE_HOME/bin"} files will not work!
+
+ \item The file @{file "$ISABELLE_HOME/etc/settings"} is run as a
+ @{executable_ref bash} shell script with the auto-export option for
+ variables enabled.
+
+ This file holds a rather long list of shell variable assigments,
+ thus providing the site-wide default settings. The Isabelle
+ distribution already contains a global settings file with sensible
+ defaults for most variables. When installing the system, only a few
+ of these may have to be adapted (probably @{setting ML_SYSTEM}
+ etc.).
+
+ \item The file @{verbatim "$ISABELLE_HOME_USER/etc/settings"} (if it
+ exists) is run in the same way as the site default settings. Note
+ that the variable @{setting ISABELLE_HOME_USER} has already been set
+ before --- usually to something like @{verbatim
+ "$USER_HOME/.isabelle/IsabelleXXXX"}.
+
+ Thus individual users may override the site-wide defaults. See also
+ file @{file "$ISABELLE_HOME/etc/user-settings.sample"} in the
+ distribution. Typically, a user settings file would contain only a
+ few lines, just the assigments that are really changed. One should
+ definitely \emph{not} start with a full copy the basic @{file
+ "$ISABELLE_HOME/etc/settings"}. This could cause very annoying
+ maintainance problems later, when the Isabelle installation is
+ updated or changed otherwise.
+
+ \end{enumerate}
+
+ Since settings files are regular GNU @{executable_def bash} scripts,
+ one may use complex shell commands, such as @{verbatim "if"} or
+ @{verbatim "case"} statements to set variables depending on the
+ system architecture or other environment variables. Such advanced
+ features should be added only with great care, though. In
+ particular, external environment references should be kept at a
+ minimum.
+
+ \medskip A few variables are somewhat special:
+
+ \begin{itemize}
+
+ \item @{setting_def ISABELLE_PROCESS} and @{setting_def ISABELLE_TOOL} are set
+ automatically to the absolute path names of the @{executable
+ "isabelle-process"} and @{executable isabelle} executables,
+ respectively.
+
+ \item @{setting_ref ISABELLE_OUTPUT} will have the identifiers of
+ the Isabelle distribution (cf.\ @{setting ISABELLE_IDENTIFIER}) and
+ the ML system (cf.\ @{setting ML_IDENTIFIER}) appended automatically
+ to its value.
+
+ \end{itemize}
+
+ \medskip Note that the settings environment may be inspected with
+ the @{tool getenv} tool. This might help to figure out the effect
+ of complex settings scripts. *}
+
+
+subsection {* Common variables *}
+
+text {*
+ This is a reference of common Isabelle settings variables. Note that
+ the list is somewhat open-ended. Third-party utilities or interfaces
+ may add their own selection. Variables that are special in some
+ sense are marked with @{text "\<^sup>*"}.
+
+ \begin{description}
+
+ \item[@{setting_def USER_HOME}@{text "\<^sup>*"}] Is the cross-platform
+ user home directory. On Unix systems this is usually the same as
+ @{setting HOME}, but on Windows it is the regular home directory of
+ the user, not the one of within the Cygwin root
+ file-system.\footnote{Cygwin itself offers another choice whether
+ its HOME should point to the \texttt{/home} directory tree or the
+ Windows user home.}
+
+ \item[@{setting_def ISABELLE_HOME}@{text "\<^sup>*"}] is the location of the
+ top-level Isabelle distribution directory. This is automatically
+ determined from the Isabelle executable that has been invoked. Do
+ not attempt to set @{setting ISABELLE_HOME} yourself from the shell!
+
+ \item[@{setting_def ISABELLE_HOME_USER}] is the user-specific
+ counterpart of @{setting ISABELLE_HOME}. The default value is
+ relative to @{verbatim "$USER_HOME/.isabelle"}, under rare
+ circumstances this may be changed in the global setting file.
+ Typically, the @{setting ISABELLE_HOME_USER} directory mimics
+ @{setting ISABELLE_HOME} to some extend. In particular, site-wide
+ defaults may be overridden by a private @{verbatim
+ "$ISABELLE_HOME_USER/etc/settings"}.
+
+ \item[@{setting_def ISABELLE_PLATFORM}@{text "\<^sup>*"}] is automatically
+ set to a symbolic identifier for the underlying hardware and
+ operating system. The Isabelle platform identification always
+ refers to the 32 bit variant, even this is a 64 bit machine. Note
+ that the ML or Java runtime may have a different idea, depending on
+ which binaries are actually run.
+
+ \item[@{setting_def ISABELLE_PLATFORM64}@{text "\<^sup>*"}] is similar to
+ @{setting ISABELLE_PLATFORM} but refers to the proper 64 bit variant
+ on a platform that supports this; the value is empty for 32 bit.
+ Note that the following bash expression (including the quotes)
+ prefers the 64 bit platform, if that is available:
+
+ @{verbatim [display] "\"${ISABELLE_PLATFORM64:-$ISABELLE_PLATFORM}\""}
+
+ \item[@{setting_def ISABELLE_PROCESS}@{text "\<^sup>*"}, @{setting
+ ISABELLE_TOOL}@{text "\<^sup>*"}] are automatically set to the full path
+ names of the @{executable "isabelle-process"} and @{executable
+ isabelle} executables, respectively. Thus other tools and scripts
+ need not assume that the @{file "$ISABELLE_HOME/bin"} directory is
+ on the current search path of the shell.
+
+ \item[@{setting_def ISABELLE_IDENTIFIER}@{text "\<^sup>*"}] refers
+ to the name of this Isabelle distribution, e.g.\ ``@{verbatim
+ Isabelle2012}''.
+
+ \item[@{setting_def ML_SYSTEM}, @{setting_def ML_HOME},
+ @{setting_def ML_OPTIONS}, @{setting_def ML_PLATFORM}, @{setting_def
+ ML_IDENTIFIER}@{text "\<^sup>*"}] specify the underlying ML system
+ to be used for Isabelle. There is only a fixed set of admissable
+ @{setting ML_SYSTEM} names (see the @{file
+ "$ISABELLE_HOME/etc/settings"} file of the distribution).
+
+ The actual compiler binary will be run from the directory @{setting
+ ML_HOME}, with @{setting ML_OPTIONS} as first arguments on the
+ command line. The optional @{setting ML_PLATFORM} may specify the
+ binary format of ML heap images, which is useful for cross-platform
+ installations. The value of @{setting ML_IDENTIFIER} is
+ automatically obtained by composing the values of @{setting
+ ML_SYSTEM}, @{setting ML_PLATFORM} and the Isabelle version values.
+
+ \item[@{setting_def ISABELLE_JDK_HOME}] needs to point to a full JDK
+ (Java Development Kit) installation with @{verbatim javac} and
+ @{verbatim jar} executables. This is essential for Isabelle/Scala
+ and other JVM-based tools to work properly. Note that conventional
+ @{verbatim JAVA_HOME} usually points to the JRE (Java Runtime
+ Environment), not JDK.
+
+ \item[@{setting_def ISABELLE_PATH}] is a list of directories
+ (separated by colons) where Isabelle logic images may reside. When
+ looking up heaps files, the value of @{setting ML_IDENTIFIER} is
+ appended to each component internally.
+
+ \item[@{setting_def ISABELLE_OUTPUT}@{text "\<^sup>*"}] is a
+ directory where output heap files should be stored by default. The
+ ML system and Isabelle version identifier is appended here, too.
+
+ \item[@{setting_def ISABELLE_BROWSER_INFO}] is the directory where
+ theory browser information (HTML text, graph data, and printable
+ documents) is stored (see also \secref{sec:info}). The default
+ value is @{verbatim "$ISABELLE_HOME_USER/browser_info"}.
+
+ \item[@{setting_def ISABELLE_LOGIC}] specifies the default logic to
+ load if none is given explicitely by the user. The default value is
+ @{verbatim HOL}.
+
+ \item[@{setting_def ISABELLE_LINE_EDITOR}] specifies the default
+ line editor for the @{tool_ref tty} interface.
+
+ \item[@{setting_def ISABELLE_USEDIR_OPTIONS}] is implicitly prefixed
+ to the command line of any @{tool_ref usedir} invocation. This
+ typically contains compilation options for object-logics --- @{tool
+ usedir} is the basic tool for managing logic sessions (cf.\ the
+ @{verbatim IsaMakefile}s in the distribution).
+
+ \item[@{setting_def ISABELLE_LATEX}, @{setting_def
+ ISABELLE_PDFLATEX}, @{setting_def ISABELLE_BIBTEX}, @{setting_def
+ ISABELLE_DVIPS}] refer to {\LaTeX} related tools for Isabelle
+ document preparation (see also \secref{sec:tool-latex}).
+
+ \item[@{setting_def ISABELLE_TOOLS}] is a colon separated list of
+ directories that are scanned by @{executable isabelle} for external
+ utility programs (see also \secref{sec:isabelle-tool}).
+
+ \item[@{setting_def ISABELLE_DOCS}] is a colon separated list of
+ directories with documentation files.
+
+ \item[@{setting_def ISABELLE_DOC_FORMAT}] specifies the preferred
+ document format, typically @{verbatim dvi} or @{verbatim pdf}.
+
+ \item[@{setting_def DVI_VIEWER}] specifies the command to be used
+ for displaying @{verbatim dvi} files.
+
+ \item[@{setting_def PDF_VIEWER}] specifies the command to be used
+ for displaying @{verbatim pdf} files.
+
+ \item[@{setting_def PRINT_COMMAND}] specifies the standard printer
+ spool command, which is expected to accept @{verbatim ps} files.
+
+ \item[@{setting_def ISABELLE_TMP_PREFIX}@{text "\<^sup>*"}] is the
+ prefix from which any running @{executable "isabelle-process"}
+ derives an individual directory for temporary files. The default is
+ somewhere in @{verbatim "/tmp"}.
+
+ \end{description}
+*}
+
+
+subsection {* Additional components \label{sec:components} *}
+
+text {* Any directory may be registered as an explicit \emph{Isabelle
+ component}. The general layout conventions are that of the main
+ Isabelle distribution itself, and the following two files (both
+ optional) have a special meaning:
+
+ \begin{itemize}
+
+ \item @{verbatim "etc/settings"} holds additional settings that are
+ initialized when bootstrapping the overall Isabelle environment,
+ cf.\ \secref{sec:boot}. As usual, the content is interpreted as a
+ @{verbatim bash} script. It may refer to the component's enclosing
+ directory via the @{verbatim "COMPONENT"} shell variable.
+
+ For example, the following setting allows to refer to files within
+ the component later on, without having to hardwire absolute paths:
+
+\begin{ttbox}
+MY_COMPONENT_HOME="$COMPONENT"
+\end{ttbox}
+
+ Components can also add to existing Isabelle settings such as
+ @{setting_def ISABELLE_TOOLS}, in order to provide
+ component-specific tools that can be invoked by end-users. For
+ example:
+
+\begin{ttbox}
+ISABELLE_TOOLS="$ISABELLE_TOOLS:$COMPONENT/lib/Tools"
+\end{ttbox}
+
+ \item @{verbatim "etc/components"} holds a list of further
+ sub-components of the same structure. The directory specifications
+ given here can be either absolute (with leading @{verbatim "/"}) or
+ relative to the component's main directory.
+
+ \end{itemize}
+
+ The root of component initialization is @{setting ISABELLE_HOME}
+ itself. After initializing all of its sub-components recursively,
+ @{setting ISABELLE_HOME_USER} is included in the same manner (if
+ that directory exists). This allows to install private components
+ via @{verbatim "$ISABELLE_HOME_USER/etc/components"}, although it is
+ often more convenient to do that programmatically via the
+ \verb,init_component, shell function in the \verb,etc/settings,
+ script of \verb,$ISABELLE_HOME_USER, (or any other component
+ directory). For example:
+\begin{ttbox}
+init_component "$HOME/screwdriver-2.0"
+\end{ttbox}
+
+ This is tolerant wrt.\ missing component directories, but might
+ produce a warning.
+
+ \medskip More complex situations may be addressed by initializing
+ components listed in a given catalog file, relatively to some base
+ directory:
+
+\begin{ttbox}
+init_components "$HOME/my_component_store" "some_catalog_file"
+\end{ttbox}
+
+ The component directories listed in the catalog file are treated as
+ relative to the given base directory.
+
+ See also \secref{sec:tool-components} for some tool-support for
+ resolving components that are formally initialized but not installed
+ yet.
+*}
+
+
+section {* The raw Isabelle process *}
+
+text {*
+ The @{executable_def "isabelle-process"} executable runs bare-bones
+ Isabelle logic sessions --- either interactively or in batch mode.
+ It provides an abstraction over the underlying ML system, and over
+ the actual heap file locations. Its usage is:
+
+\begin{ttbox}
+Usage: isabelle-process [OPTIONS] [INPUT] [OUTPUT]
+
+ Options are:
+ -I startup Isar interaction mode
+ -P startup Proof General interaction mode
+ -S secure mode -- disallow critical operations
+ -T ADDR startup process wrapper, with socket address
+ -W IN:OUT startup process wrapper, with input/output fifos
+ -X startup PGIP interaction mode
+ -e MLTEXT pass MLTEXT to the ML session
+ -f pass 'Session.finish();' to the ML session
+ -m MODE add print mode for output
+ -q non-interactive session
+ -r open heap file read-only
+ -u pass 'use"ROOT.ML";' to the ML session
+ -w reset write permissions on OUTPUT
+
+ INPUT (default "\$ISABELLE_LOGIC") and OUTPUT specify in/out heaps.
+ These are either names to be searched in the Isabelle path, or
+ actual file names (containing at least one /).
+ If INPUT is "RAW_ML_SYSTEM", just start the bare bones ML system.
+\end{ttbox}
+
+ Input files without path specifications are looked up in the
+ @{setting ISABELLE_PATH} setting, which may consist of multiple
+ components separated by colons --- these are tried in the given
+ order with the value of @{setting ML_IDENTIFIER} appended
+ internally. In a similar way, base names are relative to the
+ directory specified by @{setting ISABELLE_OUTPUT}. In any case,
+ actual file locations may also be given by including at least one
+ slash (@{verbatim "/"}) in the name (hint: use @{verbatim "./"} to
+ refer to the current directory).
+*}
+
+
+subsubsection {* Options *}
+
+text {*
+ If the input heap file does not have write permission bits set, or
+ the @{verbatim "-r"} option is given explicitely, then the session
+ started will be read-only. That is, the ML world cannot be
+ committed back into the image file. Otherwise, a writable session
+ enables commits into either the input file, or into another output
+ heap file (if that is given as the second argument on the command
+ line).
+
+ The read-write state of sessions is determined at startup only, it
+ cannot be changed intermediately. Also note that heap images may
+ require considerable amounts of disk space (approximately
+ 50--200~MB). Users are responsible for themselves to dispose their
+ heap files when they are no longer needed.
+
+ \medskip The @{verbatim "-w"} option makes the output heap file
+ read-only after terminating. Thus subsequent invocations cause the
+ logic image to be read-only automatically.
+
+ \medskip Using the @{verbatim "-e"} option, arbitrary ML code may be
+ passed to the Isabelle session from the command line. Multiple
+ @{verbatim "-e"}'s are evaluated in the given order. Strange things
+ may happen when errorneous ML code is provided. Also make sure that
+ the ML commands are terminated properly by semicolon.
+
+ \medskip The @{verbatim "-u"} option is a shortcut for @{verbatim
+ "-e"} passing ``@{verbatim "use \"ROOT.ML\";"}'' to the ML session.
+ The @{verbatim "-f"} option passes ``@{verbatim
+ "Session.finish();"}'', which is intended mainly for administrative
+ purposes.
+
+ \medskip The @{verbatim "-m"} option adds identifiers of print modes
+ to be made active for this session. Typically, this is used by some
+ user interface, e.g.\ to enable output of proper mathematical
+ symbols.
+
+ \medskip Isabelle normally enters an interactive top-level loop
+ (after processing the @{verbatim "-e"} texts). The @{verbatim "-q"}
+ option inhibits interaction, thus providing a pure batch mode
+ facility.
+
+ \medskip The @{verbatim "-I"} option makes Isabelle enter Isar
+ interaction mode on startup, instead of the primitive ML top-level.
+ The @{verbatim "-P"} option configures the top-level loop for
+ interaction with the Proof General user interface, and the
+ @{verbatim "-X"} option enables XML-based PGIP communication.
+
+ \medskip The @{verbatim "-T"} or @{verbatim "-W"} option makes
+ Isabelle enter a special process wrapper for interaction via the
+ Isabelle/Scala layer, see also @{file
+ "~~/src/Pure/System/isabelle_process.scala"}. The protocol between
+ the ML and JVM process is private to the implementation.
+
+ \medskip The @{verbatim "-S"} option makes the Isabelle process more
+ secure by disabling some critical operations, notably runtime
+ compilation and evaluation of ML source code.
+*}
+
+
+subsubsection {* Examples *}
+
+text {*
+ Run an interactive session of the default object-logic (as specified
+ by the @{setting ISABELLE_LOGIC} setting) like this:
+\begin{ttbox}
+isabelle-process
+\end{ttbox}
+
+ Usually @{setting ISABELLE_LOGIC} refers to one of the standard
+ logic images, which are read-only by default. A writable session
+ --- based on @{verbatim HOL}, but output to @{verbatim Test} (in the
+ directory specified by the @{setting ISABELLE_OUTPUT} setting) ---
+ may be invoked as follows:
+\begin{ttbox}
+isabelle-process HOL Test
+\end{ttbox}
+ Ending this session normally (e.g.\ by typing control-D) dumps the
+ whole ML system state into @{verbatim Test} (be prepared for more
+ than 100\,MB):
+
+ The @{verbatim Test} session may be continued later (still in
+ writable state) by:
+\begin{ttbox}
+isabelle-process Test
+\end{ttbox}
+ A read-only @{verbatim Test} session may be started by:
+\begin{ttbox}
+isabelle-process -r Test
+\end{ttbox}
+
+ \medskip Note that manual session management like this does
+ \emph{not} provide proper setup for theory presentation. This would
+ require @{tool usedir}.
+
+ \bigskip The next example demonstrates batch execution of Isabelle.
+ We retrieve the @{verbatim Main} theory value from the theory loader
+ within ML (observe the delicate quoting rules for the Bash shell
+ vs.\ ML):
+\begin{ttbox}
+isabelle-process -e 'Thy_Info.get_theory "Main";' -q -r HOL
+\end{ttbox}
+ Note that the output text will be interspersed with additional junk
+ messages by the ML runtime environment. The @{verbatim "-W"} option
+ allows to communicate with the Isabelle process via an external
+ program in a more robust fashion.
+*}
+
+
+section {* The Isabelle tool wrapper \label{sec:isabelle-tool} *}
+
+text {*
+ All Isabelle related tools and interfaces are called via a common
+ wrapper --- @{executable isabelle}:
+
+\begin{ttbox}
+Usage: isabelle TOOL [ARGS ...]
+
+ Start Isabelle tool NAME with ARGS; pass "-?" for tool specific help.
+
+Available tools:
+ \dots
+\end{ttbox}
+
+ In principle, Isabelle tools are ordinary executable scripts that
+ are run within the Isabelle settings environment, see
+ \secref{sec:settings}. The set of available tools is collected by
+ @{executable isabelle} from the directories listed in the @{setting
+ ISABELLE_TOOLS} setting. Do not try to call the scripts directly
+ from the shell. Neither should you add the tool directories to your
+ shell's search path!
+*}
+
+
+subsubsection {* Examples *}
+
+text {* Show the list of available documentation of the Isabelle
+ distribution:
+
+\begin{ttbox}
+ isabelle doc
+\end{ttbox}
+
+ View a certain document as follows:
+\begin{ttbox}
+ isabelle doc system
+\end{ttbox}
+
+ Query the Isabelle settings environment:
+\begin{ttbox}
+ isabelle getenv ISABELLE_HOME_USER
+\end{ttbox}
+*}
+
+end
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/doc-src/System/Interfaces.thy Mon Aug 27 16:48:41 2012 +0200
@@ -0,0 +1,281 @@
+theory Interfaces
+imports Base
+begin
+
+chapter {* User interfaces *}
+
+section {* Isabelle/jEdit Prover IDE \label{sec:tool-jedit} *}
+
+text {* The @{tool_def jedit} tool invokes a version of
+ jEdit\footnote{\url{http://www.jedit.org/}} that has been augmented
+ with some components to provide a fully-featured Prover IDE:
+\begin{ttbox} Usage: isabelle jedit [OPTIONS]
+ [FILES ...]
+
+ Options are:
+ -J OPTION add JVM runtime option (default JEDIT_JAVA_OPTIONS)
+ -b build only
+ -d DIR include session directory
+ -f fresh build
+ -j OPTION add jEdit runtime option (default JEDIT_OPTIONS)
+ -l NAME logic image name (default ISABELLE_LOGIC)
+ -m MODE add print mode for output
+
+Start jEdit with Isabelle plugin setup and opens theory FILES
+(default Scratch.thy).
+\end{ttbox}
+
+ The @{verbatim "-l"} option specifies the session name of the logic
+ image to be used for proof processing. Additional session root
+ directories may be included via option @{verbatim "-d"} to augment
+ that name space (see also \secref{sec:tool-build}).
+
+ The @{verbatim "-m"} option specifies additional print modes.
+
+ The @{verbatim "-J"} and @{verbatim "-j"} options allow to pass
+ additional low-level options to the JVM or jEdit, respectively. The
+ defaults are provided by the Isabelle settings environment
+ (\secref{sec:settings}).
+
+ The @{verbatim "-b"} and @{verbatim "-f"} options control the
+ self-build mechanism of Isabelle/jEdit. This is only relevant for
+ building from sources, which also requires an auxiliary @{verbatim
+ jedit_build}
+ component.\footnote{\url{http://isabelle.in.tum.de/components}} Note
+ that official Isabelle releases already include a version of
+ Isabelle/jEdit that is built properly. *}
+
+
+section {* Proof General / Emacs *}
+
+text {* The @{tool_def emacs} tool invokes a version of Emacs and
+ Proof General\footnote{http://proofgeneral.inf.ed.ac.uk/} within the
+ regular Isabelle settings environment (\secref{sec:settings}). This
+ is more convenient than starting Emacs separately, loading the Proof
+ General LISP files, and then attempting to start Isabelle with
+ dynamic @{setting PATH} lookup etc.
+
+ The actual interface script is part of the Proof General
+ distribution; its usage depends on the particular version. There
+ are some options available, such as @{verbatim "-l"} for passing the
+ logic image to be used by default, or @{verbatim "-m"} to tune the
+ standard print mode. The following Isabelle settings are
+ particularly important for Proof General:
+
+ \begin{description}
+
+ \item[@{setting_def PROOFGENERAL_HOME}] points to the main
+ installation directory of the Proof General distribution. This is
+ implicitly provided for versions of Proof General that are
+ distributed as Isabelle component, see also \secref{sec:components};
+ otherwise it needs to be configured manually.
+
+ \item[@{setting_def PROOFGENERAL_OPTIONS}] is implicitly prefixed to
+ the command line of any invocation of the Proof General @{verbatim
+ interface} script. This allows to provide persistent default
+ options for the invocation of \texttt{isabelle emacs}.
+
+ \end{description}
+*}
+
+
+section {* Plain TTY interaction \label{sec:tool-tty} *}
+
+text {*
+ The @{tool_def tty} tool runs the Isabelle process interactively
+ within a plain terminal session:
+\begin{ttbox}
+Usage: isabelle tty [OPTIONS]
+
+ Options are:
+ -l NAME logic image name (default ISABELLE_LOGIC)
+ -m MODE add print mode for output
+ -p NAME line editor program name (default ISABELLE_LINE_EDITOR)
+
+ Run Isabelle process with plain tty interaction and line editor.
+\end{ttbox}
+
+ The @{verbatim "-l"} option specifies the logic image. The
+ @{verbatim "-m"} option specifies additional print modes. The
+ @{verbatim "-p"} option specifies an alternative line editor (such
+ as the @{executable_def rlwrap} wrapper for GNU readline); the
+ fall-back is to use raw standard input.
+
+ Regular interaction works via the standard Isabelle/Isar toplevel
+ loop. The Isar command @{command exit} drops out into the
+ bare-bones ML system, which is occasionally useful for debugging of
+ the Isar infrastructure itself. Invoking @{ML Isar.loop}~@{verbatim
+ "();"} in ML will return to the Isar toplevel. *}
+
+
+
+section {* Theory graph browser \label{sec:browse} *}
+
+text {* The Isabelle graph browser is a general tool for visualizing
+ dependency graphs. Certain nodes of the graph (i.e.\ theories) can
+ be grouped together in ``directories'', whose contents may be
+ hidden, thus enabling the user to collapse irrelevant portions of
+ information. The browser is written in Java, it can be used both as
+ a stand-alone application and as an applet. *}
+
+
+subsection {* Invoking the graph browser *}
+
+text {* The stand-alone version of the graph browser is wrapped up as
+ @{tool_def browser}:
+\begin{ttbox}
+Usage: isabelle browser [OPTIONS] [GRAPHFILE]
+
+ Options are:
+ -b Admin/build only
+ -c cleanup -- remove GRAPHFILE after use
+ -o FILE output to FILE (ps, eps, pdf)
+\end{ttbox}
+ When no filename is specified, the browser automatically changes to
+ the directory @{setting ISABELLE_BROWSER_INFO}.
+
+ \medskip The @{verbatim "-b"} option indicates that this is for
+ administrative build only, i.e.\ no browser popup if no files are
+ given.
+
+ The @{verbatim "-c"} option causes the input file to be removed
+ after use.
+
+ The @{verbatim "-o"} option indicates batch-mode operation, with the
+ output written to the indicated file; note that @{verbatim pdf}
+ produces an @{verbatim eps} copy as well.
+
+ \medskip The applet version of the browser is part of the standard
+ WWW theory presentation, see the link ``theory dependencies'' within
+ each session index.
+*}
+
+
+subsection {* Using the graph browser *}
+
+text {*
+ The browser's main window, which is shown in
+ \figref{fig:browserwindow}, consists of two sub-windows. In the
+ left sub-window, the directory tree is displayed. The graph itself
+ is displayed in the right sub-window.
+
+ \begin{figure}[ht]
+ \includegraphics[width=\textwidth]{browser_screenshot}
+ \caption{\label{fig:browserwindow} Browser main window}
+ \end{figure}
+*}
+
+
+subsubsection {* The directory tree window *}
+
+text {*
+ We describe the usage of the directory browser and the meaning of
+ the different items in the browser window.
+
+ \begin{itemize}
+
+ \item A red arrow before a directory name indicates that the
+ directory is currently ``folded'', i.e.~the nodes in this directory
+ are collapsed to one single node. In the right sub-window, the names
+ of nodes corresponding to folded directories are enclosed in square
+ brackets and displayed in red color.
+
+ \item A green downward arrow before a directory name indicates that
+ the directory is currently ``unfolded''. It can be folded by
+ clicking on the directory name. Clicking on the name for a second
+ time unfolds the directory again. Alternatively, a directory can
+ also be unfolded by clicking on the corresponding node in the right
+ sub-window.
+
+ \item Blue arrows stand before ordinary node names. When clicking on
+ such a name (i.e.\ that of a theory), the graph display window
+ focuses to the corresponding node. Double clicking invokes a text
+ viewer window in which the contents of the theory file are
+ displayed.
+
+ \end{itemize}
+*}
+
+
+subsubsection {* The graph display window *}
+
+text {*
+ When pointing on an ordinary node, an upward and a downward arrow is
+ shown. Initially, both of these arrows are green. Clicking on the
+ upward or downward arrow collapses all predecessor or successor
+ nodes, respectively. The arrow's color then changes to red,
+ indicating that the predecessor or successor nodes are currently
+ collapsed. The node corresponding to the collapsed nodes has the
+ name ``@{verbatim "[....]"}''. To uncollapse the nodes again, simply
+ click on the red arrow or on the node with the name ``@{verbatim
+ "[....]"}''. Similar to the directory browser, the contents of
+ theory files can be displayed by double clicking on the
+ corresponding node.
+*}
+
+
+subsubsection {* The ``File'' menu *}
+
+text {*
+ Due to Java Applet security restrictions this menu is only available
+ in the full application version. The meaning of the menu items is as
+ follows:
+
+ \begin{description}
+
+ \item[Open \dots] Open a new graph file.
+
+ \item[Export to PostScript] Outputs the current graph in Postscript
+ format, appropriately scaled to fit on one single sheet of A4 paper.
+ The resulting file can be printed directly.
+
+ \item[Export to EPS] Outputs the current graph in Encapsulated
+ Postscript format. The resulting file can be included in other
+ documents.
+
+ \item[Quit] Quit the graph browser.
+
+ \end{description}
+*}
+
+
+subsection {* Syntax of graph definition files *}
+
+text {*
+ A graph definition file has the following syntax:
+
+ \begin{center}\small
+ \begin{tabular}{rcl}
+ @{text graph} & @{text "="} & @{text "{ vertex"}~@{verbatim ";"}~@{text "}+"} \\
+ @{text vertex} & @{text "="} & @{text "vertex_name vertex_ID dir_name ["}~@{verbatim "+"}~@{text "] path ["}~@{verbatim "<"}~@{text "|"}~@{verbatim ">"}~@{text "] { vertex_ID }*"}
+ \end{tabular}
+ \end{center}
+
+ The meaning of the items in a vertex description is as follows:
+
+ \begin{description}
+
+ \item[@{text vertex_name}] The name of the vertex.
+
+ \item[@{text vertex_ID}] The vertex identifier. Note that there may
+ be several vertices with equal names, whereas identifiers must be
+ unique.
+
+ \item[@{text dir_name}] The name of the ``directory'' the vertex
+ should be placed in. A ``@{verbatim "+"}'' sign after @{text
+ dir_name} indicates that the nodes in the directory are initially
+ visible. Directories are initially invisible by default.
+
+ \item[@{text path}] The path of the corresponding theory file. This
+ is specified relatively to the path of the graph definition file.
+
+ \item[List of successor/predecessor nodes] A ``@{verbatim "<"}''
+ sign before the list means that successor nodes are listed, a
+ ``@{verbatim ">"}'' sign means that predecessor nodes are listed. If
+ neither ``@{verbatim "<"}'' nor ``@{verbatim ">"}'' is found, the
+ browser assumes that successor nodes are listed.
+
+ \end{description}
+*}
+
+end
\ No newline at end of file
--- a/doc-src/System/Makefile Mon Aug 27 16:10:54 2012 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-## targets
-
-default: dvi
-
-
-## dependencies
-
-include ../Makefile.in
-
-NAME = system
-FILES = system.tex Thy/document/Basics.tex Thy/document/Misc.tex \
- Thy/document/Presentation.tex ../iman.sty ../extra.sty \
- ../ttbox.sty ../manual.bib
-
-dvi: $(NAME).dvi
-
-$(NAME).dvi: $(FILES) isabelle.eps
- $(LATEX) $(NAME)
- $(BIBTEX) $(NAME)
- $(LATEX) $(NAME)
- $(LATEX) $(NAME)
- $(SEDINDEX) $(NAME)
- $(LATEX) $(NAME)
-
-pdf: $(NAME).pdf
-
-$(NAME).pdf: $(FILES) isabelle.pdf
- $(PDFLATEX) $(NAME)
- $(BIBTEX) $(NAME)
- $(PDFLATEX) $(NAME)
- $(PDFLATEX) $(NAME)
- $(SEDINDEX) $(NAME)
- $(PDFLATEX) $(NAME)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/doc-src/System/Misc.thy Mon Aug 27 16:48:41 2012 +0200
@@ -0,0 +1,598 @@
+theory Misc
+imports Base
+begin
+
+chapter {* Miscellaneous tools \label{ch:tools} *}
+
+text {*
+ Subsequently we describe various Isabelle related utilities, given
+ in alphabetical order.
+*}
+
+
+section {* Resolving Isabelle components \label{sec:tool-components} *}
+
+text {*
+ The @{tool_def components} tool resolves Isabelle components:
+\begin{ttbox}
+Usage: isabelle components [OPTIONS] [COMPONENTS ...]
+
+ Options are:
+ -R URL component repository
+ (default $ISABELLE_COMPONENT_REPOSITORY)
+ -a all missing components
+ -l list status
+
+ Resolve Isabelle components via download and installation.
+ COMPONENTS are identified via base name.
+
+ ISABELLE_COMPONENT_REPOSITORY="http://isabelle.in.tum.de/components"
+\end{ttbox}
+
+ Components are initialized as described in \secref{sec:components}
+ in a permissive manner, which can mark components as ``missing''.
+ This state is amended by letting @{tool "components"} download and
+ unpack components that are published on the default component
+ repository \url{http://isabelle.in.tum.de/components/} in
+ particular.
+
+ Option @{verbatim "-R"} specifies an alternative component
+ repository. Note that @{verbatim "file:///"} URLs can be used for
+ local directories.
+
+ Option @{verbatim "-a"} selects all missing components to be
+ installed. Explicit components may be named as command
+ line-arguments as well. Note that components are uniquely
+ identified by their base name, while the installation takes place in
+ the location that was specified in the attempt to initialize the
+ component before.
+
+ Option @{verbatim "-l"} lists the current state of available and
+ missing components with their location (full name) within the
+ file-system. *}
+
+
+section {* Displaying documents *}
+
+text {* The @{tool_def display} tool displays documents in DVI or PDF
+ format:
+\begin{ttbox}
+Usage: isabelle display [OPTIONS] FILE
+
+ Options are:
+ -c cleanup -- remove FILE after use
+
+ Display document FILE (in DVI format).
+\end{ttbox}
+
+ \medskip The @{verbatim "-c"} option causes the input file to be
+ removed after use. The program for viewing @{verbatim dvi} files is
+ determined by the @{setting DVI_VIEWER} setting.
+*}
+
+
+section {* Viewing documentation \label{sec:tool-doc} *}
+
+text {*
+ The @{tool_def doc} tool displays online documentation:
+\begin{ttbox}
+Usage: isabelle doc [DOC]
+
+ View Isabelle documentation DOC, or show list of available documents.
+\end{ttbox}
+ If called without arguments, it lists all available documents. Each
+ line starts with an identifier, followed by a short description. Any
+ of these identifiers may be specified as the first argument in order
+ to have the corresponding document displayed.
+
+ \medskip The @{setting ISABELLE_DOCS} setting specifies the list of
+ directories (separated by colons) to be scanned for documentations.
+ The program for viewing @{verbatim dvi} files is determined by the
+ @{setting DVI_VIEWER} setting.
+*}
+
+
+section {* Shell commands within the settings environment \label{sec:tool-env} *}
+
+text {* The @{tool_def env} tool is a direct wrapper for the standard
+ @{verbatim "/usr/bin/env"} command on POSIX systems, running within
+ the Isabelle settings environment (\secref{sec:settings}).
+
+ The command-line arguments are that of the underlying version of
+ @{verbatim env}. For example, the following invokes an instance of
+ the GNU Bash shell within the Isabelle environment:
+\begin{alltt}
+ isabelle env bash
+\end{alltt}
+*}
+
+
+section {* Getting logic images *}
+
+text {* The @{tool_def findlogics} tool traverses all directories
+ specified in @{setting ISABELLE_PATH}, looking for Isabelle logic
+ images. Its usage is:
+\begin{ttbox}
+Usage: isabelle findlogics
+
+ Collect heap file names from ISABELLE_PATH.
+\end{ttbox}
+
+ The base names of all files found on the path are printed --- sorted
+ and with duplicates removed. Also note that lookup in @{setting
+ ISABELLE_PATH} includes the current values of @{setting ML_SYSTEM}
+ and @{setting ML_PLATFORM}. Thus switching to another ML compiler
+ may change the set of logic images available.
+*}
+
+
+section {* Inspecting the settings environment \label{sec:tool-getenv} *}
+
+text {* The Isabelle settings environment --- as provided by the
+ site-default and user-specific settings files --- can be inspected
+ with the @{tool_def getenv} tool:
+\begin{ttbox}
+Usage: isabelle getenv [OPTIONS] [VARNAMES ...]
+
+ Options are:
+ -a display complete environment
+ -b print values only (doesn't work for -a)
+ -d FILE dump complete environment to FILE
+ (null terminated entries)
+
+ Get value of VARNAMES from the Isabelle settings.
+\end{ttbox}
+
+ With the @{verbatim "-a"} option, one may inspect the full process
+ environment that Isabelle related programs are run in. This usually
+ contains much more variables than are actually Isabelle settings.
+ Normally, output is a list of lines of the form @{text
+ name}@{verbatim "="}@{text value}. The @{verbatim "-b"} option
+ causes only the values to be printed.
+
+ Option @{verbatim "-d"} produces a dump of the complete environment
+ to the specified file. Entries are terminated by the ASCII null
+ character, i.e.\ the C string terminator.
+*}
+
+
+subsubsection {* Examples *}
+
+text {* Get the location of @{setting ISABELLE_HOME_USER} where
+ user-specific information is stored:
+\begin{ttbox}
+isabelle getenv ISABELLE_HOME_USER
+\end{ttbox}
+
+ \medskip Get the value only of the same settings variable, which is
+particularly useful in shell scripts:
+\begin{ttbox}
+isabelle getenv -b ISABELLE_OUTPUT
+\end{ttbox}
+*}
+
+
+section {* Installing standalone Isabelle executables \label{sec:tool-install} *}
+
+text {* By default, the main Isabelle binaries (@{executable
+ "isabelle"} etc.) are just run from their location within the
+ distribution directory, probably indirectly by the shell through its
+ @{setting PATH}. Other schemes of installation are supported by the
+ @{tool_def install} tool:
+\begin{ttbox}
+Usage: isabelle install [OPTIONS]
+
+ Options are:
+ -d DISTDIR use DISTDIR as Isabelle distribution
+ (default ISABELLE_HOME)
+ -p DIR install standalone binaries in DIR
+
+ Install Isabelle executables with absolute references to the current
+ distribution directory.
+\end{ttbox}
+
+ The @{verbatim "-d"} option overrides the current Isabelle
+ distribution directory as determined by @{setting ISABELLE_HOME}.
+
+ The @{verbatim "-p"} option installs executable wrapper scripts for
+ @{executable "isabelle-process"}, @{executable isabelle}, containing
+ proper absolute references to the Isabelle distribution directory.
+ A typical @{verbatim DIR} specification would be some directory
+ expected to be in the shell's @{setting PATH}, such as @{verbatim
+ "$HOME/bin"}.
+
+ It is possible to make symbolic links of the main Isabelle
+ executables, but making separate copies outside the Isabelle
+ distribution directory will not work.
+*}
+
+
+section {* Creating instances of the Isabelle logo *}
+
+text {* The @{tool_def logo} tool creates any instance of the generic
+ Isabelle logo as EPS or PDF.
+\begin{ttbox}
+Usage: isabelle logo [OPTIONS] NAME
+
+ Create instance NAME of the Isabelle logo (as EPS or PDF).
+
+ Options are:
+ -o OUTFILE specify output file and format
+ (default "isabelle_name.pdf")
+ -q quiet mode
+\end{ttbox}
+
+ Option @{verbatim "-o"} specifies an explicit output file name and
+ format, e.g.\ @{verbatim "mylogo.eps"} for an EPS logo. The default
+ is @{verbatim "isabelle_"}@{text name}@{verbatim ".pdf"}, with the
+ lower-case version of the given name and PDF output.
+
+ Option @{verbatim "-q"} omits printing of the result file name.
+
+ \medskip Implementors of Isabelle tools and applications are
+ encouraged to make derived Isabelle logos for their own projects
+ using this template. *}
+
+
+section {* Isabelle wrapper for make \label{sec:tool-make} *}
+
+text {* The old @{tool_def make} tool is a very simple wrapper for
+ ordinary Unix @{executable make}:
+\begin{ttbox}
+Usage: isabelle make [ARGS ...]
+
+ Compile the logic in current directory using IsaMakefile.
+ ARGS are directly passed to the system make program.
+\end{ttbox}
+
+ Note that the Isabelle settings environment is also active. Thus one
+ may refer to its values within the @{verbatim IsaMakefile}, e.g.\
+ @{verbatim "$(ISABELLE_HOME)"}. Furthermore, programs started from
+ the make file also inherit this environment.
+*}
+
+
+section {* Creating Isabelle session directories
+ \label{sec:tool-mkdir} *}
+
+text {* The old @{tool_def mkdir} tool prepares Isabelle session
+ source directories, including a sensible default setup of @{verbatim
+ IsaMakefile}, @{verbatim ROOT.ML}, and a @{verbatim document}
+ directory with a minimal @{verbatim root.tex} that is sufficient to
+ print all theories of the session (in the order of appearance); see
+ \secref{sec:tool-document} for further information on Isabelle
+ document preparation. The usage of @{tool mkdir} is:
+
+\begin{ttbox}
+Usage: isabelle mkdir [OPTIONS] [LOGIC] NAME
+
+ Options are:
+ -I FILE alternative IsaMakefile output
+ -P include parent logic target
+ -b setup build mode (session outputs heap image)
+ -q quiet mode
+
+ Prepare session directory, including IsaMakefile and document source,
+ with parent LOGIC (default ISABELLE_LOGIC=\$ISABELLE_LOGIC)
+\end{ttbox}
+
+ The @{tool mkdir} tool is conservative in the sense that any
+ existing @{verbatim IsaMakefile} etc.\ is left unchanged. Thus it
+ is safe to invoke it multiple times, although later runs may not
+ have the desired effect.
+
+ Note that @{tool mkdir} is unable to change @{verbatim IsaMakefile}
+ incrementally --- manual changes are required for multiple
+ sub-sessions. On order to get an initial working session, the only
+ editing needed is to add appropriate @{ML use_thy} calls to the
+ generated @{verbatim ROOT.ML} file.
+*}
+
+
+subsubsection {* Options *}
+
+text {*
+ The @{verbatim "-I"} option specifies an alternative to @{verbatim
+ IsaMakefile} for dependencies. Note that ``@{verbatim "-"}'' refers
+ to \emph{stdout}, i.e.\ ``@{verbatim "-I-"}'' provides an easy way
+ to peek at @{tool mkdir}'s idea of @{tool make} setup required for
+ some particular of Isabelle session.
+
+ \medskip The @{verbatim "-P"} option includes a target for the
+ parent @{verbatim LOGIC} session in the generated @{verbatim
+ IsaMakefile}. The corresponding sources are assumed to be located
+ within the Isabelle distribution.
+
+ \medskip The @{verbatim "-b"} option sets up the current directory
+ as the base for a new session that provides an actual logic image,
+ as opposed to one that only runs several theories based on an
+ existing image. Note that in the latter case, everything except
+ @{verbatim IsaMakefile} would be placed into a separate directory
+ @{verbatim NAME}, rather than the current one. See
+ \secref{sec:tool-usedir} for further information on \emph{build
+ mode} vs.\ \emph{example mode} of @{tool usedir}.
+
+ \medskip The @{verbatim "-q"} option enables quiet mode, suppressing
+ further notes on how to proceed.
+*}
+
+
+section {* Printing documents *}
+
+text {*
+ The @{tool_def print} tool prints documents:
+\begin{ttbox}
+Usage: isabelle print [OPTIONS] FILE
+
+ Options are:
+ -c cleanup -- remove FILE after use
+
+ Print document FILE.
+\end{ttbox}
+
+ The @{verbatim "-c"} option causes the input file to be removed
+ after use. The printer spool command is determined by the @{setting
+ PRINT_COMMAND} setting.
+*}
+
+
+section {* Remove awkward symbol names from theory sources *}
+
+text {*
+ The @{tool_def unsymbolize} tool tunes Isabelle theory sources to
+ improve readability for plain ASCII output (e.g.\ in email
+ communication). Most notably, @{tool unsymbolize} replaces awkward
+ arrow symbols such as @{verbatim "\\"}@{verbatim "<Longrightarrow>"}
+ by @{verbatim "==>"}.
+\begin{ttbox}
+Usage: isabelle unsymbolize [FILES|DIRS...]
+
+ Recursively find .thy/.ML files, removing unreadable symbol names.
+ Note: this is an ad-hoc script; there is no systematic way to replace
+ symbols independently of the inner syntax of a theory!
+
+ Renames old versions of FILES by appending "~~".
+\end{ttbox}
+*}
+
+
+section {* Running Isabelle sessions \label{sec:tool-usedir} *}
+
+text {* The old @{tool_def usedir} tool builds object-logic images, or
+ runs example sessions based on existing logics. Its usage is:
+\begin{ttbox}
+Usage: isabelle usedir [OPTIONS] LOGIC NAME
+
+ Options are:
+ -C BOOL copy existing document directory to -D PATH (default true)
+ -D PATH dump generated document sources into PATH
+ -M MAX multithreading: maximum number of worker threads (default 1)
+ -P PATH set path for remote theory browsing information
+ -Q INT set threshold for sub-proof parallelization (default 50)
+ -T LEVEL multithreading: trace level (default 0)
+ -V VARIANT declare alternative document VARIANT
+ -b build mode (output heap image, using current dir)
+ -d FORMAT build document as FORMAT (default false)
+ -f NAME use ML file NAME (default ROOT.ML)
+ -g BOOL generate session graph image for document (default false)
+ -i BOOL generate theory browser information (default false)
+ -m MODE add print mode for output
+ -p LEVEL set level of detail for proof objects (default 0)
+ -q LEVEL set level of parallel proof checking (default 1)
+ -r reset session path
+ -s NAME override session NAME
+ -t BOOL internal session timing (default false)
+ -v BOOL be verbose (default false)
+
+ Build object-logic or run examples. Also creates browsing
+ information (HTML etc.) according to settings.
+
+ ISABELLE_USEDIR_OPTIONS=...
+
+ ML_PLATFORM=...
+ ML_HOME=...
+ ML_SYSTEM=...
+ ML_OPTIONS=...
+\end{ttbox}
+
+ Note that the value of the @{setting_ref ISABELLE_USEDIR_OPTIONS}
+ setting is implicitly prefixed to \emph{any} @{tool usedir}
+ call. Since the @{verbatim IsaMakefile}s of all object-logics
+ distributed with Isabelle just invoke @{tool usedir} for the real
+ work, one may control compilation options globally via above
+ variable. In particular, generation of \rmindex{HTML} browsing
+ information and document preparation is controlled here.
+*}
+
+
+subsubsection {* Options *}
+
+text {*
+ Basically, there are two different modes of operation: \emph{build
+ mode} (enabled through the @{verbatim "-b"} option) and
+ \emph{example mode} (default).
+
+ Calling @{tool usedir} with @{verbatim "-b"} runs @{executable
+ "isabelle-process"} with input image @{verbatim LOGIC} and output to
+ @{verbatim NAME}, as provided on the command line. This will be a
+ batch session, running @{verbatim ROOT.ML} from the current
+ directory and then quitting. It is assumed that @{verbatim ROOT.ML}
+ contains all ML commands required to build the logic.
+
+ In example mode, @{tool usedir} runs a read-only session of
+ @{verbatim LOGIC} and automatically runs @{verbatim ROOT.ML} from
+ within directory @{verbatim NAME}. It assumes that this file
+ contains appropriate ML commands to run the desired examples.
+
+ \medskip The @{verbatim "-i"} option controls theory browser data
+ generation. It may be explicitly turned on or off --- as usual, the
+ last occurrence of @{verbatim "-i"} on the command line wins.
+
+ The @{verbatim "-P"} option specifies a path (or actual URL) to be
+ prefixed to any \emph{non-local} reference of existing theories.
+ Thus user sessions may easily link to existing Isabelle libraries
+ already present on the WWW.
+
+ The @{verbatim "-m"} options specifies additional print modes to be
+ activated temporarily while the session is processed.
+
+ \medskip The @{verbatim "-d"} option controls document preparation.
+ Valid arguments are @{verbatim false} (do not prepare any document;
+ this is default), or any of @{verbatim dvi}, @{verbatim dvi.gz},
+ @{verbatim ps}, @{verbatim ps.gz}, @{verbatim pdf}. The logic
+ session has to provide a properly setup @{verbatim document}
+ directory. See \secref{sec:tool-document} and
+ \secref{sec:tool-latex} for more details.
+
+ \medskip The @{verbatim "-V"} option declares alternative document
+ variants, consisting of name/tags pairs (cf.\ options @{verbatim
+ "-n"} and @{verbatim "-t"} of @{tool_ref document}). The standard
+ document is equivalent to ``@{verbatim
+ "document=theory,proof,ML"}'', which means that all theory begin/end
+ commands, proof body texts, and ML code will be presented
+ faithfully.
+
+ An alternative variant ``@{verbatim "outline=/proof/ML"}'' would
+ fold proof and ML parts, replacing the original text by a short
+ place-holder. The form ``@{text name}@{verbatim "=-"},'' means to
+ remove document @{text name} from the list of variants to be
+ processed. Any number of @{verbatim "-V"} options may be given;
+ later declarations have precedence over earlier ones.
+
+ Some document variant @{text name} may use an alternative {\LaTeX}
+ entry point called @{verbatim "document/root_"}@{text
+ "name"}@{verbatim ".tex"} if that file exists; otherwise the common
+ @{verbatim "document/root.tex"} is used.
+
+ \medskip The @{verbatim "-g"} option produces images of the theory
+ dependency graph (cf.\ \secref{sec:browse}) for inclusion in the
+ generated document, both as @{verbatim session_graph.eps} and
+ @{verbatim session_graph.pdf} at the same time. To include this in
+ the final {\LaTeX} document one could say @{verbatim
+ "\\includegraphics{session_graph}"} in @{verbatim
+ "document/root.tex"} (omitting the file-name extension enables
+ {\LaTeX} to select to correct version, either for the DVI or PDF
+ output path).
+
+ \medskip The @{verbatim "-D"} option causes the generated document
+ sources to be dumped at location @{verbatim PATH}; this path is
+ relative to the session's main directory. If the @{verbatim "-C"}
+ option is true, this will include a copy of an existing @{verbatim
+ document} directory as provided by the user. For example, @{tool
+ usedir}~@{verbatim "-D generated HOL Foo"} produces a complete set
+ of document sources at @{verbatim "Foo/generated"}. Subsequent
+ invocation of @{tool document}~@{verbatim "Foo/generated"} (see also
+ \secref{sec:tool-document}) will process the final result
+ independently of an Isabelle job. This decoupled mode of operation
+ facilitates debugging of serious {\LaTeX} errors, for example.
+
+ \medskip The @{verbatim "-p"} option determines the level of detail
+ for internal proof objects, see also the \emph{Isabelle Reference
+ Manual}~\cite{isabelle-ref}.
+
+ \medskip The @{verbatim "-q"} option specifies the level of parallel
+ proof checking: @{verbatim 0} no proofs, @{verbatim 1} toplevel
+ proofs (default), @{verbatim 2} toplevel and nested Isar proofs.
+ The option @{verbatim "-Q"} specifies a threshold for @{verbatim
+ "-q2"}: nested proofs are only parallelized when the current number
+ of forked proofs falls below the given value (default 50),
+ multiplied by the number of worker threads (see option @{verbatim
+ "-M"}).
+
+ \medskip The @{verbatim "-t"} option produces a more detailed
+ internal timing report of the session.
+
+ \medskip The @{verbatim "-v"} option causes additional information
+ to be printed while running the session, notably the location of
+ prepared documents.
+
+ \medskip The @{verbatim "-M"} option specifies the maximum number of
+ parallel worker threads used for processing independent tasks when
+ checking theory sources (multithreading only works on suitable ML
+ platforms). The special value of @{verbatim 0} or @{verbatim max}
+ refers to the number of actual CPU cores of the underlying machine,
+ which is a good starting point for optimal performance tuning. The
+ @{verbatim "-T"} option determines the level of detail in tracing
+ output concerning the internal locking and scheduling in
+ multithreaded operation. This may be helpful in isolating
+ performance bottle-necks, e.g.\ due to excessive wait states when
+ locking critical code sections.
+
+ \medskip Any @{tool usedir} session is named by some \emph{session
+ identifier}. These accumulate, documenting the way sessions depend
+ on others. For example, consider @{verbatim "Pure/FOL/ex"}, which
+ refers to the examples of FOL, which in turn is built upon Pure.
+
+ The current session's identifier is by default just the base name of
+ the @{verbatim LOGIC} argument (in build mode), or of the @{verbatim
+ NAME} argument (in example mode). This may be overridden explicitly
+ via the @{verbatim "-s"} option.
+*}
+
+
+section {* Output the version identifier of the Isabelle distribution *}
+
+text {*
+ The @{tool_def version} tool displays Isabelle version information:
+\begin{ttbox}
+Usage: isabelle version [OPTIONS]
+
+ Options are:
+ -i short identification (derived from Mercurial id)
+
+ Display Isabelle version information.
+\end{ttbox}
+
+ \medskip The default is to output the full version string of the
+ Isabelle distribution, e.g.\ ``@{verbatim "Isabelle2012: May 2012"}.
+
+ The @{verbatim "-i"} option produces a short identification derived
+ from the Mercurial id of the @{setting ISABELLE_HOME} directory.
+*}
+
+
+section {* Convert XML to YXML *}
+
+text {*
+ The @{tool_def yxml} tool converts a standard XML document (stdin)
+ to the much simpler and more efficient YXML format of Isabelle
+ (stdout). The YXML format is defined as follows.
+
+ \begin{enumerate}
+
+ \item The encoding is always UTF-8.
+
+ \item Body text is represented verbatim (no escaping, no special
+ treatment of white space, no named entities, no CDATA chunks, no
+ comments).
+
+ \item Markup elements are represented via ASCII control characters
+ @{text "\<^bold>X = 5"} and @{text "\<^bold>Y = 6"} as follows:
+
+ \begin{tabular}{ll}
+ XML & YXML \\\hline
+ @{verbatim "<"}@{text "name attribute"}@{verbatim "="}@{text "value \<dots>"}@{verbatim ">"} &
+ @{text "\<^bold>X\<^bold>Yname\<^bold>Yattribute"}@{verbatim "="}@{text "value\<dots>\<^bold>X"} \\
+ @{verbatim "</"}@{text name}@{verbatim ">"} & @{text "\<^bold>X\<^bold>Y\<^bold>X"} \\
+ \end{tabular}
+
+ There is no special case for empty body text, i.e.\ @{verbatim
+ "<foo/>"} is treated like @{verbatim "<foo></foo>"}. Also note that
+ @{text "\<^bold>X"} and @{text "\<^bold>Y"} may never occur in
+ well-formed XML documents.
+
+ \end{enumerate}
+
+ Parsing YXML is pretty straight-forward: split the text into chunks
+ separated by @{text "\<^bold>X"}, then split each chunk into
+ sub-chunks separated by @{text "\<^bold>Y"}. Markup chunks start
+ with an empty sub-chunk, and a second empty sub-chunk indicates
+ close of an element. Any other non-empty chunk consists of plain
+ text. For example, see @{file "~~/src/Pure/PIDE/yxml.ML"} or
+ @{file "~~/src/Pure/PIDE/yxml.scala"}.
+
+ YXML documents may be detected quickly by checking that the first
+ two characters are @{text "\<^bold>X\<^bold>Y"}.
+*}
+
+end
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/doc-src/System/Presentation.thy Mon Aug 27 16:48:41 2012 +0200
@@ -0,0 +1,319 @@
+theory Presentation
+imports Base
+begin
+
+chapter {* Presenting theories \label{ch:present} *}
+
+text {* Isabelle provides several ways to present the outcome of
+ formal developments, including WWW-based browsable libraries or
+ actual printable documents. Presentation is centered around the
+ concept of \emph{sessions} (\chref{ch:session}). The global session
+ structure is that of a tree, with Isabelle Pure at its root, further
+ object-logics derived (e.g.\ HOLCF from HOL, and HOL from Pure), and
+ application sessions further on in the hierarchy.
+
+ The tools @{tool_ref mkroot} and @{tool_ref build} provide the
+ primary means for managing Isabelle sessions, including proper setup
+ for presentation; @{tool build} takes care to have @{executable_ref
+ "isabelle-process"} run any additional stages required for document
+ preparation, notably the @{tool_ref document} and @{tool_ref latex}.
+ The complete tool chain for managing batch-mode Isabelle sessions is
+ illustrated in \figref{fig:session-tools}.
+
+ \begin{figure}[htbp]
+ \begin{center}
+ \begin{tabular}{lp{0.6\textwidth}}
+
+ @{tool_ref mkroot} & invoked once by the user to initialize the
+ session @{verbatim ROOT} with optional @{verbatim document}
+ directory; \\
+
+ @{tool_ref build} & invoked repeatedly by the user to keep
+ session output up-to-date (HTML, documents etc.); \\
+
+ @{executable "isabelle-process"} & run through @{tool_ref
+ build}; \\
+
+ @{tool_ref document} & run by the Isabelle process if document
+ preparation is enabled; \\
+
+ @{tool_ref latex} & universal {\LaTeX} tool wrapper invoked
+ multiple times by @{tool_ref document}; also useful for manual
+ experiments; \\
+
+ \end{tabular}
+ \caption{The tool chain of Isabelle session presentation} \label{fig:session-tools}
+ \end{center}
+ \end{figure}
+*}
+
+
+section {* Generating theory browser information \label{sec:info} *}
+
+text {*
+ \index{theory browsing information|bold}
+
+ As a side-effect of building sessions, Isabelle is able to generate
+ theory browsing information, including HTML documents that show the
+ theory sources and the relationship with its ancestors and
+ descendants. Besides the HTML file that is generated for every
+ theory, Isabelle stores links to all theories in an index
+ file. These indexes are linked with other indexes to represent the
+ overall tree structure of the sessions.
+
+ Isabelle also generates graph files that represent the theory
+ dependencies within a session. There is a graph browser Java applet
+ embedded in the generated HTML pages, and also a stand-alone
+ application that allows browsing theory graphs without having to
+ start a WWW client first. The latter version also includes features
+ such as generating Postscript files, which are not available in the
+ applet version. See \secref{sec:browse} for further information.
+
+ \medskip
+
+ The easiest way to let Isabelle generate theory browsing information
+ for existing sessions is to invoke @{tool build} with suitable
+ options:
+
+\begin{ttbox}
+isabelle build -o browser_info -v -c FOL
+\end{ttbox}
+
+ The presentation output will appear in @{verbatim
+ "$ISABELLE_BROWSER_INFO/FOL"} as reported by the above verbose
+ invocation of the build process.
+
+ Many Isabelle sessions (such as @{verbatim "HOL-Library"} in @{file
+ "~~/src/HOL/Library"}) also provide actual printable documents.
+ These are prepared automatically as well if enabled like this:
+\begin{ttbox}
+isabelle build -o browser_info -o document=pdf -v -c HOL-Library
+\end{ttbox}
+
+ Enabling both browser info and document preparation simultaneously
+ causes an appropriate ``document'' link to be included in the HTML
+ index. Documents may be generated independently of browser
+ information as well, see \secref{sec:tool-document} for further
+ details.
+
+ \bigskip The theory browsing information is stored in a
+ sub-directory directory determined by the @{setting_ref
+ ISABELLE_BROWSER_INFO} setting plus a prefix corresponding to the
+ session identifier (according to the tree structure of sub-sessions
+ by default). In order to present Isabelle applications on the web,
+ the corresponding subdirectory from @{setting ISABELLE_BROWSER_INFO}
+ can be put on a WWW server.
+*}
+
+section {* Preparing session root directories \label{sec:tool-mkroot} *}
+
+text {* The @{tool_def mkroot} tool configures a given directory as
+ session root, with some @{verbatim ROOT} file and optional document
+ source directory. Its usage is:
+\begin{ttbox}
+Usage: isabelle mkroot [OPTIONS] [DIR]
+
+ Options are:
+ -d enable document preparation
+ -n NAME alternative session name (default: DIR base name)
+
+ Prepare session root DIR (default: current directory).
+\end{ttbox}
+
+ The results are placed in the given directory @{text dir}, which
+ refers to the current directory by default. The @{tool mkroot} tool
+ is conservative in the sense that it does not overwrite existing
+ files or directories. Earlier attempts to generate a session root
+ need to be deleted manually.
+
+ \medskip Option @{verbatim "-d"} indicates that the session shall be
+ accompanied by a formal document, with @{text dir}@{verbatim
+ "/document/root.tex"} as its {\LaTeX} entry point (see also
+ \chref{ch:present}).
+
+ Option @{verbatim "-n"} allows to specify an alternative session
+ name; otherwise the base name of the given directory is used.
+
+ \medskip The implicit Isabelle settings variable @{setting
+ ISABELLE_LOGIC} specifies the parent session, and @{setting
+ ISABELLE_DOCUMENT_FORMAT} the document format to be filled filled
+ into the generated @{verbatim ROOT} file. *}
+
+
+subsubsection {* Examples *}
+
+text {* Produce session @{verbatim Test} (with document preparation)
+ within a separate directory of the same name:
+\begin{ttbox}
+isabelle mkroot -d Test && isabelle build -D Test
+\end{ttbox}
+
+ \medskip Upgrade the current directory into a session ROOT with
+ document preparation, and build it:
+\begin{ttbox}
+isabelle mkroot -d && isabelle build -D .
+\end{ttbox}
+*}
+
+
+section {* Preparing Isabelle session documents
+ \label{sec:tool-document} *}
+
+text {* The @{tool_def document} tool prepares logic session
+ documents, processing the sources both as provided by the user and
+ generated by Isabelle. Its usage is:
+\begin{ttbox}
+Usage: isabelle document [OPTIONS] [DIR]
+
+ Options are:
+ -c cleanup -- be aggressive in removing old stuff
+ -n NAME specify document name (default 'document')
+ -o FORMAT specify output format: dvi (default), dvi.gz, ps,
+ ps.gz, pdf
+ -t TAGS specify tagged region markup
+
+ Prepare the theory session document in DIR (default 'document')
+ producing the specified output format.
+\end{ttbox}
+ This tool is usually run automatically as part of the Isabelle build
+ process, provided document preparation has been enabled via suitable
+ options. It may be manually invoked on the generated browser
+ information document output as well, e.g.\ in case of errors
+ encountered in the batch run.
+
+ \medskip The @{verbatim "-c"} option tells @{tool document} to
+ dispose the document sources after successful operation! This is
+ the right thing to do for sources generated by an Isabelle process,
+ but take care of your files in manual document preparation!
+
+ \medskip The @{verbatim "-n"} and @{verbatim "-o"} option specify
+ the final output file name and format, the default is ``@{verbatim
+ document.dvi}''. Note that the result will appear in the parent of
+ the target @{verbatim DIR}.
+
+ \medskip The @{verbatim "-t"} option tells {\LaTeX} how to interpret
+ tagged Isabelle command regions. Tags are specified as a comma
+ separated list of modifier/name pairs: ``@{verbatim "+"}@{text
+ foo}'' (or just ``@{text foo}'') means to keep, ``@{verbatim
+ "-"}@{text foo}'' to drop, and ``@{verbatim "/"}@{text foo}'' to
+ fold text tagged as @{text foo}. The builtin default is equivalent
+ to the tag specification ``@{verbatim
+ "+theory,+proof,+ML,+visible,-invisible"}''; see also the {\LaTeX}
+ macros @{verbatim "\\isakeeptag"}, @{verbatim "\\isadroptag"}, and
+ @{verbatim "\\isafoldtag"}, in @{file
+ "~~/lib/texinputs/isabelle.sty"}.
+
+ \medskip Document preparation requires a @{verbatim document}
+ directory within the session sources. This directory is supposed to
+ contain all the files needed to produce the final document --- apart
+ from the actual theories which are generated by Isabelle.
+
+ \medskip For most practical purposes, @{tool document} is smart
+ enough to create any of the specified output formats, taking
+ @{verbatim root.tex} supplied by the user as a starting point. This
+ even includes multiple runs of {\LaTeX} to accommodate references
+ and bibliographies (the latter assumes @{verbatim root.bib} within
+ the same directory).
+
+ In more complex situations, a separate @{verbatim build} script for
+ the document sources may be given. It is invoked with command-line
+ arguments for the document format and the document variant name.
+ The script needs to produce corresponding output files, e.g.\
+ @{verbatim root.pdf} for target format @{verbatim pdf} (and default
+ default variants). The main work can be again delegated to @{tool
+ latex}, but it is also possible to harvest generated {\LaTeX}
+ sources and copy them elsewhere, for example.
+
+ \medskip When running the session, Isabelle copies the content of
+ the original @{verbatim document} directory into its proper place
+ within @{setting ISABELLE_BROWSER_INFO}, according to the session
+ path and document variant. Then, for any processed theory @{text A}
+ some {\LaTeX} source is generated and put there as @{text
+ A}@{verbatim ".tex"}. Furthermore, a list of all generated theory
+ files is put into @{verbatim session.tex}. Typically, the root
+ {\LaTeX} file provided by the user would include @{verbatim
+ session.tex} to get a document containing all the theories.
+
+ The {\LaTeX} versions of the theories require some macros defined in
+ @{file "~~/lib/texinputs/isabelle.sty"}. Doing @{verbatim
+ "\\usepackage{isabelle}"} in @{verbatim root.tex} should be fine;
+ the underlying @{tool latex} already includes an appropriate path
+ specification for {\TeX} inputs.
+
+ If the text contains any references to Isabelle symbols (such as
+ @{verbatim "\\"}@{verbatim "<forall>"}) then @{verbatim
+ "isabellesym.sty"} should be included as well. This package
+ contains a standard set of {\LaTeX} macro definitions @{verbatim
+ "\\isasym"}@{text foo} corresponding to @{verbatim "\\"}@{verbatim
+ "<"}@{text foo}@{verbatim ">"}, see \cite{isabelle-implementation} for a
+ complete list of predefined Isabelle symbols. Users may invent
+ further symbols as well, just by providing {\LaTeX} macros in a
+ similar fashion as in @{file "~~/lib/texinputs/isabellesym.sty"} of
+ the distribution.
+
+ For proper setup of DVI and PDF documents (with hyperlinks and
+ bookmarks), we recommend to include @{file
+ "~~/lib/texinputs/pdfsetup.sty"} as well.
+
+ \medskip As a final step of Isabelle document preparation, @{tool
+ document}~@{verbatim "-c"} is run on the resulting copy of the
+ @{verbatim document} directory. Thus the actual output document is
+ built and installed in its proper place. The generated sources are
+ deleted after successful run of {\LaTeX} and friends.
+
+ Some care is needed if the document output location is configured
+ differently, say within a directory whose content is still required
+ afterwards!
+*}
+
+
+section {* Running {\LaTeX} within the Isabelle environment
+ \label{sec:tool-latex} *}
+
+text {* The @{tool_def latex} tool provides the basic interface for
+ Isabelle document preparation. Its usage is:
+\begin{ttbox}
+Usage: isabelle latex [OPTIONS] [FILE]
+
+ Options are:
+ -o FORMAT specify output format: dvi (default), dvi.gz, ps,
+ ps.gz, pdf, bbl, idx, sty, syms
+
+ Run LaTeX (and related tools) on FILE (default root.tex),
+ producing the specified output format.
+\end{ttbox}
+
+ Appropriate {\LaTeX}-related programs are run on the input file,
+ according to the given output format: @{executable latex},
+ @{executable pdflatex}, @{executable dvips}, @{executable bibtex}
+ (for @{verbatim bbl}), and @{executable makeindex} (for @{verbatim
+ idx}). The actual commands are determined from the settings
+ environment (@{setting ISABELLE_LATEX} etc.).
+
+ The @{verbatim sty} output format causes the Isabelle style files to
+ be updated from the distribution. This is useful in special
+ situations where the document sources are to be processed another
+ time by separate tools.
+
+ The @{verbatim syms} output is for internal use; it generates lists
+ of symbols that are available without loading additional {\LaTeX}
+ packages.
+*}
+
+
+subsubsection {* Examples *}
+
+text {* Invoking @{tool latex} by hand may be occasionally useful when
+ debugging failed attempts of the automatic document preparation
+ stage of batch-mode Isabelle. The abortive process leaves the
+ sources at a certain place within @{setting ISABELLE_BROWSER_INFO},
+ see the runtime error message for details. This enables users to
+ inspect {\LaTeX} runs in further detail, e.g.\ like this:
+
+\begin{ttbox}
+ cd ~/.isabelle/IsabelleXXXX/browser_info/HOL/Test/document
+ isabelle latex -o pdf
+\end{ttbox}
+*}
+
+end
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/doc-src/System/Scala.thy Mon Aug 27 16:48:41 2012 +0200
@@ -0,0 +1,72 @@
+theory Scala
+imports Base
+begin
+
+chapter {* Isabelle/Scala development tools *}
+
+text {* Isabelle/ML and Isabelle/Scala are the two main language
+environments for Isabelle tool implementations. There are some basic
+command-line tools to work with the underlying Java Virtual Machine,
+the Scala toplevel and compiler. Note that Isabelle/jEdit
+(\secref{sec:tool-tty}) provides a Scala Console for interactive
+experimentation within the running application. *}
+
+
+section {* Java Runtime Environment within Isabelle \label{sec:tool-java} *}
+
+text {* The @{tool_def java} tool is a direct wrapper for the Java
+ Runtime Environment, within the regular Isabelle settings
+ environment (\secref{sec:settings}). The command line arguments are
+ that of the underlying Java version. It is run in @{verbatim
+ "-server"} mode if possible, to improve performance (at the cost of
+ extra startup time).
+
+ The @{verbatim java} executable is the one within @{setting
+ ISABELLE_JDK_HOME}, according to the standard directory layout for
+ official JDK distributions. The class loader is augmented such that
+ the name space of @{verbatim "Isabelle/Pure.jar"} is available,
+ which is the main Isabelle/Scala module.
+
+ For example, the following command-line invokes the main method of
+ class @{verbatim isabelle.GUI_Setup}, which opens a windows with
+ some diagnostic information about the Isabelle environment:
+\begin{alltt}
+ isabelle java isabelle.GUI_Setup
+\end{alltt}
+*}
+
+
+section {* Scala toplevel \label{sec:tool-scala} *}
+
+text {* The @{tool_def scala} tool is a direct wrapper for the Scala
+ toplevel; see also @{tool java} above. The command line arguments
+ are that of the underlying Scala version.
+
+ This allows to interact with Isabelle/Scala in TTY mode like this:
+\begin{alltt}
+ isabelle scala
+ scala> isabelle.Isabelle_System.getenv("ISABELLE_HOME")
+ scala> val options = isabelle.Options.init()
+ scala> options.bool("browser_info")
+\end{alltt}
+*}
+
+
+section {* Scala compiler \label{sec:tool-scalac} *}
+
+text {* The @{tool_def scalac} tool is a direct wrapper for the Scala
+ compiler; see also @{tool scala} above. The command line arguments
+ are that of the underlying Scala version.
+
+ This allows to compile further Scala modules, depending on existing
+ Isabelle/Scala functionality. The resulting class or jar files can
+ be added to the @{setting CLASSPATH} via the @{verbatim classpath}
+ Bash function that is provided by the Isabelle process environment.
+ Thus add-on components can register themselves in a modular manner,
+ see also \secref{sec:components}.
+
+ Note that jEdit (\secref{sec:tool-jedit}) has its own mechanisms for
+ adding plugin components, which needs special attention since
+ it overrides the standard Java class loader. *}
+
+end
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/doc-src/System/Sessions.thy Mon Aug 27 16:48:41 2012 +0200
@@ -0,0 +1,324 @@
+theory Sessions
+imports Base
+begin
+
+chapter {* Isabelle sessions and build management \label{ch:session} *}
+
+text {* An Isabelle \emph{session} consists of a collection of related
+ theories that may be associated with formal documents (see also
+ \chref{ch:present}). There is also a notion of \emph{persistent
+ heap} image to capture the state of a session, similar to
+ object-code in compiled programming languages. Thus the concept of
+ session resembles that of a ``project'' in common IDE environments,
+ but the specific name emphasizes the connection to interactive
+ theorem proving: the session wraps-up the results of
+ user-interaction with the prover in a persistent form.
+
+ Application sessions are built on a given parent session, which may
+ be built recursively on other parents. Following this path in the
+ hierarchy eventually leads to some major object-logic session like
+ @{text "HOL"}, which itself is based on @{text "Pure"} as the common
+ root of all sessions.
+
+ Processing sessions may take considerable time. Isabelle build
+ management helps to organize this efficiently. This includes
+ support for parallel build jobs, in addition to the multithreaded
+ theory and proof checking that is already provided by the prover
+ process itself. *}
+
+
+section {* Session ROOT specifications \label{sec:session-root} *}
+
+text {* Session specifications reside in files called @{verbatim ROOT}
+ within certain directories, such as the home locations of registered
+ Isabelle components or additional project directories given by the
+ user.
+
+ The ROOT file format follows the lexical conventions of the
+ \emph{outer syntax} of Isabelle/Isar, see also
+ \cite{isabelle-isar-ref}. This defines common forms like
+ identifiers, names, quoted strings, verbatim text, nested comments
+ etc. The grammar for a single @{syntax session_entry} is given as
+ syntax diagram below; each ROOT file may contain multiple session
+ specifications like this.
+
+ Isabelle/jEdit (\secref{sec:tool-jedit}) includes a simple editing
+ mode @{verbatim "isabelle-root"} for session ROOT files.
+
+ @{rail "
+ @{syntax_def session_entry}: @'session' spec '=' (@{syntax name} '+')? body
+ ;
+ body: description? options? ( theories + ) files?
+ ;
+ spec: @{syntax name} groups? dir?
+ ;
+ groups: '(' (@{syntax name} +) ')'
+ ;
+ dir: @'in' @{syntax name}
+ ;
+ description: @'description' @{syntax text}
+ ;
+ options: @'options' opts
+ ;
+ opts: '[' ( (@{syntax name} '=' value | @{syntax name}) + ',' ) ']'
+ ;
+ value: @{syntax name} | @{syntax real}
+ ;
+ theories: @'theories' opts? ( @{syntax name} * )
+ ;
+ files: @'files' ( @{syntax name} + )
+ "}
+
+ \begin{description}
+
+ \item \isakeyword{session}~@{text "A = B + body"} defines a new
+ session @{text "A"} based on parent session @{text "B"}, with its
+ content given in @{text body} (theories and auxiliary source files).
+ Note that a parent (like @{text "HOL"}) is mandatory in practical
+ applications: only Isabelle/Pure can bootstrap itself from nothing.
+
+ All such session specifications together describe a hierarchy (tree)
+ of sessions, with globally unique names. The new session name
+ @{text "A"} should be sufficiently long to stand on its own in a
+ potentially large library.
+
+ \item \isakeyword{session}~@{text "A (groups)"} indicates a
+ collection of groups where the new session is a member. Group names
+ are uninterpreted and merely follow certain conventions. For
+ example, the Isabelle distribution tags some important sessions by
+ the group name called ``@{text "main"}''. Other projects may invent
+ their own conventions, but this requires some care to avoid clashes
+ within this unchecked name space.
+
+ \item \isakeyword{session}~@{text "A"}~\isakeyword{in}~@{text "dir"}
+ specifies an explicit directory for this session; by default this is
+ the current directory of the @{verbatim ROOT} file.
+
+ All theories and auxiliary source files are located relatively to
+ the session directory. The prover process is run within the same as
+ its current working directory.
+
+ \item \isakeyword{description}~@{text "text"} is a free-form
+ annotation for this session.
+
+ \item \isakeyword{options}~@{text "[x = a, y = b, z]"} defines
+ separate options (\secref{sec:system-options}) that are used when
+ processing this session, but \emph{without} propagation to child
+ sessions. Note that @{text "z"} abbreviates @{text "z = true"} for
+ Boolean options.
+
+ \item \isakeyword{theories}~@{text "options names"} specifies a
+ block of theories that are processed within an environment that is
+ augmented by the given options, in addition to the global session
+ options given before. Any number of blocks of \isakeyword{theories}
+ may be given. Options are only active for each
+ \isakeyword{theories} block separately.
+
+ \item \isakeyword{files}~@{text "files"} lists additional source
+ files that are involved in the processing of this session. This
+ should cover anything outside the formal content of the theory
+ sources, say some auxiliary {\TeX} files that are required for
+ document processing. In contrast, files that are specified in
+ formal theory headers as @{keyword "uses"} need not be declared
+ again.
+
+ \end{description}
+*}
+
+subsubsection {* Examples *}
+
+text {* See @{file "~~/src/HOL/ROOT"} for a diversity of practically
+ relevant situations, but it uses relatively complex quasi-hierarchic
+ naming conventions like @{text "HOL\<dash>SPARK"}, @{text
+ "HOL\<dash>SPARK\<dash>Examples"}. An alternative is to use
+ unqualified names that are relatively long and descriptive, as in
+ the Archive of Formal Proofs (\url{http://afp.sf.net}), for
+ example. *}
+
+
+section {* System build options \label{sec:system-options} *}
+
+text {* See @{file "~~/etc/options"} for the main defaults provided by
+ the Isabelle distribution. Isabelle/jEdit (\secref{sec:tool-jedit})
+ includes a simple editing mode @{verbatim "isabelle-options"} for
+ this file-format.
+
+ The @{tool_def options} tool prints Isabelle system options. Its
+ command-line usage is:
+\begin{ttbox}
+Usage: isabelle options [OPTIONS] [MORE_OPTIONS ...]
+
+ Options are:
+ -b include $ISABELLE_BUILD_OPTIONS
+ -x FILE export to FILE in YXML format
+
+ Print Isabelle system options, augmented by MORE_OPTIONS given as
+ arguments NAME=VAL or NAME.
+\end{ttbox}
+
+ The command line arguments provide additional system options of the
+ form @{text "name"}@{verbatim "="}@{text "value"} or @{text name}
+ for Boolean options.
+
+ Option @{verbatim "-b"} augments the implicit environment of system
+ options by the ones of @{setting ISABELLE_BUILD_OPTIONS}, cf.\
+ \secref{sec:tool-build}.
+
+ Option @{verbatim "-x"} specifies a file to export the result in
+ YXML format, instead of printing it in human-readable form.
+*}
+
+
+section {* Invoking the build process \label{sec:tool-build} *}
+
+text {* The @{tool_def build} tool invokes the build process for
+ Isabelle sessions. It manages dependencies between sessions,
+ related sources of theories and auxiliary files, and target heap
+ images. Accordingly, it runs instances of the prover process with
+ optional document preparation. Its command-line usage
+ is:\footnote{Isabelle/Scala provides the same functionality via
+ \texttt{isabelle.Build.build}.}
+\begin{ttbox}
+Usage: isabelle build [OPTIONS] [SESSIONS ...]
+
+ Options are:
+ -D DIR include session directory and select its sessions
+ -a select all sessions
+ -b build heap images
+ -c clean build
+ -d DIR include session directory
+ -g NAME select session group NAME
+ -j INT maximum number of parallel jobs (default 1)
+ -l list session source files
+ -n no build -- test dependencies only
+ -o OPTION override session configuration OPTION
+ (via NAME=VAL or NAME)
+ -s system build mode: produce output in ISABELLE_HOME
+ -v verbose
+
+ Build and manage Isabelle sessions, depending on implicit
+ ISABELLE_BUILD_OPTIONS="..."
+
+ ML_PLATFORM="..."
+ ML_HOME="..."
+ ML_SYSTEM="..."
+ ML_OPTIONS="..."
+\end{ttbox}
+
+ \medskip Isabelle sessions are defined via session ROOT files as
+ described in (\secref{sec:session-root}). The totality of sessions
+ is determined by collecting such specifications from all Isabelle
+ component directories (\secref{sec:components}), augmented by more
+ directories given via options @{verbatim "-d"}~@{text "DIR"} on the
+ command line. Each such directory may contain a session
+ \texttt{ROOT} file with several session specifications.
+
+ Any session root directory may refer recursively to further
+ directories of the same kind, by listing them in a catalog file
+ @{verbatim "ROOTS"} line-by-line. This helps to organize large
+ collections of session specifications, or to make @{verbatim "-d"}
+ command line options persistent (say within @{verbatim
+ "$ISABELLE_HOME_USER/ROOTS"}).
+
+ \medskip The subset of sessions to be managed is determined via
+ individual @{text "SESSIONS"} given as command-line arguments, or
+ session groups that are given via one or more options @{verbatim
+ "-g"}~@{text "NAME"}. Option @{verbatim "-a"} selects all sessions.
+ The build tool takes session dependencies into account: the set of
+ selected sessions is completed by including all ancestors.
+
+ \medskip Option @{verbatim "-D"} is similar to @{verbatim "-d"}, but
+ selects all sessions that are defined in the given directories.
+
+ \medskip The build process depends on additional options
+ (\secref{sec:system-options}) that are passed to the prover
+ eventually. The settings variable @{setting_ref
+ ISABELLE_BUILD_OPTIONS} allows to provide additional defaults, e.g.\
+ \texttt{ISABELLE_BUILD_OPTIONS="document=pdf threads=4"}. Moreover,
+ the environment of system build options may be augmented on the
+ command line via @{verbatim "-o"}~@{text "name"}@{verbatim
+ "="}@{text "value"} or @{verbatim "-o"}~@{text "name"}, which
+ abbreviates @{verbatim "-o"}~@{text "name"}@{verbatim"=true"} for
+ Boolean options. Multiple occurrences of @{verbatim "-o"} on the
+ command-line are applied in the given order.
+
+ \medskip Option @{verbatim "-b"} ensures that heap images are
+ produced for all selected sessions. By default, images are only
+ saved for inner nodes of the hierarchy of sessions, as required for
+ other sessions to continue later on.
+
+ \medskip Option @{verbatim "-c"} cleans all descendants of the
+ selected sessions before performing the specified build operation.
+
+ \medskip Option @{verbatim "-n"} omits the actual build process
+ after the preparatory stage (including optional cleanup). Note that
+ the return code always indicates the status of the set of selected
+ sessions.
+
+ \medskip Option @{verbatim "-j"} specifies the maximum number of
+ parallel build jobs (prover processes). Each prover process is
+ subject to a separate limit of parallel worker threads, cf.\ system
+ option @{system_option_ref threads}.
+
+ \medskip Option @{verbatim "-s"} enables \emph{system mode}, which
+ means that resulting heap images and log files are stored in
+ @{verbatim "$ISABELLE_HOME/heaps"} instead of the default location
+ @{setting ISABELLE_OUTPUT} (which is normally in @{setting
+ ISABELLE_HOME_USER}, i.e.\ the user's home directory).
+
+ \medskip Option @{verbatim "-v"} increases the general level of
+ verbosity. Option @{verbatim "-l"} lists the source files that
+ contribute to a session.
+*}
+
+subsubsection {* Examples *}
+
+text {*
+ Build a specific logic image:
+\begin{ttbox}
+isabelle build -b HOLCF
+\end{ttbox}
+
+ \smallskip Build the main group of logic images:
+\begin{ttbox}
+isabelle build -b -g main
+\end{ttbox}
+
+ \smallskip Provide a general overview of the status of all Isabelle
+ sessions, without building anything:
+\begin{ttbox}
+isabelle build -a -n -v
+\end{ttbox}
+
+ \smallskip Build all sessions with HTML browser info and PDF
+ document preparation:
+\begin{ttbox}
+isabelle build -a -o browser_info -o document=pdf
+\end{ttbox}
+
+ \smallskip Build all sessions with a maximum of 8 parallel prover
+ processes and 4 worker threads each (on a machine with many cores):
+\begin{ttbox}
+isabelle build -a -j8 -o threads=4
+\end{ttbox}
+
+ \smallskip Build some session images with cleanup of their
+ descendants, while retaining their ancestry:
+\begin{ttbox}
+isabelle build -b -c HOL-Boogie HOL-SPARK
+\end{ttbox}
+
+ \smallskip Clean all sessions without building anything:
+\begin{ttbox}
+isabelle build -a -n -c
+\end{ttbox}
+
+ \smallskip Build all sessions from some other directory hierarchy,
+ according to the settings variable @{verbatim "AFP"} that happens to
+ be defined inside the Isabelle environment:
+\begin{ttbox}
+isabelle build -D '$AFP'
+\end{ttbox}
+*}
+
+end
--- a/doc-src/System/Thy/Base.thy Mon Aug 27 16:10:54 2012 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-theory Base
-imports Pure
-begin
-
-ML_file "../../antiquote_setup.ML"
-setup Antiquote_Setup.setup
-
-declare [[thy_output_source]]
-
-end
--- a/doc-src/System/Thy/Basics.thy Mon Aug 27 16:10:54 2012 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,554 +0,0 @@
-theory Basics
-imports Base
-begin
-
-chapter {* The Isabelle system environment *}
-
-text {* This manual describes Isabelle together with related tools and
- user interfaces as seen from a system oriented view. See also the
- \emph{Isabelle/Isar Reference Manual}~\cite{isabelle-isar-ref} for
- the actual Isabelle input language and related concepts, and
- \emph{The Isabelle/Isar Implementation
- Manual}~\cite{isabelle-implementation} for the main concepts of the
- underlying implementation in Isabelle/ML.
-
- \medskip The Isabelle system environment provides the following
- basic infrastructure to integrate tools smoothly.
-
- \begin{enumerate}
-
- \item The \emph{Isabelle settings} mechanism provides process
- environment variables to all Isabelle executables (including tools
- and user interfaces).
-
- \item The raw \emph{Isabelle process} (@{executable_ref
- "isabelle-process"}) runs logic sessions either interactively or in
- batch mode. In particular, this view abstracts over the invocation
- of the actual ML system to be used. Regular users rarely need to
- care about the low-level process.
-
- \item The main \emph{Isabelle tool wrapper} (@{executable_ref
- isabelle}) provides a generic startup environment Isabelle related
- utilities, user interfaces etc. Such tools automatically benefit
- from the settings mechanism.
-
- \end{enumerate}
-*}
-
-
-section {* Isabelle settings \label{sec:settings} *}
-
-text {*
- The Isabelle system heavily depends on the \emph{settings
- mechanism}\indexbold{settings}. Essentially, this is a statically
- scoped collection of environment variables, such as @{setting
- ISABELLE_HOME}, @{setting ML_SYSTEM}, @{setting ML_HOME}. These
- variables are \emph{not} intended to be set directly from the shell,
- though. Isabelle employs a somewhat more sophisticated scheme of
- \emph{settings files} --- one for site-wide defaults, another for
- additional user-specific modifications. With all configuration
- variables in clearly defined places, this scheme is more
- maintainable and user-friendly than global shell environment
- variables.
-
- In particular, we avoid the typical situation where prospective
- users of a software package are told to put several things into
- their shell startup scripts, before being able to actually run the
- program. Isabelle requires none such administrative chores of its
- end-users --- the executables can be invoked straight away.
- Occasionally, users would still want to put the @{file
- "$ISABELLE_HOME/bin"} directory into their shell's search path, but
- this is not required.
-*}
-
-
-subsection {* Bootstrapping the environment \label{sec:boot} *}
-
-text {* Isabelle executables need to be run within a proper settings
- environment. This is bootstrapped as described below, on the first
- invocation of one of the outer wrapper scripts (such as
- @{executable_ref isabelle}). This happens only once for each
- process tree, i.e.\ the environment is passed to subprocesses
- according to regular Unix conventions.
-
- \begin{enumerate}
-
- \item The special variable @{setting_def ISABELLE_HOME} is
- determined automatically from the location of the binary that has
- been run.
-
- You should not try to set @{setting ISABELLE_HOME} manually. Also
- note that the Isabelle executables either have to be run from their
- original location in the distribution directory, or via the
- executable objects created by the @{tool install} tool. Symbolic
- links are admissible, but a plain copy of the @{file
- "$ISABELLE_HOME/bin"} files will not work!
-
- \item The file @{file "$ISABELLE_HOME/etc/settings"} is run as a
- @{executable_ref bash} shell script with the auto-export option for
- variables enabled.
-
- This file holds a rather long list of shell variable assigments,
- thus providing the site-wide default settings. The Isabelle
- distribution already contains a global settings file with sensible
- defaults for most variables. When installing the system, only a few
- of these may have to be adapted (probably @{setting ML_SYSTEM}
- etc.).
-
- \item The file @{verbatim "$ISABELLE_HOME_USER/etc/settings"} (if it
- exists) is run in the same way as the site default settings. Note
- that the variable @{setting ISABELLE_HOME_USER} has already been set
- before --- usually to something like @{verbatim
- "$USER_HOME/.isabelle/IsabelleXXXX"}.
-
- Thus individual users may override the site-wide defaults. See also
- file @{file "$ISABELLE_HOME/etc/user-settings.sample"} in the
- distribution. Typically, a user settings file would contain only a
- few lines, just the assigments that are really changed. One should
- definitely \emph{not} start with a full copy the basic @{file
- "$ISABELLE_HOME/etc/settings"}. This could cause very annoying
- maintainance problems later, when the Isabelle installation is
- updated or changed otherwise.
-
- \end{enumerate}
-
- Since settings files are regular GNU @{executable_def bash} scripts,
- one may use complex shell commands, such as @{verbatim "if"} or
- @{verbatim "case"} statements to set variables depending on the
- system architecture or other environment variables. Such advanced
- features should be added only with great care, though. In
- particular, external environment references should be kept at a
- minimum.
-
- \medskip A few variables are somewhat special:
-
- \begin{itemize}
-
- \item @{setting_def ISABELLE_PROCESS} and @{setting_def ISABELLE_TOOL} are set
- automatically to the absolute path names of the @{executable
- "isabelle-process"} and @{executable isabelle} executables,
- respectively.
-
- \item @{setting_ref ISABELLE_OUTPUT} will have the identifiers of
- the Isabelle distribution (cf.\ @{setting ISABELLE_IDENTIFIER}) and
- the ML system (cf.\ @{setting ML_IDENTIFIER}) appended automatically
- to its value.
-
- \end{itemize}
-
- \medskip Note that the settings environment may be inspected with
- the @{tool getenv} tool. This might help to figure out the effect
- of complex settings scripts. *}
-
-
-subsection {* Common variables *}
-
-text {*
- This is a reference of common Isabelle settings variables. Note that
- the list is somewhat open-ended. Third-party utilities or interfaces
- may add their own selection. Variables that are special in some
- sense are marked with @{text "\<^sup>*"}.
-
- \begin{description}
-
- \item[@{setting_def USER_HOME}@{text "\<^sup>*"}] Is the cross-platform
- user home directory. On Unix systems this is usually the same as
- @{setting HOME}, but on Windows it is the regular home directory of
- the user, not the one of within the Cygwin root
- file-system.\footnote{Cygwin itself offers another choice whether
- its HOME should point to the \texttt{/home} directory tree or the
- Windows user home.}
-
- \item[@{setting_def ISABELLE_HOME}@{text "\<^sup>*"}] is the location of the
- top-level Isabelle distribution directory. This is automatically
- determined from the Isabelle executable that has been invoked. Do
- not attempt to set @{setting ISABELLE_HOME} yourself from the shell!
-
- \item[@{setting_def ISABELLE_HOME_USER}] is the user-specific
- counterpart of @{setting ISABELLE_HOME}. The default value is
- relative to @{verbatim "$USER_HOME/.isabelle"}, under rare
- circumstances this may be changed in the global setting file.
- Typically, the @{setting ISABELLE_HOME_USER} directory mimics
- @{setting ISABELLE_HOME} to some extend. In particular, site-wide
- defaults may be overridden by a private @{verbatim
- "$ISABELLE_HOME_USER/etc/settings"}.
-
- \item[@{setting_def ISABELLE_PLATFORM}@{text "\<^sup>*"}] is automatically
- set to a symbolic identifier for the underlying hardware and
- operating system. The Isabelle platform identification always
- refers to the 32 bit variant, even this is a 64 bit machine. Note
- that the ML or Java runtime may have a different idea, depending on
- which binaries are actually run.
-
- \item[@{setting_def ISABELLE_PLATFORM64}@{text "\<^sup>*"}] is similar to
- @{setting ISABELLE_PLATFORM} but refers to the proper 64 bit variant
- on a platform that supports this; the value is empty for 32 bit.
- Note that the following bash expression (including the quotes)
- prefers the 64 bit platform, if that is available:
-
- @{verbatim [display] "\"${ISABELLE_PLATFORM64:-$ISABELLE_PLATFORM}\""}
-
- \item[@{setting_def ISABELLE_PROCESS}@{text "\<^sup>*"}, @{setting
- ISABELLE_TOOL}@{text "\<^sup>*"}] are automatically set to the full path
- names of the @{executable "isabelle-process"} and @{executable
- isabelle} executables, respectively. Thus other tools and scripts
- need not assume that the @{file "$ISABELLE_HOME/bin"} directory is
- on the current search path of the shell.
-
- \item[@{setting_def ISABELLE_IDENTIFIER}@{text "\<^sup>*"}] refers
- to the name of this Isabelle distribution, e.g.\ ``@{verbatim
- Isabelle2012}''.
-
- \item[@{setting_def ML_SYSTEM}, @{setting_def ML_HOME},
- @{setting_def ML_OPTIONS}, @{setting_def ML_PLATFORM}, @{setting_def
- ML_IDENTIFIER}@{text "\<^sup>*"}] specify the underlying ML system
- to be used for Isabelle. There is only a fixed set of admissable
- @{setting ML_SYSTEM} names (see the @{file
- "$ISABELLE_HOME/etc/settings"} file of the distribution).
-
- The actual compiler binary will be run from the directory @{setting
- ML_HOME}, with @{setting ML_OPTIONS} as first arguments on the
- command line. The optional @{setting ML_PLATFORM} may specify the
- binary format of ML heap images, which is useful for cross-platform
- installations. The value of @{setting ML_IDENTIFIER} is
- automatically obtained by composing the values of @{setting
- ML_SYSTEM}, @{setting ML_PLATFORM} and the Isabelle version values.
-
- \item[@{setting_def ISABELLE_JDK_HOME}] needs to point to a full JDK
- (Java Development Kit) installation with @{verbatim javac} and
- @{verbatim jar} executables. This is essential for Isabelle/Scala
- and other JVM-based tools to work properly. Note that conventional
- @{verbatim JAVA_HOME} usually points to the JRE (Java Runtime
- Environment), not JDK.
-
- \item[@{setting_def ISABELLE_PATH}] is a list of directories
- (separated by colons) where Isabelle logic images may reside. When
- looking up heaps files, the value of @{setting ML_IDENTIFIER} is
- appended to each component internally.
-
- \item[@{setting_def ISABELLE_OUTPUT}@{text "\<^sup>*"}] is a
- directory where output heap files should be stored by default. The
- ML system and Isabelle version identifier is appended here, too.
-
- \item[@{setting_def ISABELLE_BROWSER_INFO}] is the directory where
- theory browser information (HTML text, graph data, and printable
- documents) is stored (see also \secref{sec:info}). The default
- value is @{verbatim "$ISABELLE_HOME_USER/browser_info"}.
-
- \item[@{setting_def ISABELLE_LOGIC}] specifies the default logic to
- load if none is given explicitely by the user. The default value is
- @{verbatim HOL}.
-
- \item[@{setting_def ISABELLE_LINE_EDITOR}] specifies the default
- line editor for the @{tool_ref tty} interface.
-
- \item[@{setting_def ISABELLE_USEDIR_OPTIONS}] is implicitly prefixed
- to the command line of any @{tool_ref usedir} invocation. This
- typically contains compilation options for object-logics --- @{tool
- usedir} is the basic tool for managing logic sessions (cf.\ the
- @{verbatim IsaMakefile}s in the distribution).
-
- \item[@{setting_def ISABELLE_LATEX}, @{setting_def
- ISABELLE_PDFLATEX}, @{setting_def ISABELLE_BIBTEX}, @{setting_def
- ISABELLE_DVIPS}] refer to {\LaTeX} related tools for Isabelle
- document preparation (see also \secref{sec:tool-latex}).
-
- \item[@{setting_def ISABELLE_TOOLS}] is a colon separated list of
- directories that are scanned by @{executable isabelle} for external
- utility programs (see also \secref{sec:isabelle-tool}).
-
- \item[@{setting_def ISABELLE_DOCS}] is a colon separated list of
- directories with documentation files.
-
- \item[@{setting_def ISABELLE_DOC_FORMAT}] specifies the preferred
- document format, typically @{verbatim dvi} or @{verbatim pdf}.
-
- \item[@{setting_def DVI_VIEWER}] specifies the command to be used
- for displaying @{verbatim dvi} files.
-
- \item[@{setting_def PDF_VIEWER}] specifies the command to be used
- for displaying @{verbatim pdf} files.
-
- \item[@{setting_def PRINT_COMMAND}] specifies the standard printer
- spool command, which is expected to accept @{verbatim ps} files.
-
- \item[@{setting_def ISABELLE_TMP_PREFIX}@{text "\<^sup>*"}] is the
- prefix from which any running @{executable "isabelle-process"}
- derives an individual directory for temporary files. The default is
- somewhere in @{verbatim "/tmp"}.
-
- \end{description}
-*}
-
-
-subsection {* Additional components \label{sec:components} *}
-
-text {* Any directory may be registered as an explicit \emph{Isabelle
- component}. The general layout conventions are that of the main
- Isabelle distribution itself, and the following two files (both
- optional) have a special meaning:
-
- \begin{itemize}
-
- \item @{verbatim "etc/settings"} holds additional settings that are
- initialized when bootstrapping the overall Isabelle environment,
- cf.\ \secref{sec:boot}. As usual, the content is interpreted as a
- @{verbatim bash} script. It may refer to the component's enclosing
- directory via the @{verbatim "COMPONENT"} shell variable.
-
- For example, the following setting allows to refer to files within
- the component later on, without having to hardwire absolute paths:
-
-\begin{ttbox}
-MY_COMPONENT_HOME="$COMPONENT"
-\end{ttbox}
-
- Components can also add to existing Isabelle settings such as
- @{setting_def ISABELLE_TOOLS}, in order to provide
- component-specific tools that can be invoked by end-users. For
- example:
-
-\begin{ttbox}
-ISABELLE_TOOLS="$ISABELLE_TOOLS:$COMPONENT/lib/Tools"
-\end{ttbox}
-
- \item @{verbatim "etc/components"} holds a list of further
- sub-components of the same structure. The directory specifications
- given here can be either absolute (with leading @{verbatim "/"}) or
- relative to the component's main directory.
-
- \end{itemize}
-
- The root of component initialization is @{setting ISABELLE_HOME}
- itself. After initializing all of its sub-components recursively,
- @{setting ISABELLE_HOME_USER} is included in the same manner (if
- that directory exists). This allows to install private components
- via @{verbatim "$ISABELLE_HOME_USER/etc/components"}, although it is
- often more convenient to do that programmatically via the
- \verb,init_component, shell function in the \verb,etc/settings,
- script of \verb,$ISABELLE_HOME_USER, (or any other component
- directory). For example:
-\begin{ttbox}
-init_component "$HOME/screwdriver-2.0"
-\end{ttbox}
-
- This is tolerant wrt.\ missing component directories, but might
- produce a warning.
-
- \medskip More complex situations may be addressed by initializing
- components listed in a given catalog file, relatively to some base
- directory:
-
-\begin{ttbox}
-init_components "$HOME/my_component_store" "some_catalog_file"
-\end{ttbox}
-
- The component directories listed in the catalog file are treated as
- relative to the given base directory.
-
- See also \secref{sec:tool-components} for some tool-support for
- resolving components that are formally initialized but not installed
- yet.
-*}
-
-
-section {* The raw Isabelle process *}
-
-text {*
- The @{executable_def "isabelle-process"} executable runs bare-bones
- Isabelle logic sessions --- either interactively or in batch mode.
- It provides an abstraction over the underlying ML system, and over
- the actual heap file locations. Its usage is:
-
-\begin{ttbox}
-Usage: isabelle-process [OPTIONS] [INPUT] [OUTPUT]
-
- Options are:
- -I startup Isar interaction mode
- -P startup Proof General interaction mode
- -S secure mode -- disallow critical operations
- -T ADDR startup process wrapper, with socket address
- -W IN:OUT startup process wrapper, with input/output fifos
- -X startup PGIP interaction mode
- -e MLTEXT pass MLTEXT to the ML session
- -f pass 'Session.finish();' to the ML session
- -m MODE add print mode for output
- -q non-interactive session
- -r open heap file read-only
- -u pass 'use"ROOT.ML";' to the ML session
- -w reset write permissions on OUTPUT
-
- INPUT (default "\$ISABELLE_LOGIC") and OUTPUT specify in/out heaps.
- These are either names to be searched in the Isabelle path, or
- actual file names (containing at least one /).
- If INPUT is "RAW_ML_SYSTEM", just start the bare bones ML system.
-\end{ttbox}
-
- Input files without path specifications are looked up in the
- @{setting ISABELLE_PATH} setting, which may consist of multiple
- components separated by colons --- these are tried in the given
- order with the value of @{setting ML_IDENTIFIER} appended
- internally. In a similar way, base names are relative to the
- directory specified by @{setting ISABELLE_OUTPUT}. In any case,
- actual file locations may also be given by including at least one
- slash (@{verbatim "/"}) in the name (hint: use @{verbatim "./"} to
- refer to the current directory).
-*}
-
-
-subsubsection {* Options *}
-
-text {*
- If the input heap file does not have write permission bits set, or
- the @{verbatim "-r"} option is given explicitely, then the session
- started will be read-only. That is, the ML world cannot be
- committed back into the image file. Otherwise, a writable session
- enables commits into either the input file, or into another output
- heap file (if that is given as the second argument on the command
- line).
-
- The read-write state of sessions is determined at startup only, it
- cannot be changed intermediately. Also note that heap images may
- require considerable amounts of disk space (approximately
- 50--200~MB). Users are responsible for themselves to dispose their
- heap files when they are no longer needed.
-
- \medskip The @{verbatim "-w"} option makes the output heap file
- read-only after terminating. Thus subsequent invocations cause the
- logic image to be read-only automatically.
-
- \medskip Using the @{verbatim "-e"} option, arbitrary ML code may be
- passed to the Isabelle session from the command line. Multiple
- @{verbatim "-e"}'s are evaluated in the given order. Strange things
- may happen when errorneous ML code is provided. Also make sure that
- the ML commands are terminated properly by semicolon.
-
- \medskip The @{verbatim "-u"} option is a shortcut for @{verbatim
- "-e"} passing ``@{verbatim "use \"ROOT.ML\";"}'' to the ML session.
- The @{verbatim "-f"} option passes ``@{verbatim
- "Session.finish();"}'', which is intended mainly for administrative
- purposes.
-
- \medskip The @{verbatim "-m"} option adds identifiers of print modes
- to be made active for this session. Typically, this is used by some
- user interface, e.g.\ to enable output of proper mathematical
- symbols.
-
- \medskip Isabelle normally enters an interactive top-level loop
- (after processing the @{verbatim "-e"} texts). The @{verbatim "-q"}
- option inhibits interaction, thus providing a pure batch mode
- facility.
-
- \medskip The @{verbatim "-I"} option makes Isabelle enter Isar
- interaction mode on startup, instead of the primitive ML top-level.
- The @{verbatim "-P"} option configures the top-level loop for
- interaction with the Proof General user interface, and the
- @{verbatim "-X"} option enables XML-based PGIP communication.
-
- \medskip The @{verbatim "-T"} or @{verbatim "-W"} option makes
- Isabelle enter a special process wrapper for interaction via the
- Isabelle/Scala layer, see also @{file
- "~~/src/Pure/System/isabelle_process.scala"}. The protocol between
- the ML and JVM process is private to the implementation.
-
- \medskip The @{verbatim "-S"} option makes the Isabelle process more
- secure by disabling some critical operations, notably runtime
- compilation and evaluation of ML source code.
-*}
-
-
-subsubsection {* Examples *}
-
-text {*
- Run an interactive session of the default object-logic (as specified
- by the @{setting ISABELLE_LOGIC} setting) like this:
-\begin{ttbox}
-isabelle-process
-\end{ttbox}
-
- Usually @{setting ISABELLE_LOGIC} refers to one of the standard
- logic images, which are read-only by default. A writable session
- --- based on @{verbatim HOL}, but output to @{verbatim Test} (in the
- directory specified by the @{setting ISABELLE_OUTPUT} setting) ---
- may be invoked as follows:
-\begin{ttbox}
-isabelle-process HOL Test
-\end{ttbox}
- Ending this session normally (e.g.\ by typing control-D) dumps the
- whole ML system state into @{verbatim Test} (be prepared for more
- than 100\,MB):
-
- The @{verbatim Test} session may be continued later (still in
- writable state) by:
-\begin{ttbox}
-isabelle-process Test
-\end{ttbox}
- A read-only @{verbatim Test} session may be started by:
-\begin{ttbox}
-isabelle-process -r Test
-\end{ttbox}
-
- \medskip Note that manual session management like this does
- \emph{not} provide proper setup for theory presentation. This would
- require @{tool usedir}.
-
- \bigskip The next example demonstrates batch execution of Isabelle.
- We retrieve the @{verbatim Main} theory value from the theory loader
- within ML (observe the delicate quoting rules for the Bash shell
- vs.\ ML):
-\begin{ttbox}
-isabelle-process -e 'Thy_Info.get_theory "Main";' -q -r HOL
-\end{ttbox}
- Note that the output text will be interspersed with additional junk
- messages by the ML runtime environment. The @{verbatim "-W"} option
- allows to communicate with the Isabelle process via an external
- program in a more robust fashion.
-*}
-
-
-section {* The Isabelle tool wrapper \label{sec:isabelle-tool} *}
-
-text {*
- All Isabelle related tools and interfaces are called via a common
- wrapper --- @{executable isabelle}:
-
-\begin{ttbox}
-Usage: isabelle TOOL [ARGS ...]
-
- Start Isabelle tool NAME with ARGS; pass "-?" for tool specific help.
-
-Available tools:
- \dots
-\end{ttbox}
-
- In principle, Isabelle tools are ordinary executable scripts that
- are run within the Isabelle settings environment, see
- \secref{sec:settings}. The set of available tools is collected by
- @{executable isabelle} from the directories listed in the @{setting
- ISABELLE_TOOLS} setting. Do not try to call the scripts directly
- from the shell. Neither should you add the tool directories to your
- shell's search path!
-*}
-
-
-subsubsection {* Examples *}
-
-text {* Show the list of available documentation of the Isabelle
- distribution:
-
-\begin{ttbox}
- isabelle doc
-\end{ttbox}
-
- View a certain document as follows:
-\begin{ttbox}
- isabelle doc system
-\end{ttbox}
-
- Query the Isabelle settings environment:
-\begin{ttbox}
- isabelle getenv ISABELLE_HOME_USER
-\end{ttbox}
-*}
-
-end
\ No newline at end of file
--- a/doc-src/System/Thy/Interfaces.thy Mon Aug 27 16:10:54 2012 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,281 +0,0 @@
-theory Interfaces
-imports Base
-begin
-
-chapter {* User interfaces *}
-
-section {* Isabelle/jEdit Prover IDE \label{sec:tool-jedit} *}
-
-text {* The @{tool_def jedit} tool invokes a version of
- jEdit\footnote{\url{http://www.jedit.org/}} that has been augmented
- with some components to provide a fully-featured Prover IDE:
-\begin{ttbox} Usage: isabelle jedit [OPTIONS]
- [FILES ...]
-
- Options are:
- -J OPTION add JVM runtime option (default JEDIT_JAVA_OPTIONS)
- -b build only
- -d DIR include session directory
- -f fresh build
- -j OPTION add jEdit runtime option (default JEDIT_OPTIONS)
- -l NAME logic image name (default ISABELLE_LOGIC)
- -m MODE add print mode for output
-
-Start jEdit with Isabelle plugin setup and opens theory FILES
-(default Scratch.thy).
-\end{ttbox}
-
- The @{verbatim "-l"} option specifies the session name of the logic
- image to be used for proof processing. Additional session root
- directories may be included via option @{verbatim "-d"} to augment
- that name space (see also \secref{sec:tool-build}).
-
- The @{verbatim "-m"} option specifies additional print modes.
-
- The @{verbatim "-J"} and @{verbatim "-j"} options allow to pass
- additional low-level options to the JVM or jEdit, respectively. The
- defaults are provided by the Isabelle settings environment
- (\secref{sec:settings}).
-
- The @{verbatim "-b"} and @{verbatim "-f"} options control the
- self-build mechanism of Isabelle/jEdit. This is only relevant for
- building from sources, which also requires an auxiliary @{verbatim
- jedit_build}
- component.\footnote{\url{http://isabelle.in.tum.de/components}} Note
- that official Isabelle releases already include a version of
- Isabelle/jEdit that is built properly. *}
-
-
-section {* Proof General / Emacs *}
-
-text {* The @{tool_def emacs} tool invokes a version of Emacs and
- Proof General\footnote{http://proofgeneral.inf.ed.ac.uk/} within the
- regular Isabelle settings environment (\secref{sec:settings}). This
- is more convenient than starting Emacs separately, loading the Proof
- General LISP files, and then attempting to start Isabelle with
- dynamic @{setting PATH} lookup etc.
-
- The actual interface script is part of the Proof General
- distribution; its usage depends on the particular version. There
- are some options available, such as @{verbatim "-l"} for passing the
- logic image to be used by default, or @{verbatim "-m"} to tune the
- standard print mode. The following Isabelle settings are
- particularly important for Proof General:
-
- \begin{description}
-
- \item[@{setting_def PROOFGENERAL_HOME}] points to the main
- installation directory of the Proof General distribution. This is
- implicitly provided for versions of Proof General that are
- distributed as Isabelle component, see also \secref{sec:components};
- otherwise it needs to be configured manually.
-
- \item[@{setting_def PROOFGENERAL_OPTIONS}] is implicitly prefixed to
- the command line of any invocation of the Proof General @{verbatim
- interface} script. This allows to provide persistent default
- options for the invocation of \texttt{isabelle emacs}.
-
- \end{description}
-*}
-
-
-section {* Plain TTY interaction \label{sec:tool-tty} *}
-
-text {*
- The @{tool_def tty} tool runs the Isabelle process interactively
- within a plain terminal session:
-\begin{ttbox}
-Usage: isabelle tty [OPTIONS]
-
- Options are:
- -l NAME logic image name (default ISABELLE_LOGIC)
- -m MODE add print mode for output
- -p NAME line editor program name (default ISABELLE_LINE_EDITOR)
-
- Run Isabelle process with plain tty interaction and line editor.
-\end{ttbox}
-
- The @{verbatim "-l"} option specifies the logic image. The
- @{verbatim "-m"} option specifies additional print modes. The
- @{verbatim "-p"} option specifies an alternative line editor (such
- as the @{executable_def rlwrap} wrapper for GNU readline); the
- fall-back is to use raw standard input.
-
- Regular interaction works via the standard Isabelle/Isar toplevel
- loop. The Isar command @{command exit} drops out into the
- bare-bones ML system, which is occasionally useful for debugging of
- the Isar infrastructure itself. Invoking @{ML Isar.loop}~@{verbatim
- "();"} in ML will return to the Isar toplevel. *}
-
-
-
-section {* Theory graph browser \label{sec:browse} *}
-
-text {* The Isabelle graph browser is a general tool for visualizing
- dependency graphs. Certain nodes of the graph (i.e.\ theories) can
- be grouped together in ``directories'', whose contents may be
- hidden, thus enabling the user to collapse irrelevant portions of
- information. The browser is written in Java, it can be used both as
- a stand-alone application and as an applet. *}
-
-
-subsection {* Invoking the graph browser *}
-
-text {* The stand-alone version of the graph browser is wrapped up as
- @{tool_def browser}:
-\begin{ttbox}
-Usage: isabelle browser [OPTIONS] [GRAPHFILE]
-
- Options are:
- -b Admin/build only
- -c cleanup -- remove GRAPHFILE after use
- -o FILE output to FILE (ps, eps, pdf)
-\end{ttbox}
- When no filename is specified, the browser automatically changes to
- the directory @{setting ISABELLE_BROWSER_INFO}.
-
- \medskip The @{verbatim "-b"} option indicates that this is for
- administrative build only, i.e.\ no browser popup if no files are
- given.
-
- The @{verbatim "-c"} option causes the input file to be removed
- after use.
-
- The @{verbatim "-o"} option indicates batch-mode operation, with the
- output written to the indicated file; note that @{verbatim pdf}
- produces an @{verbatim eps} copy as well.
-
- \medskip The applet version of the browser is part of the standard
- WWW theory presentation, see the link ``theory dependencies'' within
- each session index.
-*}
-
-
-subsection {* Using the graph browser *}
-
-text {*
- The browser's main window, which is shown in
- \figref{fig:browserwindow}, consists of two sub-windows. In the
- left sub-window, the directory tree is displayed. The graph itself
- is displayed in the right sub-window.
-
- \begin{figure}[ht]
- \includegraphics[width=\textwidth]{browser_screenshot}
- \caption{\label{fig:browserwindow} Browser main window}
- \end{figure}
-*}
-
-
-subsubsection {* The directory tree window *}
-
-text {*
- We describe the usage of the directory browser and the meaning of
- the different items in the browser window.
-
- \begin{itemize}
-
- \item A red arrow before a directory name indicates that the
- directory is currently ``folded'', i.e.~the nodes in this directory
- are collapsed to one single node. In the right sub-window, the names
- of nodes corresponding to folded directories are enclosed in square
- brackets and displayed in red color.
-
- \item A green downward arrow before a directory name indicates that
- the directory is currently ``unfolded''. It can be folded by
- clicking on the directory name. Clicking on the name for a second
- time unfolds the directory again. Alternatively, a directory can
- also be unfolded by clicking on the corresponding node in the right
- sub-window.
-
- \item Blue arrows stand before ordinary node names. When clicking on
- such a name (i.e.\ that of a theory), the graph display window
- focuses to the corresponding node. Double clicking invokes a text
- viewer window in which the contents of the theory file are
- displayed.
-
- \end{itemize}
-*}
-
-
-subsubsection {* The graph display window *}
-
-text {*
- When pointing on an ordinary node, an upward and a downward arrow is
- shown. Initially, both of these arrows are green. Clicking on the
- upward or downward arrow collapses all predecessor or successor
- nodes, respectively. The arrow's color then changes to red,
- indicating that the predecessor or successor nodes are currently
- collapsed. The node corresponding to the collapsed nodes has the
- name ``@{verbatim "[....]"}''. To uncollapse the nodes again, simply
- click on the red arrow or on the node with the name ``@{verbatim
- "[....]"}''. Similar to the directory browser, the contents of
- theory files can be displayed by double clicking on the
- corresponding node.
-*}
-
-
-subsubsection {* The ``File'' menu *}
-
-text {*
- Due to Java Applet security restrictions this menu is only available
- in the full application version. The meaning of the menu items is as
- follows:
-
- \begin{description}
-
- \item[Open \dots] Open a new graph file.
-
- \item[Export to PostScript] Outputs the current graph in Postscript
- format, appropriately scaled to fit on one single sheet of A4 paper.
- The resulting file can be printed directly.
-
- \item[Export to EPS] Outputs the current graph in Encapsulated
- Postscript format. The resulting file can be included in other
- documents.
-
- \item[Quit] Quit the graph browser.
-
- \end{description}
-*}
-
-
-subsection {* Syntax of graph definition files *}
-
-text {*
- A graph definition file has the following syntax:
-
- \begin{center}\small
- \begin{tabular}{rcl}
- @{text graph} & @{text "="} & @{text "{ vertex"}~@{verbatim ";"}~@{text "}+"} \\
- @{text vertex} & @{text "="} & @{text "vertex_name vertex_ID dir_name ["}~@{verbatim "+"}~@{text "] path ["}~@{verbatim "<"}~@{text "|"}~@{verbatim ">"}~@{text "] { vertex_ID }*"}
- \end{tabular}
- \end{center}
-
- The meaning of the items in a vertex description is as follows:
-
- \begin{description}
-
- \item[@{text vertex_name}] The name of the vertex.
-
- \item[@{text vertex_ID}] The vertex identifier. Note that there may
- be several vertices with equal names, whereas identifiers must be
- unique.
-
- \item[@{text dir_name}] The name of the ``directory'' the vertex
- should be placed in. A ``@{verbatim "+"}'' sign after @{text
- dir_name} indicates that the nodes in the directory are initially
- visible. Directories are initially invisible by default.
-
- \item[@{text path}] The path of the corresponding theory file. This
- is specified relatively to the path of the graph definition file.
-
- \item[List of successor/predecessor nodes] A ``@{verbatim "<"}''
- sign before the list means that successor nodes are listed, a
- ``@{verbatim ">"}'' sign means that predecessor nodes are listed. If
- neither ``@{verbatim "<"}'' nor ``@{verbatim ">"}'' is found, the
- browser assumes that successor nodes are listed.
-
- \end{description}
-*}
-
-end
\ No newline at end of file
--- a/doc-src/System/Thy/Misc.thy Mon Aug 27 16:10:54 2012 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,598 +0,0 @@
-theory Misc
-imports Base
-begin
-
-chapter {* Miscellaneous tools \label{ch:tools} *}
-
-text {*
- Subsequently we describe various Isabelle related utilities, given
- in alphabetical order.
-*}
-
-
-section {* Resolving Isabelle components \label{sec:tool-components} *}
-
-text {*
- The @{tool_def components} tool resolves Isabelle components:
-\begin{ttbox}
-Usage: isabelle components [OPTIONS] [COMPONENTS ...]
-
- Options are:
- -R URL component repository
- (default $ISABELLE_COMPONENT_REPOSITORY)
- -a all missing components
- -l list status
-
- Resolve Isabelle components via download and installation.
- COMPONENTS are identified via base name.
-
- ISABELLE_COMPONENT_REPOSITORY="http://isabelle.in.tum.de/components"
-\end{ttbox}
-
- Components are initialized as described in \secref{sec:components}
- in a permissive manner, which can mark components as ``missing''.
- This state is amended by letting @{tool "components"} download and
- unpack components that are published on the default component
- repository \url{http://isabelle.in.tum.de/components/} in
- particular.
-
- Option @{verbatim "-R"} specifies an alternative component
- repository. Note that @{verbatim "file:///"} URLs can be used for
- local directories.
-
- Option @{verbatim "-a"} selects all missing components to be
- installed. Explicit components may be named as command
- line-arguments as well. Note that components are uniquely
- identified by their base name, while the installation takes place in
- the location that was specified in the attempt to initialize the
- component before.
-
- Option @{verbatim "-l"} lists the current state of available and
- missing components with their location (full name) within the
- file-system. *}
-
-
-section {* Displaying documents *}
-
-text {* The @{tool_def display} tool displays documents in DVI or PDF
- format:
-\begin{ttbox}
-Usage: isabelle display [OPTIONS] FILE
-
- Options are:
- -c cleanup -- remove FILE after use
-
- Display document FILE (in DVI format).
-\end{ttbox}
-
- \medskip The @{verbatim "-c"} option causes the input file to be
- removed after use. The program for viewing @{verbatim dvi} files is
- determined by the @{setting DVI_VIEWER} setting.
-*}
-
-
-section {* Viewing documentation \label{sec:tool-doc} *}
-
-text {*
- The @{tool_def doc} tool displays online documentation:
-\begin{ttbox}
-Usage: isabelle doc [DOC]
-
- View Isabelle documentation DOC, or show list of available documents.
-\end{ttbox}
- If called without arguments, it lists all available documents. Each
- line starts with an identifier, followed by a short description. Any
- of these identifiers may be specified as the first argument in order
- to have the corresponding document displayed.
-
- \medskip The @{setting ISABELLE_DOCS} setting specifies the list of
- directories (separated by colons) to be scanned for documentations.
- The program for viewing @{verbatim dvi} files is determined by the
- @{setting DVI_VIEWER} setting.
-*}
-
-
-section {* Shell commands within the settings environment \label{sec:tool-env} *}
-
-text {* The @{tool_def env} tool is a direct wrapper for the standard
- @{verbatim "/usr/bin/env"} command on POSIX systems, running within
- the Isabelle settings environment (\secref{sec:settings}).
-
- The command-line arguments are that of the underlying version of
- @{verbatim env}. For example, the following invokes an instance of
- the GNU Bash shell within the Isabelle environment:
-\begin{alltt}
- isabelle env bash
-\end{alltt}
-*}
-
-
-section {* Getting logic images *}
-
-text {* The @{tool_def findlogics} tool traverses all directories
- specified in @{setting ISABELLE_PATH}, looking for Isabelle logic
- images. Its usage is:
-\begin{ttbox}
-Usage: isabelle findlogics
-
- Collect heap file names from ISABELLE_PATH.
-\end{ttbox}
-
- The base names of all files found on the path are printed --- sorted
- and with duplicates removed. Also note that lookup in @{setting
- ISABELLE_PATH} includes the current values of @{setting ML_SYSTEM}
- and @{setting ML_PLATFORM}. Thus switching to another ML compiler
- may change the set of logic images available.
-*}
-
-
-section {* Inspecting the settings environment \label{sec:tool-getenv} *}
-
-text {* The Isabelle settings environment --- as provided by the
- site-default and user-specific settings files --- can be inspected
- with the @{tool_def getenv} tool:
-\begin{ttbox}
-Usage: isabelle getenv [OPTIONS] [VARNAMES ...]
-
- Options are:
- -a display complete environment
- -b print values only (doesn't work for -a)
- -d FILE dump complete environment to FILE
- (null terminated entries)
-
- Get value of VARNAMES from the Isabelle settings.
-\end{ttbox}
-
- With the @{verbatim "-a"} option, one may inspect the full process
- environment that Isabelle related programs are run in. This usually
- contains much more variables than are actually Isabelle settings.
- Normally, output is a list of lines of the form @{text
- name}@{verbatim "="}@{text value}. The @{verbatim "-b"} option
- causes only the values to be printed.
-
- Option @{verbatim "-d"} produces a dump of the complete environment
- to the specified file. Entries are terminated by the ASCII null
- character, i.e.\ the C string terminator.
-*}
-
-
-subsubsection {* Examples *}
-
-text {* Get the location of @{setting ISABELLE_HOME_USER} where
- user-specific information is stored:
-\begin{ttbox}
-isabelle getenv ISABELLE_HOME_USER
-\end{ttbox}
-
- \medskip Get the value only of the same settings variable, which is
-particularly useful in shell scripts:
-\begin{ttbox}
-isabelle getenv -b ISABELLE_OUTPUT
-\end{ttbox}
-*}
-
-
-section {* Installing standalone Isabelle executables \label{sec:tool-install} *}
-
-text {* By default, the main Isabelle binaries (@{executable
- "isabelle"} etc.) are just run from their location within the
- distribution directory, probably indirectly by the shell through its
- @{setting PATH}. Other schemes of installation are supported by the
- @{tool_def install} tool:
-\begin{ttbox}
-Usage: isabelle install [OPTIONS]
-
- Options are:
- -d DISTDIR use DISTDIR as Isabelle distribution
- (default ISABELLE_HOME)
- -p DIR install standalone binaries in DIR
-
- Install Isabelle executables with absolute references to the current
- distribution directory.
-\end{ttbox}
-
- The @{verbatim "-d"} option overrides the current Isabelle
- distribution directory as determined by @{setting ISABELLE_HOME}.
-
- The @{verbatim "-p"} option installs executable wrapper scripts for
- @{executable "isabelle-process"}, @{executable isabelle}, containing
- proper absolute references to the Isabelle distribution directory.
- A typical @{verbatim DIR} specification would be some directory
- expected to be in the shell's @{setting PATH}, such as @{verbatim
- "$HOME/bin"}.
-
- It is possible to make symbolic links of the main Isabelle
- executables, but making separate copies outside the Isabelle
- distribution directory will not work.
-*}
-
-
-section {* Creating instances of the Isabelle logo *}
-
-text {* The @{tool_def logo} tool creates any instance of the generic
- Isabelle logo as EPS or PDF.
-\begin{ttbox}
-Usage: isabelle logo [OPTIONS] NAME
-
- Create instance NAME of the Isabelle logo (as EPS or PDF).
-
- Options are:
- -o OUTFILE specify output file and format
- (default "isabelle_name.pdf")
- -q quiet mode
-\end{ttbox}
-
- Option @{verbatim "-o"} specifies an explicit output file name and
- format, e.g.\ @{verbatim "mylogo.eps"} for an EPS logo. The default
- is @{verbatim "isabelle_"}@{text name}@{verbatim ".pdf"}, with the
- lower-case version of the given name and PDF output.
-
- Option @{verbatim "-q"} omits printing of the result file name.
-
- \medskip Implementors of Isabelle tools and applications are
- encouraged to make derived Isabelle logos for their own projects
- using this template. *}
-
-
-section {* Isabelle wrapper for make \label{sec:tool-make} *}
-
-text {* The old @{tool_def make} tool is a very simple wrapper for
- ordinary Unix @{executable make}:
-\begin{ttbox}
-Usage: isabelle make [ARGS ...]
-
- Compile the logic in current directory using IsaMakefile.
- ARGS are directly passed to the system make program.
-\end{ttbox}
-
- Note that the Isabelle settings environment is also active. Thus one
- may refer to its values within the @{verbatim IsaMakefile}, e.g.\
- @{verbatim "$(ISABELLE_HOME)"}. Furthermore, programs started from
- the make file also inherit this environment.
-*}
-
-
-section {* Creating Isabelle session directories
- \label{sec:tool-mkdir} *}
-
-text {* The old @{tool_def mkdir} tool prepares Isabelle session
- source directories, including a sensible default setup of @{verbatim
- IsaMakefile}, @{verbatim ROOT.ML}, and a @{verbatim document}
- directory with a minimal @{verbatim root.tex} that is sufficient to
- print all theories of the session (in the order of appearance); see
- \secref{sec:tool-document} for further information on Isabelle
- document preparation. The usage of @{tool mkdir} is:
-
-\begin{ttbox}
-Usage: isabelle mkdir [OPTIONS] [LOGIC] NAME
-
- Options are:
- -I FILE alternative IsaMakefile output
- -P include parent logic target
- -b setup build mode (session outputs heap image)
- -q quiet mode
-
- Prepare session directory, including IsaMakefile and document source,
- with parent LOGIC (default ISABELLE_LOGIC=\$ISABELLE_LOGIC)
-\end{ttbox}
-
- The @{tool mkdir} tool is conservative in the sense that any
- existing @{verbatim IsaMakefile} etc.\ is left unchanged. Thus it
- is safe to invoke it multiple times, although later runs may not
- have the desired effect.
-
- Note that @{tool mkdir} is unable to change @{verbatim IsaMakefile}
- incrementally --- manual changes are required for multiple
- sub-sessions. On order to get an initial working session, the only
- editing needed is to add appropriate @{ML use_thy} calls to the
- generated @{verbatim ROOT.ML} file.
-*}
-
-
-subsubsection {* Options *}
-
-text {*
- The @{verbatim "-I"} option specifies an alternative to @{verbatim
- IsaMakefile} for dependencies. Note that ``@{verbatim "-"}'' refers
- to \emph{stdout}, i.e.\ ``@{verbatim "-I-"}'' provides an easy way
- to peek at @{tool mkdir}'s idea of @{tool make} setup required for
- some particular of Isabelle session.
-
- \medskip The @{verbatim "-P"} option includes a target for the
- parent @{verbatim LOGIC} session in the generated @{verbatim
- IsaMakefile}. The corresponding sources are assumed to be located
- within the Isabelle distribution.
-
- \medskip The @{verbatim "-b"} option sets up the current directory
- as the base for a new session that provides an actual logic image,
- as opposed to one that only runs several theories based on an
- existing image. Note that in the latter case, everything except
- @{verbatim IsaMakefile} would be placed into a separate directory
- @{verbatim NAME}, rather than the current one. See
- \secref{sec:tool-usedir} for further information on \emph{build
- mode} vs.\ \emph{example mode} of @{tool usedir}.
-
- \medskip The @{verbatim "-q"} option enables quiet mode, suppressing
- further notes on how to proceed.
-*}
-
-
-section {* Printing documents *}
-
-text {*
- The @{tool_def print} tool prints documents:
-\begin{ttbox}
-Usage: isabelle print [OPTIONS] FILE
-
- Options are:
- -c cleanup -- remove FILE after use
-
- Print document FILE.
-\end{ttbox}
-
- The @{verbatim "-c"} option causes the input file to be removed
- after use. The printer spool command is determined by the @{setting
- PRINT_COMMAND} setting.
-*}
-
-
-section {* Remove awkward symbol names from theory sources *}
-
-text {*
- The @{tool_def unsymbolize} tool tunes Isabelle theory sources to
- improve readability for plain ASCII output (e.g.\ in email
- communication). Most notably, @{tool unsymbolize} replaces awkward
- arrow symbols such as @{verbatim "\\"}@{verbatim "<Longrightarrow>"}
- by @{verbatim "==>"}.
-\begin{ttbox}
-Usage: isabelle unsymbolize [FILES|DIRS...]
-
- Recursively find .thy/.ML files, removing unreadable symbol names.
- Note: this is an ad-hoc script; there is no systematic way to replace
- symbols independently of the inner syntax of a theory!
-
- Renames old versions of FILES by appending "~~".
-\end{ttbox}
-*}
-
-
-section {* Running Isabelle sessions \label{sec:tool-usedir} *}
-
-text {* The old @{tool_def usedir} tool builds object-logic images, or
- runs example sessions based on existing logics. Its usage is:
-\begin{ttbox}
-Usage: isabelle usedir [OPTIONS] LOGIC NAME
-
- Options are:
- -C BOOL copy existing document directory to -D PATH (default true)
- -D PATH dump generated document sources into PATH
- -M MAX multithreading: maximum number of worker threads (default 1)
- -P PATH set path for remote theory browsing information
- -Q INT set threshold for sub-proof parallelization (default 50)
- -T LEVEL multithreading: trace level (default 0)
- -V VARIANT declare alternative document VARIANT
- -b build mode (output heap image, using current dir)
- -d FORMAT build document as FORMAT (default false)
- -f NAME use ML file NAME (default ROOT.ML)
- -g BOOL generate session graph image for document (default false)
- -i BOOL generate theory browser information (default false)
- -m MODE add print mode for output
- -p LEVEL set level of detail for proof objects (default 0)
- -q LEVEL set level of parallel proof checking (default 1)
- -r reset session path
- -s NAME override session NAME
- -t BOOL internal session timing (default false)
- -v BOOL be verbose (default false)
-
- Build object-logic or run examples. Also creates browsing
- information (HTML etc.) according to settings.
-
- ISABELLE_USEDIR_OPTIONS=...
-
- ML_PLATFORM=...
- ML_HOME=...
- ML_SYSTEM=...
- ML_OPTIONS=...
-\end{ttbox}
-
- Note that the value of the @{setting_ref ISABELLE_USEDIR_OPTIONS}
- setting is implicitly prefixed to \emph{any} @{tool usedir}
- call. Since the @{verbatim IsaMakefile}s of all object-logics
- distributed with Isabelle just invoke @{tool usedir} for the real
- work, one may control compilation options globally via above
- variable. In particular, generation of \rmindex{HTML} browsing
- information and document preparation is controlled here.
-*}
-
-
-subsubsection {* Options *}
-
-text {*
- Basically, there are two different modes of operation: \emph{build
- mode} (enabled through the @{verbatim "-b"} option) and
- \emph{example mode} (default).
-
- Calling @{tool usedir} with @{verbatim "-b"} runs @{executable
- "isabelle-process"} with input image @{verbatim LOGIC} and output to
- @{verbatim NAME}, as provided on the command line. This will be a
- batch session, running @{verbatim ROOT.ML} from the current
- directory and then quitting. It is assumed that @{verbatim ROOT.ML}
- contains all ML commands required to build the logic.
-
- In example mode, @{tool usedir} runs a read-only session of
- @{verbatim LOGIC} and automatically runs @{verbatim ROOT.ML} from
- within directory @{verbatim NAME}. It assumes that this file
- contains appropriate ML commands to run the desired examples.
-
- \medskip The @{verbatim "-i"} option controls theory browser data
- generation. It may be explicitly turned on or off --- as usual, the
- last occurrence of @{verbatim "-i"} on the command line wins.
-
- The @{verbatim "-P"} option specifies a path (or actual URL) to be
- prefixed to any \emph{non-local} reference of existing theories.
- Thus user sessions may easily link to existing Isabelle libraries
- already present on the WWW.
-
- The @{verbatim "-m"} options specifies additional print modes to be
- activated temporarily while the session is processed.
-
- \medskip The @{verbatim "-d"} option controls document preparation.
- Valid arguments are @{verbatim false} (do not prepare any document;
- this is default), or any of @{verbatim dvi}, @{verbatim dvi.gz},
- @{verbatim ps}, @{verbatim ps.gz}, @{verbatim pdf}. The logic
- session has to provide a properly setup @{verbatim document}
- directory. See \secref{sec:tool-document} and
- \secref{sec:tool-latex} for more details.
-
- \medskip The @{verbatim "-V"} option declares alternative document
- variants, consisting of name/tags pairs (cf.\ options @{verbatim
- "-n"} and @{verbatim "-t"} of @{tool_ref document}). The standard
- document is equivalent to ``@{verbatim
- "document=theory,proof,ML"}'', which means that all theory begin/end
- commands, proof body texts, and ML code will be presented
- faithfully.
-
- An alternative variant ``@{verbatim "outline=/proof/ML"}'' would
- fold proof and ML parts, replacing the original text by a short
- place-holder. The form ``@{text name}@{verbatim "=-"},'' means to
- remove document @{text name} from the list of variants to be
- processed. Any number of @{verbatim "-V"} options may be given;
- later declarations have precedence over earlier ones.
-
- Some document variant @{text name} may use an alternative {\LaTeX}
- entry point called @{verbatim "document/root_"}@{text
- "name"}@{verbatim ".tex"} if that file exists; otherwise the common
- @{verbatim "document/root.tex"} is used.
-
- \medskip The @{verbatim "-g"} option produces images of the theory
- dependency graph (cf.\ \secref{sec:browse}) for inclusion in the
- generated document, both as @{verbatim session_graph.eps} and
- @{verbatim session_graph.pdf} at the same time. To include this in
- the final {\LaTeX} document one could say @{verbatim
- "\\includegraphics{session_graph}"} in @{verbatim
- "document/root.tex"} (omitting the file-name extension enables
- {\LaTeX} to select to correct version, either for the DVI or PDF
- output path).
-
- \medskip The @{verbatim "-D"} option causes the generated document
- sources to be dumped at location @{verbatim PATH}; this path is
- relative to the session's main directory. If the @{verbatim "-C"}
- option is true, this will include a copy of an existing @{verbatim
- document} directory as provided by the user. For example, @{tool
- usedir}~@{verbatim "-D generated HOL Foo"} produces a complete set
- of document sources at @{verbatim "Foo/generated"}. Subsequent
- invocation of @{tool document}~@{verbatim "Foo/generated"} (see also
- \secref{sec:tool-document}) will process the final result
- independently of an Isabelle job. This decoupled mode of operation
- facilitates debugging of serious {\LaTeX} errors, for example.
-
- \medskip The @{verbatim "-p"} option determines the level of detail
- for internal proof objects, see also the \emph{Isabelle Reference
- Manual}~\cite{isabelle-ref}.
-
- \medskip The @{verbatim "-q"} option specifies the level of parallel
- proof checking: @{verbatim 0} no proofs, @{verbatim 1} toplevel
- proofs (default), @{verbatim 2} toplevel and nested Isar proofs.
- The option @{verbatim "-Q"} specifies a threshold for @{verbatim
- "-q2"}: nested proofs are only parallelized when the current number
- of forked proofs falls below the given value (default 50),
- multiplied by the number of worker threads (see option @{verbatim
- "-M"}).
-
- \medskip The @{verbatim "-t"} option produces a more detailed
- internal timing report of the session.
-
- \medskip The @{verbatim "-v"} option causes additional information
- to be printed while running the session, notably the location of
- prepared documents.
-
- \medskip The @{verbatim "-M"} option specifies the maximum number of
- parallel worker threads used for processing independent tasks when
- checking theory sources (multithreading only works on suitable ML
- platforms). The special value of @{verbatim 0} or @{verbatim max}
- refers to the number of actual CPU cores of the underlying machine,
- which is a good starting point for optimal performance tuning. The
- @{verbatim "-T"} option determines the level of detail in tracing
- output concerning the internal locking and scheduling in
- multithreaded operation. This may be helpful in isolating
- performance bottle-necks, e.g.\ due to excessive wait states when
- locking critical code sections.
-
- \medskip Any @{tool usedir} session is named by some \emph{session
- identifier}. These accumulate, documenting the way sessions depend
- on others. For example, consider @{verbatim "Pure/FOL/ex"}, which
- refers to the examples of FOL, which in turn is built upon Pure.
-
- The current session's identifier is by default just the base name of
- the @{verbatim LOGIC} argument (in build mode), or of the @{verbatim
- NAME} argument (in example mode). This may be overridden explicitly
- via the @{verbatim "-s"} option.
-*}
-
-
-section {* Output the version identifier of the Isabelle distribution *}
-
-text {*
- The @{tool_def version} tool displays Isabelle version information:
-\begin{ttbox}
-Usage: isabelle version [OPTIONS]
-
- Options are:
- -i short identification (derived from Mercurial id)
-
- Display Isabelle version information.
-\end{ttbox}
-
- \medskip The default is to output the full version string of the
- Isabelle distribution, e.g.\ ``@{verbatim "Isabelle2012: May 2012"}.
-
- The @{verbatim "-i"} option produces a short identification derived
- from the Mercurial id of the @{setting ISABELLE_HOME} directory.
-*}
-
-
-section {* Convert XML to YXML *}
-
-text {*
- The @{tool_def yxml} tool converts a standard XML document (stdin)
- to the much simpler and more efficient YXML format of Isabelle
- (stdout). The YXML format is defined as follows.
-
- \begin{enumerate}
-
- \item The encoding is always UTF-8.
-
- \item Body text is represented verbatim (no escaping, no special
- treatment of white space, no named entities, no CDATA chunks, no
- comments).
-
- \item Markup elements are represented via ASCII control characters
- @{text "\<^bold>X = 5"} and @{text "\<^bold>Y = 6"} as follows:
-
- \begin{tabular}{ll}
- XML & YXML \\\hline
- @{verbatim "<"}@{text "name attribute"}@{verbatim "="}@{text "value \<dots>"}@{verbatim ">"} &
- @{text "\<^bold>X\<^bold>Yname\<^bold>Yattribute"}@{verbatim "="}@{text "value\<dots>\<^bold>X"} \\
- @{verbatim "</"}@{text name}@{verbatim ">"} & @{text "\<^bold>X\<^bold>Y\<^bold>X"} \\
- \end{tabular}
-
- There is no special case for empty body text, i.e.\ @{verbatim
- "<foo/>"} is treated like @{verbatim "<foo></foo>"}. Also note that
- @{text "\<^bold>X"} and @{text "\<^bold>Y"} may never occur in
- well-formed XML documents.
-
- \end{enumerate}
-
- Parsing YXML is pretty straight-forward: split the text into chunks
- separated by @{text "\<^bold>X"}, then split each chunk into
- sub-chunks separated by @{text "\<^bold>Y"}. Markup chunks start
- with an empty sub-chunk, and a second empty sub-chunk indicates
- close of an element. Any other non-empty chunk consists of plain
- text. For example, see @{file "~~/src/Pure/PIDE/yxml.ML"} or
- @{file "~~/src/Pure/PIDE/yxml.scala"}.
-
- YXML documents may be detected quickly by checking that the first
- two characters are @{text "\<^bold>X\<^bold>Y"}.
-*}
-
-end
\ No newline at end of file
--- a/doc-src/System/Thy/Presentation.thy Mon Aug 27 16:10:54 2012 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,319 +0,0 @@
-theory Presentation
-imports Base
-begin
-
-chapter {* Presenting theories \label{ch:present} *}
-
-text {* Isabelle provides several ways to present the outcome of
- formal developments, including WWW-based browsable libraries or
- actual printable documents. Presentation is centered around the
- concept of \emph{sessions} (\chref{ch:session}). The global session
- structure is that of a tree, with Isabelle Pure at its root, further
- object-logics derived (e.g.\ HOLCF from HOL, and HOL from Pure), and
- application sessions further on in the hierarchy.
-
- The tools @{tool_ref mkroot} and @{tool_ref build} provide the
- primary means for managing Isabelle sessions, including proper setup
- for presentation; @{tool build} takes care to have @{executable_ref
- "isabelle-process"} run any additional stages required for document
- preparation, notably the @{tool_ref document} and @{tool_ref latex}.
- The complete tool chain for managing batch-mode Isabelle sessions is
- illustrated in \figref{fig:session-tools}.
-
- \begin{figure}[htbp]
- \begin{center}
- \begin{tabular}{lp{0.6\textwidth}}
-
- @{tool_ref mkroot} & invoked once by the user to initialize the
- session @{verbatim ROOT} with optional @{verbatim document}
- directory; \\
-
- @{tool_ref build} & invoked repeatedly by the user to keep
- session output up-to-date (HTML, documents etc.); \\
-
- @{executable "isabelle-process"} & run through @{tool_ref
- build}; \\
-
- @{tool_ref document} & run by the Isabelle process if document
- preparation is enabled; \\
-
- @{tool_ref latex} & universal {\LaTeX} tool wrapper invoked
- multiple times by @{tool_ref document}; also useful for manual
- experiments; \\
-
- \end{tabular}
- \caption{The tool chain of Isabelle session presentation} \label{fig:session-tools}
- \end{center}
- \end{figure}
-*}
-
-
-section {* Generating theory browser information \label{sec:info} *}
-
-text {*
- \index{theory browsing information|bold}
-
- As a side-effect of building sessions, Isabelle is able to generate
- theory browsing information, including HTML documents that show the
- theory sources and the relationship with its ancestors and
- descendants. Besides the HTML file that is generated for every
- theory, Isabelle stores links to all theories in an index
- file. These indexes are linked with other indexes to represent the
- overall tree structure of the sessions.
-
- Isabelle also generates graph files that represent the theory
- dependencies within a session. There is a graph browser Java applet
- embedded in the generated HTML pages, and also a stand-alone
- application that allows browsing theory graphs without having to
- start a WWW client first. The latter version also includes features
- such as generating Postscript files, which are not available in the
- applet version. See \secref{sec:browse} for further information.
-
- \medskip
-
- The easiest way to let Isabelle generate theory browsing information
- for existing sessions is to invoke @{tool build} with suitable
- options:
-
-\begin{ttbox}
-isabelle build -o browser_info -v -c FOL
-\end{ttbox}
-
- The presentation output will appear in @{verbatim
- "$ISABELLE_BROWSER_INFO/FOL"} as reported by the above verbose
- invocation of the build process.
-
- Many Isabelle sessions (such as @{verbatim "HOL-Library"} in @{file
- "~~/src/HOL/Library"}) also provide actual printable documents.
- These are prepared automatically as well if enabled like this:
-\begin{ttbox}
-isabelle build -o browser_info -o document=pdf -v -c HOL-Library
-\end{ttbox}
-
- Enabling both browser info and document preparation simultaneously
- causes an appropriate ``document'' link to be included in the HTML
- index. Documents may be generated independently of browser
- information as well, see \secref{sec:tool-document} for further
- details.
-
- \bigskip The theory browsing information is stored in a
- sub-directory directory determined by the @{setting_ref
- ISABELLE_BROWSER_INFO} setting plus a prefix corresponding to the
- session identifier (according to the tree structure of sub-sessions
- by default). In order to present Isabelle applications on the web,
- the corresponding subdirectory from @{setting ISABELLE_BROWSER_INFO}
- can be put on a WWW server.
-*}
-
-section {* Preparing session root directories \label{sec:tool-mkroot} *}
-
-text {* The @{tool_def mkroot} tool configures a given directory as
- session root, with some @{verbatim ROOT} file and optional document
- source directory. Its usage is:
-\begin{ttbox}
-Usage: isabelle mkroot [OPTIONS] [DIR]
-
- Options are:
- -d enable document preparation
- -n NAME alternative session name (default: DIR base name)
-
- Prepare session root DIR (default: current directory).
-\end{ttbox}
-
- The results are placed in the given directory @{text dir}, which
- refers to the current directory by default. The @{tool mkroot} tool
- is conservative in the sense that it does not overwrite existing
- files or directories. Earlier attempts to generate a session root
- need to be deleted manually.
-
- \medskip Option @{verbatim "-d"} indicates that the session shall be
- accompanied by a formal document, with @{text dir}@{verbatim
- "/document/root.tex"} as its {\LaTeX} entry point (see also
- \chref{ch:present}).
-
- Option @{verbatim "-n"} allows to specify an alternative session
- name; otherwise the base name of the given directory is used.
-
- \medskip The implicit Isabelle settings variable @{setting
- ISABELLE_LOGIC} specifies the parent session, and @{setting
- ISABELLE_DOCUMENT_FORMAT} the document format to be filled filled
- into the generated @{verbatim ROOT} file. *}
-
-
-subsubsection {* Examples *}
-
-text {* Produce session @{verbatim Test} (with document preparation)
- within a separate directory of the same name:
-\begin{ttbox}
-isabelle mkroot -d Test && isabelle build -D Test
-\end{ttbox}
-
- \medskip Upgrade the current directory into a session ROOT with
- document preparation, and build it:
-\begin{ttbox}
-isabelle mkroot -d && isabelle build -D .
-\end{ttbox}
-*}
-
-
-section {* Preparing Isabelle session documents
- \label{sec:tool-document} *}
-
-text {* The @{tool_def document} tool prepares logic session
- documents, processing the sources both as provided by the user and
- generated by Isabelle. Its usage is:
-\begin{ttbox}
-Usage: isabelle document [OPTIONS] [DIR]
-
- Options are:
- -c cleanup -- be aggressive in removing old stuff
- -n NAME specify document name (default 'document')
- -o FORMAT specify output format: dvi (default), dvi.gz, ps,
- ps.gz, pdf
- -t TAGS specify tagged region markup
-
- Prepare the theory session document in DIR (default 'document')
- producing the specified output format.
-\end{ttbox}
- This tool is usually run automatically as part of the Isabelle build
- process, provided document preparation has been enabled via suitable
- options. It may be manually invoked on the generated browser
- information document output as well, e.g.\ in case of errors
- encountered in the batch run.
-
- \medskip The @{verbatim "-c"} option tells @{tool document} to
- dispose the document sources after successful operation! This is
- the right thing to do for sources generated by an Isabelle process,
- but take care of your files in manual document preparation!
-
- \medskip The @{verbatim "-n"} and @{verbatim "-o"} option specify
- the final output file name and format, the default is ``@{verbatim
- document.dvi}''. Note that the result will appear in the parent of
- the target @{verbatim DIR}.
-
- \medskip The @{verbatim "-t"} option tells {\LaTeX} how to interpret
- tagged Isabelle command regions. Tags are specified as a comma
- separated list of modifier/name pairs: ``@{verbatim "+"}@{text
- foo}'' (or just ``@{text foo}'') means to keep, ``@{verbatim
- "-"}@{text foo}'' to drop, and ``@{verbatim "/"}@{text foo}'' to
- fold text tagged as @{text foo}. The builtin default is equivalent
- to the tag specification ``@{verbatim
- "+theory,+proof,+ML,+visible,-invisible"}''; see also the {\LaTeX}
- macros @{verbatim "\\isakeeptag"}, @{verbatim "\\isadroptag"}, and
- @{verbatim "\\isafoldtag"}, in @{file
- "~~/lib/texinputs/isabelle.sty"}.
-
- \medskip Document preparation requires a @{verbatim document}
- directory within the session sources. This directory is supposed to
- contain all the files needed to produce the final document --- apart
- from the actual theories which are generated by Isabelle.
-
- \medskip For most practical purposes, @{tool document} is smart
- enough to create any of the specified output formats, taking
- @{verbatim root.tex} supplied by the user as a starting point. This
- even includes multiple runs of {\LaTeX} to accommodate references
- and bibliographies (the latter assumes @{verbatim root.bib} within
- the same directory).
-
- In more complex situations, a separate @{verbatim build} script for
- the document sources may be given. It is invoked with command-line
- arguments for the document format and the document variant name.
- The script needs to produce corresponding output files, e.g.\
- @{verbatim root.pdf} for target format @{verbatim pdf} (and default
- default variants). The main work can be again delegated to @{tool
- latex}, but it is also possible to harvest generated {\LaTeX}
- sources and copy them elsewhere, for example.
-
- \medskip When running the session, Isabelle copies the content of
- the original @{verbatim document} directory into its proper place
- within @{setting ISABELLE_BROWSER_INFO}, according to the session
- path and document variant. Then, for any processed theory @{text A}
- some {\LaTeX} source is generated and put there as @{text
- A}@{verbatim ".tex"}. Furthermore, a list of all generated theory
- files is put into @{verbatim session.tex}. Typically, the root
- {\LaTeX} file provided by the user would include @{verbatim
- session.tex} to get a document containing all the theories.
-
- The {\LaTeX} versions of the theories require some macros defined in
- @{file "~~/lib/texinputs/isabelle.sty"}. Doing @{verbatim
- "\\usepackage{isabelle}"} in @{verbatim root.tex} should be fine;
- the underlying @{tool latex} already includes an appropriate path
- specification for {\TeX} inputs.
-
- If the text contains any references to Isabelle symbols (such as
- @{verbatim "\\"}@{verbatim "<forall>"}) then @{verbatim
- "isabellesym.sty"} should be included as well. This package
- contains a standard set of {\LaTeX} macro definitions @{verbatim
- "\\isasym"}@{text foo} corresponding to @{verbatim "\\"}@{verbatim
- "<"}@{text foo}@{verbatim ">"}, see \cite{isabelle-implementation} for a
- complete list of predefined Isabelle symbols. Users may invent
- further symbols as well, just by providing {\LaTeX} macros in a
- similar fashion as in @{file "~~/lib/texinputs/isabellesym.sty"} of
- the distribution.
-
- For proper setup of DVI and PDF documents (with hyperlinks and
- bookmarks), we recommend to include @{file
- "~~/lib/texinputs/pdfsetup.sty"} as well.
-
- \medskip As a final step of Isabelle document preparation, @{tool
- document}~@{verbatim "-c"} is run on the resulting copy of the
- @{verbatim document} directory. Thus the actual output document is
- built and installed in its proper place. The generated sources are
- deleted after successful run of {\LaTeX} and friends.
-
- Some care is needed if the document output location is configured
- differently, say within a directory whose content is still required
- afterwards!
-*}
-
-
-section {* Running {\LaTeX} within the Isabelle environment
- \label{sec:tool-latex} *}
-
-text {* The @{tool_def latex} tool provides the basic interface for
- Isabelle document preparation. Its usage is:
-\begin{ttbox}
-Usage: isabelle latex [OPTIONS] [FILE]
-
- Options are:
- -o FORMAT specify output format: dvi (default), dvi.gz, ps,
- ps.gz, pdf, bbl, idx, sty, syms
-
- Run LaTeX (and related tools) on FILE (default root.tex),
- producing the specified output format.
-\end{ttbox}
-
- Appropriate {\LaTeX}-related programs are run on the input file,
- according to the given output format: @{executable latex},
- @{executable pdflatex}, @{executable dvips}, @{executable bibtex}
- (for @{verbatim bbl}), and @{executable makeindex} (for @{verbatim
- idx}). The actual commands are determined from the settings
- environment (@{setting ISABELLE_LATEX} etc.).
-
- The @{verbatim sty} output format causes the Isabelle style files to
- be updated from the distribution. This is useful in special
- situations where the document sources are to be processed another
- time by separate tools.
-
- The @{verbatim syms} output is for internal use; it generates lists
- of symbols that are available without loading additional {\LaTeX}
- packages.
-*}
-
-
-subsubsection {* Examples *}
-
-text {* Invoking @{tool latex} by hand may be occasionally useful when
- debugging failed attempts of the automatic document preparation
- stage of batch-mode Isabelle. The abortive process leaves the
- sources at a certain place within @{setting ISABELLE_BROWSER_INFO},
- see the runtime error message for details. This enables users to
- inspect {\LaTeX} runs in further detail, e.g.\ like this:
-
-\begin{ttbox}
- cd ~/.isabelle/IsabelleXXXX/browser_info/HOL/Test/document
- isabelle latex -o pdf
-\end{ttbox}
-*}
-
-end
\ No newline at end of file
--- a/doc-src/System/Thy/Scala.thy Mon Aug 27 16:10:54 2012 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,72 +0,0 @@
-theory Scala
-imports Base
-begin
-
-chapter {* Isabelle/Scala development tools *}
-
-text {* Isabelle/ML and Isabelle/Scala are the two main language
-environments for Isabelle tool implementations. There are some basic
-command-line tools to work with the underlying Java Virtual Machine,
-the Scala toplevel and compiler. Note that Isabelle/jEdit
-(\secref{sec:tool-tty}) provides a Scala Console for interactive
-experimentation within the running application. *}
-
-
-section {* Java Runtime Environment within Isabelle \label{sec:tool-java} *}
-
-text {* The @{tool_def java} tool is a direct wrapper for the Java
- Runtime Environment, within the regular Isabelle settings
- environment (\secref{sec:settings}). The command line arguments are
- that of the underlying Java version. It is run in @{verbatim
- "-server"} mode if possible, to improve performance (at the cost of
- extra startup time).
-
- The @{verbatim java} executable is the one within @{setting
- ISABELLE_JDK_HOME}, according to the standard directory layout for
- official JDK distributions. The class loader is augmented such that
- the name space of @{verbatim "Isabelle/Pure.jar"} is available,
- which is the main Isabelle/Scala module.
-
- For example, the following command-line invokes the main method of
- class @{verbatim isabelle.GUI_Setup}, which opens a windows with
- some diagnostic information about the Isabelle environment:
-\begin{alltt}
- isabelle java isabelle.GUI_Setup
-\end{alltt}
-*}
-
-
-section {* Scala toplevel \label{sec:tool-scala} *}
-
-text {* The @{tool_def scala} tool is a direct wrapper for the Scala
- toplevel; see also @{tool java} above. The command line arguments
- are that of the underlying Scala version.
-
- This allows to interact with Isabelle/Scala in TTY mode like this:
-\begin{alltt}
- isabelle scala
- scala> isabelle.Isabelle_System.getenv("ISABELLE_HOME")
- scala> val options = isabelle.Options.init()
- scala> options.bool("browser_info")
-\end{alltt}
-*}
-
-
-section {* Scala compiler \label{sec:tool-scalac} *}
-
-text {* The @{tool_def scalac} tool is a direct wrapper for the Scala
- compiler; see also @{tool scala} above. The command line arguments
- are that of the underlying Scala version.
-
- This allows to compile further Scala modules, depending on existing
- Isabelle/Scala functionality. The resulting class or jar files can
- be added to the @{setting CLASSPATH} via the @{verbatim classpath}
- Bash function that is provided by the Isabelle process environment.
- Thus add-on components can register themselves in a modular manner,
- see also \secref{sec:components}.
-
- Note that jEdit (\secref{sec:tool-jedit}) has its own mechanisms for
- adding plugin components, which needs special attention since
- it overrides the standard Java class loader. *}
-
-end
--- a/doc-src/System/Thy/Sessions.thy Mon Aug 27 16:10:54 2012 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,324 +0,0 @@
-theory Sessions
-imports Base
-begin
-
-chapter {* Isabelle sessions and build management \label{ch:session} *}
-
-text {* An Isabelle \emph{session} consists of a collection of related
- theories that may be associated with formal documents (see also
- \chref{ch:present}). There is also a notion of \emph{persistent
- heap} image to capture the state of a session, similar to
- object-code in compiled programming languages. Thus the concept of
- session resembles that of a ``project'' in common IDE environments,
- but the specific name emphasizes the connection to interactive
- theorem proving: the session wraps-up the results of
- user-interaction with the prover in a persistent form.
-
- Application sessions are built on a given parent session, which may
- be built recursively on other parents. Following this path in the
- hierarchy eventually leads to some major object-logic session like
- @{text "HOL"}, which itself is based on @{text "Pure"} as the common
- root of all sessions.
-
- Processing sessions may take considerable time. Isabelle build
- management helps to organize this efficiently. This includes
- support for parallel build jobs, in addition to the multithreaded
- theory and proof checking that is already provided by the prover
- process itself. *}
-
-
-section {* Session ROOT specifications \label{sec:session-root} *}
-
-text {* Session specifications reside in files called @{verbatim ROOT}
- within certain directories, such as the home locations of registered
- Isabelle components or additional project directories given by the
- user.
-
- The ROOT file format follows the lexical conventions of the
- \emph{outer syntax} of Isabelle/Isar, see also
- \cite{isabelle-isar-ref}. This defines common forms like
- identifiers, names, quoted strings, verbatim text, nested comments
- etc. The grammar for a single @{syntax session_entry} is given as
- syntax diagram below; each ROOT file may contain multiple session
- specifications like this.
-
- Isabelle/jEdit (\secref{sec:tool-jedit}) includes a simple editing
- mode @{verbatim "isabelle-root"} for session ROOT files.
-
- @{rail "
- @{syntax_def session_entry}: @'session' spec '=' (@{syntax name} '+')? body
- ;
- body: description? options? ( theories + ) files?
- ;
- spec: @{syntax name} groups? dir?
- ;
- groups: '(' (@{syntax name} +) ')'
- ;
- dir: @'in' @{syntax name}
- ;
- description: @'description' @{syntax text}
- ;
- options: @'options' opts
- ;
- opts: '[' ( (@{syntax name} '=' value | @{syntax name}) + ',' ) ']'
- ;
- value: @{syntax name} | @{syntax real}
- ;
- theories: @'theories' opts? ( @{syntax name} * )
- ;
- files: @'files' ( @{syntax name} + )
- "}
-
- \begin{description}
-
- \item \isakeyword{session}~@{text "A = B + body"} defines a new
- session @{text "A"} based on parent session @{text "B"}, with its
- content given in @{text body} (theories and auxiliary source files).
- Note that a parent (like @{text "HOL"}) is mandatory in practical
- applications: only Isabelle/Pure can bootstrap itself from nothing.
-
- All such session specifications together describe a hierarchy (tree)
- of sessions, with globally unique names. The new session name
- @{text "A"} should be sufficiently long to stand on its own in a
- potentially large library.
-
- \item \isakeyword{session}~@{text "A (groups)"} indicates a
- collection of groups where the new session is a member. Group names
- are uninterpreted and merely follow certain conventions. For
- example, the Isabelle distribution tags some important sessions by
- the group name called ``@{text "main"}''. Other projects may invent
- their own conventions, but this requires some care to avoid clashes
- within this unchecked name space.
-
- \item \isakeyword{session}~@{text "A"}~\isakeyword{in}~@{text "dir"}
- specifies an explicit directory for this session; by default this is
- the current directory of the @{verbatim ROOT} file.
-
- All theories and auxiliary source files are located relatively to
- the session directory. The prover process is run within the same as
- its current working directory.
-
- \item \isakeyword{description}~@{text "text"} is a free-form
- annotation for this session.
-
- \item \isakeyword{options}~@{text "[x = a, y = b, z]"} defines
- separate options (\secref{sec:system-options}) that are used when
- processing this session, but \emph{without} propagation to child
- sessions. Note that @{text "z"} abbreviates @{text "z = true"} for
- Boolean options.
-
- \item \isakeyword{theories}~@{text "options names"} specifies a
- block of theories that are processed within an environment that is
- augmented by the given options, in addition to the global session
- options given before. Any number of blocks of \isakeyword{theories}
- may be given. Options are only active for each
- \isakeyword{theories} block separately.
-
- \item \isakeyword{files}~@{text "files"} lists additional source
- files that are involved in the processing of this session. This
- should cover anything outside the formal content of the theory
- sources, say some auxiliary {\TeX} files that are required for
- document processing. In contrast, files that are specified in
- formal theory headers as @{keyword "uses"} need not be declared
- again.
-
- \end{description}
-*}
-
-subsubsection {* Examples *}
-
-text {* See @{file "~~/src/HOL/ROOT"} for a diversity of practically
- relevant situations, but it uses relatively complex quasi-hierarchic
- naming conventions like @{text "HOL\<dash>SPARK"}, @{text
- "HOL\<dash>SPARK\<dash>Examples"}. An alternative is to use
- unqualified names that are relatively long and descriptive, as in
- the Archive of Formal Proofs (\url{http://afp.sf.net}), for
- example. *}
-
-
-section {* System build options \label{sec:system-options} *}
-
-text {* See @{file "~~/etc/options"} for the main defaults provided by
- the Isabelle distribution. Isabelle/jEdit (\secref{sec:tool-jedit})
- includes a simple editing mode @{verbatim "isabelle-options"} for
- this file-format.
-
- The @{tool_def options} tool prints Isabelle system options. Its
- command-line usage is:
-\begin{ttbox}
-Usage: isabelle options [OPTIONS] [MORE_OPTIONS ...]
-
- Options are:
- -b include $ISABELLE_BUILD_OPTIONS
- -x FILE export to FILE in YXML format
-
- Print Isabelle system options, augmented by MORE_OPTIONS given as
- arguments NAME=VAL or NAME.
-\end{ttbox}
-
- The command line arguments provide additional system options of the
- form @{text "name"}@{verbatim "="}@{text "value"} or @{text name}
- for Boolean options.
-
- Option @{verbatim "-b"} augments the implicit environment of system
- options by the ones of @{setting ISABELLE_BUILD_OPTIONS}, cf.\
- \secref{sec:tool-build}.
-
- Option @{verbatim "-x"} specifies a file to export the result in
- YXML format, instead of printing it in human-readable form.
-*}
-
-
-section {* Invoking the build process \label{sec:tool-build} *}
-
-text {* The @{tool_def build} tool invokes the build process for
- Isabelle sessions. It manages dependencies between sessions,
- related sources of theories and auxiliary files, and target heap
- images. Accordingly, it runs instances of the prover process with
- optional document preparation. Its command-line usage
- is:\footnote{Isabelle/Scala provides the same functionality via
- \texttt{isabelle.Build.build}.}
-\begin{ttbox}
-Usage: isabelle build [OPTIONS] [SESSIONS ...]
-
- Options are:
- -D DIR include session directory and select its sessions
- -a select all sessions
- -b build heap images
- -c clean build
- -d DIR include session directory
- -g NAME select session group NAME
- -j INT maximum number of parallel jobs (default 1)
- -l list session source files
- -n no build -- test dependencies only
- -o OPTION override session configuration OPTION
- (via NAME=VAL or NAME)
- -s system build mode: produce output in ISABELLE_HOME
- -v verbose
-
- Build and manage Isabelle sessions, depending on implicit
- ISABELLE_BUILD_OPTIONS="..."
-
- ML_PLATFORM="..."
- ML_HOME="..."
- ML_SYSTEM="..."
- ML_OPTIONS="..."
-\end{ttbox}
-
- \medskip Isabelle sessions are defined via session ROOT files as
- described in (\secref{sec:session-root}). The totality of sessions
- is determined by collecting such specifications from all Isabelle
- component directories (\secref{sec:components}), augmented by more
- directories given via options @{verbatim "-d"}~@{text "DIR"} on the
- command line. Each such directory may contain a session
- \texttt{ROOT} file with several session specifications.
-
- Any session root directory may refer recursively to further
- directories of the same kind, by listing them in a catalog file
- @{verbatim "ROOTS"} line-by-line. This helps to organize large
- collections of session specifications, or to make @{verbatim "-d"}
- command line options persistent (say within @{verbatim
- "$ISABELLE_HOME_USER/ROOTS"}).
-
- \medskip The subset of sessions to be managed is determined via
- individual @{text "SESSIONS"} given as command-line arguments, or
- session groups that are given via one or more options @{verbatim
- "-g"}~@{text "NAME"}. Option @{verbatim "-a"} selects all sessions.
- The build tool takes session dependencies into account: the set of
- selected sessions is completed by including all ancestors.
-
- \medskip Option @{verbatim "-D"} is similar to @{verbatim "-d"}, but
- selects all sessions that are defined in the given directories.
-
- \medskip The build process depends on additional options
- (\secref{sec:system-options}) that are passed to the prover
- eventually. The settings variable @{setting_ref
- ISABELLE_BUILD_OPTIONS} allows to provide additional defaults, e.g.\
- \texttt{ISABELLE_BUILD_OPTIONS="document=pdf threads=4"}. Moreover,
- the environment of system build options may be augmented on the
- command line via @{verbatim "-o"}~@{text "name"}@{verbatim
- "="}@{text "value"} or @{verbatim "-o"}~@{text "name"}, which
- abbreviates @{verbatim "-o"}~@{text "name"}@{verbatim"=true"} for
- Boolean options. Multiple occurrences of @{verbatim "-o"} on the
- command-line are applied in the given order.
-
- \medskip Option @{verbatim "-b"} ensures that heap images are
- produced for all selected sessions. By default, images are only
- saved for inner nodes of the hierarchy of sessions, as required for
- other sessions to continue later on.
-
- \medskip Option @{verbatim "-c"} cleans all descendants of the
- selected sessions before performing the specified build operation.
-
- \medskip Option @{verbatim "-n"} omits the actual build process
- after the preparatory stage (including optional cleanup). Note that
- the return code always indicates the status of the set of selected
- sessions.
-
- \medskip Option @{verbatim "-j"} specifies the maximum number of
- parallel build jobs (prover processes). Each prover process is
- subject to a separate limit of parallel worker threads, cf.\ system
- option @{system_option_ref threads}.
-
- \medskip Option @{verbatim "-s"} enables \emph{system mode}, which
- means that resulting heap images and log files are stored in
- @{verbatim "$ISABELLE_HOME/heaps"} instead of the default location
- @{setting ISABELLE_OUTPUT} (which is normally in @{setting
- ISABELLE_HOME_USER}, i.e.\ the user's home directory).
-
- \medskip Option @{verbatim "-v"} increases the general level of
- verbosity. Option @{verbatim "-l"} lists the source files that
- contribute to a session.
-*}
-
-subsubsection {* Examples *}
-
-text {*
- Build a specific logic image:
-\begin{ttbox}
-isabelle build -b HOLCF
-\end{ttbox}
-
- \smallskip Build the main group of logic images:
-\begin{ttbox}
-isabelle build -b -g main
-\end{ttbox}
-
- \smallskip Provide a general overview of the status of all Isabelle
- sessions, without building anything:
-\begin{ttbox}
-isabelle build -a -n -v
-\end{ttbox}
-
- \smallskip Build all sessions with HTML browser info and PDF
- document preparation:
-\begin{ttbox}
-isabelle build -a -o browser_info -o document=pdf
-\end{ttbox}
-
- \smallskip Build all sessions with a maximum of 8 parallel prover
- processes and 4 worker threads each (on a machine with many cores):
-\begin{ttbox}
-isabelle build -a -j8 -o threads=4
-\end{ttbox}
-
- \smallskip Build some session images with cleanup of their
- descendants, while retaining their ancestry:
-\begin{ttbox}
-isabelle build -b -c HOL-Boogie HOL-SPARK
-\end{ttbox}
-
- \smallskip Clean all sessions without building anything:
-\begin{ttbox}
-isabelle build -a -n -c
-\end{ttbox}
-
- \smallskip Build all sessions from some other directory hierarchy,
- according to the settings variable @{verbatim "AFP"} that happens to
- be defined inside the Isabelle environment:
-\begin{ttbox}
-isabelle build -D '$AFP'
-\end{ttbox}
-*}
-
-end
--- a/doc-src/System/Thy/document/Base.tex Mon Aug 27 16:10:54 2012 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-%
-\begin{isabellebody}%
-\def\isabellecontext{Base}%
-%
-\isadelimtheory
-%
-\endisadelimtheory
-%
-\isatagtheory
-\isacommand{theory}\isamarkupfalse%
-\ Base\isanewline
-\isakeyword{imports}\ Pure\isanewline
-\isakeyword{begin}%
-\endisatagtheory
-{\isafoldtheory}%
-%
-\isadelimtheory
-\isanewline
-%
-\endisadelimtheory
-%
-\isadelimML
-\isanewline
-%
-\endisadelimML
-%
-\isatagML
-\isacommand{ML{\isaliteral{5F}{\isacharunderscore}}file}\isamarkupfalse%
-\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}{\isaliteral{2F}{\isacharslash}}{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}{\isaliteral{2F}{\isacharslash}}antiquote{\isaliteral{5F}{\isacharunderscore}}setup{\isaliteral{2E}{\isachardot}}ML{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
-\isacommand{setup}\isamarkupfalse%
-\ Antiquote{\isaliteral{5F}{\isacharunderscore}}Setup{\isaliteral{2E}{\isachardot}}setup%
-\endisatagML
-{\isafoldML}%
-%
-\isadelimML
-\isanewline
-%
-\endisadelimML
-\isanewline
-\isacommand{declare}\isamarkupfalse%
-\ {\isaliteral{5B}{\isacharbrackleft}}{\isaliteral{5B}{\isacharbrackleft}}thy{\isaliteral{5F}{\isacharunderscore}}output{\isaliteral{5F}{\isacharunderscore}}source{\isaliteral{5D}{\isacharbrackright}}{\isaliteral{5D}{\isacharbrackright}}\isanewline
-%
-\isadelimtheory
-\isanewline
-%
-\endisadelimtheory
-%
-\isatagtheory
-\isacommand{end}\isamarkupfalse%
-%
-\endisatagtheory
-{\isafoldtheory}%
-%
-\isadelimtheory
-\isanewline
-%
-\endisadelimtheory
-\end{isabellebody}%
-%%% Local Variables:
-%%% mode: latex
-%%% TeX-master: "root"
-%%% End:
--- a/doc-src/System/Thy/document/Basics.tex Mon Aug 27 16:10:54 2012 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,590 +0,0 @@
-%
-\begin{isabellebody}%
-\def\isabellecontext{Basics}%
-%
-\isadelimtheory
-%
-\endisadelimtheory
-%
-\isatagtheory
-\isacommand{theory}\isamarkupfalse%
-\ Basics\isanewline
-\isakeyword{imports}\ Base\isanewline
-\isakeyword{begin}%
-\endisatagtheory
-{\isafoldtheory}%
-%
-\isadelimtheory
-%
-\endisadelimtheory
-%
-\isamarkupchapter{The Isabelle system environment%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-This manual describes Isabelle together with related tools and
- user interfaces as seen from a system oriented view. See also the
- \emph{Isabelle/Isar Reference Manual}~\cite{isabelle-isar-ref} for
- the actual Isabelle input language and related concepts, and
- \emph{The Isabelle/Isar Implementation
- Manual}~\cite{isabelle-implementation} for the main concepts of the
- underlying implementation in Isabelle/ML.
-
- \medskip The Isabelle system environment provides the following
- basic infrastructure to integrate tools smoothly.
-
- \begin{enumerate}
-
- \item The \emph{Isabelle settings} mechanism provides process
- environment variables to all Isabelle executables (including tools
- and user interfaces).
-
- \item The raw \emph{Isabelle process} (\indexref{}{executable}{isabelle-process}\hyperlink{executable.isabelle-process}{\mbox{\isa{\isatt{isabelle{\isaliteral{2D}{\isacharminus}}process}}}}) runs logic sessions either interactively or in
- batch mode. In particular, this view abstracts over the invocation
- of the actual ML system to be used. Regular users rarely need to
- care about the low-level process.
-
- \item The main \emph{Isabelle tool wrapper} (\indexref{}{executable}{isabelle}\hyperlink{executable.isabelle}{\mbox{\isa{\isatt{isabelle}}}}) provides a generic startup environment Isabelle related
- utilities, user interfaces etc. Such tools automatically benefit
- from the settings mechanism.
-
- \end{enumerate}%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsection{Isabelle settings \label{sec:settings}%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-The Isabelle system heavily depends on the \emph{settings
- mechanism}\indexbold{settings}. Essentially, this is a statically
- scoped collection of environment variables, such as \hyperlink{setting.ISABELLE-HOME}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}HOME}}}}, \hyperlink{setting.ML-SYSTEM}{\mbox{\isa{\isatt{ML{\isaliteral{5F}{\isacharunderscore}}SYSTEM}}}}, \hyperlink{setting.ML-HOME}{\mbox{\isa{\isatt{ML{\isaliteral{5F}{\isacharunderscore}}HOME}}}}. These
- variables are \emph{not} intended to be set directly from the shell,
- though. Isabelle employs a somewhat more sophisticated scheme of
- \emph{settings files} --- one for site-wide defaults, another for
- additional user-specific modifications. With all configuration
- variables in clearly defined places, this scheme is more
- maintainable and user-friendly than global shell environment
- variables.
-
- In particular, we avoid the typical situation where prospective
- users of a software package are told to put several things into
- their shell startup scripts, before being able to actually run the
- program. Isabelle requires none such administrative chores of its
- end-users --- the executables can be invoked straight away.
- Occasionally, users would still want to put the \verb|$ISABELLE_HOME/bin| directory into their shell's search path, but
- this is not required.%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsubsection{Bootstrapping the environment \label{sec:boot}%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-Isabelle executables need to be run within a proper settings
- environment. This is bootstrapped as described below, on the first
- invocation of one of the outer wrapper scripts (such as
- \indexref{}{executable}{isabelle}\hyperlink{executable.isabelle}{\mbox{\isa{\isatt{isabelle}}}}). This happens only once for each
- process tree, i.e.\ the environment is passed to subprocesses
- according to regular Unix conventions.
-
- \begin{enumerate}
-
- \item The special variable \indexdef{}{setting}{ISABELLE\_HOME}\hypertarget{setting.ISABELLE-HOME}{\hyperlink{setting.ISABELLE-HOME}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}HOME}}}}} is
- determined automatically from the location of the binary that has
- been run.
-
- You should not try to set \hyperlink{setting.ISABELLE-HOME}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}HOME}}}} manually. Also
- note that the Isabelle executables either have to be run from their
- original location in the distribution directory, or via the
- executable objects created by the \hyperlink{tool.install}{\mbox{\isa{\isatool{install}}}} tool. Symbolic
- links are admissible, but a plain copy of the \verb|$ISABELLE_HOME/bin| files will not work!
-
- \item The file \verb|$ISABELLE_HOME/etc/settings| is run as a
- \indexref{}{executable}{bash}\hyperlink{executable.bash}{\mbox{\isa{\isatt{bash}}}} shell script with the auto-export option for
- variables enabled.
-
- This file holds a rather long list of shell variable assigments,
- thus providing the site-wide default settings. The Isabelle
- distribution already contains a global settings file with sensible
- defaults for most variables. When installing the system, only a few
- of these may have to be adapted (probably \hyperlink{setting.ML-SYSTEM}{\mbox{\isa{\isatt{ML{\isaliteral{5F}{\isacharunderscore}}SYSTEM}}}}
- etc.).
-
- \item The file \verb|$ISABELLE_HOME_USER/etc/settings| (if it
- exists) is run in the same way as the site default settings. Note
- that the variable \hyperlink{setting.ISABELLE-HOME-USER}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}HOME{\isaliteral{5F}{\isacharunderscore}}USER}}}} has already been set
- before --- usually to something like \verb|$USER_HOME/.isabelle/IsabelleXXXX|.
-
- Thus individual users may override the site-wide defaults. See also
- file \verb|$ISABELLE_HOME/etc/user-settings.sample| in the
- distribution. Typically, a user settings file would contain only a
- few lines, just the assigments that are really changed. One should
- definitely \emph{not} start with a full copy the basic \verb|$ISABELLE_HOME/etc/settings|. This could cause very annoying
- maintainance problems later, when the Isabelle installation is
- updated or changed otherwise.
-
- \end{enumerate}
-
- Since settings files are regular GNU \indexdef{}{executable}{bash}\hypertarget{executable.bash}{\hyperlink{executable.bash}{\mbox{\isa{\isatt{bash}}}}} scripts,
- one may use complex shell commands, such as \verb|if| or
- \verb|case| statements to set variables depending on the
- system architecture or other environment variables. Such advanced
- features should be added only with great care, though. In
- particular, external environment references should be kept at a
- minimum.
-
- \medskip A few variables are somewhat special:
-
- \begin{itemize}
-
- \item \indexdef{}{setting}{ISABELLE\_PROCESS}\hypertarget{setting.ISABELLE-PROCESS}{\hyperlink{setting.ISABELLE-PROCESS}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}PROCESS}}}}} and \indexdef{}{setting}{ISABELLE\_TOOL}\hypertarget{setting.ISABELLE-TOOL}{\hyperlink{setting.ISABELLE-TOOL}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}TOOL}}}}} are set
- automatically to the absolute path names of the \hyperlink{executable.isabelle-process}{\mbox{\isa{\isatt{isabelle{\isaliteral{2D}{\isacharminus}}process}}}} and \hyperlink{executable.isabelle}{\mbox{\isa{\isatt{isabelle}}}} executables,
- respectively.
-
- \item \indexref{}{setting}{ISABELLE\_OUTPUT}\hyperlink{setting.ISABELLE-OUTPUT}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}OUTPUT}}}} will have the identifiers of
- the Isabelle distribution (cf.\ \hyperlink{setting.ISABELLE-IDENTIFIER}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}IDENTIFIER}}}}) and
- the ML system (cf.\ \hyperlink{setting.ML-IDENTIFIER}{\mbox{\isa{\isatt{ML{\isaliteral{5F}{\isacharunderscore}}IDENTIFIER}}}}) appended automatically
- to its value.
-
- \end{itemize}
-
- \medskip Note that the settings environment may be inspected with
- the \hyperlink{tool.getenv}{\mbox{\isa{\isatool{getenv}}}} tool. This might help to figure out the effect
- of complex settings scripts.%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsubsection{Common variables%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-This is a reference of common Isabelle settings variables. Note that
- the list is somewhat open-ended. Third-party utilities or interfaces
- may add their own selection. Variables that are special in some
- sense are marked with \isa{{\isaliteral{22}{\isachardoublequote}}\isaliteral{5C3C5E7375703E}{}\isactrlsup {\isaliteral{2A}{\isacharasterisk}}{\isaliteral{22}{\isachardoublequote}}}.
-
- \begin{description}
-
- \item[\indexdef{}{setting}{USER\_HOME}\hypertarget{setting.USER-HOME}{\hyperlink{setting.USER-HOME}{\mbox{\isa{\isatt{USER{\isaliteral{5F}{\isacharunderscore}}HOME}}}}}\isa{{\isaliteral{22}{\isachardoublequote}}\isaliteral{5C3C5E7375703E}{}\isactrlsup {\isaliteral{2A}{\isacharasterisk}}{\isaliteral{22}{\isachardoublequote}}}] Is the cross-platform
- user home directory. On Unix systems this is usually the same as
- \hyperlink{setting.HOME}{\mbox{\isa{\isatt{HOME}}}}, but on Windows it is the regular home directory of
- the user, not the one of within the Cygwin root
- file-system.\footnote{Cygwin itself offers another choice whether
- its HOME should point to the \texttt{/home} directory tree or the
- Windows user home.}
-
- \item[\indexdef{}{setting}{ISABELLE\_HOME}\hypertarget{setting.ISABELLE-HOME}{\hyperlink{setting.ISABELLE-HOME}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}HOME}}}}}\isa{{\isaliteral{22}{\isachardoublequote}}\isaliteral{5C3C5E7375703E}{}\isactrlsup {\isaliteral{2A}{\isacharasterisk}}{\isaliteral{22}{\isachardoublequote}}}] is the location of the
- top-level Isabelle distribution directory. This is automatically
- determined from the Isabelle executable that has been invoked. Do
- not attempt to set \hyperlink{setting.ISABELLE-HOME}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}HOME}}}} yourself from the shell!
-
- \item[\indexdef{}{setting}{ISABELLE\_HOME\_USER}\hypertarget{setting.ISABELLE-HOME-USER}{\hyperlink{setting.ISABELLE-HOME-USER}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}HOME{\isaliteral{5F}{\isacharunderscore}}USER}}}}}] is the user-specific
- counterpart of \hyperlink{setting.ISABELLE-HOME}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}HOME}}}}. The default value is
- relative to \verb|$USER_HOME/.isabelle|, under rare
- circumstances this may be changed in the global setting file.
- Typically, the \hyperlink{setting.ISABELLE-HOME-USER}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}HOME{\isaliteral{5F}{\isacharunderscore}}USER}}}} directory mimics
- \hyperlink{setting.ISABELLE-HOME}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}HOME}}}} to some extend. In particular, site-wide
- defaults may be overridden by a private \verb|$ISABELLE_HOME_USER/etc/settings|.
-
- \item[\indexdef{}{setting}{ISABELLE\_PLATFORM}\hypertarget{setting.ISABELLE-PLATFORM}{\hyperlink{setting.ISABELLE-PLATFORM}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}PLATFORM}}}}}\isa{{\isaliteral{22}{\isachardoublequote}}\isaliteral{5C3C5E7375703E}{}\isactrlsup {\isaliteral{2A}{\isacharasterisk}}{\isaliteral{22}{\isachardoublequote}}}] is automatically
- set to a symbolic identifier for the underlying hardware and
- operating system. The Isabelle platform identification always
- refers to the 32 bit variant, even this is a 64 bit machine. Note
- that the ML or Java runtime may have a different idea, depending on
- which binaries are actually run.
-
- \item[\indexdef{}{setting}{ISABELLE\_PLATFORM64}\hypertarget{setting.ISABELLE-PLATFORM64}{\hyperlink{setting.ISABELLE-PLATFORM64}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}PLATFORM{\isadigit{6}}{\isadigit{4}}}}}}}\isa{{\isaliteral{22}{\isachardoublequote}}\isaliteral{5C3C5E7375703E}{}\isactrlsup {\isaliteral{2A}{\isacharasterisk}}{\isaliteral{22}{\isachardoublequote}}}] is similar to
- \hyperlink{setting.ISABELLE-PLATFORM}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}PLATFORM}}}} but refers to the proper 64 bit variant
- on a platform that supports this; the value is empty for 32 bit.
- Note that the following bash expression (including the quotes)
- prefers the 64 bit platform, if that is available:
-
- \verb|"${ISABELLE_PLATFORM64:-$ISABELLE_PLATFORM}"|
-
- \item[\indexdef{}{setting}{ISABELLE\_PROCESS}\hypertarget{setting.ISABELLE-PROCESS}{\hyperlink{setting.ISABELLE-PROCESS}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}PROCESS}}}}}\isa{{\isaliteral{22}{\isachardoublequote}}\isaliteral{5C3C5E7375703E}{}\isactrlsup {\isaliteral{2A}{\isacharasterisk}}{\isaliteral{22}{\isachardoublequote}}}, \hyperlink{setting.ISABELLE-TOOL}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}TOOL}}}}\isa{{\isaliteral{22}{\isachardoublequote}}\isaliteral{5C3C5E7375703E}{}\isactrlsup {\isaliteral{2A}{\isacharasterisk}}{\isaliteral{22}{\isachardoublequote}}}] are automatically set to the full path
- names of the \hyperlink{executable.isabelle-process}{\mbox{\isa{\isatt{isabelle{\isaliteral{2D}{\isacharminus}}process}}}} and \hyperlink{executable.isabelle}{\mbox{\isa{\isatt{isabelle}}}} executables, respectively. Thus other tools and scripts
- need not assume that the \verb|$ISABELLE_HOME/bin| directory is
- on the current search path of the shell.
-
- \item[\indexdef{}{setting}{ISABELLE\_IDENTIFIER}\hypertarget{setting.ISABELLE-IDENTIFIER}{\hyperlink{setting.ISABELLE-IDENTIFIER}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}IDENTIFIER}}}}}\isa{{\isaliteral{22}{\isachardoublequote}}\isaliteral{5C3C5E7375703E}{}\isactrlsup {\isaliteral{2A}{\isacharasterisk}}{\isaliteral{22}{\isachardoublequote}}}] refers
- to the name of this Isabelle distribution, e.g.\ ``\verb|Isabelle2012|''.
-
- \item[\indexdef{}{setting}{ML\_SYSTEM}\hypertarget{setting.ML-SYSTEM}{\hyperlink{setting.ML-SYSTEM}{\mbox{\isa{\isatt{ML{\isaliteral{5F}{\isacharunderscore}}SYSTEM}}}}}, \indexdef{}{setting}{ML\_HOME}\hypertarget{setting.ML-HOME}{\hyperlink{setting.ML-HOME}{\mbox{\isa{\isatt{ML{\isaliteral{5F}{\isacharunderscore}}HOME}}}}},
- \indexdef{}{setting}{ML\_OPTIONS}\hypertarget{setting.ML-OPTIONS}{\hyperlink{setting.ML-OPTIONS}{\mbox{\isa{\isatt{ML{\isaliteral{5F}{\isacharunderscore}}OPTIONS}}}}}, \indexdef{}{setting}{ML\_PLATFORM}\hypertarget{setting.ML-PLATFORM}{\hyperlink{setting.ML-PLATFORM}{\mbox{\isa{\isatt{ML{\isaliteral{5F}{\isacharunderscore}}PLATFORM}}}}}, \indexdef{}{setting}{ML\_IDENTIFIER}\hypertarget{setting.ML-IDENTIFIER}{\hyperlink{setting.ML-IDENTIFIER}{\mbox{\isa{\isatt{ML{\isaliteral{5F}{\isacharunderscore}}IDENTIFIER}}}}}\isa{{\isaliteral{22}{\isachardoublequote}}\isaliteral{5C3C5E7375703E}{}\isactrlsup {\isaliteral{2A}{\isacharasterisk}}{\isaliteral{22}{\isachardoublequote}}}] specify the underlying ML system
- to be used for Isabelle. There is only a fixed set of admissable
- \hyperlink{setting.ML-SYSTEM}{\mbox{\isa{\isatt{ML{\isaliteral{5F}{\isacharunderscore}}SYSTEM}}}} names (see the \verb|$ISABELLE_HOME/etc/settings| file of the distribution).
-
- The actual compiler binary will be run from the directory \hyperlink{setting.ML-HOME}{\mbox{\isa{\isatt{ML{\isaliteral{5F}{\isacharunderscore}}HOME}}}}, with \hyperlink{setting.ML-OPTIONS}{\mbox{\isa{\isatt{ML{\isaliteral{5F}{\isacharunderscore}}OPTIONS}}}} as first arguments on the
- command line. The optional \hyperlink{setting.ML-PLATFORM}{\mbox{\isa{\isatt{ML{\isaliteral{5F}{\isacharunderscore}}PLATFORM}}}} may specify the
- binary format of ML heap images, which is useful for cross-platform
- installations. The value of \hyperlink{setting.ML-IDENTIFIER}{\mbox{\isa{\isatt{ML{\isaliteral{5F}{\isacharunderscore}}IDENTIFIER}}}} is
- automatically obtained by composing the values of \hyperlink{setting.ML-SYSTEM}{\mbox{\isa{\isatt{ML{\isaliteral{5F}{\isacharunderscore}}SYSTEM}}}}, \hyperlink{setting.ML-PLATFORM}{\mbox{\isa{\isatt{ML{\isaliteral{5F}{\isacharunderscore}}PLATFORM}}}} and the Isabelle version values.
-
- \item[\indexdef{}{setting}{ISABELLE\_JDK\_HOME}\hypertarget{setting.ISABELLE-JDK-HOME}{\hyperlink{setting.ISABELLE-JDK-HOME}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}JDK{\isaliteral{5F}{\isacharunderscore}}HOME}}}}}] needs to point to a full JDK
- (Java Development Kit) installation with \verb|javac| and
- \verb|jar| executables. This is essential for Isabelle/Scala
- and other JVM-based tools to work properly. Note that conventional
- \verb|JAVA_HOME| usually points to the JRE (Java Runtime
- Environment), not JDK.
-
- \item[\indexdef{}{setting}{ISABELLE\_PATH}\hypertarget{setting.ISABELLE-PATH}{\hyperlink{setting.ISABELLE-PATH}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}PATH}}}}}] is a list of directories
- (separated by colons) where Isabelle logic images may reside. When
- looking up heaps files, the value of \hyperlink{setting.ML-IDENTIFIER}{\mbox{\isa{\isatt{ML{\isaliteral{5F}{\isacharunderscore}}IDENTIFIER}}}} is
- appended to each component internally.
-
- \item[\indexdef{}{setting}{ISABELLE\_OUTPUT}\hypertarget{setting.ISABELLE-OUTPUT}{\hyperlink{setting.ISABELLE-OUTPUT}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}OUTPUT}}}}}\isa{{\isaliteral{22}{\isachardoublequote}}\isaliteral{5C3C5E7375703E}{}\isactrlsup {\isaliteral{2A}{\isacharasterisk}}{\isaliteral{22}{\isachardoublequote}}}] is a
- directory where output heap files should be stored by default. The
- ML system and Isabelle version identifier is appended here, too.
-
- \item[\indexdef{}{setting}{ISABELLE\_BROWSER\_INFO}\hypertarget{setting.ISABELLE-BROWSER-INFO}{\hyperlink{setting.ISABELLE-BROWSER-INFO}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}BROWSER{\isaliteral{5F}{\isacharunderscore}}INFO}}}}}] is the directory where
- theory browser information (HTML text, graph data, and printable
- documents) is stored (see also \secref{sec:info}). The default
- value is \verb|$ISABELLE_HOME_USER/browser_info|.
-
- \item[\indexdef{}{setting}{ISABELLE\_LOGIC}\hypertarget{setting.ISABELLE-LOGIC}{\hyperlink{setting.ISABELLE-LOGIC}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}LOGIC}}}}}] specifies the default logic to
- load if none is given explicitely by the user. The default value is
- \verb|HOL|.
-
- \item[\indexdef{}{setting}{ISABELLE\_LINE\_EDITOR}\hypertarget{setting.ISABELLE-LINE-EDITOR}{\hyperlink{setting.ISABELLE-LINE-EDITOR}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}LINE{\isaliteral{5F}{\isacharunderscore}}EDITOR}}}}}] specifies the default
- line editor for the \indexref{}{tool}{tty}\hyperlink{tool.tty}{\mbox{\isa{\isatool{tty}}}} interface.
-
- \item[\indexdef{}{setting}{ISABELLE\_USEDIR\_OPTIONS}\hypertarget{setting.ISABELLE-USEDIR-OPTIONS}{\hyperlink{setting.ISABELLE-USEDIR-OPTIONS}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}USEDIR{\isaliteral{5F}{\isacharunderscore}}OPTIONS}}}}}] is implicitly prefixed
- to the command line of any \indexref{}{tool}{usedir}\hyperlink{tool.usedir}{\mbox{\isa{\isatool{usedir}}}} invocation. This
- typically contains compilation options for object-logics --- \hyperlink{tool.usedir}{\mbox{\isa{\isatool{usedir}}}} is the basic tool for managing logic sessions (cf.\ the
- \verb|IsaMakefile|s in the distribution).
-
- \item[\indexdef{}{setting}{ISABELLE\_LATEX}\hypertarget{setting.ISABELLE-LATEX}{\hyperlink{setting.ISABELLE-LATEX}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}LATEX}}}}}, \indexdef{}{setting}{ISABELLE\_PDFLATEX}\hypertarget{setting.ISABELLE-PDFLATEX}{\hyperlink{setting.ISABELLE-PDFLATEX}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}PDFLATEX}}}}}, \indexdef{}{setting}{ISABELLE\_BIBTEX}\hypertarget{setting.ISABELLE-BIBTEX}{\hyperlink{setting.ISABELLE-BIBTEX}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}BIBTEX}}}}}, \indexdef{}{setting}{ISABELLE\_DVIPS}\hypertarget{setting.ISABELLE-DVIPS}{\hyperlink{setting.ISABELLE-DVIPS}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}DVIPS}}}}}] refer to {\LaTeX} related tools for Isabelle
- document preparation (see also \secref{sec:tool-latex}).
-
- \item[\indexdef{}{setting}{ISABELLE\_TOOLS}\hypertarget{setting.ISABELLE-TOOLS}{\hyperlink{setting.ISABELLE-TOOLS}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}TOOLS}}}}}] is a colon separated list of
- directories that are scanned by \hyperlink{executable.isabelle}{\mbox{\isa{\isatt{isabelle}}}} for external
- utility programs (see also \secref{sec:isabelle-tool}).
-
- \item[\indexdef{}{setting}{ISABELLE\_DOCS}\hypertarget{setting.ISABELLE-DOCS}{\hyperlink{setting.ISABELLE-DOCS}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}DOCS}}}}}] is a colon separated list of
- directories with documentation files.
-
- \item[\indexdef{}{setting}{ISABELLE\_DOC\_FORMAT}\hypertarget{setting.ISABELLE-DOC-FORMAT}{\hyperlink{setting.ISABELLE-DOC-FORMAT}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}DOC{\isaliteral{5F}{\isacharunderscore}}FORMAT}}}}}] specifies the preferred
- document format, typically \verb|dvi| or \verb|pdf|.
-
- \item[\indexdef{}{setting}{DVI\_VIEWER}\hypertarget{setting.DVI-VIEWER}{\hyperlink{setting.DVI-VIEWER}{\mbox{\isa{\isatt{DVI{\isaliteral{5F}{\isacharunderscore}}VIEWER}}}}}] specifies the command to be used
- for displaying \verb|dvi| files.
-
- \item[\indexdef{}{setting}{PDF\_VIEWER}\hypertarget{setting.PDF-VIEWER}{\hyperlink{setting.PDF-VIEWER}{\mbox{\isa{\isatt{PDF{\isaliteral{5F}{\isacharunderscore}}VIEWER}}}}}] specifies the command to be used
- for displaying \verb|pdf| files.
-
- \item[\indexdef{}{setting}{PRINT\_COMMAND}\hypertarget{setting.PRINT-COMMAND}{\hyperlink{setting.PRINT-COMMAND}{\mbox{\isa{\isatt{PRINT{\isaliteral{5F}{\isacharunderscore}}COMMAND}}}}}] specifies the standard printer
- spool command, which is expected to accept \verb|ps| files.
-
- \item[\indexdef{}{setting}{ISABELLE\_TMP\_PREFIX}\hypertarget{setting.ISABELLE-TMP-PREFIX}{\hyperlink{setting.ISABELLE-TMP-PREFIX}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}TMP{\isaliteral{5F}{\isacharunderscore}}PREFIX}}}}}\isa{{\isaliteral{22}{\isachardoublequote}}\isaliteral{5C3C5E7375703E}{}\isactrlsup {\isaliteral{2A}{\isacharasterisk}}{\isaliteral{22}{\isachardoublequote}}}] is the
- prefix from which any running \hyperlink{executable.isabelle-process}{\mbox{\isa{\isatt{isabelle{\isaliteral{2D}{\isacharminus}}process}}}}
- derives an individual directory for temporary files. The default is
- somewhere in \verb|/tmp|.
-
- \end{description}%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsubsection{Additional components \label{sec:components}%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-Any directory may be registered as an explicit \emph{Isabelle
- component}. The general layout conventions are that of the main
- Isabelle distribution itself, and the following two files (both
- optional) have a special meaning:
-
- \begin{itemize}
-
- \item \verb|etc/settings| holds additional settings that are
- initialized when bootstrapping the overall Isabelle environment,
- cf.\ \secref{sec:boot}. As usual, the content is interpreted as a
- \verb|bash| script. It may refer to the component's enclosing
- directory via the \verb|COMPONENT| shell variable.
-
- For example, the following setting allows to refer to files within
- the component later on, without having to hardwire absolute paths:
-
-\begin{ttbox}
-MY_COMPONENT_HOME="$COMPONENT"
-\end{ttbox}
-
- Components can also add to existing Isabelle settings such as
- \indexdef{}{setting}{ISABELLE\_TOOLS}\hypertarget{setting.ISABELLE-TOOLS}{\hyperlink{setting.ISABELLE-TOOLS}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}TOOLS}}}}}, in order to provide
- component-specific tools that can be invoked by end-users. For
- example:
-
-\begin{ttbox}
-ISABELLE_TOOLS="$ISABELLE_TOOLS:$COMPONENT/lib/Tools"
-\end{ttbox}
-
- \item \verb|etc/components| holds a list of further
- sub-components of the same structure. The directory specifications
- given here can be either absolute (with leading \verb|/|) or
- relative to the component's main directory.
-
- \end{itemize}
-
- The root of component initialization is \hyperlink{setting.ISABELLE-HOME}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}HOME}}}}
- itself. After initializing all of its sub-components recursively,
- \hyperlink{setting.ISABELLE-HOME-USER}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}HOME{\isaliteral{5F}{\isacharunderscore}}USER}}}} is included in the same manner (if
- that directory exists). This allows to install private components
- via \verb|$ISABELLE_HOME_USER/etc/components|, although it is
- often more convenient to do that programmatically via the
- \verb,init_component, shell function in the \verb,etc/settings,
- script of \verb,$ISABELLE_HOME_USER, (or any other component
- directory). For example:
-\begin{ttbox}
-init_component "$HOME/screwdriver-2.0"
-\end{ttbox}
-
- This is tolerant wrt.\ missing component directories, but might
- produce a warning.
-
- \medskip More complex situations may be addressed by initializing
- components listed in a given catalog file, relatively to some base
- directory:
-
-\begin{ttbox}
-init_components "$HOME/my_component_store" "some_catalog_file"
-\end{ttbox}
-
- The component directories listed in the catalog file are treated as
- relative to the given base directory.
-
- See also \secref{sec:tool-components} for some tool-support for
- resolving components that are formally initialized but not installed
- yet.%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsection{The raw Isabelle process%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-The \indexdef{}{executable}{isabelle-process}\hypertarget{executable.isabelle-process}{\hyperlink{executable.isabelle-process}{\mbox{\isa{\isatt{isabelle{\isaliteral{2D}{\isacharminus}}process}}}}} executable runs bare-bones
- Isabelle logic sessions --- either interactively or in batch mode.
- It provides an abstraction over the underlying ML system, and over
- the actual heap file locations. Its usage is:
-
-\begin{ttbox}
-Usage: isabelle-process [OPTIONS] [INPUT] [OUTPUT]
-
- Options are:
- -I startup Isar interaction mode
- -P startup Proof General interaction mode
- -S secure mode -- disallow critical operations
- -T ADDR startup process wrapper, with socket address
- -W IN:OUT startup process wrapper, with input/output fifos
- -X startup PGIP interaction mode
- -e MLTEXT pass MLTEXT to the ML session
- -f pass 'Session.finish();' to the ML session
- -m MODE add print mode for output
- -q non-interactive session
- -r open heap file read-only
- -u pass 'use"ROOT.ML";' to the ML session
- -w reset write permissions on OUTPUT
-
- INPUT (default "\$ISABELLE_LOGIC") and OUTPUT specify in/out heaps.
- These are either names to be searched in the Isabelle path, or
- actual file names (containing at least one /).
- If INPUT is "RAW_ML_SYSTEM", just start the bare bones ML system.
-\end{ttbox}
-
- Input files without path specifications are looked up in the
- \hyperlink{setting.ISABELLE-PATH}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}PATH}}}} setting, which may consist of multiple
- components separated by colons --- these are tried in the given
- order with the value of \hyperlink{setting.ML-IDENTIFIER}{\mbox{\isa{\isatt{ML{\isaliteral{5F}{\isacharunderscore}}IDENTIFIER}}}} appended
- internally. In a similar way, base names are relative to the
- directory specified by \hyperlink{setting.ISABELLE-OUTPUT}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}OUTPUT}}}}. In any case,
- actual file locations may also be given by including at least one
- slash (\verb|/|) in the name (hint: use \verb|./| to
- refer to the current directory).%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsubsubsection{Options%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-If the input heap file does not have write permission bits set, or
- the \verb|-r| option is given explicitely, then the session
- started will be read-only. That is, the ML world cannot be
- committed back into the image file. Otherwise, a writable session
- enables commits into either the input file, or into another output
- heap file (if that is given as the second argument on the command
- line).
-
- The read-write state of sessions is determined at startup only, it
- cannot be changed intermediately. Also note that heap images may
- require considerable amounts of disk space (approximately
- 50--200~MB). Users are responsible for themselves to dispose their
- heap files when they are no longer needed.
-
- \medskip The \verb|-w| option makes the output heap file
- read-only after terminating. Thus subsequent invocations cause the
- logic image to be read-only automatically.
-
- \medskip Using the \verb|-e| option, arbitrary ML code may be
- passed to the Isabelle session from the command line. Multiple
- \verb|-e|'s are evaluated in the given order. Strange things
- may happen when errorneous ML code is provided. Also make sure that
- the ML commands are terminated properly by semicolon.
-
- \medskip The \verb|-u| option is a shortcut for \verb|-e| passing ``\verb|use "ROOT.ML";|'' to the ML session.
- The \verb|-f| option passes ``\verb|Session.finish();|'', which is intended mainly for administrative
- purposes.
-
- \medskip The \verb|-m| option adds identifiers of print modes
- to be made active for this session. Typically, this is used by some
- user interface, e.g.\ to enable output of proper mathematical
- symbols.
-
- \medskip Isabelle normally enters an interactive top-level loop
- (after processing the \verb|-e| texts). The \verb|-q|
- option inhibits interaction, thus providing a pure batch mode
- facility.
-
- \medskip The \verb|-I| option makes Isabelle enter Isar
- interaction mode on startup, instead of the primitive ML top-level.
- The \verb|-P| option configures the top-level loop for
- interaction with the Proof General user interface, and the
- \verb|-X| option enables XML-based PGIP communication.
-
- \medskip The \verb|-T| or \verb|-W| option makes
- Isabelle enter a special process wrapper for interaction via the
- Isabelle/Scala layer, see also \verb|~~/src/Pure/System/isabelle_process.scala|. The protocol between
- the ML and JVM process is private to the implementation.
-
- \medskip The \verb|-S| option makes the Isabelle process more
- secure by disabling some critical operations, notably runtime
- compilation and evaluation of ML source code.%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsubsubsection{Examples%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-Run an interactive session of the default object-logic (as specified
- by the \hyperlink{setting.ISABELLE-LOGIC}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}LOGIC}}}} setting) like this:
-\begin{ttbox}
-isabelle-process
-\end{ttbox}
-
- Usually \hyperlink{setting.ISABELLE-LOGIC}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}LOGIC}}}} refers to one of the standard
- logic images, which are read-only by default. A writable session
- --- based on \verb|HOL|, but output to \verb|Test| (in the
- directory specified by the \hyperlink{setting.ISABELLE-OUTPUT}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}OUTPUT}}}} setting) ---
- may be invoked as follows:
-\begin{ttbox}
-isabelle-process HOL Test
-\end{ttbox}
- Ending this session normally (e.g.\ by typing control-D) dumps the
- whole ML system state into \verb|Test| (be prepared for more
- than 100\,MB):
-
- The \verb|Test| session may be continued later (still in
- writable state) by:
-\begin{ttbox}
-isabelle-process Test
-\end{ttbox}
- A read-only \verb|Test| session may be started by:
-\begin{ttbox}
-isabelle-process -r Test
-\end{ttbox}
-
- \medskip Note that manual session management like this does
- \emph{not} provide proper setup for theory presentation. This would
- require \hyperlink{tool.usedir}{\mbox{\isa{\isatool{usedir}}}}.
-
- \bigskip The next example demonstrates batch execution of Isabelle.
- We retrieve the \verb|Main| theory value from the theory loader
- within ML (observe the delicate quoting rules for the Bash shell
- vs.\ ML):
-\begin{ttbox}
-isabelle-process -e 'Thy_Info.get_theory "Main";' -q -r HOL
-\end{ttbox}
- Note that the output text will be interspersed with additional junk
- messages by the ML runtime environment. The \verb|-W| option
- allows to communicate with the Isabelle process via an external
- program in a more robust fashion.%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsection{The Isabelle tool wrapper \label{sec:isabelle-tool}%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-All Isabelle related tools and interfaces are called via a common
- wrapper --- \hyperlink{executable.isabelle}{\mbox{\isa{\isatt{isabelle}}}}:
-
-\begin{ttbox}
-Usage: isabelle TOOL [ARGS ...]
-
- Start Isabelle tool NAME with ARGS; pass "-?" for tool specific help.
-
-Available tools:
- \dots
-\end{ttbox}
-
- In principle, Isabelle tools are ordinary executable scripts that
- are run within the Isabelle settings environment, see
- \secref{sec:settings}. The set of available tools is collected by
- \hyperlink{executable.isabelle}{\mbox{\isa{\isatt{isabelle}}}} from the directories listed in the \hyperlink{setting.ISABELLE-TOOLS}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}TOOLS}}}} setting. Do not try to call the scripts directly
- from the shell. Neither should you add the tool directories to your
- shell's search path!%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsubsubsection{Examples%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-Show the list of available documentation of the Isabelle
- distribution:
-
-\begin{ttbox}
- isabelle doc
-\end{ttbox}
-
- View a certain document as follows:
-\begin{ttbox}
- isabelle doc system
-\end{ttbox}
-
- Query the Isabelle settings environment:
-\begin{ttbox}
- isabelle getenv ISABELLE_HOME_USER
-\end{ttbox}%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isadelimtheory
-%
-\endisadelimtheory
-%
-\isatagtheory
-\isacommand{end}\isamarkupfalse%
-%
-\endisatagtheory
-{\isafoldtheory}%
-%
-\isadelimtheory
-%
-\endisadelimtheory
-\end{isabellebody}%
-%%% Local Variables:
-%%% mode: latex
-%%% TeX-master: "root"
-%%% End:
--- a/doc-src/System/Thy/document/Interfaces.tex Mon Aug 27 16:10:54 2012 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,338 +0,0 @@
-%
-\begin{isabellebody}%
-\def\isabellecontext{Interfaces}%
-%
-\isadelimtheory
-%
-\endisadelimtheory
-%
-\isatagtheory
-\isacommand{theory}\isamarkupfalse%
-\ Interfaces\isanewline
-\isakeyword{imports}\ Base\isanewline
-\isakeyword{begin}%
-\endisatagtheory
-{\isafoldtheory}%
-%
-\isadelimtheory
-%
-\endisadelimtheory
-%
-\isamarkupchapter{User interfaces%
-}
-\isamarkuptrue%
-%
-\isamarkupsection{Isabelle/jEdit Prover IDE \label{sec:tool-jedit}%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-The \indexdef{}{tool}{jedit}\hypertarget{tool.jedit}{\hyperlink{tool.jedit}{\mbox{\isa{\isatool{jedit}}}}} tool invokes a version of
- jEdit\footnote{\url{http://www.jedit.org/}} that has been augmented
- with some components to provide a fully-featured Prover IDE:
-\begin{ttbox} Usage: isabelle jedit [OPTIONS]
- [FILES ...]
-
- Options are:
- -J OPTION add JVM runtime option (default JEDIT_JAVA_OPTIONS)
- -b build only
- -d DIR include session directory
- -f fresh build
- -j OPTION add jEdit runtime option (default JEDIT_OPTIONS)
- -l NAME logic image name (default ISABELLE_LOGIC)
- -m MODE add print mode for output
-
-Start jEdit with Isabelle plugin setup and opens theory FILES
-(default Scratch.thy).
-\end{ttbox}
-
- The \verb|-l| option specifies the session name of the logic
- image to be used for proof processing. Additional session root
- directories may be included via option \verb|-d| to augment
- that name space (see also \secref{sec:tool-build}).
-
- The \verb|-m| option specifies additional print modes.
-
- The \verb|-J| and \verb|-j| options allow to pass
- additional low-level options to the JVM or jEdit, respectively. The
- defaults are provided by the Isabelle settings environment
- (\secref{sec:settings}).
-
- The \verb|-b| and \verb|-f| options control the
- self-build mechanism of Isabelle/jEdit. This is only relevant for
- building from sources, which also requires an auxiliary \verb|jedit_build|
- component.\footnote{\url{http://isabelle.in.tum.de/components}} Note
- that official Isabelle releases already include a version of
- Isabelle/jEdit that is built properly.%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsection{Proof General / Emacs%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-The \indexdef{}{tool}{emacs}\hypertarget{tool.emacs}{\hyperlink{tool.emacs}{\mbox{\isa{\isatool{emacs}}}}} tool invokes a version of Emacs and
- Proof General\footnote{http://proofgeneral.inf.ed.ac.uk/} within the
- regular Isabelle settings environment (\secref{sec:settings}). This
- is more convenient than starting Emacs separately, loading the Proof
- General LISP files, and then attempting to start Isabelle with
- dynamic \hyperlink{setting.PATH}{\mbox{\isa{\isatt{PATH}}}} lookup etc.
-
- The actual interface script is part of the Proof General
- distribution; its usage depends on the particular version. There
- are some options available, such as \verb|-l| for passing the
- logic image to be used by default, or \verb|-m| to tune the
- standard print mode. The following Isabelle settings are
- particularly important for Proof General:
-
- \begin{description}
-
- \item[\indexdef{}{setting}{PROOFGENERAL\_HOME}\hypertarget{setting.PROOFGENERAL-HOME}{\hyperlink{setting.PROOFGENERAL-HOME}{\mbox{\isa{\isatt{PROOFGENERAL{\isaliteral{5F}{\isacharunderscore}}HOME}}}}}] points to the main
- installation directory of the Proof General distribution. This is
- implicitly provided for versions of Proof General that are
- distributed as Isabelle component, see also \secref{sec:components};
- otherwise it needs to be configured manually.
-
- \item[\indexdef{}{setting}{PROOFGENERAL\_OPTIONS}\hypertarget{setting.PROOFGENERAL-OPTIONS}{\hyperlink{setting.PROOFGENERAL-OPTIONS}{\mbox{\isa{\isatt{PROOFGENERAL{\isaliteral{5F}{\isacharunderscore}}OPTIONS}}}}}] is implicitly prefixed to
- the command line of any invocation of the Proof General \verb|interface| script. This allows to provide persistent default
- options for the invocation of \texttt{isabelle emacs}.
-
- \end{description}%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsection{Plain TTY interaction \label{sec:tool-tty}%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-The \indexdef{}{tool}{tty}\hypertarget{tool.tty}{\hyperlink{tool.tty}{\mbox{\isa{\isatool{tty}}}}} tool runs the Isabelle process interactively
- within a plain terminal session:
-\begin{ttbox}
-Usage: isabelle tty [OPTIONS]
-
- Options are:
- -l NAME logic image name (default ISABELLE_LOGIC)
- -m MODE add print mode for output
- -p NAME line editor program name (default ISABELLE_LINE_EDITOR)
-
- Run Isabelle process with plain tty interaction and line editor.
-\end{ttbox}
-
- The \verb|-l| option specifies the logic image. The
- \verb|-m| option specifies additional print modes. The
- \verb|-p| option specifies an alternative line editor (such
- as the \indexdef{}{executable}{rlwrap}\hypertarget{executable.rlwrap}{\hyperlink{executable.rlwrap}{\mbox{\isa{\isatt{rlwrap}}}}} wrapper for GNU readline); the
- fall-back is to use raw standard input.
-
- Regular interaction works via the standard Isabelle/Isar toplevel
- loop. The Isar command \hyperlink{command.exit}{\mbox{\isa{\isacommand{exit}}}} drops out into the
- bare-bones ML system, which is occasionally useful for debugging of
- the Isar infrastructure itself. Invoking \verb|Isar.loop|~\verb|();| in ML will return to the Isar toplevel.%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsection{Theory graph browser \label{sec:browse}%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-The Isabelle graph browser is a general tool for visualizing
- dependency graphs. Certain nodes of the graph (i.e.\ theories) can
- be grouped together in ``directories'', whose contents may be
- hidden, thus enabling the user to collapse irrelevant portions of
- information. The browser is written in Java, it can be used both as
- a stand-alone application and as an applet.%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsubsection{Invoking the graph browser%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-The stand-alone version of the graph browser is wrapped up as
- \indexdef{}{tool}{browser}\hypertarget{tool.browser}{\hyperlink{tool.browser}{\mbox{\isa{\isatool{browser}}}}}:
-\begin{ttbox}
-Usage: isabelle browser [OPTIONS] [GRAPHFILE]
-
- Options are:
- -b Admin/build only
- -c cleanup -- remove GRAPHFILE after use
- -o FILE output to FILE (ps, eps, pdf)
-\end{ttbox}
- When no filename is specified, the browser automatically changes to
- the directory \hyperlink{setting.ISABELLE-BROWSER-INFO}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}BROWSER{\isaliteral{5F}{\isacharunderscore}}INFO}}}}.
-
- \medskip The \verb|-b| option indicates that this is for
- administrative build only, i.e.\ no browser popup if no files are
- given.
-
- The \verb|-c| option causes the input file to be removed
- after use.
-
- The \verb|-o| option indicates batch-mode operation, with the
- output written to the indicated file; note that \verb|pdf|
- produces an \verb|eps| copy as well.
-
- \medskip The applet version of the browser is part of the standard
- WWW theory presentation, see the link ``theory dependencies'' within
- each session index.%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsubsection{Using the graph browser%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-The browser's main window, which is shown in
- \figref{fig:browserwindow}, consists of two sub-windows. In the
- left sub-window, the directory tree is displayed. The graph itself
- is displayed in the right sub-window.
-
- \begin{figure}[ht]
- \includegraphics[width=\textwidth]{browser_screenshot}
- \caption{\label{fig:browserwindow} Browser main window}
- \end{figure}%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsubsubsection{The directory tree window%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-We describe the usage of the directory browser and the meaning of
- the different items in the browser window.
-
- \begin{itemize}
-
- \item A red arrow before a directory name indicates that the
- directory is currently ``folded'', i.e.~the nodes in this directory
- are collapsed to one single node. In the right sub-window, the names
- of nodes corresponding to folded directories are enclosed in square
- brackets and displayed in red color.
-
- \item A green downward arrow before a directory name indicates that
- the directory is currently ``unfolded''. It can be folded by
- clicking on the directory name. Clicking on the name for a second
- time unfolds the directory again. Alternatively, a directory can
- also be unfolded by clicking on the corresponding node in the right
- sub-window.
-
- \item Blue arrows stand before ordinary node names. When clicking on
- such a name (i.e.\ that of a theory), the graph display window
- focuses to the corresponding node. Double clicking invokes a text
- viewer window in which the contents of the theory file are
- displayed.
-
- \end{itemize}%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsubsubsection{The graph display window%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-When pointing on an ordinary node, an upward and a downward arrow is
- shown. Initially, both of these arrows are green. Clicking on the
- upward or downward arrow collapses all predecessor or successor
- nodes, respectively. The arrow's color then changes to red,
- indicating that the predecessor or successor nodes are currently
- collapsed. The node corresponding to the collapsed nodes has the
- name ``\verb|[....]|''. To uncollapse the nodes again, simply
- click on the red arrow or on the node with the name ``\verb|[....]|''. Similar to the directory browser, the contents of
- theory files can be displayed by double clicking on the
- corresponding node.%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsubsubsection{The ``File'' menu%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-Due to Java Applet security restrictions this menu is only available
- in the full application version. The meaning of the menu items is as
- follows:
-
- \begin{description}
-
- \item[Open \dots] Open a new graph file.
-
- \item[Export to PostScript] Outputs the current graph in Postscript
- format, appropriately scaled to fit on one single sheet of A4 paper.
- The resulting file can be printed directly.
-
- \item[Export to EPS] Outputs the current graph in Encapsulated
- Postscript format. The resulting file can be included in other
- documents.
-
- \item[Quit] Quit the graph browser.
-
- \end{description}%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsubsection{Syntax of graph definition files%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-A graph definition file has the following syntax:
-
- \begin{center}\small
- \begin{tabular}{rcl}
- \isa{graph} & \isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{3D}{\isacharequal}}{\isaliteral{22}{\isachardoublequote}}} & \isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{7B}{\isacharbraceleft}}\ vertex{\isaliteral{22}{\isachardoublequote}}}~\verb|;|~\isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{7D}{\isacharbraceright}}{\isaliteral{2B}{\isacharplus}}{\isaliteral{22}{\isachardoublequote}}} \\
- \isa{vertex} & \isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{3D}{\isacharequal}}{\isaliteral{22}{\isachardoublequote}}} & \isa{{\isaliteral{22}{\isachardoublequote}}vertex{\isaliteral{5F}{\isacharunderscore}}name\ vertex{\isaliteral{5F}{\isacharunderscore}}ID\ dir{\isaliteral{5F}{\isacharunderscore}}name\ {\isaliteral{5B}{\isacharbrackleft}}{\isaliteral{22}{\isachardoublequote}}}~\verb|+|~\isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{5D}{\isacharbrackright}}\ path\ {\isaliteral{5B}{\isacharbrackleft}}{\isaliteral{22}{\isachardoublequote}}}~\verb|<|~\isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{7C}{\isacharbar}}{\isaliteral{22}{\isachardoublequote}}}~\verb|>|~\isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{5D}{\isacharbrackright}}\ {\isaliteral{7B}{\isacharbraceleft}}\ vertex{\isaliteral{5F}{\isacharunderscore}}ID\ {\isaliteral{7D}{\isacharbraceright}}{\isaliteral{2A}{\isacharasterisk}}{\isaliteral{22}{\isachardoublequote}}}
- \end{tabular}
- \end{center}
-
- The meaning of the items in a vertex description is as follows:
-
- \begin{description}
-
- \item[\isa{vertex{\isaliteral{5F}{\isacharunderscore}}name}] The name of the vertex.
-
- \item[\isa{vertex{\isaliteral{5F}{\isacharunderscore}}ID}] The vertex identifier. Note that there may
- be several vertices with equal names, whereas identifiers must be
- unique.
-
- \item[\isa{dir{\isaliteral{5F}{\isacharunderscore}}name}] The name of the ``directory'' the vertex
- should be placed in. A ``\verb|+|'' sign after \isa{dir{\isaliteral{5F}{\isacharunderscore}}name} indicates that the nodes in the directory are initially
- visible. Directories are initially invisible by default.
-
- \item[\isa{path}] The path of the corresponding theory file. This
- is specified relatively to the path of the graph definition file.
-
- \item[List of successor/predecessor nodes] A ``\verb|<|''
- sign before the list means that successor nodes are listed, a
- ``\verb|>|'' sign means that predecessor nodes are listed. If
- neither ``\verb|<|'' nor ``\verb|>|'' is found, the
- browser assumes that successor nodes are listed.
-
- \end{description}%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isadelimtheory
-%
-\endisadelimtheory
-%
-\isatagtheory
-\isacommand{end}\isamarkupfalse%
-%
-\endisatagtheory
-{\isafoldtheory}%
-%
-\isadelimtheory
-%
-\endisadelimtheory
-\end{isabellebody}%
-%%% Local Variables:
-%%% mode: latex
-%%% TeX-master: "root"
-%%% End:
--- a/doc-src/System/Thy/document/Misc.tex Mon Aug 27 16:10:54 2012 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,662 +0,0 @@
-%
-\begin{isabellebody}%
-\def\isabellecontext{Misc}%
-%
-\isadelimtheory
-%
-\endisadelimtheory
-%
-\isatagtheory
-\isacommand{theory}\isamarkupfalse%
-\ Misc\isanewline
-\isakeyword{imports}\ Base\isanewline
-\isakeyword{begin}%
-\endisatagtheory
-{\isafoldtheory}%
-%
-\isadelimtheory
-%
-\endisadelimtheory
-%
-\isamarkupchapter{Miscellaneous tools \label{ch:tools}%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-Subsequently we describe various Isabelle related utilities, given
- in alphabetical order.%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsection{Resolving Isabelle components \label{sec:tool-components}%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-The \indexdef{}{tool}{components}\hypertarget{tool.components}{\hyperlink{tool.components}{\mbox{\isa{\isatool{components}}}}} tool resolves Isabelle components:
-\begin{ttbox}
-Usage: isabelle components [OPTIONS] [COMPONENTS ...]
-
- Options are:
- -R URL component repository
- (default $ISABELLE_COMPONENT_REPOSITORY)
- -a all missing components
- -l list status
-
- Resolve Isabelle components via download and installation.
- COMPONENTS are identified via base name.
-
- ISABELLE_COMPONENT_REPOSITORY="http://isabelle.in.tum.de/components"
-\end{ttbox}
-
- Components are initialized as described in \secref{sec:components}
- in a permissive manner, which can mark components as ``missing''.
- This state is amended by letting \hyperlink{tool.components}{\mbox{\isa{\isatool{components}}}} download and
- unpack components that are published on the default component
- repository \url{http://isabelle.in.tum.de/components/} in
- particular.
-
- Option \verb|-R| specifies an alternative component
- repository. Note that \verb|file:///| URLs can be used for
- local directories.
-
- Option \verb|-a| selects all missing components to be
- installed. Explicit components may be named as command
- line-arguments as well. Note that components are uniquely
- identified by their base name, while the installation takes place in
- the location that was specified in the attempt to initialize the
- component before.
-
- Option \verb|-l| lists the current state of available and
- missing components with their location (full name) within the
- file-system.%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsection{Displaying documents%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-The \indexdef{}{tool}{display}\hypertarget{tool.display}{\hyperlink{tool.display}{\mbox{\isa{\isatool{display}}}}} tool displays documents in DVI or PDF
- format:
-\begin{ttbox}
-Usage: isabelle display [OPTIONS] FILE
-
- Options are:
- -c cleanup -- remove FILE after use
-
- Display document FILE (in DVI format).
-\end{ttbox}
-
- \medskip The \verb|-c| option causes the input file to be
- removed after use. The program for viewing \verb|dvi| files is
- determined by the \hyperlink{setting.DVI-VIEWER}{\mbox{\isa{\isatt{DVI{\isaliteral{5F}{\isacharunderscore}}VIEWER}}}} setting.%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsection{Viewing documentation \label{sec:tool-doc}%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-The \indexdef{}{tool}{doc}\hypertarget{tool.doc}{\hyperlink{tool.doc}{\mbox{\isa{\isatool{doc}}}}} tool displays online documentation:
-\begin{ttbox}
-Usage: isabelle doc [DOC]
-
- View Isabelle documentation DOC, or show list of available documents.
-\end{ttbox}
- If called without arguments, it lists all available documents. Each
- line starts with an identifier, followed by a short description. Any
- of these identifiers may be specified as the first argument in order
- to have the corresponding document displayed.
-
- \medskip The \hyperlink{setting.ISABELLE-DOCS}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}DOCS}}}} setting specifies the list of
- directories (separated by colons) to be scanned for documentations.
- The program for viewing \verb|dvi| files is determined by the
- \hyperlink{setting.DVI-VIEWER}{\mbox{\isa{\isatt{DVI{\isaliteral{5F}{\isacharunderscore}}VIEWER}}}} setting.%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsection{Shell commands within the settings environment \label{sec:tool-env}%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-The \indexdef{}{tool}{env}\hypertarget{tool.env}{\hyperlink{tool.env}{\mbox{\isa{\isatool{env}}}}} tool is a direct wrapper for the standard
- \verb|/usr/bin/env| command on POSIX systems, running within
- the Isabelle settings environment (\secref{sec:settings}).
-
- The command-line arguments are that of the underlying version of
- \verb|env|. For example, the following invokes an instance of
- the GNU Bash shell within the Isabelle environment:
-\begin{alltt}
- isabelle env bash
-\end{alltt}%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsection{Getting logic images%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-The \indexdef{}{tool}{findlogics}\hypertarget{tool.findlogics}{\hyperlink{tool.findlogics}{\mbox{\isa{\isatool{findlogics}}}}} tool traverses all directories
- specified in \hyperlink{setting.ISABELLE-PATH}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}PATH}}}}, looking for Isabelle logic
- images. Its usage is:
-\begin{ttbox}
-Usage: isabelle findlogics
-
- Collect heap file names from ISABELLE_PATH.
-\end{ttbox}
-
- The base names of all files found on the path are printed --- sorted
- and with duplicates removed. Also note that lookup in \hyperlink{setting.ISABELLE-PATH}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}PATH}}}} includes the current values of \hyperlink{setting.ML-SYSTEM}{\mbox{\isa{\isatt{ML{\isaliteral{5F}{\isacharunderscore}}SYSTEM}}}}
- and \hyperlink{setting.ML-PLATFORM}{\mbox{\isa{\isatt{ML{\isaliteral{5F}{\isacharunderscore}}PLATFORM}}}}. Thus switching to another ML compiler
- may change the set of logic images available.%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsection{Inspecting the settings environment \label{sec:tool-getenv}%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-The Isabelle settings environment --- as provided by the
- site-default and user-specific settings files --- can be inspected
- with the \indexdef{}{tool}{getenv}\hypertarget{tool.getenv}{\hyperlink{tool.getenv}{\mbox{\isa{\isatool{getenv}}}}} tool:
-\begin{ttbox}
-Usage: isabelle getenv [OPTIONS] [VARNAMES ...]
-
- Options are:
- -a display complete environment
- -b print values only (doesn't work for -a)
- -d FILE dump complete environment to FILE
- (null terminated entries)
-
- Get value of VARNAMES from the Isabelle settings.
-\end{ttbox}
-
- With the \verb|-a| option, one may inspect the full process
- environment that Isabelle related programs are run in. This usually
- contains much more variables than are actually Isabelle settings.
- Normally, output is a list of lines of the form \isa{name}\verb|=|\isa{value}. The \verb|-b| option
- causes only the values to be printed.
-
- Option \verb|-d| produces a dump of the complete environment
- to the specified file. Entries are terminated by the ASCII null
- character, i.e.\ the C string terminator.%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsubsubsection{Examples%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-Get the location of \hyperlink{setting.ISABELLE-HOME-USER}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}HOME{\isaliteral{5F}{\isacharunderscore}}USER}}}} where
- user-specific information is stored:
-\begin{ttbox}
-isabelle getenv ISABELLE_HOME_USER
-\end{ttbox}
-
- \medskip Get the value only of the same settings variable, which is
-particularly useful in shell scripts:
-\begin{ttbox}
-isabelle getenv -b ISABELLE_OUTPUT
-\end{ttbox}%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsection{Installing standalone Isabelle executables \label{sec:tool-install}%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-By default, the main Isabelle binaries (\hyperlink{executable.isabelle}{\mbox{\isa{\isatt{isabelle}}}} etc.) are just run from their location within the
- distribution directory, probably indirectly by the shell through its
- \hyperlink{setting.PATH}{\mbox{\isa{\isatt{PATH}}}}. Other schemes of installation are supported by the
- \indexdef{}{tool}{install}\hypertarget{tool.install}{\hyperlink{tool.install}{\mbox{\isa{\isatool{install}}}}} tool:
-\begin{ttbox}
-Usage: isabelle install [OPTIONS]
-
- Options are:
- -d DISTDIR use DISTDIR as Isabelle distribution
- (default ISABELLE_HOME)
- -p DIR install standalone binaries in DIR
-
- Install Isabelle executables with absolute references to the current
- distribution directory.
-\end{ttbox}
-
- The \verb|-d| option overrides the current Isabelle
- distribution directory as determined by \hyperlink{setting.ISABELLE-HOME}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}HOME}}}}.
-
- The \verb|-p| option installs executable wrapper scripts for
- \hyperlink{executable.isabelle-process}{\mbox{\isa{\isatt{isabelle{\isaliteral{2D}{\isacharminus}}process}}}}, \hyperlink{executable.isabelle}{\mbox{\isa{\isatt{isabelle}}}}, containing
- proper absolute references to the Isabelle distribution directory.
- A typical \verb|DIR| specification would be some directory
- expected to be in the shell's \hyperlink{setting.PATH}{\mbox{\isa{\isatt{PATH}}}}, such as \verb|$HOME/bin|.
-
- It is possible to make symbolic links of the main Isabelle
- executables, but making separate copies outside the Isabelle
- distribution directory will not work.%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsection{Creating instances of the Isabelle logo%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-The \indexdef{}{tool}{logo}\hypertarget{tool.logo}{\hyperlink{tool.logo}{\mbox{\isa{\isatool{logo}}}}} tool creates any instance of the generic
- Isabelle logo as EPS or PDF.
-\begin{ttbox}
-Usage: isabelle logo [OPTIONS] NAME
-
- Create instance NAME of the Isabelle logo (as EPS or PDF).
-
- Options are:
- -o OUTFILE specify output file and format
- (default "isabelle_name.pdf")
- -q quiet mode
-\end{ttbox}
-
- Option \verb|-o| specifies an explicit output file name and
- format, e.g.\ \verb|mylogo.eps| for an EPS logo. The default
- is \verb|isabelle_|\isa{name}\verb|.pdf|, with the
- lower-case version of the given name and PDF output.
-
- Option \verb|-q| omits printing of the result file name.
-
- \medskip Implementors of Isabelle tools and applications are
- encouraged to make derived Isabelle logos for their own projects
- using this template.%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsection{Isabelle wrapper for make \label{sec:tool-make}%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-The old \indexdef{}{tool}{make}\hypertarget{tool.make}{\hyperlink{tool.make}{\mbox{\isa{\isatool{make}}}}} tool is a very simple wrapper for
- ordinary Unix \hyperlink{executable.make}{\mbox{\isa{\isatt{make}}}}:
-\begin{ttbox}
-Usage: isabelle make [ARGS ...]
-
- Compile the logic in current directory using IsaMakefile.
- ARGS are directly passed to the system make program.
-\end{ttbox}
-
- Note that the Isabelle settings environment is also active. Thus one
- may refer to its values within the \verb|IsaMakefile|, e.g.\
- \verb|$(ISABELLE_HOME)|. Furthermore, programs started from
- the make file also inherit this environment.%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsection{Creating Isabelle session directories
- \label{sec:tool-mkdir}%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-The old \indexdef{}{tool}{mkdir}\hypertarget{tool.mkdir}{\hyperlink{tool.mkdir}{\mbox{\isa{\isatool{mkdir}}}}} tool prepares Isabelle session
- source directories, including a sensible default setup of \verb|IsaMakefile|, \verb|ROOT.ML|, and a \verb|document|
- directory with a minimal \verb|root.tex| that is sufficient to
- print all theories of the session (in the order of appearance); see
- \secref{sec:tool-document} for further information on Isabelle
- document preparation. The usage of \hyperlink{tool.mkdir}{\mbox{\isa{\isatool{mkdir}}}} is:
-
-\begin{ttbox}
-Usage: isabelle mkdir [OPTIONS] [LOGIC] NAME
-
- Options are:
- -I FILE alternative IsaMakefile output
- -P include parent logic target
- -b setup build mode (session outputs heap image)
- -q quiet mode
-
- Prepare session directory, including IsaMakefile and document source,
- with parent LOGIC (default ISABELLE_LOGIC=\$ISABELLE_LOGIC)
-\end{ttbox}
-
- The \hyperlink{tool.mkdir}{\mbox{\isa{\isatool{mkdir}}}} tool is conservative in the sense that any
- existing \verb|IsaMakefile| etc.\ is left unchanged. Thus it
- is safe to invoke it multiple times, although later runs may not
- have the desired effect.
-
- Note that \hyperlink{tool.mkdir}{\mbox{\isa{\isatool{mkdir}}}} is unable to change \verb|IsaMakefile|
- incrementally --- manual changes are required for multiple
- sub-sessions. On order to get an initial working session, the only
- editing needed is to add appropriate \verb|use_thy| calls to the
- generated \verb|ROOT.ML| file.%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsubsubsection{Options%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-The \verb|-I| option specifies an alternative to \verb|IsaMakefile| for dependencies. Note that ``\verb|-|'' refers
- to \emph{stdout}, i.e.\ ``\verb|-I-|'' provides an easy way
- to peek at \hyperlink{tool.mkdir}{\mbox{\isa{\isatool{mkdir}}}}'s idea of \hyperlink{tool.make}{\mbox{\isa{\isatool{make}}}} setup required for
- some particular of Isabelle session.
-
- \medskip The \verb|-P| option includes a target for the
- parent \verb|LOGIC| session in the generated \verb|IsaMakefile|. The corresponding sources are assumed to be located
- within the Isabelle distribution.
-
- \medskip The \verb|-b| option sets up the current directory
- as the base for a new session that provides an actual logic image,
- as opposed to one that only runs several theories based on an
- existing image. Note that in the latter case, everything except
- \verb|IsaMakefile| would be placed into a separate directory
- \verb|NAME|, rather than the current one. See
- \secref{sec:tool-usedir} for further information on \emph{build
- mode} vs.\ \emph{example mode} of \hyperlink{tool.usedir}{\mbox{\isa{\isatool{usedir}}}}.
-
- \medskip The \verb|-q| option enables quiet mode, suppressing
- further notes on how to proceed.%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsection{Printing documents%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-The \indexdef{}{tool}{print}\hypertarget{tool.print}{\hyperlink{tool.print}{\mbox{\isa{\isatool{print}}}}} tool prints documents:
-\begin{ttbox}
-Usage: isabelle print [OPTIONS] FILE
-
- Options are:
- -c cleanup -- remove FILE after use
-
- Print document FILE.
-\end{ttbox}
-
- The \verb|-c| option causes the input file to be removed
- after use. The printer spool command is determined by the \hyperlink{setting.PRINT-COMMAND}{\mbox{\isa{\isatt{PRINT{\isaliteral{5F}{\isacharunderscore}}COMMAND}}}} setting.%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsection{Remove awkward symbol names from theory sources%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-The \indexdef{}{tool}{unsymbolize}\hypertarget{tool.unsymbolize}{\hyperlink{tool.unsymbolize}{\mbox{\isa{\isatool{unsymbolize}}}}} tool tunes Isabelle theory sources to
- improve readability for plain ASCII output (e.g.\ in email
- communication). Most notably, \hyperlink{tool.unsymbolize}{\mbox{\isa{\isatool{unsymbolize}}}} replaces awkward
- arrow symbols such as \verb|\|\verb|<Longrightarrow>|
- by \verb|==>|.
-\begin{ttbox}
-Usage: isabelle unsymbolize [FILES|DIRS...]
-
- Recursively find .thy/.ML files, removing unreadable symbol names.
- Note: this is an ad-hoc script; there is no systematic way to replace
- symbols independently of the inner syntax of a theory!
-
- Renames old versions of FILES by appending "~~".
-\end{ttbox}%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsection{Running Isabelle sessions \label{sec:tool-usedir}%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-The old \indexdef{}{tool}{usedir}\hypertarget{tool.usedir}{\hyperlink{tool.usedir}{\mbox{\isa{\isatool{usedir}}}}} tool builds object-logic images, or
- runs example sessions based on existing logics. Its usage is:
-\begin{ttbox}
-Usage: isabelle usedir [OPTIONS] LOGIC NAME
-
- Options are:
- -C BOOL copy existing document directory to -D PATH (default true)
- -D PATH dump generated document sources into PATH
- -M MAX multithreading: maximum number of worker threads (default 1)
- -P PATH set path for remote theory browsing information
- -Q INT set threshold for sub-proof parallelization (default 50)
- -T LEVEL multithreading: trace level (default 0)
- -V VARIANT declare alternative document VARIANT
- -b build mode (output heap image, using current dir)
- -d FORMAT build document as FORMAT (default false)
- -f NAME use ML file NAME (default ROOT.ML)
- -g BOOL generate session graph image for document (default false)
- -i BOOL generate theory browser information (default false)
- -m MODE add print mode for output
- -p LEVEL set level of detail for proof objects (default 0)
- -q LEVEL set level of parallel proof checking (default 1)
- -r reset session path
- -s NAME override session NAME
- -t BOOL internal session timing (default false)
- -v BOOL be verbose (default false)
-
- Build object-logic or run examples. Also creates browsing
- information (HTML etc.) according to settings.
-
- ISABELLE_USEDIR_OPTIONS=...
-
- ML_PLATFORM=...
- ML_HOME=...
- ML_SYSTEM=...
- ML_OPTIONS=...
-\end{ttbox}
-
- Note that the value of the \indexref{}{setting}{ISABELLE\_USEDIR\_OPTIONS}\hyperlink{setting.ISABELLE-USEDIR-OPTIONS}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}USEDIR{\isaliteral{5F}{\isacharunderscore}}OPTIONS}}}}
- setting is implicitly prefixed to \emph{any} \hyperlink{tool.usedir}{\mbox{\isa{\isatool{usedir}}}}
- call. Since the \verb|IsaMakefile|s of all object-logics
- distributed with Isabelle just invoke \hyperlink{tool.usedir}{\mbox{\isa{\isatool{usedir}}}} for the real
- work, one may control compilation options globally via above
- variable. In particular, generation of \rmindex{HTML} browsing
- information and document preparation is controlled here.%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsubsubsection{Options%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-Basically, there are two different modes of operation: \emph{build
- mode} (enabled through the \verb|-b| option) and
- \emph{example mode} (default).
-
- Calling \hyperlink{tool.usedir}{\mbox{\isa{\isatool{usedir}}}} with \verb|-b| runs \hyperlink{executable.isabelle-process}{\mbox{\isa{\isatt{isabelle{\isaliteral{2D}{\isacharminus}}process}}}} with input image \verb|LOGIC| and output to
- \verb|NAME|, as provided on the command line. This will be a
- batch session, running \verb|ROOT.ML| from the current
- directory and then quitting. It is assumed that \verb|ROOT.ML|
- contains all ML commands required to build the logic.
-
- In example mode, \hyperlink{tool.usedir}{\mbox{\isa{\isatool{usedir}}}} runs a read-only session of
- \verb|LOGIC| and automatically runs \verb|ROOT.ML| from
- within directory \verb|NAME|. It assumes that this file
- contains appropriate ML commands to run the desired examples.
-
- \medskip The \verb|-i| option controls theory browser data
- generation. It may be explicitly turned on or off --- as usual, the
- last occurrence of \verb|-i| on the command line wins.
-
- The \verb|-P| option specifies a path (or actual URL) to be
- prefixed to any \emph{non-local} reference of existing theories.
- Thus user sessions may easily link to existing Isabelle libraries
- already present on the WWW.
-
- The \verb|-m| options specifies additional print modes to be
- activated temporarily while the session is processed.
-
- \medskip The \verb|-d| option controls document preparation.
- Valid arguments are \verb|false| (do not prepare any document;
- this is default), or any of \verb|dvi|, \verb|dvi.gz|,
- \verb|ps|, \verb|ps.gz|, \verb|pdf|. The logic
- session has to provide a properly setup \verb|document|
- directory. See \secref{sec:tool-document} and
- \secref{sec:tool-latex} for more details.
-
- \medskip The \verb|-V| option declares alternative document
- variants, consisting of name/tags pairs (cf.\ options \verb|-n| and \verb|-t| of \indexref{}{tool}{document}\hyperlink{tool.document}{\mbox{\isa{\isatool{document}}}}). The standard
- document is equivalent to ``\verb|document=theory,proof,ML|'', which means that all theory begin/end
- commands, proof body texts, and ML code will be presented
- faithfully.
-
- An alternative variant ``\verb|outline=/proof/ML|'' would
- fold proof and ML parts, replacing the original text by a short
- place-holder. The form ``\isa{name}\verb|=-|,'' means to
- remove document \isa{name} from the list of variants to be
- processed. Any number of \verb|-V| options may be given;
- later declarations have precedence over earlier ones.
-
- Some document variant \isa{name} may use an alternative {\LaTeX}
- entry point called \verb|document/root_|\isa{{\isaliteral{22}{\isachardoublequote}}name{\isaliteral{22}{\isachardoublequote}}}\verb|.tex| if that file exists; otherwise the common
- \verb|document/root.tex| is used.
-
- \medskip The \verb|-g| option produces images of the theory
- dependency graph (cf.\ \secref{sec:browse}) for inclusion in the
- generated document, both as \verb|session_graph.eps| and
- \verb|session_graph.pdf| at the same time. To include this in
- the final {\LaTeX} document one could say \verb|\includegraphics{session_graph}| in \verb|document/root.tex| (omitting the file-name extension enables
- {\LaTeX} to select to correct version, either for the DVI or PDF
- output path).
-
- \medskip The \verb|-D| option causes the generated document
- sources to be dumped at location \verb|PATH|; this path is
- relative to the session's main directory. If the \verb|-C|
- option is true, this will include a copy of an existing \verb|document| directory as provided by the user. For example, \hyperlink{tool.usedir}{\mbox{\isa{\isatool{usedir}}}}~\verb|-D generated HOL Foo| produces a complete set
- of document sources at \verb|Foo/generated|. Subsequent
- invocation of \hyperlink{tool.document}{\mbox{\isa{\isatool{document}}}}~\verb|Foo/generated| (see also
- \secref{sec:tool-document}) will process the final result
- independently of an Isabelle job. This decoupled mode of operation
- facilitates debugging of serious {\LaTeX} errors, for example.
-
- \medskip The \verb|-p| option determines the level of detail
- for internal proof objects, see also the \emph{Isabelle Reference
- Manual}~\cite{isabelle-ref}.
-
- \medskip The \verb|-q| option specifies the level of parallel
- proof checking: \verb|0| no proofs, \verb|1| toplevel
- proofs (default), \verb|2| toplevel and nested Isar proofs.
- The option \verb|-Q| specifies a threshold for \verb|-q2|: nested proofs are only parallelized when the current number
- of forked proofs falls below the given value (default 50),
- multiplied by the number of worker threads (see option \verb|-M|).
-
- \medskip The \verb|-t| option produces a more detailed
- internal timing report of the session.
-
- \medskip The \verb|-v| option causes additional information
- to be printed while running the session, notably the location of
- prepared documents.
-
- \medskip The \verb|-M| option specifies the maximum number of
- parallel worker threads used for processing independent tasks when
- checking theory sources (multithreading only works on suitable ML
- platforms). The special value of \verb|0| or \verb|max|
- refers to the number of actual CPU cores of the underlying machine,
- which is a good starting point for optimal performance tuning. The
- \verb|-T| option determines the level of detail in tracing
- output concerning the internal locking and scheduling in
- multithreaded operation. This may be helpful in isolating
- performance bottle-necks, e.g.\ due to excessive wait states when
- locking critical code sections.
-
- \medskip Any \hyperlink{tool.usedir}{\mbox{\isa{\isatool{usedir}}}} session is named by some \emph{session
- identifier}. These accumulate, documenting the way sessions depend
- on others. For example, consider \verb|Pure/FOL/ex|, which
- refers to the examples of FOL, which in turn is built upon Pure.
-
- The current session's identifier is by default just the base name of
- the \verb|LOGIC| argument (in build mode), or of the \verb|NAME| argument (in example mode). This may be overridden explicitly
- via the \verb|-s| option.%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsection{Output the version identifier of the Isabelle distribution%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-The \indexdef{}{tool}{version}\hypertarget{tool.version}{\hyperlink{tool.version}{\mbox{\isa{\isatool{version}}}}} tool displays Isabelle version information:
-\begin{ttbox}
-Usage: isabelle version [OPTIONS]
-
- Options are:
- -i short identification (derived from Mercurial id)
-
- Display Isabelle version information.
-\end{ttbox}
-
- \medskip The default is to output the full version string of the
- Isabelle distribution, e.g.\ ``\verb|Isabelle2012: May 2012|.
-
- The \verb|-i| option produces a short identification derived
- from the Mercurial id of the \hyperlink{setting.ISABELLE-HOME}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}HOME}}}} directory.%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsection{Convert XML to YXML%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-The \indexdef{}{tool}{yxml}\hypertarget{tool.yxml}{\hyperlink{tool.yxml}{\mbox{\isa{\isatool{yxml}}}}} tool converts a standard XML document (stdin)
- to the much simpler and more efficient YXML format of Isabelle
- (stdout). The YXML format is defined as follows.
-
- \begin{enumerate}
-
- \item The encoding is always UTF-8.
-
- \item Body text is represented verbatim (no escaping, no special
- treatment of white space, no named entities, no CDATA chunks, no
- comments).
-
- \item Markup elements are represented via ASCII control characters
- \isa{{\isaliteral{22}{\isachardoublequote}}\isaliteral{5C3C5E626F6C643E}{}\isactrlbold X\ {\isaliteral{3D}{\isacharequal}}\ {\isadigit{5}}{\isaliteral{22}{\isachardoublequote}}} and \isa{{\isaliteral{22}{\isachardoublequote}}\isaliteral{5C3C5E626F6C643E}{}\isactrlbold Y\ {\isaliteral{3D}{\isacharequal}}\ {\isadigit{6}}{\isaliteral{22}{\isachardoublequote}}} as follows:
-
- \begin{tabular}{ll}
- XML & YXML \\\hline
- \verb|<|\isa{{\isaliteral{22}{\isachardoublequote}}name\ attribute{\isaliteral{22}{\isachardoublequote}}}\verb|=|\isa{{\isaliteral{22}{\isachardoublequote}}value\ {\isaliteral{5C3C646F74733E}{\isasymdots}}{\isaliteral{22}{\isachardoublequote}}}\verb|>| &
- \isa{{\isaliteral{22}{\isachardoublequote}}\isaliteral{5C3C5E626F6C643E}{}\isactrlbold X\isaliteral{5C3C5E626F6C643E}{}\isactrlbold Yname\isaliteral{5C3C5E626F6C643E}{}\isactrlbold Yattribute{\isaliteral{22}{\isachardoublequote}}}\verb|=|\isa{{\isaliteral{22}{\isachardoublequote}}value{\isaliteral{5C3C646F74733E}{\isasymdots}}\isaliteral{5C3C5E626F6C643E}{}\isactrlbold X{\isaliteral{22}{\isachardoublequote}}} \\
- \verb|</|\isa{name}\verb|>| & \isa{{\isaliteral{22}{\isachardoublequote}}\isaliteral{5C3C5E626F6C643E}{}\isactrlbold X\isaliteral{5C3C5E626F6C643E}{}\isactrlbold Y\isaliteral{5C3C5E626F6C643E}{}\isactrlbold X{\isaliteral{22}{\isachardoublequote}}} \\
- \end{tabular}
-
- There is no special case for empty body text, i.e.\ \verb|<foo/>| is treated like \verb|<foo></foo>|. Also note that
- \isa{{\isaliteral{22}{\isachardoublequote}}\isaliteral{5C3C5E626F6C643E}{}\isactrlbold X{\isaliteral{22}{\isachardoublequote}}} and \isa{{\isaliteral{22}{\isachardoublequote}}\isaliteral{5C3C5E626F6C643E}{}\isactrlbold Y{\isaliteral{22}{\isachardoublequote}}} may never occur in
- well-formed XML documents.
-
- \end{enumerate}
-
- Parsing YXML is pretty straight-forward: split the text into chunks
- separated by \isa{{\isaliteral{22}{\isachardoublequote}}\isaliteral{5C3C5E626F6C643E}{}\isactrlbold X{\isaliteral{22}{\isachardoublequote}}}, then split each chunk into
- sub-chunks separated by \isa{{\isaliteral{22}{\isachardoublequote}}\isaliteral{5C3C5E626F6C643E}{}\isactrlbold Y{\isaliteral{22}{\isachardoublequote}}}. Markup chunks start
- with an empty sub-chunk, and a second empty sub-chunk indicates
- close of an element. Any other non-empty chunk consists of plain
- text. For example, see \verb|~~/src/Pure/PIDE/yxml.ML| or
- \verb|~~/src/Pure/PIDE/yxml.scala|.
-
- YXML documents may be detected quickly by checking that the first
- two characters are \isa{{\isaliteral{22}{\isachardoublequote}}\isaliteral{5C3C5E626F6C643E}{}\isactrlbold X\isaliteral{5C3C5E626F6C643E}{}\isactrlbold Y{\isaliteral{22}{\isachardoublequote}}}.%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isadelimtheory
-%
-\endisadelimtheory
-%
-\isatagtheory
-\isacommand{end}\isamarkupfalse%
-%
-\endisatagtheory
-{\isafoldtheory}%
-%
-\isadelimtheory
-%
-\endisadelimtheory
-\end{isabellebody}%
-%%% Local Variables:
-%%% mode: latex
-%%% TeX-master: "root"
-%%% End:
--- a/doc-src/System/Thy/document/Presentation.tex Mon Aug 27 16:10:54 2012 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,352 +0,0 @@
-%
-\begin{isabellebody}%
-\def\isabellecontext{Presentation}%
-%
-\isadelimtheory
-%
-\endisadelimtheory
-%
-\isatagtheory
-\isacommand{theory}\isamarkupfalse%
-\ Presentation\isanewline
-\isakeyword{imports}\ Base\isanewline
-\isakeyword{begin}%
-\endisatagtheory
-{\isafoldtheory}%
-%
-\isadelimtheory
-%
-\endisadelimtheory
-%
-\isamarkupchapter{Presenting theories \label{ch:present}%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-Isabelle provides several ways to present the outcome of
- formal developments, including WWW-based browsable libraries or
- actual printable documents. Presentation is centered around the
- concept of \emph{sessions} (\chref{ch:session}). The global session
- structure is that of a tree, with Isabelle Pure at its root, further
- object-logics derived (e.g.\ HOLCF from HOL, and HOL from Pure), and
- application sessions further on in the hierarchy.
-
- The tools \indexref{}{tool}{mkroot}\hyperlink{tool.mkroot}{\mbox{\isa{\isatool{mkroot}}}} and \indexref{}{tool}{build}\hyperlink{tool.build}{\mbox{\isa{\isatool{build}}}} provide the
- primary means for managing Isabelle sessions, including proper setup
- for presentation; \hyperlink{tool.build}{\mbox{\isa{\isatool{build}}}} takes care to have \indexref{}{executable}{isabelle-process}\hyperlink{executable.isabelle-process}{\mbox{\isa{\isatt{isabelle{\isaliteral{2D}{\isacharminus}}process}}}} run any additional stages required for document
- preparation, notably the \indexref{}{tool}{document}\hyperlink{tool.document}{\mbox{\isa{\isatool{document}}}} and \indexref{}{tool}{latex}\hyperlink{tool.latex}{\mbox{\isa{\isatool{latex}}}}.
- The complete tool chain for managing batch-mode Isabelle sessions is
- illustrated in \figref{fig:session-tools}.
-
- \begin{figure}[htbp]
- \begin{center}
- \begin{tabular}{lp{0.6\textwidth}}
-
- \indexref{}{tool}{mkroot}\hyperlink{tool.mkroot}{\mbox{\isa{\isatool{mkroot}}}} & invoked once by the user to initialize the
- session \verb|ROOT| with optional \verb|document|
- directory; \\
-
- \indexref{}{tool}{build}\hyperlink{tool.build}{\mbox{\isa{\isatool{build}}}} & invoked repeatedly by the user to keep
- session output up-to-date (HTML, documents etc.); \\
-
- \hyperlink{executable.isabelle-process}{\mbox{\isa{\isatt{isabelle{\isaliteral{2D}{\isacharminus}}process}}}} & run through \indexref{}{tool}{build}\hyperlink{tool.build}{\mbox{\isa{\isatool{build}}}}; \\
-
- \indexref{}{tool}{document}\hyperlink{tool.document}{\mbox{\isa{\isatool{document}}}} & run by the Isabelle process if document
- preparation is enabled; \\
-
- \indexref{}{tool}{latex}\hyperlink{tool.latex}{\mbox{\isa{\isatool{latex}}}} & universal {\LaTeX} tool wrapper invoked
- multiple times by \indexref{}{tool}{document}\hyperlink{tool.document}{\mbox{\isa{\isatool{document}}}}; also useful for manual
- experiments; \\
-
- \end{tabular}
- \caption{The tool chain of Isabelle session presentation} \label{fig:session-tools}
- \end{center}
- \end{figure}%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsection{Generating theory browser information \label{sec:info}%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-\index{theory browsing information|bold}
-
- As a side-effect of building sessions, Isabelle is able to generate
- theory browsing information, including HTML documents that show the
- theory sources and the relationship with its ancestors and
- descendants. Besides the HTML file that is generated for every
- theory, Isabelle stores links to all theories in an index
- file. These indexes are linked with other indexes to represent the
- overall tree structure of the sessions.
-
- Isabelle also generates graph files that represent the theory
- dependencies within a session. There is a graph browser Java applet
- embedded in the generated HTML pages, and also a stand-alone
- application that allows browsing theory graphs without having to
- start a WWW client first. The latter version also includes features
- such as generating Postscript files, which are not available in the
- applet version. See \secref{sec:browse} for further information.
-
- \medskip
-
- The easiest way to let Isabelle generate theory browsing information
- for existing sessions is to invoke \hyperlink{tool.build}{\mbox{\isa{\isatool{build}}}} with suitable
- options:
-
-\begin{ttbox}
-isabelle build -o browser_info -v -c FOL
-\end{ttbox}
-
- The presentation output will appear in \verb|$ISABELLE_BROWSER_INFO/FOL| as reported by the above verbose
- invocation of the build process.
-
- Many Isabelle sessions (such as \verb|HOL-Library| in \verb|~~/src/HOL/Library|) also provide actual printable documents.
- These are prepared automatically as well if enabled like this:
-\begin{ttbox}
-isabelle build -o browser_info -o document=pdf -v -c HOL-Library
-\end{ttbox}
-
- Enabling both browser info and document preparation simultaneously
- causes an appropriate ``document'' link to be included in the HTML
- index. Documents may be generated independently of browser
- information as well, see \secref{sec:tool-document} for further
- details.
-
- \bigskip The theory browsing information is stored in a
- sub-directory directory determined by the \indexref{}{setting}{ISABELLE\_BROWSER\_INFO}\hyperlink{setting.ISABELLE-BROWSER-INFO}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}BROWSER{\isaliteral{5F}{\isacharunderscore}}INFO}}}} setting plus a prefix corresponding to the
- session identifier (according to the tree structure of sub-sessions
- by default). In order to present Isabelle applications on the web,
- the corresponding subdirectory from \hyperlink{setting.ISABELLE-BROWSER-INFO}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}BROWSER{\isaliteral{5F}{\isacharunderscore}}INFO}}}}
- can be put on a WWW server.%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsection{Preparing session root directories \label{sec:tool-mkroot}%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-The \indexdef{}{tool}{mkroot}\hypertarget{tool.mkroot}{\hyperlink{tool.mkroot}{\mbox{\isa{\isatool{mkroot}}}}} tool configures a given directory as
- session root, with some \verb|ROOT| file and optional document
- source directory. Its usage is:
-\begin{ttbox}
-Usage: isabelle mkroot [OPTIONS] [DIR]
-
- Options are:
- -d enable document preparation
- -n NAME alternative session name (default: DIR base name)
-
- Prepare session root DIR (default: current directory).
-\end{ttbox}
-
- The results are placed in the given directory \isa{dir}, which
- refers to the current directory by default. The \hyperlink{tool.mkroot}{\mbox{\isa{\isatool{mkroot}}}} tool
- is conservative in the sense that it does not overwrite existing
- files or directories. Earlier attempts to generate a session root
- need to be deleted manually.
-
- \medskip Option \verb|-d| indicates that the session shall be
- accompanied by a formal document, with \isa{dir}\verb|/document/root.tex| as its {\LaTeX} entry point (see also
- \chref{ch:present}).
-
- Option \verb|-n| allows to specify an alternative session
- name; otherwise the base name of the given directory is used.
-
- \medskip The implicit Isabelle settings variable \hyperlink{setting.ISABELLE-LOGIC}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}LOGIC}}}} specifies the parent session, and \hyperlink{setting.ISABELLE-DOCUMENT-FORMAT}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}DOCUMENT{\isaliteral{5F}{\isacharunderscore}}FORMAT}}}} the document format to be filled filled
- into the generated \verb|ROOT| file.%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsubsubsection{Examples%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-Produce session \verb|Test| (with document preparation)
- within a separate directory of the same name:
-\begin{ttbox}
-isabelle mkroot -d Test && isabelle build -D Test
-\end{ttbox}
-
- \medskip Upgrade the current directory into a session ROOT with
- document preparation, and build it:
-\begin{ttbox}
-isabelle mkroot -d && isabelle build -D .
-\end{ttbox}%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsection{Preparing Isabelle session documents
- \label{sec:tool-document}%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-The \indexdef{}{tool}{document}\hypertarget{tool.document}{\hyperlink{tool.document}{\mbox{\isa{\isatool{document}}}}} tool prepares logic session
- documents, processing the sources both as provided by the user and
- generated by Isabelle. Its usage is:
-\begin{ttbox}
-Usage: isabelle document [OPTIONS] [DIR]
-
- Options are:
- -c cleanup -- be aggressive in removing old stuff
- -n NAME specify document name (default 'document')
- -o FORMAT specify output format: dvi (default), dvi.gz, ps,
- ps.gz, pdf
- -t TAGS specify tagged region markup
-
- Prepare the theory session document in DIR (default 'document')
- producing the specified output format.
-\end{ttbox}
- This tool is usually run automatically as part of the Isabelle build
- process, provided document preparation has been enabled via suitable
- options. It may be manually invoked on the generated browser
- information document output as well, e.g.\ in case of errors
- encountered in the batch run.
-
- \medskip The \verb|-c| option tells \hyperlink{tool.document}{\mbox{\isa{\isatool{document}}}} to
- dispose the document sources after successful operation! This is
- the right thing to do for sources generated by an Isabelle process,
- but take care of your files in manual document preparation!
-
- \medskip The \verb|-n| and \verb|-o| option specify
- the final output file name and format, the default is ``\verb|document.dvi|''. Note that the result will appear in the parent of
- the target \verb|DIR|.
-
- \medskip The \verb|-t| option tells {\LaTeX} how to interpret
- tagged Isabelle command regions. Tags are specified as a comma
- separated list of modifier/name pairs: ``\verb|+|\isa{foo}'' (or just ``\isa{foo}'') means to keep, ``\verb|-|\isa{foo}'' to drop, and ``\verb|/|\isa{foo}'' to
- fold text tagged as \isa{foo}. The builtin default is equivalent
- to the tag specification ``\verb|+theory,+proof,+ML,+visible,-invisible|''; see also the {\LaTeX}
- macros \verb|\isakeeptag|, \verb|\isadroptag|, and
- \verb|\isafoldtag|, in \verb|~~/lib/texinputs/isabelle.sty|.
-
- \medskip Document preparation requires a \verb|document|
- directory within the session sources. This directory is supposed to
- contain all the files needed to produce the final document --- apart
- from the actual theories which are generated by Isabelle.
-
- \medskip For most practical purposes, \hyperlink{tool.document}{\mbox{\isa{\isatool{document}}}} is smart
- enough to create any of the specified output formats, taking
- \verb|root.tex| supplied by the user as a starting point. This
- even includes multiple runs of {\LaTeX} to accommodate references
- and bibliographies (the latter assumes \verb|root.bib| within
- the same directory).
-
- In more complex situations, a separate \verb|build| script for
- the document sources may be given. It is invoked with command-line
- arguments for the document format and the document variant name.
- The script needs to produce corresponding output files, e.g.\
- \verb|root.pdf| for target format \verb|pdf| (and default
- default variants). The main work can be again delegated to \hyperlink{tool.latex}{\mbox{\isa{\isatool{latex}}}}, but it is also possible to harvest generated {\LaTeX}
- sources and copy them elsewhere, for example.
-
- \medskip When running the session, Isabelle copies the content of
- the original \verb|document| directory into its proper place
- within \hyperlink{setting.ISABELLE-BROWSER-INFO}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}BROWSER{\isaliteral{5F}{\isacharunderscore}}INFO}}}}, according to the session
- path and document variant. Then, for any processed theory \isa{A}
- some {\LaTeX} source is generated and put there as \isa{A}\verb|.tex|. Furthermore, a list of all generated theory
- files is put into \verb|session.tex|. Typically, the root
- {\LaTeX} file provided by the user would include \verb|session.tex| to get a document containing all the theories.
-
- The {\LaTeX} versions of the theories require some macros defined in
- \verb|~~/lib/texinputs/isabelle.sty|. Doing \verb|\usepackage{isabelle}| in \verb|root.tex| should be fine;
- the underlying \hyperlink{tool.latex}{\mbox{\isa{\isatool{latex}}}} already includes an appropriate path
- specification for {\TeX} inputs.
-
- If the text contains any references to Isabelle symbols (such as
- \verb|\|\verb|<forall>|) then \verb|isabellesym.sty| should be included as well. This package
- contains a standard set of {\LaTeX} macro definitions \verb|\isasym|\isa{foo} corresponding to \verb|\|\verb|<|\isa{foo}\verb|>|, see \cite{isabelle-implementation} for a
- complete list of predefined Isabelle symbols. Users may invent
- further symbols as well, just by providing {\LaTeX} macros in a
- similar fashion as in \verb|~~/lib/texinputs/isabellesym.sty| of
- the distribution.
-
- For proper setup of DVI and PDF documents (with hyperlinks and
- bookmarks), we recommend to include \verb|~~/lib/texinputs/pdfsetup.sty| as well.
-
- \medskip As a final step of Isabelle document preparation, \hyperlink{tool.document}{\mbox{\isa{\isatool{document}}}}~\verb|-c| is run on the resulting copy of the
- \verb|document| directory. Thus the actual output document is
- built and installed in its proper place. The generated sources are
- deleted after successful run of {\LaTeX} and friends.
-
- Some care is needed if the document output location is configured
- differently, say within a directory whose content is still required
- afterwards!%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsection{Running {\LaTeX} within the Isabelle environment
- \label{sec:tool-latex}%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-The \indexdef{}{tool}{latex}\hypertarget{tool.latex}{\hyperlink{tool.latex}{\mbox{\isa{\isatool{latex}}}}} tool provides the basic interface for
- Isabelle document preparation. Its usage is:
-\begin{ttbox}
-Usage: isabelle latex [OPTIONS] [FILE]
-
- Options are:
- -o FORMAT specify output format: dvi (default), dvi.gz, ps,
- ps.gz, pdf, bbl, idx, sty, syms
-
- Run LaTeX (and related tools) on FILE (default root.tex),
- producing the specified output format.
-\end{ttbox}
-
- Appropriate {\LaTeX}-related programs are run on the input file,
- according to the given output format: \hyperlink{executable.latex}{\mbox{\isa{\isatt{latex}}}},
- \hyperlink{executable.pdflatex}{\mbox{\isa{\isatt{pdflatex}}}}, \hyperlink{executable.dvips}{\mbox{\isa{\isatt{dvips}}}}, \hyperlink{executable.bibtex}{\mbox{\isa{\isatt{bibtex}}}}
- (for \verb|bbl|), and \hyperlink{executable.makeindex}{\mbox{\isa{\isatt{makeindex}}}} (for \verb|idx|). The actual commands are determined from the settings
- environment (\hyperlink{setting.ISABELLE-LATEX}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}LATEX}}}} etc.).
-
- The \verb|sty| output format causes the Isabelle style files to
- be updated from the distribution. This is useful in special
- situations where the document sources are to be processed another
- time by separate tools.
-
- The \verb|syms| output is for internal use; it generates lists
- of symbols that are available without loading additional {\LaTeX}
- packages.%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsubsubsection{Examples%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-Invoking \hyperlink{tool.latex}{\mbox{\isa{\isatool{latex}}}} by hand may be occasionally useful when
- debugging failed attempts of the automatic document preparation
- stage of batch-mode Isabelle. The abortive process leaves the
- sources at a certain place within \hyperlink{setting.ISABELLE-BROWSER-INFO}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}BROWSER{\isaliteral{5F}{\isacharunderscore}}INFO}}}},
- see the runtime error message for details. This enables users to
- inspect {\LaTeX} runs in further detail, e.g.\ like this:
-
-\begin{ttbox}
- cd ~/.isabelle/IsabelleXXXX/browser_info/HOL/Test/document
- isabelle latex -o pdf
-\end{ttbox}%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isadelimtheory
-%
-\endisadelimtheory
-%
-\isatagtheory
-\isacommand{end}\isamarkupfalse%
-%
-\endisatagtheory
-{\isafoldtheory}%
-%
-\isadelimtheory
-%
-\endisadelimtheory
-\end{isabellebody}%
-%%% Local Variables:
-%%% mode: latex
-%%% TeX-master: "root"
-%%% End:
--- a/doc-src/System/Thy/document/Scala.tex Mon Aug 27 16:10:54 2012 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,119 +0,0 @@
-%
-\begin{isabellebody}%
-\def\isabellecontext{Scala}%
-%
-\isadelimtheory
-%
-\endisadelimtheory
-%
-\isatagtheory
-\isacommand{theory}\isamarkupfalse%
-\ Scala\isanewline
-\isakeyword{imports}\ Base\isanewline
-\isakeyword{begin}%
-\endisatagtheory
-{\isafoldtheory}%
-%
-\isadelimtheory
-%
-\endisadelimtheory
-%
-\isamarkupchapter{Isabelle/Scala development tools%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-Isabelle/ML and Isabelle/Scala are the two main language
-environments for Isabelle tool implementations. There are some basic
-command-line tools to work with the underlying Java Virtual Machine,
-the Scala toplevel and compiler. Note that Isabelle/jEdit
-(\secref{sec:tool-tty}) provides a Scala Console for interactive
-experimentation within the running application.%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsection{Java Runtime Environment within Isabelle \label{sec:tool-java}%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-The \indexdef{}{tool}{java}\hypertarget{tool.java}{\hyperlink{tool.java}{\mbox{\isa{\isatool{java}}}}} tool is a direct wrapper for the Java
- Runtime Environment, within the regular Isabelle settings
- environment (\secref{sec:settings}). The command line arguments are
- that of the underlying Java version. It is run in \verb|-server| mode if possible, to improve performance (at the cost of
- extra startup time).
-
- The \verb|java| executable is the one within \hyperlink{setting.ISABELLE-JDK-HOME}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}JDK{\isaliteral{5F}{\isacharunderscore}}HOME}}}}, according to the standard directory layout for
- official JDK distributions. The class loader is augmented such that
- the name space of \verb|Isabelle/Pure.jar| is available,
- which is the main Isabelle/Scala module.
-
- For example, the following command-line invokes the main method of
- class \verb|isabelle.GUI_Setup|, which opens a windows with
- some diagnostic information about the Isabelle environment:
-\begin{alltt}
- isabelle java isabelle.GUI_Setup
-\end{alltt}%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsection{Scala toplevel \label{sec:tool-scala}%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-The \indexdef{}{tool}{scala}\hypertarget{tool.scala}{\hyperlink{tool.scala}{\mbox{\isa{\isatool{scala}}}}} tool is a direct wrapper for the Scala
- toplevel; see also \hyperlink{tool.java}{\mbox{\isa{\isatool{java}}}} above. The command line arguments
- are that of the underlying Scala version.
-
- This allows to interact with Isabelle/Scala in TTY mode like this:
-\begin{alltt}
- isabelle scala
- scala> isabelle.Isabelle_System.getenv("ISABELLE_HOME")
- scala> val options = isabelle.Options.init()
- scala> options.bool("browser_info")
-\end{alltt}%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsection{Scala compiler \label{sec:tool-scalac}%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-The \indexdef{}{tool}{scalac}\hypertarget{tool.scalac}{\hyperlink{tool.scalac}{\mbox{\isa{\isatool{scalac}}}}} tool is a direct wrapper for the Scala
- compiler; see also \hyperlink{tool.scala}{\mbox{\isa{\isatool{scala}}}} above. The command line arguments
- are that of the underlying Scala version.
-
- This allows to compile further Scala modules, depending on existing
- Isabelle/Scala functionality. The resulting class or jar files can
- be added to the \hyperlink{setting.CLASSPATH}{\mbox{\isa{\isatt{CLASSPATH}}}} via the \verb|classpath|
- Bash function that is provided by the Isabelle process environment.
- Thus add-on components can register themselves in a modular manner,
- see also \secref{sec:components}.
-
- Note that jEdit (\secref{sec:tool-jedit}) has its own mechanisms for
- adding plugin components, which needs special attention since
- it overrides the standard Java class loader.%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isadelimtheory
-%
-\endisadelimtheory
-%
-\isatagtheory
-\isacommand{end}\isamarkupfalse%
-%
-\endisatagtheory
-{\isafoldtheory}%
-%
-\isadelimtheory
-%
-\endisadelimtheory
-\isanewline
-\end{isabellebody}%
-%%% Local Variables:
-%%% mode: latex
-%%% TeX-master: "root"
-%%% End:
--- a/doc-src/System/Thy/document/Sessions.tex Mon Aug 27 16:10:54 2012 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,454 +0,0 @@
-%
-\begin{isabellebody}%
-\def\isabellecontext{Sessions}%
-%
-\isadelimtheory
-%
-\endisadelimtheory
-%
-\isatagtheory
-\isacommand{theory}\isamarkupfalse%
-\ Sessions\isanewline
-\isakeyword{imports}\ Base\isanewline
-\isakeyword{begin}%
-\endisatagtheory
-{\isafoldtheory}%
-%
-\isadelimtheory
-%
-\endisadelimtheory
-%
-\isamarkupchapter{Isabelle sessions and build management \label{ch:session}%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-An Isabelle \emph{session} consists of a collection of related
- theories that may be associated with formal documents (see also
- \chref{ch:present}). There is also a notion of \emph{persistent
- heap} image to capture the state of a session, similar to
- object-code in compiled programming languages. Thus the concept of
- session resembles that of a ``project'' in common IDE environments,
- but the specific name emphasizes the connection to interactive
- theorem proving: the session wraps-up the results of
- user-interaction with the prover in a persistent form.
-
- Application sessions are built on a given parent session, which may
- be built recursively on other parents. Following this path in the
- hierarchy eventually leads to some major object-logic session like
- \isa{{\isaliteral{22}{\isachardoublequote}}HOL{\isaliteral{22}{\isachardoublequote}}}, which itself is based on \isa{{\isaliteral{22}{\isachardoublequote}}Pure{\isaliteral{22}{\isachardoublequote}}} as the common
- root of all sessions.
-
- Processing sessions may take considerable time. Isabelle build
- management helps to organize this efficiently. This includes
- support for parallel build jobs, in addition to the multithreaded
- theory and proof checking that is already provided by the prover
- process itself.%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsection{Session ROOT specifications \label{sec:session-root}%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-Session specifications reside in files called \verb|ROOT|
- within certain directories, such as the home locations of registered
- Isabelle components or additional project directories given by the
- user.
-
- The ROOT file format follows the lexical conventions of the
- \emph{outer syntax} of Isabelle/Isar, see also
- \cite{isabelle-isar-ref}. This defines common forms like
- identifiers, names, quoted strings, verbatim text, nested comments
- etc. The grammar for a single \hyperlink{syntax.session-entry}{\mbox{\isa{session{\isaliteral{5F}{\isacharunderscore}}entry}}} is given as
- syntax diagram below; each ROOT file may contain multiple session
- specifications like this.
-
- Isabelle/jEdit (\secref{sec:tool-jedit}) includes a simple editing
- mode \verb|isabelle-root| for session ROOT files.
-
- \begin{railoutput}
-\rail@begin{2}{\indexdef{}{syntax}{session\_entry}\hypertarget{syntax.session-entry}{\hyperlink{syntax.session-entry}{\mbox{\isa{session{\isaliteral{5F}{\isacharunderscore}}entry}}}}}
-\rail@term{\isa{\isakeyword{session}}}[]
-\rail@nont{\isa{spec}}[]
-\rail@term{\isa{{\isaliteral{3D}{\isacharequal}}}}[]
-\rail@bar
-\rail@nextbar{1}
-\rail@nont{\hyperlink{syntax.name}{\mbox{\isa{name}}}}[]
-\rail@term{\isa{{\isaliteral{2B}{\isacharplus}}}}[]
-\rail@endbar
-\rail@nont{\isa{body}}[]
-\rail@end
-\rail@begin{2}{\isa{body}}
-\rail@bar
-\rail@nextbar{1}
-\rail@nont{\isa{description}}[]
-\rail@endbar
-\rail@bar
-\rail@nextbar{1}
-\rail@nont{\isa{options}}[]
-\rail@endbar
-\rail@plus
-\rail@nont{\isa{theories}}[]
-\rail@nextplus{1}
-\rail@endplus
-\rail@bar
-\rail@nextbar{1}
-\rail@nont{\isa{files}}[]
-\rail@endbar
-\rail@end
-\rail@begin{2}{\isa{spec}}
-\rail@nont{\hyperlink{syntax.name}{\mbox{\isa{name}}}}[]
-\rail@bar
-\rail@nextbar{1}
-\rail@nont{\isa{groups}}[]
-\rail@endbar
-\rail@bar
-\rail@nextbar{1}
-\rail@nont{\isa{dir}}[]
-\rail@endbar
-\rail@end
-\rail@begin{2}{\isa{groups}}
-\rail@term{\isa{{\isaliteral{28}{\isacharparenleft}}}}[]
-\rail@plus
-\rail@nont{\hyperlink{syntax.name}{\mbox{\isa{name}}}}[]
-\rail@nextplus{1}
-\rail@endplus
-\rail@term{\isa{{\isaliteral{29}{\isacharparenright}}}}[]
-\rail@end
-\rail@begin{1}{\isa{dir}}
-\rail@term{\isa{\isakeyword{in}}}[]
-\rail@nont{\hyperlink{syntax.name}{\mbox{\isa{name}}}}[]
-\rail@end
-\rail@begin{1}{\isa{description}}
-\rail@term{\isa{\isakeyword{description}}}[]
-\rail@nont{\hyperlink{syntax.text}{\mbox{\isa{text}}}}[]
-\rail@end
-\rail@begin{1}{\isa{options}}
-\rail@term{\isa{\isakeyword{options}}}[]
-\rail@nont{\isa{opts}}[]
-\rail@end
-\rail@begin{3}{\isa{opts}}
-\rail@term{\isa{{\isaliteral{5B}{\isacharbrackleft}}}}[]
-\rail@plus
-\rail@bar
-\rail@nont{\hyperlink{syntax.name}{\mbox{\isa{name}}}}[]
-\rail@term{\isa{{\isaliteral{3D}{\isacharequal}}}}[]
-\rail@nont{\isa{value}}[]
-\rail@nextbar{1}
-\rail@nont{\hyperlink{syntax.name}{\mbox{\isa{name}}}}[]
-\rail@endbar
-\rail@nextplus{2}
-\rail@cterm{\isa{{\isaliteral{2C}{\isacharcomma}}}}[]
-\rail@endplus
-\rail@term{\isa{{\isaliteral{5D}{\isacharbrackright}}}}[]
-\rail@end
-\rail@begin{2}{\isa{value}}
-\rail@bar
-\rail@nont{\hyperlink{syntax.name}{\mbox{\isa{name}}}}[]
-\rail@nextbar{1}
-\rail@nont{\hyperlink{syntax.real}{\mbox{\isa{real}}}}[]
-\rail@endbar
-\rail@end
-\rail@begin{2}{\isa{theories}}
-\rail@term{\isa{\isakeyword{theories}}}[]
-\rail@bar
-\rail@nextbar{1}
-\rail@nont{\isa{opts}}[]
-\rail@endbar
-\rail@plus
-\rail@nextplus{1}
-\rail@cnont{\hyperlink{syntax.name}{\mbox{\isa{name}}}}[]
-\rail@endplus
-\rail@end
-\rail@begin{2}{\isa{files}}
-\rail@term{\isa{\isakeyword{files}}}[]
-\rail@plus
-\rail@nont{\hyperlink{syntax.name}{\mbox{\isa{name}}}}[]
-\rail@nextplus{1}
-\rail@endplus
-\rail@end
-\end{railoutput}
-
-
- \begin{description}
-
- \item \isakeyword{session}~\isa{{\isaliteral{22}{\isachardoublequote}}A\ {\isaliteral{3D}{\isacharequal}}\ B\ {\isaliteral{2B}{\isacharplus}}\ body{\isaliteral{22}{\isachardoublequote}}} defines a new
- session \isa{{\isaliteral{22}{\isachardoublequote}}A{\isaliteral{22}{\isachardoublequote}}} based on parent session \isa{{\isaliteral{22}{\isachardoublequote}}B{\isaliteral{22}{\isachardoublequote}}}, with its
- content given in \isa{body} (theories and auxiliary source files).
- Note that a parent (like \isa{{\isaliteral{22}{\isachardoublequote}}HOL{\isaliteral{22}{\isachardoublequote}}}) is mandatory in practical
- applications: only Isabelle/Pure can bootstrap itself from nothing.
-
- All such session specifications together describe a hierarchy (tree)
- of sessions, with globally unique names. The new session name
- \isa{{\isaliteral{22}{\isachardoublequote}}A{\isaliteral{22}{\isachardoublequote}}} should be sufficiently long to stand on its own in a
- potentially large library.
-
- \item \isakeyword{session}~\isa{{\isaliteral{22}{\isachardoublequote}}A\ {\isaliteral{28}{\isacharparenleft}}groups{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequote}}} indicates a
- collection of groups where the new session is a member. Group names
- are uninterpreted and merely follow certain conventions. For
- example, the Isabelle distribution tags some important sessions by
- the group name called ``\isa{{\isaliteral{22}{\isachardoublequote}}main{\isaliteral{22}{\isachardoublequote}}}''. Other projects may invent
- their own conventions, but this requires some care to avoid clashes
- within this unchecked name space.
-
- \item \isakeyword{session}~\isa{{\isaliteral{22}{\isachardoublequote}}A{\isaliteral{22}{\isachardoublequote}}}~\isakeyword{in}~\isa{{\isaliteral{22}{\isachardoublequote}}dir{\isaliteral{22}{\isachardoublequote}}}
- specifies an explicit directory for this session; by default this is
- the current directory of the \verb|ROOT| file.
-
- All theories and auxiliary source files are located relatively to
- the session directory. The prover process is run within the same as
- its current working directory.
-
- \item \isakeyword{description}~\isa{{\isaliteral{22}{\isachardoublequote}}text{\isaliteral{22}{\isachardoublequote}}} is a free-form
- annotation for this session.
-
- \item \isakeyword{options}~\isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{5B}{\isacharbrackleft}}x\ {\isaliteral{3D}{\isacharequal}}\ a{\isaliteral{2C}{\isacharcomma}}\ y\ {\isaliteral{3D}{\isacharequal}}\ b{\isaliteral{2C}{\isacharcomma}}\ z{\isaliteral{5D}{\isacharbrackright}}{\isaliteral{22}{\isachardoublequote}}} defines
- separate options (\secref{sec:system-options}) that are used when
- processing this session, but \emph{without} propagation to child
- sessions. Note that \isa{{\isaliteral{22}{\isachardoublequote}}z{\isaliteral{22}{\isachardoublequote}}} abbreviates \isa{{\isaliteral{22}{\isachardoublequote}}z\ {\isaliteral{3D}{\isacharequal}}\ true{\isaliteral{22}{\isachardoublequote}}} for
- Boolean options.
-
- \item \isakeyword{theories}~\isa{{\isaliteral{22}{\isachardoublequote}}options\ names{\isaliteral{22}{\isachardoublequote}}} specifies a
- block of theories that are processed within an environment that is
- augmented by the given options, in addition to the global session
- options given before. Any number of blocks of \isakeyword{theories}
- may be given. Options are only active for each
- \isakeyword{theories} block separately.
-
- \item \isakeyword{files}~\isa{{\isaliteral{22}{\isachardoublequote}}files{\isaliteral{22}{\isachardoublequote}}} lists additional source
- files that are involved in the processing of this session. This
- should cover anything outside the formal content of the theory
- sources, say some auxiliary {\TeX} files that are required for
- document processing. In contrast, files that are specified in
- formal theory headers as \hyperlink{keyword.uses}{\mbox{\isa{\isakeyword{uses}}}} need not be declared
- again.
-
- \end{description}%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsubsubsection{Examples%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-See \verb|~~/src/HOL/ROOT| for a diversity of practically
- relevant situations, but it uses relatively complex quasi-hierarchic
- naming conventions like \isa{{\isaliteral{22}{\isachardoublequote}}HOL{\isaliteral{5C3C646173683E}{\isasymdash}}SPARK{\isaliteral{22}{\isachardoublequote}}}, \isa{{\isaliteral{22}{\isachardoublequote}}HOL{\isaliteral{5C3C646173683E}{\isasymdash}}SPARK{\isaliteral{5C3C646173683E}{\isasymdash}}Examples{\isaliteral{22}{\isachardoublequote}}}. An alternative is to use
- unqualified names that are relatively long and descriptive, as in
- the Archive of Formal Proofs (\url{http://afp.sf.net}), for
- example.%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsection{System build options \label{sec:system-options}%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-See \verb|~~/etc/options| for the main defaults provided by
- the Isabelle distribution. Isabelle/jEdit (\secref{sec:tool-jedit})
- includes a simple editing mode \verb|isabelle-options| for
- this file-format.
-
- The \indexdef{}{tool}{options}\hypertarget{tool.options}{\hyperlink{tool.options}{\mbox{\isa{\isatool{options}}}}} tool prints Isabelle system options. Its
- command-line usage is:
-\begin{ttbox}
-Usage: isabelle options [OPTIONS] [MORE_OPTIONS ...]
-
- Options are:
- -b include $ISABELLE_BUILD_OPTIONS
- -x FILE export to FILE in YXML format
-
- Print Isabelle system options, augmented by MORE_OPTIONS given as
- arguments NAME=VAL or NAME.
-\end{ttbox}
-
- The command line arguments provide additional system options of the
- form \isa{{\isaliteral{22}{\isachardoublequote}}name{\isaliteral{22}{\isachardoublequote}}}\verb|=|\isa{{\isaliteral{22}{\isachardoublequote}}value{\isaliteral{22}{\isachardoublequote}}} or \isa{name}
- for Boolean options.
-
- Option \verb|-b| augments the implicit environment of system
- options by the ones of \hyperlink{setting.ISABELLE-BUILD-OPTIONS}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}BUILD{\isaliteral{5F}{\isacharunderscore}}OPTIONS}}}}, cf.\
- \secref{sec:tool-build}.
-
- Option \verb|-x| specifies a file to export the result in
- YXML format, instead of printing it in human-readable form.%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsection{Invoking the build process \label{sec:tool-build}%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-The \indexdef{}{tool}{build}\hypertarget{tool.build}{\hyperlink{tool.build}{\mbox{\isa{\isatool{build}}}}} tool invokes the build process for
- Isabelle sessions. It manages dependencies between sessions,
- related sources of theories and auxiliary files, and target heap
- images. Accordingly, it runs instances of the prover process with
- optional document preparation. Its command-line usage
- is:\footnote{Isabelle/Scala provides the same functionality via
- \texttt{isabelle.Build.build}.}
-\begin{ttbox}
-Usage: isabelle build [OPTIONS] [SESSIONS ...]
-
- Options are:
- -D DIR include session directory and select its sessions
- -a select all sessions
- -b build heap images
- -c clean build
- -d DIR include session directory
- -g NAME select session group NAME
- -j INT maximum number of parallel jobs (default 1)
- -l list session source files
- -n no build -- test dependencies only
- -o OPTION override session configuration OPTION
- (via NAME=VAL or NAME)
- -s system build mode: produce output in ISABELLE_HOME
- -v verbose
-
- Build and manage Isabelle sessions, depending on implicit
- ISABELLE_BUILD_OPTIONS="..."
-
- ML_PLATFORM="..."
- ML_HOME="..."
- ML_SYSTEM="..."
- ML_OPTIONS="..."
-\end{ttbox}
-
- \medskip Isabelle sessions are defined via session ROOT files as
- described in (\secref{sec:session-root}). The totality of sessions
- is determined by collecting such specifications from all Isabelle
- component directories (\secref{sec:components}), augmented by more
- directories given via options \verb|-d|~\isa{{\isaliteral{22}{\isachardoublequote}}DIR{\isaliteral{22}{\isachardoublequote}}} on the
- command line. Each such directory may contain a session
- \texttt{ROOT} file with several session specifications.
-
- Any session root directory may refer recursively to further
- directories of the same kind, by listing them in a catalog file
- \verb|ROOTS| line-by-line. This helps to organize large
- collections of session specifications, or to make \verb|-d|
- command line options persistent (say within \verb|$ISABELLE_HOME_USER/ROOTS|).
-
- \medskip The subset of sessions to be managed is determined via
- individual \isa{{\isaliteral{22}{\isachardoublequote}}SESSIONS{\isaliteral{22}{\isachardoublequote}}} given as command-line arguments, or
- session groups that are given via one or more options \verb|-g|~\isa{{\isaliteral{22}{\isachardoublequote}}NAME{\isaliteral{22}{\isachardoublequote}}}. Option \verb|-a| selects all sessions.
- The build tool takes session dependencies into account: the set of
- selected sessions is completed by including all ancestors.
-
- \medskip Option \verb|-D| is similar to \verb|-d|, but
- selects all sessions that are defined in the given directories.
-
- \medskip The build process depends on additional options
- (\secref{sec:system-options}) that are passed to the prover
- eventually. The settings variable \indexref{}{setting}{ISABELLE\_BUILD\_OPTIONS}\hyperlink{setting.ISABELLE-BUILD-OPTIONS}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}BUILD{\isaliteral{5F}{\isacharunderscore}}OPTIONS}}}} allows to provide additional defaults, e.g.\
- \texttt{ISABELLE_BUILD_OPTIONS="document=pdf threads=4"}. Moreover,
- the environment of system build options may be augmented on the
- command line via \verb|-o|~\isa{{\isaliteral{22}{\isachardoublequote}}name{\isaliteral{22}{\isachardoublequote}}}\verb|=|\isa{{\isaliteral{22}{\isachardoublequote}}value{\isaliteral{22}{\isachardoublequote}}} or \verb|-o|~\isa{{\isaliteral{22}{\isachardoublequote}}name{\isaliteral{22}{\isachardoublequote}}}, which
- abbreviates \verb|-o|~\isa{{\isaliteral{22}{\isachardoublequote}}name{\isaliteral{22}{\isachardoublequote}}}\verb|=true| for
- Boolean options. Multiple occurrences of \verb|-o| on the
- command-line are applied in the given order.
-
- \medskip Option \verb|-b| ensures that heap images are
- produced for all selected sessions. By default, images are only
- saved for inner nodes of the hierarchy of sessions, as required for
- other sessions to continue later on.
-
- \medskip Option \verb|-c| cleans all descendants of the
- selected sessions before performing the specified build operation.
-
- \medskip Option \verb|-n| omits the actual build process
- after the preparatory stage (including optional cleanup). Note that
- the return code always indicates the status of the set of selected
- sessions.
-
- \medskip Option \verb|-j| specifies the maximum number of
- parallel build jobs (prover processes). Each prover process is
- subject to a separate limit of parallel worker threads, cf.\ system
- option \indexref{}{system option}{threads}\hyperlink{system option.threads}{\mbox{\isa{\isatt{threads}}}}.
-
- \medskip Option \verb|-s| enables \emph{system mode}, which
- means that resulting heap images and log files are stored in
- \verb|$ISABELLE_HOME/heaps| instead of the default location
- \hyperlink{setting.ISABELLE-OUTPUT}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}OUTPUT}}}} (which is normally in \hyperlink{setting.ISABELLE-HOME-USER}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}HOME{\isaliteral{5F}{\isacharunderscore}}USER}}}}, i.e.\ the user's home directory).
-
- \medskip Option \verb|-v| increases the general level of
- verbosity. Option \verb|-l| lists the source files that
- contribute to a session.%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isamarkupsubsubsection{Examples%
-}
-\isamarkuptrue%
-%
-\begin{isamarkuptext}%
-Build a specific logic image:
-\begin{ttbox}
-isabelle build -b HOLCF
-\end{ttbox}
-
- \smallskip Build the main group of logic images:
-\begin{ttbox}
-isabelle build -b -g main
-\end{ttbox}
-
- \smallskip Provide a general overview of the status of all Isabelle
- sessions, without building anything:
-\begin{ttbox}
-isabelle build -a -n -v
-\end{ttbox}
-
- \smallskip Build all sessions with HTML browser info and PDF
- document preparation:
-\begin{ttbox}
-isabelle build -a -o browser_info -o document=pdf
-\end{ttbox}
-
- \smallskip Build all sessions with a maximum of 8 parallel prover
- processes and 4 worker threads each (on a machine with many cores):
-\begin{ttbox}
-isabelle build -a -j8 -o threads=4
-\end{ttbox}
-
- \smallskip Build some session images with cleanup of their
- descendants, while retaining their ancestry:
-\begin{ttbox}
-isabelle build -b -c HOL-Boogie HOL-SPARK
-\end{ttbox}
-
- \smallskip Clean all sessions without building anything:
-\begin{ttbox}
-isabelle build -a -n -c
-\end{ttbox}
-
- \smallskip Build all sessions from some other directory hierarchy,
- according to the settings variable \verb|AFP| that happens to
- be defined inside the Isabelle environment:
-\begin{ttbox}
-isabelle build -D '$AFP'
-\end{ttbox}%
-\end{isamarkuptext}%
-\isamarkuptrue%
-%
-\isadelimtheory
-%
-\endisadelimtheory
-%
-\isatagtheory
-\isacommand{end}\isamarkupfalse%
-%
-\endisatagtheory
-{\isafoldtheory}%
-%
-\isadelimtheory
-%
-\endisadelimtheory
-\isanewline
-\end{isabellebody}%
-%%% Local Variables:
-%%% mode: latex
-%%% TeX-master: "root"
-%%% End:
--- a/doc-src/System/browser_screenshot.eps Mon Aug 27 16:10:54 2012 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,11222 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: (ImageMagick)
-%%Title: (/home/makarius/isabelle/src/Doc/System/browser_screenshot.eps)
-%%CreationDate: (Tue Sep 16 13:50:28 2008)
-%%BoundingBox: 0 0 458 269
-%%HiResBoundingBox: 0 0 458.484 269
-%%DocumentData: Clean7Bit
-%%LanguageLevel: 1
-%%Pages: 1
-%%EndComments
-
-%%BeginDefaults
-%%EndDefaults
-
-%%BeginProlog
-%
-% Display a color image. The image is displayed in color on
-% Postscript viewers or printers that support color, otherwise
-% it is displayed as grayscale.
-%
-/DirectClassPacket
-{
- %
- % Get a DirectClass packet.
- %
- % Parameters:
- % red.
- % green.
- % blue.
- % length: number of pixels minus one of this color (optional).
- %
- currentfile color_packet readhexstring pop pop
- compression 0 eq
- {
- /number_pixels 3 def
- }
- {
- currentfile byte readhexstring pop 0 get
- /number_pixels exch 1 add 3 mul def
- } ifelse
- 0 3 number_pixels 1 sub
- {
- pixels exch color_packet putinterval
- } for
- pixels 0 number_pixels getinterval
-} bind def
-
-/DirectClassImage
-{
- %
- % Display a DirectClass image.
- %
- systemdict /colorimage known
- {
- columns rows 8
- [
- columns 0 0
- rows neg 0 rows
- ]
- { DirectClassPacket } false 3 colorimage
- }
- {
- %
- % No colorimage operator; convert to grayscale.
- %
- columns rows 8
- [
- columns 0 0
- rows neg 0 rows
- ]
- { GrayDirectClassPacket } image
- } ifelse
-} bind def
-
-/GrayDirectClassPacket
-{
- %
- % Get a DirectClass packet; convert to grayscale.
- %
- % Parameters:
- % red
- % green
- % blue
- % length: number of pixels minus one of this color (optional).
- %
- currentfile color_packet readhexstring pop pop
- color_packet 0 get 0.299 mul
- color_packet 1 get 0.587 mul add
- color_packet 2 get 0.114 mul add
- cvi
- /gray_packet exch def
- compression 0 eq
- {
- /number_pixels 1 def
- }
- {
- currentfile byte readhexstring pop 0 get
- /number_pixels exch 1 add def
- } ifelse
- 0 1 number_pixels 1 sub
- {
- pixels exch gray_packet put
- } for
- pixels 0 number_pixels getinterval
-} bind def
-
-/GrayPseudoClassPacket
-{
- %
- % Get a PseudoClass packet; convert to grayscale.
- %
- % Parameters:
- % index: index into the colormap.
- % length: number of pixels minus one of this color (optional).
- %
- currentfile byte readhexstring pop 0 get
- /offset exch 3 mul def
- /color_packet colormap offset 3 getinterval def
- color_packet 0 get 0.299 mul
- color_packet 1 get 0.587 mul add
- color_packet 2 get 0.114 mul add
- cvi
- /gray_packet exch def
- compression 0 eq
- {
- /number_pixels 1 def
- }
- {
- currentfile byte readhexstring pop 0 get
- /number_pixels exch 1 add def
- } ifelse
- 0 1 number_pixels 1 sub
- {
- pixels exch gray_packet put
- } for
- pixels 0 number_pixels getinterval
-} bind def
-
-/PseudoClassPacket
-{
- %
- % Get a PseudoClass packet.
- %
- % Parameters:
- % index: index into the colormap.
- % length: number of pixels minus one of this color (optional).
- %
- currentfile byte readhexstring pop 0 get
- /offset exch 3 mul def
- /color_packet colormap offset 3 getinterval def
- compression 0 eq
- {
- /number_pixels 3 def
- }
- {
- currentfile byte readhexstring pop 0 get
- /number_pixels exch 1 add 3 mul def
- } ifelse
- 0 3 number_pixels 1 sub
- {
- pixels exch color_packet putinterval
- } for
- pixels 0 number_pixels getinterval
-} bind def
-
-/PseudoClassImage
-{
- %
- % Display a PseudoClass image.
- %
- % Parameters:
- % class: 0-PseudoClass or 1-Grayscale.
- %
- currentfile buffer readline pop
- token pop /class exch def pop
- class 0 gt
- {
- currentfile buffer readline pop
- token pop /depth exch def pop
- /grays columns 8 add depth sub depth mul 8 idiv string def
- columns rows depth
- [
- columns 0 0
- rows neg 0 rows
- ]
- { currentfile grays readhexstring pop } image
- }
- {
- %
- % Parameters:
- % colors: number of colors in the colormap.
- % colormap: red, green, blue color packets.
- %
- currentfile buffer readline pop
- token pop /colors exch def pop
- /colors colors 3 mul def
- /colormap colors string def
- currentfile colormap readhexstring pop pop
- systemdict /colorimage known
- {
- columns rows 8
- [
- columns 0 0
- rows neg 0 rows
- ]
- { PseudoClassPacket } false 3 colorimage
- }
- {
- %
- % No colorimage operator; convert to grayscale.
- %
- columns rows 8
- [
- columns 0 0
- rows neg 0 rows
- ]
- { GrayPseudoClassPacket } image
- } ifelse
- } ifelse
-} bind def
-
-/DisplayImage
-{
- %
- % Display a DirectClass or PseudoClass image.
- %
- % Parameters:
- % x & y translation.
- % x & y scale.
- % label pointsize.
- % image label.
- % image columns & rows.
- % class: 0-DirectClass or 1-PseudoClass.
- % compression: 0-none or 1-RunlengthEncoded.
- % hex color packets.
- %
- gsave
- /buffer 512 string def
- /byte 1 string def
- /color_packet 3 string def
- /pixels 768 string def
-
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- x y translate
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- currentfile buffer readline pop
- token pop /pointsize exch def pop
- /Times-Roman findfont pointsize scalefont setfont
- x y scale
- currentfile buffer readline pop
- token pop /columns exch def
- token pop /rows exch def pop
- currentfile buffer readline pop
- token pop /class exch def pop
- currentfile buffer readline pop
- token pop /compression exch def pop
- class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
- grestore
-} bind def
-%%EndProlog
-%%Page: 1 1
-%%PageBoundingBox: 0 0 458 269
-userdict begin
-DisplayImage
-0 0
-458.484 269.21
-12.000000
-818 481
-1
-0
-0
-12
-000000
-797979
-7F7F7F
-FF0000
-00FF00
-0000FF
-808080
-C0C0C0
-DFDFDF
-E0E0E0
-F2F2F2
-FFFFFF
-0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
-0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
-0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
-0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
-0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
-0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
-0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
-0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
-0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
-0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
-0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
-0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
-0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
-0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
-0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
-0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
-0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
-0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
-0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
-0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
-0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
-0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
-0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808020A08080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-0808080808020A0808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-08080808080808080808080808080808080808080808080808080808080808020A080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808020A08080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-0808080808080808080808020A0808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-08020A080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808020A08080808080808
-080808000000000808000808000808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-0808080808080808080808080808080808020A0808080808080808080800080808080808
-080800080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-08080808080808020A080808080808080808080008080808080008080008080800000008
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808020A08
-080808080808080808000808080808000808000808000808080008080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-0808080808080808080808080808080808080808080808020A0808080808080808080800
-000000080800080800080800080808000808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-08080808080808080808080808020A080808080808080808080008080808080008080008
-080000000000080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808020A08080808080808080808000808080808000808000808000808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-0808080808080808080808080808080808080808080808080808080808020A0808080808
-080808080800080808080800080800080800080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-08080808080808080808080808080808080808020A080808080808080808080008080808
-080008080008080800000000080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808020A08080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080802
-0A0808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-08080808080808080808080808080808080808080808080808020A080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808020A08080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-0808080808020A0808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-08080808080808080808080808080808080808080808080808080808080808020A080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808020A08080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-0808080808080808080808020A0202020202020202020202020202020202020202020202
-020202020202020202020202020202020202020202020202020202020202020202020202
-020202020202020202020202020202020202020202020202020202020202020202020202
-020202020202020202020202020202020202020202020202020202020202020202020202
-020202020202020202020202020202020202020202020202020202020202020202020202
-020202020202020202020202020202020202020202020202020202020202020202020202
-020202020202020202020202020202020202020202020202020202020202020202020202
-020202020202020202020202020202020202020202020202020202020202020202020202
-020202020202020202020202020202020202020202020202020202020202020202020202
-020202020202020202020202020202020202020202020202020202020202020202020202
-020202020202020202020202020202020202020202020202020202020202020202020202
-020202020202020202020202020202020202020202020202020202020202020202020202
-020202020202020202020202020202020202020202020202020202020202020202020202
-020202020202020202020202020202020202020202020202020202020202020202020202
-020202020202020202020202020202020202020202020202020202020202020202020202
-020202020202020202020202020202020202020202020202020202020202020202020202
-020202020202020202020202020202020202020202020202020202020202020202020202
-020202020202020202020202020202020202020202020202020202020202020202020202
-020202020202020202020202020202020202020202020202020202020202020202020202
-020202020202020202020202020202020202020202020202020202020202020202020202
-020202020202020202020202020202020202020202020202020202020202020202020202
-020202020202020202020202020202020202020202020202020202020202020202020202
-020202020202020202020202020202020202020202020202020202020202020202020202
-020208080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080809090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090808080808080808080809090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090808080808080808080909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090906080808080808
-080808080909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090906
-080808080808080808090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909060608080808080808080808090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909090909090909090909090909
-090909090909090909090909090909090909090909090909060608080808080808080809
-090908080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080606060808080808080808080809090908080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080606060808080808080808080909090801010101010101
-010101010101010101010101010101010101010101010101010101010101010101010101
-010101010101010101010101010101010101010101010101010101010101010101010101
-010101010101010101010101010101010101010101010101010101010101010101010101
-010101010101010101010101010101010101010101010101010101010101010101010101
-010101010101010101010101010101010101010101010101010101010101010101010101
-010101010101010101010101010101010101010101010101010101010101010101010101
-010101010101010101010101010101010101010101010101010101010101010B08060606
-080808080808080808080909090801010101010101010101010101010101010101010101
-010101010101010101010101010101010101010101010101010101010101010101010101
-010101010101010101010101010101010101010101010101010101010101010101010101
-010101010101010101010101010101010101010101010101010101010101010101010101
-010101010101010101010101010101010101010101010101010101010101010101010101
-010101010101010101010101010101010101010101010101010101010101010101010101
-010101010101010101010101010101010101010101010101010101010101010101010101
-010101010101010101010101010101010101010101010101010101010101010101010101
-010101010101010101010101010101010101010101010101010101010101010101010101
-010101010101010101010101010101010101010101010101010101010101010101010101
-010101010101010101010101010101010101010101010101010101010101010101010101
-010101010101010101010101010101010101010101010101010101010101010101010101
-010101010101010101010101010101010101010101010101010101010101010101010101
-010101010101010101010101010101010101010101010101010101010101010101010101
-010101010101010101010101010101010101010101010101010101010101010101010101
-010B08060606080808080808080808090909080108080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-0808080808080808080808080808080808080808080B0806060608080808080808080808
-090909080108080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-0808080808080808080808080808080808080808080808080808080B0806060608080808
-080808080809090908010808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-08080808080808080808080B080606060808080808080808080809090908010808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-08080808080808080808080808080808080B080606060808080808080808080909090801
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080B08060606080808080808080808080909090801080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080B08060606080808080808080808090909080108080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-0808080808080808080808080808080808080808080808080808080B0806060608080808
-080808080808090909080108080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-0808080808080808080808080808080808080808080808080808080808080808080B0806
-060608080808080808080809090908010808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-08080808080808080808080808080808080B080606060808080808080808080809090908
-010808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-08080808080808080808080808080808080808080808080B080606060808080808080808
-080909090801080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080B08060606080808080808080808080909090801080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080B08060606080808080808080808090909080108080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-0808080808080808080808080808080808080808080808080808080808080808080B0806
-060608080808080808080808090909080108080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-0808080B0806060608080808080808080809090908010808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-08080808080808080808080808080808080808080808080B080606060808080808080808
-080809090908010808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-08080808080808080808080808080808080808080808080808080808080B080606060808
-080808080808080909090801080808080808080804040404040404040404040808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080B08060606080808080808080808080909090801080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080B08060606080808080808080808090909
-080108080808080808080804040404040404040404080808080808080000000000080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-0808080B0806060608080808080808080808090909080108080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-0808080808080808080B0806060608080808080808080809090908010808080808080808
-080804040404040404040808080808080808000808080800080808080808080808080808
-080808080008080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-08080808080808080808080808080808080808080808080808080808080B080606060808
-080808080808080809090908010808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-08080808080808080808080808080808080808080808080808080808080808080808080B
-080606060808080808080808080909090801080808080808080808080804040404040408
-080808080808080800080808080008080800000008080808000000080800000008080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080B08060606080808080808080808080909
-090801080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080B08060606080808080808
-080808090909080108080808080808080808080404040404080808080808080808080008
-080800080808000808080008080008080800080800080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-0808080808080808080B0806060608080808080808080808090909080108080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-0808080808080808080808080808080B0806060608080808080808080809090908010808
-080808080808080808080404040808080808080808080808000000000808080800080808
-000808000808080008080008080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-08080808080808080808080808080808080808080808080808080808080808080808080B
-080606060808080808080808080809090908010808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-08080808080B080606060808080808080808080909090801080808080808080808080808
-080408080808080808080808080800080800080808080008080800080800080808000808
-000808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080B08060606080808080808
-080808080909090801080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080B08060606
-080808080808080808090909080108080808080808080808080808080808080808080808
-080808080008080800080808000808080008080008080800080800080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-0808080808080808080808080808080B0806060608080808080808080808090909080108
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-0808080808080808080808080808080808080808080B0806060608080808080808080809
-090908010808080808080808080808080808080808080808080808080808000808080800
-080800080808000808000808080008080008080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-08080808080B080606060808080808080808080809090908010808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-08080808080808080808080B080606060808080808080808080909090801080808080808
-080808080808080808080808080808080808080800080808080800080800000008080808
-000000080808080008080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080B08060606
-080808080808080808080909090801080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080B08060606080808080808080808090909080108080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-0808080808080808080808080808080808080808080B0806060608080808080808080808
-090909080108080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-0808080808080808080808080808080808080808080808080808080B0806060608080808
-080808080809090908010808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-08080808080808080808080B080606060808080808080808080809090908010808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-08080808080808080808080808080808080B080606060808080808080808080909090801
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080B08060606080808080808080808080909090801080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080B08060606080808080808080808090909080108080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-0808080808080808080808080808080808080808080808080808080B0806060608080808
-080808080808090909080108080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080800000000000000
-000000000000000000000000000000000000000000000000000000000000000000000000
-000000000000000000000000000000000000000000000000000000000000000000000000
-000000000000000000000000000000000000000008080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-0808080808080808080808080808080808080808080808080808080808080808080B0806
-060608080808080808080809090908010808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-08080808080808080808080808080808080B080606060808080808080808080809090908
-010808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080007070707070707070707070707070707
-070707070707070707070707070707070707070707070707070707070707070707070707
-070707070707070707070707070707070707070707070707070707070707070707070707
-070707070707070707000808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-08080808080808080808080808080808080808080808080B080606060808080808080808
-080909090801080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080B08060606080808080808080808080909090801080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808000707070707070707070707070707070707070707070707070707
-070707070707070707070707070707070707070707070707070707070707070707070707
-070707070707070707070707070707070707070707070707070707070707070707070700
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080B08060606080808080808080808090909080108080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-0808080808080808080808080808080808080808080808080808080808080808080B0806
-060608080808080808080808090909080108080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080800
-070707070707070707070707070707070707070707070707070707070707070707070707
-070707070707070707070707070707070707070707070707070707070707070707070707
-070707070707070707070707070707070707070707070707070008080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-0808080B0806060608080808080808080809090908010808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-08080808080808080808080808080808080808080808080B080606060808080808080808
-080809090908010808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080007070707070707070707
-070707070707070707070707070707070707070707070707070707070707070707070707
-070707070707070707070707070707070707070707070707070707070707070707070707
-070707070707070707070707070707000808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-08080808080808080808080808080808080808080808080808080808080B080606060808
-080808080808080909090801080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080B08060606080808080808080808080909090801080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808080808080808080808080808080808080808080808
-080808080808080808080808080808000707070707070707070707070707070707070707