doc-src/System/Thy/Basics.thy
author wenzelm
Wed, 15 Aug 2012 11:41:27 +0200
changeset 48813 b0c39fd53c0e
parent 48602 342ca8f3197b
child 48838 623ba165d059
permissions -rw-r--r--
tuned;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
     1
theory Basics
43564
9864182c6bad document antiquotations are managed as theory data, with proper name space and entity markup;
wenzelm
parents: 41955
diff changeset
     2
imports Base
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
     3
begin
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
     4
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
     5
chapter {* The Isabelle system environment *}
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
     6
47823
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
     7
text {* This manual describes Isabelle together with related tools and
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
     8
  user interfaces as seen from a system oriented view.  See also the
28916
0a802cdda340 removed obsolete isabelle-interface executable and ISABELLE_INTERFACE setting;
wenzelm
parents: 28914
diff changeset
     9
  \emph{Isabelle/Isar Reference Manual}~\cite{isabelle-isar-ref} for
47823
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
    10
  the actual Isabelle input language and related concepts, and
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
    11
  \emph{The Isabelle/Isar Implementation
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
    12
  Manual}~\cite{isabelle-implementation} for the main concepts of the
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
    13
  underlying implementation in Isabelle/ML.
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    14
28916
0a802cdda340 removed obsolete isabelle-interface executable and ISABELLE_INTERFACE setting;
wenzelm
parents: 28914
diff changeset
    15
  \medskip The Isabelle system environment provides the following
0a802cdda340 removed obsolete isabelle-interface executable and ISABELLE_INTERFACE setting;
wenzelm
parents: 28914
diff changeset
    16
  basic infrastructure to integrate tools smoothly.
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    17
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
    18
  \begin{enumerate}
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    19
28916
0a802cdda340 removed obsolete isabelle-interface executable and ISABELLE_INTERFACE setting;
wenzelm
parents: 28914
diff changeset
    20
  \item The \emph{Isabelle settings} mechanism provides process
0a802cdda340 removed obsolete isabelle-interface executable and ISABELLE_INTERFACE setting;
wenzelm
parents: 28914
diff changeset
    21
  environment variables to all Isabelle executables (including tools
0a802cdda340 removed obsolete isabelle-interface executable and ISABELLE_INTERFACE setting;
wenzelm
parents: 28914
diff changeset
    22
  and user interfaces).
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    23
47823
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
    24
  \item The raw \emph{Isabelle process} (@{executable_ref
28504
7ad7d7d6df47 simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents: 28502
diff changeset
    25
  "isabelle-process"}) runs logic sessions either interactively or in
7ad7d7d6df47 simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents: 28502
diff changeset
    26
  batch mode.  In particular, this view abstracts over the invocation
7ad7d7d6df47 simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents: 28502
diff changeset
    27
  of the actual ML system to be used.  Regular users rarely need to
7ad7d7d6df47 simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents: 28502
diff changeset
    28
  care about the low-level process.
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    29
48813
wenzelm
parents: 48602
diff changeset
    30
  \item The main \emph{Isabelle tool wrapper} (@{executable_ref
47823
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
    31
  isabelle}) provides a generic startup environment Isabelle related
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
    32
  utilities, user interfaces etc.  Such tools automatically benefit
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
    33
  from the settings mechanism.
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    34
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
    35
  \end{enumerate}
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    36
*}
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    37
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    38
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    39
section {* Isabelle settings \label{sec:settings} *}
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    40
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    41
text {*
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    42
  The Isabelle system heavily depends on the \emph{settings
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    43
  mechanism}\indexbold{settings}.  Essentially, this is a statically
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    44
  scoped collection of environment variables, such as @{setting
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    45
  ISABELLE_HOME}, @{setting ML_SYSTEM}, @{setting ML_HOME}.  These
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    46
  variables are \emph{not} intended to be set directly from the shell,
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    47
  though.  Isabelle employs a somewhat more sophisticated scheme of
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    48
  \emph{settings files} --- one for site-wide defaults, another for
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    49
  additional user-specific modifications.  With all configuration
47823
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
    50
  variables in clearly defined places, this scheme is more
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
    51
  maintainable and user-friendly than global shell environment
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
    52
  variables.
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    53
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    54
  In particular, we avoid the typical situation where prospective
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    55
  users of a software package are told to put several things into
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    56
  their shell startup scripts, before being able to actually run the
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    57
  program. Isabelle requires none such administrative chores of its
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    58
  end-users --- the executables can be invoked straight away.
40800
330eb65c9469 Parse.liberal_name for document antiquotations and attributes;
wenzelm
parents: 40569
diff changeset
    59
  Occasionally, users would still want to put the @{file
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
    60
  "$ISABELLE_HOME/bin"} directory into their shell's search path, but
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
    61
  this is not required.
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    62
*}
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    63
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    64
32323
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
    65
subsection {* Bootstrapping the environment \label{sec:boot} *}
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    66
32323
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
    67
text {* Isabelle executables need to be run within a proper settings
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
    68
  environment.  This is bootstrapped as described below, on the first
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
    69
  invocation of one of the outer wrapper scripts (such as
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
    70
  @{executable_ref isabelle}).  This happens only once for each
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
    71
  process tree, i.e.\ the environment is passed to subprocesses
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
    72
  according to regular Unix conventions.
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    73
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    74
  \begin{enumerate}
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    75
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    76
  \item The special variable @{setting_def ISABELLE_HOME} is
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    77
  determined automatically from the location of the binary that has
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    78
  been run.
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    79
  
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    80
  You should not try to set @{setting ISABELLE_HOME} manually. Also
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    81
  note that the Isabelle executables either have to be run from their
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    82
  original location in the distribution directory, or via the
48602
342ca8f3197b more uniform usage of "isabelle tool";
wenzelm
parents: 47823
diff changeset
    83
  executable objects created by the @{tool install} tool.  Symbolic
40800
330eb65c9469 Parse.liberal_name for document antiquotations and attributes;
wenzelm
parents: 40569
diff changeset
    84
  links are admissible, but a plain copy of the @{file
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
    85
  "$ISABELLE_HOME/bin"} files will not work!
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
    86
40800
330eb65c9469 Parse.liberal_name for document antiquotations and attributes;
wenzelm
parents: 40569
diff changeset
    87
  \item The file @{file "$ISABELLE_HOME/etc/settings"} is run as a
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
    88
  @{executable_ref bash} shell script with the auto-export option for
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
    89
  variables enabled.
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    90
  
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    91
  This file holds a rather long list of shell variable assigments,
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    92
  thus providing the site-wide default settings.  The Isabelle
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    93
  distribution already contains a global settings file with sensible
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    94
  defaults for most variables.  When installing the system, only a few
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    95
  of these may have to be adapted (probably @{setting ML_SYSTEM}
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    96
  etc.).
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    97
  
28285
91cd65eabd7f unchecked $ISABELLE_HOME_USER/etc/settings;
wenzelm
parents: 28250
diff changeset
    98
  \item The file @{verbatim "$ISABELLE_HOME_USER/etc/settings"} (if it
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    99
  exists) is run in the same way as the site default settings. Note
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   100
  that the variable @{setting ISABELLE_HOME_USER} has already been set
40387
e4c9e0dad473 moved ISABELLE_IDENTIFIER from ISABELLE_OUTPUT further up to ISABELLE_HOME_USER;
wenzelm
parents: 38253
diff changeset
   101
  before --- usually to something like @{verbatim
47661
012a887997f3 USER_HOME settings variable points to cross-platform user home directory;
wenzelm
parents: 45028
diff changeset
   102
  "$USER_HOME/.isabelle/IsabelleXXXX"}.
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   103
  
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   104
  Thus individual users may override the site-wide defaults.  See also
40800
330eb65c9469 Parse.liberal_name for document antiquotations and attributes;
wenzelm
parents: 40569
diff changeset
   105
  file @{file "$ISABELLE_HOME/etc/user-settings.sample"} in the
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   106
  distribution.  Typically, a user settings file would contain only a
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   107
  few lines, just the assigments that are really changed.  One should
40800
330eb65c9469 Parse.liberal_name for document antiquotations and attributes;
wenzelm
parents: 40569
diff changeset
   108
  definitely \emph{not} start with a full copy the basic @{file
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   109
  "$ISABELLE_HOME/etc/settings"}. This could cause very annoying
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   110
  maintainance problems later, when the Isabelle installation is
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   111
  updated or changed otherwise.
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   112
  
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   113
  \end{enumerate}
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   114
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   115
  Since settings files are regular GNU @{executable_def bash} scripts,
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   116
  one may use complex shell commands, such as @{verbatim "if"} or
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   117
  @{verbatim "case"} statements to set variables depending on the
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   118
  system architecture or other environment variables.  Such advanced
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   119
  features should be added only with great care, though. In
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   120
  particular, external environment references should be kept at a
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   121
  minimum.
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   122
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   123
  \medskip A few variables are somewhat special:
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   124
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   125
  \begin{itemize}
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   126
28502
6b0e3e4e1891 replaced ISABELLE by ISABELLE_PROCESS;
wenzelm
parents: 28500
diff changeset
   127
  \item @{setting_def ISABELLE_PROCESS} and @{setting_def ISABELLE_TOOL} are set
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   128
  automatically to the absolute path names of the @{executable
28504
7ad7d7d6df47 simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents: 28502
diff changeset
   129
  "isabelle-process"} and @{executable isabelle} executables,
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   130
  respectively.
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   131
  
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   132
  \item @{setting_ref ISABELLE_OUTPUT} will have the identifiers of
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   133
  the Isabelle distribution (cf.\ @{setting ISABELLE_IDENTIFIER}) and
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   134
  the ML system (cf.\ @{setting ML_IDENTIFIER}) appended automatically
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   135
  to its value.
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   136
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   137
  \end{itemize}
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   138
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   139
  \medskip Note that the settings environment may be inspected with
48602
342ca8f3197b more uniform usage of "isabelle tool";
wenzelm
parents: 47823
diff changeset
   140
  the @{tool getenv} tool.  This might help to figure out the effect
342ca8f3197b more uniform usage of "isabelle tool";
wenzelm
parents: 47823
diff changeset
   141
  of complex settings scripts.  *}
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   142
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   143
48602
342ca8f3197b more uniform usage of "isabelle tool";
wenzelm
parents: 47823
diff changeset
   144
subsection {* Common variables *}
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   145
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   146
text {*
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   147
  This is a reference of common Isabelle settings variables. Note that
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   148
  the list is somewhat open-ended. Third-party utilities or interfaces
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   149
  may add their own selection. Variables that are special in some
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   150
  sense are marked with @{text "\<^sup>*"}.
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   151
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   152
  \begin{description}
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   153
47823
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
   154
  \item[@{setting_def USER_HOME}@{text "\<^sup>*"}] Is the cross-platform
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
   155
  user home directory.  On Unix systems this is usually the same as
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
   156
  @{setting HOME}, but on Windows it is the regular home directory of
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
   157
  the user, not the one of within the Cygwin root
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
   158
  file-system.\footnote{Cygwin itself offers another choice whether
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
   159
  its HOME should point to the \texttt{/home} directory tree or the
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
   160
  Windows user home.}
47661
012a887997f3 USER_HOME settings variable points to cross-platform user home directory;
wenzelm
parents: 45028
diff changeset
   161
012a887997f3 USER_HOME settings variable points to cross-platform user home directory;
wenzelm
parents: 45028
diff changeset
   162
 \item[@{setting_def ISABELLE_HOME}@{text "\<^sup>*"}] is the location of the
012a887997f3 USER_HOME settings variable points to cross-platform user home directory;
wenzelm
parents: 45028
diff changeset
   163
  top-level Isabelle distribution directory. This is automatically
012a887997f3 USER_HOME settings variable points to cross-platform user home directory;
wenzelm
parents: 45028
diff changeset
   164
  determined from the Isabelle executable that has been invoked.  Do
012a887997f3 USER_HOME settings variable points to cross-platform user home directory;
wenzelm
parents: 45028
diff changeset
   165
  not attempt to set @{setting ISABELLE_HOME} yourself from the shell!
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   166
  
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   167
  \item[@{setting_def ISABELLE_HOME_USER}] is the user-specific
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   168
  counterpart of @{setting ISABELLE_HOME}. The default value is
47661
012a887997f3 USER_HOME settings variable points to cross-platform user home directory;
wenzelm
parents: 45028
diff changeset
   169
  relative to @{verbatim "$USER_HOME/.isabelle"}, under rare
012a887997f3 USER_HOME settings variable points to cross-platform user home directory;
wenzelm
parents: 45028
diff changeset
   170
  circumstances this may be changed in the global setting file.
012a887997f3 USER_HOME settings variable points to cross-platform user home directory;
wenzelm
parents: 45028
diff changeset
   171
  Typically, the @{setting ISABELLE_HOME_USER} directory mimics
012a887997f3 USER_HOME settings variable points to cross-platform user home directory;
wenzelm
parents: 45028
diff changeset
   172
  @{setting ISABELLE_HOME} to some extend. In particular, site-wide
012a887997f3 USER_HOME settings variable points to cross-platform user home directory;
wenzelm
parents: 45028
diff changeset
   173
  defaults may be overridden by a private @{verbatim
40387
e4c9e0dad473 moved ISABELLE_IDENTIFIER from ISABELLE_OUTPUT further up to ISABELLE_HOME_USER;
wenzelm
parents: 38253
diff changeset
   174
  "$ISABELLE_HOME_USER/etc/settings"}.
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   175
  
36196
cbb9ee265cdd added ISABELLE_PLATFORM and ISABELLE_PLATFORM64 -- NB: ML and JVM may have a different idea;
wenzelm
parents: 33952
diff changeset
   176
  \item[@{setting_def ISABELLE_PLATFORM}@{text "\<^sup>*"}] is automatically
cbb9ee265cdd added ISABELLE_PLATFORM and ISABELLE_PLATFORM64 -- NB: ML and JVM may have a different idea;
wenzelm
parents: 33952
diff changeset
   177
  set to a symbolic identifier for the underlying hardware and
cbb9ee265cdd added ISABELLE_PLATFORM and ISABELLE_PLATFORM64 -- NB: ML and JVM may have a different idea;
wenzelm
parents: 33952
diff changeset
   178
  operating system.  The Isabelle platform identification always
cbb9ee265cdd added ISABELLE_PLATFORM and ISABELLE_PLATFORM64 -- NB: ML and JVM may have a different idea;
wenzelm
parents: 33952
diff changeset
   179
  refers to the 32 bit variant, even this is a 64 bit machine.  Note
cbb9ee265cdd added ISABELLE_PLATFORM and ISABELLE_PLATFORM64 -- NB: ML and JVM may have a different idea;
wenzelm
parents: 33952
diff changeset
   180
  that the ML or Java runtime may have a different idea, depending on
cbb9ee265cdd added ISABELLE_PLATFORM and ISABELLE_PLATFORM64 -- NB: ML and JVM may have a different idea;
wenzelm
parents: 33952
diff changeset
   181
  which binaries are actually run.
cbb9ee265cdd added ISABELLE_PLATFORM and ISABELLE_PLATFORM64 -- NB: ML and JVM may have a different idea;
wenzelm
parents: 33952
diff changeset
   182
cbb9ee265cdd added ISABELLE_PLATFORM and ISABELLE_PLATFORM64 -- NB: ML and JVM may have a different idea;
wenzelm
parents: 33952
diff changeset
   183
  \item[@{setting_def ISABELLE_PLATFORM64}@{text "\<^sup>*"}] is similar to
cbb9ee265cdd added ISABELLE_PLATFORM and ISABELLE_PLATFORM64 -- NB: ML and JVM may have a different idea;
wenzelm
parents: 33952
diff changeset
   184
  @{setting ISABELLE_PLATFORM} but refers to the proper 64 bit variant
cbb9ee265cdd added ISABELLE_PLATFORM and ISABELLE_PLATFORM64 -- NB: ML and JVM may have a different idea;
wenzelm
parents: 33952
diff changeset
   185
  on a platform that supports this; the value is empty for 32 bit.
47823
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
   186
  Note that the following bash expression (including the quotes)
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
   187
  prefers the 64 bit platform, if that is available:
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
   188
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
   189
  @{verbatim [display] "\"${ISABELLE_PLATFORM64:-$ISABELLE_PLATFORM}\""}
36196
cbb9ee265cdd added ISABELLE_PLATFORM and ISABELLE_PLATFORM64 -- NB: ML and JVM may have a different idea;
wenzelm
parents: 33952
diff changeset
   190
28502
6b0e3e4e1891 replaced ISABELLE by ISABELLE_PROCESS;
wenzelm
parents: 28500
diff changeset
   191
  \item[@{setting_def ISABELLE_PROCESS}@{text "\<^sup>*"}, @{setting
28500
4b79e5d3d0aa replaced ISATOOL by ISABELLE_TOOL;
wenzelm
parents: 28285
diff changeset
   192
  ISABELLE_TOOL}@{text "\<^sup>*"}] are automatically set to the full path
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   193
  names of the @{executable "isabelle-process"} and @{executable
28504
7ad7d7d6df47 simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents: 28502
diff changeset
   194
  isabelle} executables, respectively.  Thus other tools and scripts
40800
330eb65c9469 Parse.liberal_name for document antiquotations and attributes;
wenzelm
parents: 40569
diff changeset
   195
  need not assume that the @{file "$ISABELLE_HOME/bin"} directory is
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   196
  on the current search path of the shell.
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   197
  
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   198
  \item[@{setting_def ISABELLE_IDENTIFIER}@{text "\<^sup>*"}] refers
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   199
  to the name of this Isabelle distribution, e.g.\ ``@{verbatim
47823
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
   200
  Isabelle2012}''.
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   201
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   202
  \item[@{setting_def ML_SYSTEM}, @{setting_def ML_HOME},
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   203
  @{setting_def ML_OPTIONS}, @{setting_def ML_PLATFORM}, @{setting_def
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   204
  ML_IDENTIFIER}@{text "\<^sup>*"}] specify the underlying ML system
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   205
  to be used for Isabelle.  There is only a fixed set of admissable
40800
330eb65c9469 Parse.liberal_name for document antiquotations and attributes;
wenzelm
parents: 40569
diff changeset
   206
  @{setting ML_SYSTEM} names (see the @{file
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   207
  "$ISABELLE_HOME/etc/settings"} file of the distribution).
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   208
  
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   209
  The actual compiler binary will be run from the directory @{setting
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   210
  ML_HOME}, with @{setting ML_OPTIONS} as first arguments on the
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   211
  command line.  The optional @{setting ML_PLATFORM} may specify the
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   212
  binary format of ML heap images, which is useful for cross-platform
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   213
  installations.  The value of @{setting ML_IDENTIFIER} is
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   214
  automatically obtained by composing the values of @{setting
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   215
  ML_SYSTEM}, @{setting ML_PLATFORM} and the Isabelle version values.
47823
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
   216
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
   217
  \item[@{setting_def ISABELLE_JDK_HOME}] needs to point to a full JDK
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
   218
  (Java Development Kit) installation with @{verbatim javac} and
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
   219
  @{verbatim jar} executables.  This is essential for Isabelle/Scala
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
   220
  and other JVM-based tools to work properly.  Note that conventional
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
   221
  @{verbatim JAVA_HOME} usually points to the JRE (Java Runtime
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
   222
  Environment), not JDK.
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   223
  
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   224
  \item[@{setting_def ISABELLE_PATH}] is a list of directories
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   225
  (separated by colons) where Isabelle logic images may reside.  When
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   226
  looking up heaps files, the value of @{setting ML_IDENTIFIER} is
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   227
  appended to each component internally.
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   228
  
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   229
  \item[@{setting_def ISABELLE_OUTPUT}@{text "\<^sup>*"}] is a
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   230
  directory where output heap files should be stored by default. The
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   231
  ML system and Isabelle version identifier is appended here, too.
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   232
  
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   233
  \item[@{setting_def ISABELLE_BROWSER_INFO}] is the directory where
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   234
  theory browser information (HTML text, graph data, and printable
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   235
  documents) is stored (see also \secref{sec:info}).  The default
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   236
  value is @{verbatim "$ISABELLE_HOME_USER/browser_info"}.
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   237
  
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   238
  \item[@{setting_def ISABELLE_LOGIC}] specifies the default logic to
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   239
  load if none is given explicitely by the user.  The default value is
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   240
  @{verbatim HOL}.
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   241
  
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   242
  \item[@{setting_def ISABELLE_LINE_EDITOR}] specifies the default
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   243
  line editor for the @{tool_ref tty} interface.
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   244
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   245
  \item[@{setting_def ISABELLE_USEDIR_OPTIONS}] is implicitly prefixed
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   246
  to the command line of any @{tool_ref usedir} invocation. This
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   247
  typically contains compilation options for object-logics --- @{tool
48602
342ca8f3197b more uniform usage of "isabelle tool";
wenzelm
parents: 47823
diff changeset
   248
  usedir} is the basic tool for managing logic sessions (cf.\ the
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   249
  @{verbatim IsaMakefile}s in the distribution).
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   250
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   251
  \item[@{setting_def ISABELLE_LATEX}, @{setting_def
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   252
  ISABELLE_PDFLATEX}, @{setting_def ISABELLE_BIBTEX}, @{setting_def
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   253
  ISABELLE_DVIPS}] refer to {\LaTeX} related tools for Isabelle
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   254
  document preparation (see also \secref{sec:tool-latex}).
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   255
  
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   256
  \item[@{setting_def ISABELLE_TOOLS}] is a colon separated list of
28504
7ad7d7d6df47 simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents: 28502
diff changeset
   257
  directories that are scanned by @{executable isabelle} for external
7ad7d7d6df47 simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents: 28502
diff changeset
   258
  utility programs (see also \secref{sec:isabelle-tool}).
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   259
  
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   260
  \item[@{setting_def ISABELLE_DOCS}] is a colon separated list of
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   261
  directories with documentation files.
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   262
  
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   263
  \item[@{setting_def ISABELLE_DOC_FORMAT}] specifies the preferred
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   264
  document format, typically @{verbatim dvi} or @{verbatim pdf}.
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   265
  
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   266
  \item[@{setting_def DVI_VIEWER}] specifies the command to be used
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   267
  for displaying @{verbatim dvi} files.
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   268
  
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   269
  \item[@{setting_def PDF_VIEWER}] specifies the command to be used
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   270
  for displaying @{verbatim pdf} files.
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   271
  
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   272
  \item[@{setting_def PRINT_COMMAND}] specifies the standard printer
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   273
  spool command, which is expected to accept @{verbatim ps} files.
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   274
  
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   275
  \item[@{setting_def ISABELLE_TMP_PREFIX}@{text "\<^sup>*"}] is the
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   276
  prefix from which any running @{executable "isabelle-process"}
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   277
  derives an individual directory for temporary files.  The default is
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   278
  somewhere in @{verbatim "/tmp"}.
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   279
  
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   280
  \end{description}
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   281
*}
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   282
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   283
32323
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   284
subsection {* Additional components \label{sec:components} *}
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   285
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   286
text {* Any directory may be registered as an explicit \emph{Isabelle
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   287
  component}.  The general layout conventions are that of the main
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   288
  Isabelle distribution itself, and the following two files (both
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   289
  optional) have a special meaning:
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   290
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   291
  \begin{itemize}
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   292
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   293
  \item @{verbatim "etc/settings"} holds additional settings that are
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   294
  initialized when bootstrapping the overall Isabelle environment,
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   295
  cf.\ \secref{sec:boot}.  As usual, the content is interpreted as a
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   296
  @{verbatim bash} script.  It may refer to the component's enclosing
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   297
  directory via the @{verbatim "COMPONENT"} shell variable.
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   298
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   299
  For example, the following setting allows to refer to files within
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   300
  the component later on, without having to hardwire absolute paths:
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   301
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   302
  \begin{ttbox}
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   303
  MY_COMPONENT_HOME="$COMPONENT"
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   304
  \end{ttbox}
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   305
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   306
  Components can also add to existing Isabelle settings such as
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   307
  @{setting_def ISABELLE_TOOLS}, in order to provide
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   308
  component-specific tools that can be invoked by end-users.  For
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   309
  example:
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   310
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   311
  \begin{ttbox}
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   312
  ISABELLE_TOOLS="$ISABELLE_TOOLS:$COMPONENT/lib/Tools"
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   313
  \end{ttbox}
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   314
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   315
  \item @{verbatim "etc/components"} holds a list of further
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   316
  sub-components of the same structure.  The directory specifications
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   317
  given here can be either absolute (with leading @{verbatim "/"}) or
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   318
  relative to the component's main directory.
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   319
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   320
  \end{itemize}
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   321
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   322
  The root of component initialization is @{setting ISABELLE_HOME}
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   323
  itself.  After initializing all of its sub-components recursively,
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   324
  @{setting ISABELLE_HOME_USER} is included in the same manner (if
40569
ffcff7509a49 more explicit explanation of init_component shell function;
wenzelm
parents: 40387
diff changeset
   325
  that directory exists).  This allows to install private components
ffcff7509a49 more explicit explanation of init_component shell function;
wenzelm
parents: 40387
diff changeset
   326
  via @{verbatim "$ISABELLE_HOME_USER/etc/components"}, although it is
ffcff7509a49 more explicit explanation of init_component shell function;
wenzelm
parents: 40387
diff changeset
   327
  often more convenient to do that programmatically via the
ffcff7509a49 more explicit explanation of init_component shell function;
wenzelm
parents: 40387
diff changeset
   328
  \verb,init_component, shell function in the \verb,etc/settings,
ffcff7509a49 more explicit explanation of init_component shell function;
wenzelm
parents: 40387
diff changeset
   329
  script of \verb,$ISABELLE_HOME_USER, (or any other component
ffcff7509a49 more explicit explanation of init_component shell function;
wenzelm
parents: 40387
diff changeset
   330
  directory).  For example:
ffcff7509a49 more explicit explanation of init_component shell function;
wenzelm
parents: 40387
diff changeset
   331
  \begin{verbatim}
ffcff7509a49 more explicit explanation of init_component shell function;
wenzelm
parents: 40387
diff changeset
   332
  if [ -d "$HOME/screwdriver-2.0" ]
ffcff7509a49 more explicit explanation of init_component shell function;
wenzelm
parents: 40387
diff changeset
   333
  then
ffcff7509a49 more explicit explanation of init_component shell function;
wenzelm
parents: 40387
diff changeset
   334
    init_component "$HOME/screwdriver-2.0"
ffcff7509a49 more explicit explanation of init_component shell function;
wenzelm
parents: 40387
diff changeset
   335
  else
ffcff7509a49 more explicit explanation of init_component shell function;
wenzelm
parents: 40387
diff changeset
   336
  \end{verbatim}
32323
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   337
*}
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   338
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   339
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   340
section {* The raw Isabelle process *}
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   341
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   342
text {*
28504
7ad7d7d6df47 simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents: 28502
diff changeset
   343
  The @{executable_def "isabelle-process"} executable runs bare-bones
7ad7d7d6df47 simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents: 28502
diff changeset
   344
  Isabelle logic sessions --- either interactively or in batch mode.
7ad7d7d6df47 simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents: 28502
diff changeset
   345
  It provides an abstraction over the underlying ML system, and over
7ad7d7d6df47 simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents: 28502
diff changeset
   346
  the actual heap file locations.  Its usage is:
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   347
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   348
\begin{ttbox}
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   349
Usage: isabelle-process [OPTIONS] [INPUT] [OUTPUT]
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   350
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   351
  Options are:
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   352
    -I           startup Isar interaction mode
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   353
    -P           startup Proof General interaction mode
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   354
    -S           secure mode -- disallow critical operations
45028
d608dd8cd409 alternative Socket_Channel;
wenzelm
parents: 43564
diff changeset
   355
    -T ADDR      startup process wrapper, with socket address
38253
3d4e521014f7 Isabelle_Process: separate input fifo for commands (still using the old tty protocol);
wenzelm
parents: 36196
diff changeset
   356
    -W IN:OUT    startup process wrapper, with input/output fifos
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   357
    -X           startup PGIP interaction mode
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   358
    -e MLTEXT    pass MLTEXT to the ML session
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   359
    -f           pass 'Session.finish();' to the ML session
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   360
    -m MODE      add print mode for output
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   361
    -q           non-interactive session
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   362
    -r           open heap file read-only
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   363
    -u           pass 'use"ROOT.ML";' to the ML session
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   364
    -w           reset write permissions on OUTPUT
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   365
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   366
  INPUT (default "\$ISABELLE_LOGIC") and OUTPUT specify in/out heaps.
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   367
  These are either names to be searched in the Isabelle path, or
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   368
  actual file names (containing at least one /).
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   369
  If INPUT is "RAW_ML_SYSTEM", just start the bare bones ML system.
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   370
\end{ttbox}
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   371
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   372
  Input files without path specifications are looked up in the
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   373
  @{setting ISABELLE_PATH} setting, which may consist of multiple
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   374
  components separated by colons --- these are tried in the given
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   375
  order with the value of @{setting ML_IDENTIFIER} appended
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   376
  internally.  In a similar way, base names are relative to the
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   377
  directory specified by @{setting ISABELLE_OUTPUT}.  In any case,
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   378
  actual file locations may also be given by including at least one
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   379
  slash (@{verbatim "/"}) in the name (hint: use @{verbatim "./"} to
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   380
  refer to the current directory).
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   381
*}
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   382
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   383
28223
wenzelm
parents: 28215
diff changeset
   384
subsubsection {* Options *}
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   385
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   386
text {*
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   387
  If the input heap file does not have write permission bits set, or
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   388
  the @{verbatim "-r"} option is given explicitely, then the session
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   389
  started will be read-only.  That is, the ML world cannot be
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   390
  committed back into the image file.  Otherwise, a writable session
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   391
  enables commits into either the input file, or into another output
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   392
  heap file (if that is given as the second argument on the command
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   393
  line).
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   394
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   395
  The read-write state of sessions is determined at startup only, it
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   396
  cannot be changed intermediately. Also note that heap images may
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   397
  require considerable amounts of disk space (approximately
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   398
  50--200~MB). Users are responsible for themselves to dispose their
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   399
  heap files when they are no longer needed.
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   400
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   401
  \medskip The @{verbatim "-w"} option makes the output heap file
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   402
  read-only after terminating.  Thus subsequent invocations cause the
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   403
  logic image to be read-only automatically.
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   404
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   405
  \medskip Using the @{verbatim "-e"} option, arbitrary ML code may be
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   406
  passed to the Isabelle session from the command line. Multiple
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   407
  @{verbatim "-e"}'s are evaluated in the given order. Strange things
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   408
  may happen when errorneous ML code is provided. Also make sure that
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   409
  the ML commands are terminated properly by semicolon.
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   410
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   411
  \medskip The @{verbatim "-u"} option is a shortcut for @{verbatim
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   412
  "-e"} passing ``@{verbatim "use \"ROOT.ML\";"}'' to the ML session.
28223
wenzelm
parents: 28215
diff changeset
   413
  The @{verbatim "-f"} option passes ``@{verbatim
wenzelm
parents: 28215
diff changeset
   414
  "Session.finish();"}'', which is intended mainly for administrative
wenzelm
parents: 28215
diff changeset
   415
  purposes.
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   416
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   417
  \medskip The @{verbatim "-m"} option adds identifiers of print modes
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   418
  to be made active for this session. Typically, this is used by some
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   419
  user interface, e.g.\ to enable output of proper mathematical
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   420
  symbols.
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   421
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   422
  \medskip Isabelle normally enters an interactive top-level loop
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   423
  (after processing the @{verbatim "-e"} texts). The @{verbatim "-q"}
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   424
  option inhibits interaction, thus providing a pure batch mode
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   425
  facility.
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   426
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   427
  \medskip The @{verbatim "-I"} option makes Isabelle enter Isar
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   428
  interaction mode on startup, instead of the primitive ML top-level.
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   429
  The @{verbatim "-P"} option configures the top-level loop for
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   430
  interaction with the Proof General user interface, and the
38253
3d4e521014f7 Isabelle_Process: separate input fifo for commands (still using the old tty protocol);
wenzelm
parents: 36196
diff changeset
   431
  @{verbatim "-X"} option enables XML-based PGIP communication.
3d4e521014f7 Isabelle_Process: separate input fifo for commands (still using the old tty protocol);
wenzelm
parents: 36196
diff changeset
   432
45028
d608dd8cd409 alternative Socket_Channel;
wenzelm
parents: 43564
diff changeset
   433
  \medskip The @{verbatim "-T"} or @{verbatim "-W"} option makes
d608dd8cd409 alternative Socket_Channel;
wenzelm
parents: 43564
diff changeset
   434
  Isabelle enter a special process wrapper for interaction via the
d608dd8cd409 alternative Socket_Channel;
wenzelm
parents: 43564
diff changeset
   435
  Isabelle/Scala layer, see also @{file
d608dd8cd409 alternative Socket_Channel;
wenzelm
parents: 43564
diff changeset
   436
  "~~/src/Pure/System/isabelle_process.scala"}.  The protocol between
d608dd8cd409 alternative Socket_Channel;
wenzelm
parents: 43564
diff changeset
   437
  the ML and JVM process is private to the implementation.
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   438
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   439
  \medskip The @{verbatim "-S"} option makes the Isabelle process more
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   440
  secure by disabling some critical operations, notably runtime
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   441
  compilation and evaluation of ML source code.
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   442
*}
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   443
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   444
28223
wenzelm
parents: 28215
diff changeset
   445
subsubsection {* Examples *}
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   446
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   447
text {*
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   448
  Run an interactive session of the default object-logic (as specified
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   449
  by the @{setting ISABELLE_LOGIC} setting) like this:
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   450
\begin{ttbox}
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   451
isabelle-process
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   452
\end{ttbox}
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   453
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   454
  Usually @{setting ISABELLE_LOGIC} refers to one of the standard
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   455
  logic images, which are read-only by default.  A writable session
47823
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
   456
  --- based on @{verbatim HOL}, but output to @{verbatim Test} (in the
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   457
  directory specified by the @{setting ISABELLE_OUTPUT} setting) ---
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   458
  may be invoked as follows:
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   459
\begin{ttbox}
47823
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
   460
isabelle-process HOL Test
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   461
\end{ttbox}
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   462
  Ending this session normally (e.g.\ by typing control-D) dumps the
47823
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
   463
  whole ML system state into @{verbatim Test} (be prepared for more
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
   464
  than 100\,MB):
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   465
47823
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
   466
  The @{verbatim Test} session may be continued later (still in
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   467
  writable state) by:
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   468
\begin{ttbox}
47823
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
   469
isabelle-process Test
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   470
\end{ttbox}
47823
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
   471
  A read-only @{verbatim Test} session may be started by:
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   472
\begin{ttbox}
47823
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
   473
isabelle-process -r Test
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   474
\end{ttbox}
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   475
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   476
  \medskip Note that manual session management like this does
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   477
  \emph{not} provide proper setup for theory presentation.  This would
48602
342ca8f3197b more uniform usage of "isabelle tool";
wenzelm
parents: 47823
diff changeset
   478
  require @{tool usedir}.
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   479
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   480
  \bigskip The next example demonstrates batch execution of Isabelle.
47823
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
   481
  We retrieve the @{verbatim Main} theory value from the theory loader
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
   482
  within ML (observe the delicate quoting rules for the Bash shell
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
   483
  vs.\ ML):
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   484
\begin{ttbox}
47823
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
   485
isabelle-process -e 'Thy_Info.get_theory "Main";' -q -r HOL
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   486
\end{ttbox}
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   487
  Note that the output text will be interspersed with additional junk
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   488
  messages by the ML runtime environment.  The @{verbatim "-W"} option
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   489
  allows to communicate with the Isabelle process via an external
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   490
  program in a more robust fashion.
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   491
*}
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   492
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   493
48813
wenzelm
parents: 48602
diff changeset
   494
section {* The Isabelle tool wrapper \label{sec:isabelle-tool} *}
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   495
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   496
text {*
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   497
  All Isabelle related tools and interfaces are called via a common
28504
7ad7d7d6df47 simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents: 28502
diff changeset
   498
  wrapper --- @{executable isabelle}:
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   499
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   500
\begin{ttbox}
28504
7ad7d7d6df47 simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents: 28502
diff changeset
   501
Usage: isabelle TOOL [ARGS ...]
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   502
28506
3ab515ee4e6f tuned isabelle usage;
wenzelm
parents: 28504
diff changeset
   503
  Start Isabelle tool NAME with ARGS; pass "-?" for tool specific help.
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   504
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   505
  Available tools are:
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   506
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   507
    browser - Isabelle graph browser
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   508
    \dots
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   509
\end{ttbox}
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   510
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   511
  In principle, Isabelle tools are ordinary executable scripts that
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   512
  are run within the Isabelle settings environment, see
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   513
  \secref{sec:settings}.  The set of available tools is collected by
28504
7ad7d7d6df47 simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents: 28502
diff changeset
   514
  @{executable isabelle} from the directories listed in the @{setting
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   515
  ISABELLE_TOOLS} setting.  Do not try to call the scripts directly
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   516
  from the shell.  Neither should you add the tool directories to your
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   517
  shell's search path!
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   518
*}
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   519
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   520
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   521
subsubsection {* Examples *}
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   522
48813
wenzelm
parents: 48602
diff changeset
   523
text {* Show the list of available documentation of the Isabelle
wenzelm
parents: 48602
diff changeset
   524
  distribution:
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   525
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   526
\begin{ttbox}
28504
7ad7d7d6df47 simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents: 28502
diff changeset
   527
  isabelle doc
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   528
\end{ttbox}
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   529
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   530
  View a certain document as follows:
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   531
\begin{ttbox}
47823
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
   532
  isabelle doc system
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   533
\end{ttbox}
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   534
48813
wenzelm
parents: 48602
diff changeset
   535
  Query the Isabelle settings environment:
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   536
\begin{ttbox}
48813
wenzelm
parents: 48602
diff changeset
   537
  isabelle getenv ISABELLE_HOME_USER
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   538
\end{ttbox}
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   539
*}
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   540
28223
wenzelm
parents: 28215
diff changeset
   541
end