src/Doc/System/Basics.thy
author wenzelm
Wed, 04 Nov 2015 18:32:47 +0100
changeset 61572 ddb3ac3fef45
parent 61503 28e788ca2c5d
child 61575 f18f6e51e901
permissions -rw-r--r--
more antiquotations;
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
58618
782f0b662cae more cartouches;
wenzelm
parents: 58553
diff changeset
     5
chapter \<open>The Isabelle system environment\<close>
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
     6
58618
782f0b662cae more cartouches;
wenzelm
parents: 58553
diff changeset
     7
text \<open>This manual describes Isabelle together with related tools and
47823
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
     8
  user interfaces as seen from a system oriented view.  See also the
61477
e467ae7aa808 more control symbols;
wenzelm
parents: 61458
diff changeset
     9
  \<^emph>\<open>Isabelle/Isar Reference Manual\<close> @{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
61477
e467ae7aa808 more control symbols;
wenzelm
parents: 61458
diff changeset
    11
  \<^emph>\<open>The Isabelle/Isar Implementation
e467ae7aa808 more control symbols;
wenzelm
parents: 61458
diff changeset
    12
  Manual\<close> @{cite "isabelle-implementation"} for the main concepts of the
47823
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
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 59904
diff changeset
    15
  \<^medskip>
eb2463fc4d7b more symbols;
wenzelm
parents: 59904
diff changeset
    16
  The Isabelle system environment provides the following
28916
0a802cdda340 removed obsolete isabelle-interface executable and ISABELLE_INTERFACE setting;
wenzelm
parents: 28914
diff changeset
    17
  basic infrastructure to integrate tools smoothly.
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    18
61477
e467ae7aa808 more control symbols;
wenzelm
parents: 61458
diff changeset
    19
  \<^enum> The \<^emph>\<open>Isabelle settings\<close> mechanism provides process
28916
0a802cdda340 removed obsolete isabelle-interface executable and ISABELLE_INTERFACE setting;
wenzelm
parents: 28914
diff changeset
    20
  environment variables to all Isabelle executables (including tools
0a802cdda340 removed obsolete isabelle-interface executable and ISABELLE_INTERFACE setting;
wenzelm
parents: 28914
diff changeset
    21
  and user interfaces).
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    22
61477
e467ae7aa808 more control symbols;
wenzelm
parents: 61458
diff changeset
    23
  \<^enum> The raw \<^emph>\<open>Isabelle process\<close> (@{executable_ref
56439
95e2656b3b23 renamed "isabelle-process" to "isabelle_process", with shell function to avoid dynamic path lookups;
wenzelm
parents: 54937
diff changeset
    24
  "isabelle_process"}) runs logic sessions either interactively or in
28504
7ad7d7d6df47 simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents: 28502
diff changeset
    25
  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
    26
  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
    27
  care about the low-level process.
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    28
61477
e467ae7aa808 more control symbols;
wenzelm
parents: 61458
diff changeset
    29
  \<^enum> The main \<^emph>\<open>Isabelle tool wrapper\<close> (@{executable_ref
47823
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
    30
  isabelle}) provides a generic startup environment Isabelle related
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
    31
  utilities, user interfaces etc.  Such tools automatically benefit
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
    32
  from the settings mechanism.
58618
782f0b662cae more cartouches;
wenzelm
parents: 58553
diff changeset
    33
\<close>
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    34
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    35
58618
782f0b662cae more cartouches;
wenzelm
parents: 58553
diff changeset
    36
section \<open>Isabelle settings \label{sec:settings}\<close>
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    37
58618
782f0b662cae more cartouches;
wenzelm
parents: 58553
diff changeset
    38
text \<open>
61477
e467ae7aa808 more control symbols;
wenzelm
parents: 61458
diff changeset
    39
  The Isabelle system heavily depends on the \<^emph>\<open>settings
e467ae7aa808 more control symbols;
wenzelm
parents: 61458
diff changeset
    40
  mechanism\<close>\indexbold{settings}.  Essentially, this is a statically
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    41
  scoped collection of environment variables, such as @{setting
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    42
  ISABELLE_HOME}, @{setting ML_SYSTEM}, @{setting ML_HOME}.  These
61477
e467ae7aa808 more control symbols;
wenzelm
parents: 61458
diff changeset
    43
  variables are \<^emph>\<open>not\<close> intended to be set directly from the shell,
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    44
  though.  Isabelle employs a somewhat more sophisticated scheme of
61477
e467ae7aa808 more control symbols;
wenzelm
parents: 61458
diff changeset
    45
  \<^emph>\<open>settings files\<close> --- one for site-wide defaults, another for
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    46
  additional user-specific modifications.  With all configuration
47823
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
    47
  variables in clearly defined places, this scheme is more
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
    48
  maintainable and user-friendly than global shell environment
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
    49
  variables.
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    50
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    51
  In particular, we avoid the typical situation where prospective
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    52
  users of a software package are told to put several things into
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    53
  their shell startup scripts, before being able to actually run the
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    54
  program. Isabelle requires none such administrative chores of its
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    55
  end-users --- the executables can be invoked straight away.
40800
330eb65c9469 Parse.liberal_name for document antiquotations and attributes;
wenzelm
parents: 40569
diff changeset
    56
  Occasionally, users would still want to put the @{file
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
    57
  "$ISABELLE_HOME/bin"} directory into their shell's search path, but
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
    58
  this is not required.
58618
782f0b662cae more cartouches;
wenzelm
parents: 58553
diff changeset
    59
\<close>
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    60
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    61
58618
782f0b662cae more cartouches;
wenzelm
parents: 58553
diff changeset
    62
subsection \<open>Bootstrapping the environment \label{sec:boot}\<close>
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    63
58618
782f0b662cae more cartouches;
wenzelm
parents: 58553
diff changeset
    64
text \<open>Isabelle executables need to be run within a proper settings
32323
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
    65
  environment.  This is bootstrapped as described below, on the first
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
    66
  invocation of one of the outer wrapper scripts (such as
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
    67
  @{executable_ref isabelle}).  This happens only once for each
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
    68
  process tree, i.e.\ the environment is passed to subprocesses
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
    69
  according to regular Unix conventions.
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    70
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 59904
diff changeset
    71
  \<^enum> The special variable @{setting_def ISABELLE_HOME} is
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    72
  determined automatically from the location of the binary that has
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    73
  been run.
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    74
  
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    75
  You should not try to set @{setting ISABELLE_HOME} manually. Also
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    76
  note that the Isabelle executables either have to be run from their
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    77
  original location in the distribution directory, or via the
48602
342ca8f3197b more uniform usage of "isabelle tool";
wenzelm
parents: 47823
diff changeset
    78
  executable objects created by the @{tool install} tool.  Symbolic
40800
330eb65c9469 Parse.liberal_name for document antiquotations and attributes;
wenzelm
parents: 40569
diff changeset
    79
  links are admissible, but a plain copy of the @{file
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
    80
  "$ISABELLE_HOME/bin"} files will not work!
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
    81
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 59904
diff changeset
    82
  \<^enum> The file @{file "$ISABELLE_HOME/etc/settings"} is run as a
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
    83
  @{executable_ref bash} shell script with the auto-export option for
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
    84
  variables enabled.
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    85
  
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    86
  This file holds a rather long list of shell variable assigments,
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    87
  thus providing the site-wide default settings.  The Isabelle
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    88
  distribution already contains a global settings file with sensible
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    89
  defaults for most variables.  When installing the system, only a few
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    90
  of these may have to be adapted (probably @{setting ML_SYSTEM}
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    91
  etc.).
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    92
  
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 59904
diff changeset
    93
  \<^enum> The file @{file_unchecked "$ISABELLE_HOME_USER/etc/settings"} (if it
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    94
  exists) is run in the same way as the site default settings. Note
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    95
  that the variable @{setting ISABELLE_HOME_USER} has already been set
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
    96
  before --- usually to something like \<^verbatim>\<open>$USER_HOME/.isabelle/IsabelleXXXX\<close>.
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
    97
  
54937
ce4bf91331e7 misc tuning and clarification;
wenzelm
parents: 54705
diff changeset
    98
  Thus individual users may override the site-wide defaults.
ce4bf91331e7 misc tuning and clarification;
wenzelm
parents: 54705
diff changeset
    99
  Typically, a user settings file contains only a few lines, with some
ce4bf91331e7 misc tuning and clarification;
wenzelm
parents: 54705
diff changeset
   100
  assignments that are actually changed.  Never copy the central
ce4bf91331e7 misc tuning and clarification;
wenzelm
parents: 54705
diff changeset
   101
  @{file "$ISABELLE_HOME/etc/settings"} file!
61458
987533262fc2 Markdown support in document text;
wenzelm
parents: 61439
diff changeset
   102
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   103
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   104
  Since settings files are regular GNU @{executable_def bash} scripts,
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   105
  one may use complex shell commands, such as \<^verbatim>\<open>if\<close> or
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   106
  \<^verbatim>\<open>case\<close> statements to set variables depending on the
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   107
  system architecture or other environment variables.  Such advanced
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   108
  features should be added only with great care, though. In
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   109
  particular, external environment references should be kept at a
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   110
  minimum.
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   111
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 59904
diff changeset
   112
  \<^medskip>
eb2463fc4d7b more symbols;
wenzelm
parents: 59904
diff changeset
   113
  A few variables are somewhat special:
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   114
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 59904
diff changeset
   115
  \<^item> @{setting_def ISABELLE_PROCESS} and @{setting_def ISABELLE_TOOL} are set
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   116
  automatically to the absolute path names of the @{executable
56439
95e2656b3b23 renamed "isabelle-process" to "isabelle_process", with shell function to avoid dynamic path lookups;
wenzelm
parents: 54937
diff changeset
   117
  "isabelle_process"} and @{executable isabelle} executables,
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   118
  respectively.
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   119
  
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 59904
diff changeset
   120
  \<^item> @{setting_ref ISABELLE_OUTPUT} will have the identifiers of
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   121
  the Isabelle distribution (cf.\ @{setting ISABELLE_IDENTIFIER}) and
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   122
  the ML system (cf.\ @{setting ML_IDENTIFIER}) appended automatically
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   123
  to its value.
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   124
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   125
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 59904
diff changeset
   126
  \<^medskip>
eb2463fc4d7b more symbols;
wenzelm
parents: 59904
diff changeset
   127
  Note that the settings environment may be inspected with
48602
342ca8f3197b more uniform usage of "isabelle tool";
wenzelm
parents: 47823
diff changeset
   128
  the @{tool getenv} tool.  This might help to figure out the effect
58618
782f0b662cae more cartouches;
wenzelm
parents: 58553
diff changeset
   129
  of complex settings scripts.\<close>
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   130
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   131
58618
782f0b662cae more cartouches;
wenzelm
parents: 58553
diff changeset
   132
subsection \<open>Common variables\<close>
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   133
58618
782f0b662cae more cartouches;
wenzelm
parents: 58553
diff changeset
   134
text \<open>
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   135
  This is a reference of common Isabelle settings variables. Note that
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   136
  the list is somewhat open-ended. Third-party utilities or interfaces
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   137
  may add their own selection. Variables that are special in some
61493
0debd22f0c0e isabelle update_cartouches -t;
wenzelm
parents: 61477
diff changeset
   138
  sense are marked with \<open>\<^sup>*\<close>.
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   139
61493
0debd22f0c0e isabelle update_cartouches -t;
wenzelm
parents: 61477
diff changeset
   140
  \<^descr>[@{setting_def USER_HOME}\<open>\<^sup>*\<close>] Is the cross-platform
47823
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
   141
  user home directory.  On Unix systems this is usually the same as
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
   142
  @{setting HOME}, but on Windows it is the regular home directory of
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
   143
  the user, not the one of within the Cygwin root
61572
ddb3ac3fef45 more antiquotations;
wenzelm
parents: 61503
diff changeset
   144
  file-system.\<^footnote>\<open>Cygwin itself offers another choice whether
61412
bbe9ae2c9289 clarified antiquotation;
wenzelm
parents: 61407
diff changeset
   145
  its HOME should point to the @{file_unchecked "/home"} directory tree or the
61572
ddb3ac3fef45 more antiquotations;
wenzelm
parents: 61503
diff changeset
   146
  Windows user home.\<close>
47661
012a887997f3 USER_HOME settings variable points to cross-platform user home directory;
wenzelm
parents: 45028
diff changeset
   147
61493
0debd22f0c0e isabelle update_cartouches -t;
wenzelm
parents: 61477
diff changeset
   148
  \<^descr>[@{setting_def ISABELLE_HOME}\<open>\<^sup>*\<close>] is the location of the
47661
012a887997f3 USER_HOME settings variable points to cross-platform user home directory;
wenzelm
parents: 45028
diff changeset
   149
  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
   150
  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
   151
  not attempt to set @{setting ISABELLE_HOME} yourself from the shell!
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   152
  
61439
2bf52eec4e8a more symbols;
wenzelm
parents: 61412
diff changeset
   153
  \<^descr>[@{setting_def ISABELLE_HOME_USER}] is the user-specific
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   154
  counterpart of @{setting ISABELLE_HOME}. The default value is
54705
0dff3326d12a provide @{file_unchecked} in Isabelle/Pure;
wenzelm
parents: 54683
diff changeset
   155
  relative to @{file_unchecked "$USER_HOME/.isabelle"}, under rare
47661
012a887997f3 USER_HOME settings variable points to cross-platform user home directory;
wenzelm
parents: 45028
diff changeset
   156
  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
   157
  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
   158
  @{setting ISABELLE_HOME} to some extend. In particular, site-wide
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   159
  defaults may be overridden by a private
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   160
  \<^verbatim>\<open>$ISABELLE_HOME_USER/etc/settings\<close>.
50182
30177ec0be36 added ISABELLE_PLATFORM_FAMILY;
wenzelm
parents: 49173
diff changeset
   161
61493
0debd22f0c0e isabelle update_cartouches -t;
wenzelm
parents: 61477
diff changeset
   162
  \<^descr>[@{setting_def ISABELLE_PLATFORM_FAMILY}\<open>\<^sup>*\<close>] is
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   163
  automatically set to the general platform family: \<^verbatim>\<open>linux\<close>,
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   164
  \<^verbatim>\<open>macos\<close>, \<^verbatim>\<open>windows\<close>.  Note that
50182
30177ec0be36 added ISABELLE_PLATFORM_FAMILY;
wenzelm
parents: 49173
diff changeset
   165
  platform-dependent tools usually need to refer to the more specific
30177ec0be36 added ISABELLE_PLATFORM_FAMILY;
wenzelm
parents: 49173
diff changeset
   166
  identification according to @{setting ISABELLE_PLATFORM}, @{setting
30177ec0be36 added ISABELLE_PLATFORM_FAMILY;
wenzelm
parents: 49173
diff changeset
   167
  ISABELLE_PLATFORM32}, @{setting ISABELLE_PLATFORM64}.
30177ec0be36 added ISABELLE_PLATFORM_FAMILY;
wenzelm
parents: 49173
diff changeset
   168
61493
0debd22f0c0e isabelle update_cartouches -t;
wenzelm
parents: 61477
diff changeset
   169
  \<^descr>[@{setting_def ISABELLE_PLATFORM}\<open>\<^sup>*\<close>] is automatically
36196
cbb9ee265cdd added ISABELLE_PLATFORM and ISABELLE_PLATFORM64 -- NB: ML and JVM may have a different idea;
wenzelm
parents: 33952
diff changeset
   170
  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
   171
  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
   172
  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
   173
  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
   174
  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
   175
61493
0debd22f0c0e isabelle update_cartouches -t;
wenzelm
parents: 61477
diff changeset
   176
  \<^descr>[@{setting_def ISABELLE_PLATFORM64}\<open>\<^sup>*\<close>] is similar to
36196
cbb9ee265cdd added ISABELLE_PLATFORM and ISABELLE_PLATFORM64 -- NB: ML and JVM may have a different idea;
wenzelm
parents: 33952
diff changeset
   177
  @{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
   178
  on a platform that supports this; the value is empty for 32 bit.
47823
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
   179
  Note that the following bash expression (including the quotes)
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
   180
  prefers the 64 bit platform, if that is available:
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
   181
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   182
  @{verbatim [display] \<open>"${ISABELLE_PLATFORM64:-$ISABELLE_PLATFORM}"\<close>}
36196
cbb9ee265cdd added ISABELLE_PLATFORM and ISABELLE_PLATFORM64 -- NB: ML and JVM may have a different idea;
wenzelm
parents: 33952
diff changeset
   183
61493
0debd22f0c0e isabelle update_cartouches -t;
wenzelm
parents: 61477
diff changeset
   184
  \<^descr>[@{setting_def ISABELLE_PROCESS}\<open>\<^sup>*\<close>, @{setting
0debd22f0c0e isabelle update_cartouches -t;
wenzelm
parents: 61477
diff changeset
   185
  ISABELLE_TOOL}\<open>\<^sup>*\<close>] are automatically set to the full path
56439
95e2656b3b23 renamed "isabelle-process" to "isabelle_process", with shell function to avoid dynamic path lookups;
wenzelm
parents: 54937
diff changeset
   186
  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
   187
  isabelle} executables, respectively.  Thus other tools and scripts
40800
330eb65c9469 Parse.liberal_name for document antiquotations and attributes;
wenzelm
parents: 40569
diff changeset
   188
  need not assume that the @{file "$ISABELLE_HOME/bin"} directory is
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   189
  on the current search path of the shell.
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   190
  
61493
0debd22f0c0e isabelle update_cartouches -t;
wenzelm
parents: 61477
diff changeset
   191
  \<^descr>[@{setting_def ISABELLE_IDENTIFIER}\<open>\<^sup>*\<close>] refers
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   192
  to the name of this Isabelle distribution, e.g.\ ``\<^verbatim>\<open>Isabelle2012\<close>''.
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   193
61439
2bf52eec4e8a more symbols;
wenzelm
parents: 61412
diff changeset
   194
  \<^descr>[@{setting_def ML_SYSTEM}, @{setting_def ML_HOME},
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   195
  @{setting_def ML_OPTIONS}, @{setting_def ML_PLATFORM}, @{setting_def
61493
0debd22f0c0e isabelle update_cartouches -t;
wenzelm
parents: 61477
diff changeset
   196
  ML_IDENTIFIER}\<open>\<^sup>*\<close>] specify the underlying ML system
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   197
  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
   198
  @{setting ML_SYSTEM} names (see the @{file
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   199
  "$ISABELLE_HOME/etc/settings"} file of the distribution).
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   200
  
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   201
  The actual compiler binary will be run from the directory @{setting
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   202
  ML_HOME}, with @{setting ML_OPTIONS} as first arguments on the
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   203
  command line.  The optional @{setting ML_PLATFORM} may specify the
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   204
  binary format of ML heap images, which is useful for cross-platform
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   205
  installations.  The value of @{setting ML_IDENTIFIER} is
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   206
  automatically obtained by composing the values of @{setting
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   207
  ML_SYSTEM}, @{setting ML_PLATFORM} and the Isabelle version values.
47823
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
   208
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   209
  \<^descr>[@{setting_def ML_SYSTEM_POLYML}\<open>\<^sup>*\<close>] is \<^verbatim>\<open>true\<close>
51434
e19a22974c72 document ISABELLE_POLYML;
wenzelm
parents: 51057
diff changeset
   210
  for @{setting ML_SYSTEM} values derived from Poly/ML, as opposed to
e19a22974c72 document ISABELLE_POLYML;
wenzelm
parents: 51057
diff changeset
   211
  SML/NJ where it is empty.  This is particularly useful with the
e19a22974c72 document ISABELLE_POLYML;
wenzelm
parents: 51057
diff changeset
   212
  build option @{system_option condition}
e19a22974c72 document ISABELLE_POLYML;
wenzelm
parents: 51057
diff changeset
   213
  (\secref{sec:system-options}) to restrict big sessions to something
e19a22974c72 document ISABELLE_POLYML;
wenzelm
parents: 51057
diff changeset
   214
  that SML/NJ can still handle.
e19a22974c72 document ISABELLE_POLYML;
wenzelm
parents: 51057
diff changeset
   215
61439
2bf52eec4e8a more symbols;
wenzelm
parents: 61412
diff changeset
   216
  \<^descr>[@{setting_def ISABELLE_JDK_HOME}] needs to point to a full JDK
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   217
  (Java Development Kit) installation with \<^verbatim>\<open>javac\<close> and
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   218
  \<^verbatim>\<open>jar\<close> executables.  This is essential for Isabelle/Scala
47823
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
   219
  and other JVM-based tools to work properly.  Note that conventional
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   220
  \<^verbatim>\<open>JAVA_HOME\<close> usually points to the JRE (Java Runtime
47823
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
   221
  Environment), not JDK.
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   222
  
61439
2bf52eec4e8a more symbols;
wenzelm
parents: 61412
diff changeset
   223
  \<^descr>[@{setting_def ISABELLE_PATH}] is a list of directories
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   224
  (separated by colons) where Isabelle logic images may reside.  When
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   225
  looking up heaps files, the value of @{setting ML_IDENTIFIER} is
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   226
  appended to each component internally.
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   227
  
61493
0debd22f0c0e isabelle update_cartouches -t;
wenzelm
parents: 61477
diff changeset
   228
  \<^descr>[@{setting_def ISABELLE_OUTPUT}\<open>\<^sup>*\<close>] is a
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   229
  directory where output heap files should be stored by default. The
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   230
  ML system and Isabelle version identifier is appended here, too.
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   231
  
61439
2bf52eec4e8a more symbols;
wenzelm
parents: 61412
diff changeset
   232
  \<^descr>[@{setting_def ISABELLE_BROWSER_INFO}] is the directory where
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   233
  theory browser information (HTML text, graph data, and printable
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   234
  documents) is stored (see also \secref{sec:info}).  The default
54705
0dff3326d12a provide @{file_unchecked} in Isabelle/Pure;
wenzelm
parents: 54683
diff changeset
   235
  value is @{file_unchecked "$ISABELLE_HOME_USER/browser_info"}.
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   236
  
61439
2bf52eec4e8a more symbols;
wenzelm
parents: 61412
diff changeset
   237
  \<^descr>[@{setting_def ISABELLE_LOGIC}] specifies the default logic to
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   238
  load if none is given explicitely by the user.  The default value is
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   239
  \<^verbatim>\<open>HOL\<close>.
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   240
  
61439
2bf52eec4e8a more symbols;
wenzelm
parents: 61412
diff changeset
   241
  \<^descr>[@{setting_def ISABELLE_LINE_EDITOR}] specifies the
57439
0e41f26a0250 "isabelle tty" is superseded by "isabelle console";
wenzelm
parents: 56604
diff changeset
   242
  line editor for the @{tool_ref console} interface.
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   243
61439
2bf52eec4e8a more symbols;
wenzelm
parents: 61412
diff changeset
   244
  \<^descr>[@{setting_def ISABELLE_LATEX}, @{setting_def
52746
eec610972763 discontinued historic document formats;
wenzelm
parents: 52743
diff changeset
   245
  ISABELLE_PDFLATEX}, @{setting_def ISABELLE_BIBTEX}] refer to {\LaTeX}
eec610972763 discontinued historic document formats;
wenzelm
parents: 52743
diff changeset
   246
  related tools for Isabelle document preparation (see also
eec610972763 discontinued historic document formats;
wenzelm
parents: 52743
diff changeset
   247
  \secref{sec:tool-latex}).
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   248
  
61439
2bf52eec4e8a more symbols;
wenzelm
parents: 61412
diff changeset
   249
  \<^descr>[@{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
   250
  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
   251
  utility programs (see also \secref{sec:isabelle-tool}).
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   252
  
61439
2bf52eec4e8a more symbols;
wenzelm
parents: 61412
diff changeset
   253
  \<^descr>[@{setting_def ISABELLE_DOCS}] is a colon separated list of
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   254
  directories with documentation files.
50197
b385d134926d eval PDF_VIEWER/DVI_VIEWER command line, which allows additional quotes for program name, for example;
wenzelm
parents: 50182
diff changeset
   255
61439
2bf52eec4e8a more symbols;
wenzelm
parents: 61412
diff changeset
   256
  \<^descr>[@{setting_def PDF_VIEWER}] specifies the program to be used
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   257
  for displaying \<^verbatim>\<open>pdf\<close> files.
54683
cf48ddc266e5 clarified "isabelle display" and 'display_drafts': re-use file and program instance, open asynchronously via desktop environment;
wenzelm
parents: 52746
diff changeset
   258
61439
2bf52eec4e8a more symbols;
wenzelm
parents: 61412
diff changeset
   259
  \<^descr>[@{setting_def DVI_VIEWER}] specifies the program to be used
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   260
  for displaying \<^verbatim>\<open>dvi\<close> files.
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   261
  
61493
0debd22f0c0e isabelle update_cartouches -t;
wenzelm
parents: 61477
diff changeset
   262
  \<^descr>[@{setting_def ISABELLE_TMP_PREFIX}\<open>\<^sup>*\<close>] is the
56439
95e2656b3b23 renamed "isabelle-process" to "isabelle_process", with shell function to avoid dynamic path lookups;
wenzelm
parents: 54937
diff changeset
   263
  prefix from which any running @{executable "isabelle_process"}
58639
1df53737c59b prefer Unix standard-conformant $TMPDIR over hard-wired /tmp;
wenzelm
parents: 58618
diff changeset
   264
  derives an individual directory for temporary files.
58618
782f0b662cae more cartouches;
wenzelm
parents: 58553
diff changeset
   265
\<close>
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   266
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   267
58618
782f0b662cae more cartouches;
wenzelm
parents: 58553
diff changeset
   268
subsection \<open>Additional components \label{sec:components}\<close>
32323
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   269
61477
e467ae7aa808 more control symbols;
wenzelm
parents: 61458
diff changeset
   270
text \<open>Any directory may be registered as an explicit \<^emph>\<open>Isabelle
e467ae7aa808 more control symbols;
wenzelm
parents: 61458
diff changeset
   271
  component\<close>.  The general layout conventions are that of the main
32323
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   272
  Isabelle distribution itself, and the following two files (both
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   273
  optional) have a special meaning:
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   274
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   275
  \<^item> \<^verbatim>\<open>etc/settings\<close> holds additional settings that are
32323
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   276
  initialized when bootstrapping the overall Isabelle environment,
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   277
  cf.\ \secref{sec:boot}.  As usual, the content is interpreted as a
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   278
  \<^verbatim>\<open>bash\<close> script.  It may refer to the component's enclosing
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   279
  directory via the \<^verbatim>\<open>COMPONENT\<close> shell variable.
32323
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   280
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   281
  For example, the following setting allows to refer to files within
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   282
  the component later on, without having to hardwire absolute paths:
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   283
  @{verbatim [display] \<open>MY_COMPONENT_HOME="$COMPONENT"\<close>}
32323
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   284
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   285
  Components can also add to existing Isabelle settings such as
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   286
  @{setting_def ISABELLE_TOOLS}, in order to provide
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   287
  component-specific tools that can be invoked by end-users.  For
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   288
  example:
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   289
  @{verbatim [display] \<open>ISABELLE_TOOLS="$ISABELLE_TOOLS:$COMPONENT/lib/Tools"\<close>}
32323
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   290
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   291
  \<^item> \<^verbatim>\<open>etc/components\<close> holds a list of further
32323
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   292
  sub-components of the same structure.  The directory specifications
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   293
  given here can be either absolute (with leading \<^verbatim>\<open>/\<close>) or
32323
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   294
  relative to the component's main directory.
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   295
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   296
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   297
  The root of component initialization is @{setting ISABELLE_HOME}
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   298
  itself.  After initializing all of its sub-components recursively,
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   299
  @{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
   300
  that directory exists).  This allows to install private components
54705
0dff3326d12a provide @{file_unchecked} in Isabelle/Pure;
wenzelm
parents: 54683
diff changeset
   301
  via @{file_unchecked "$ISABELLE_HOME_USER/etc/components"}, although it is
40569
ffcff7509a49 more explicit explanation of init_component shell function;
wenzelm
parents: 40387
diff changeset
   302
  often more convenient to do that programmatically via the
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   303
  \<^verbatim>\<open>init_component\<close> shell function in the \<^verbatim>\<open>etc/settings\<close>
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   304
  script of \<^verbatim>\<open>$ISABELLE_HOME_USER\<close> (or any other component
40569
ffcff7509a49 more explicit explanation of init_component shell function;
wenzelm
parents: 40387
diff changeset
   305
  directory).  For example:
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   306
  @{verbatim [display] \<open>init_component "$HOME/screwdriver-2.0"\<close>}
48838
623ba165d059 direct support for component forests via init_components;
wenzelm
parents: 48813
diff changeset
   307
623ba165d059 direct support for component forests via init_components;
wenzelm
parents: 48813
diff changeset
   308
  This is tolerant wrt.\ missing component directories, but might
623ba165d059 direct support for component forests via init_components;
wenzelm
parents: 48813
diff changeset
   309
  produce a warning.
623ba165d059 direct support for component forests via init_components;
wenzelm
parents: 48813
diff changeset
   310
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 59904
diff changeset
   311
  \<^medskip>
eb2463fc4d7b more symbols;
wenzelm
parents: 59904
diff changeset
   312
  More complex situations may be addressed by initializing
48838
623ba165d059 direct support for component forests via init_components;
wenzelm
parents: 48813
diff changeset
   313
  components listed in a given catalog file, relatively to some base
623ba165d059 direct support for component forests via init_components;
wenzelm
parents: 48813
diff changeset
   314
  directory:
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   315
  @{verbatim [display] \<open>init_components "$HOME/my_component_store" "some_catalog_file"\<close>}
48838
623ba165d059 direct support for component forests via init_components;
wenzelm
parents: 48813
diff changeset
   316
623ba165d059 direct support for component forests via init_components;
wenzelm
parents: 48813
diff changeset
   317
  The component directories listed in the catalog file are treated as
623ba165d059 direct support for component forests via init_components;
wenzelm
parents: 48813
diff changeset
   318
  relative to the given base directory.
48844
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48838
diff changeset
   319
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48838
diff changeset
   320
  See also \secref{sec:tool-components} for some tool-support for
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48838
diff changeset
   321
  resolving components that are formally initialized but not installed
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48838
diff changeset
   322
  yet.
58618
782f0b662cae more cartouches;
wenzelm
parents: 58553
diff changeset
   323
\<close>
32323
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   324
8185d3bfcbf1 tuned "Bootstrapping the environment";
wenzelm
parents: 32088
diff changeset
   325
58618
782f0b662cae more cartouches;
wenzelm
parents: 58553
diff changeset
   326
section \<open>The raw Isabelle process \label{sec:isabelle-process}\<close>
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   327
58618
782f0b662cae more cartouches;
wenzelm
parents: 58553
diff changeset
   328
text \<open>
56439
95e2656b3b23 renamed "isabelle-process" to "isabelle_process", with shell function to avoid dynamic path lookups;
wenzelm
parents: 54937
diff changeset
   329
  The @{executable_def "isabelle_process"} executable runs bare-bones
28504
7ad7d7d6df47 simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents: 28502
diff changeset
   330
  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
   331
  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
   332
  the actual heap file locations.  Its usage is:
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   333
  @{verbatim [display]
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   334
\<open>Usage: isabelle_process [OPTIONS] [INPUT] [OUTPUT]
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   335
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   336
  Options are:
57581
74bbe9317aa4 provide explicit options file -- avoid multiple Scala/JVM invocation;
wenzelm
parents: 57439
diff changeset
   337
    -O           system options from given YXML file
59350
acba5d6fdb2f discontinued fifo channel, always use portable socket;
wenzelm
parents: 58846
diff changeset
   338
    -P SOCKET    startup process wrapper via TCP socket
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   339
    -S           secure mode -- disallow critical operations
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   340
    -e MLTEXT    pass MLTEXT to the ML session
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   341
    -m MODE      add print mode for output
52056
fc458f304f93 added isabelle-process option -o;
wenzelm
parents: 52054
diff changeset
   342
    -o OPTION    override Isabelle system OPTION (via NAME=VAL or NAME)
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   343
    -q           non-interactive session
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   344
    -r           open heap file read-only
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   345
    -w           reset write permissions on OUTPUT
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   346
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   347
  INPUT (default "$ISABELLE_LOGIC") and OUTPUT specify in/out heaps.
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   348
  These are either names to be searched in the Isabelle path, or
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   349
  actual file names (containing at least one /).
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   350
  If INPUT is "RAW_ML_SYSTEM", just start the bare bones ML system.\<close>}
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   351
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   352
  Input files without path specifications are looked up in the
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   353
  @{setting ISABELLE_PATH} setting, which may consist of multiple
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   354
  components separated by colons --- these are tried in the given
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   355
  order with the value of @{setting ML_IDENTIFIER} appended
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   356
  internally.  In a similar way, base names are relative to the
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   357
  directory specified by @{setting ISABELLE_OUTPUT}.  In any case,
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   358
  actual file locations may also be given by including at least one
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   359
  slash (\<^verbatim>\<open>/\<close>) in the name (hint: use \<^verbatim>\<open>./\<close> to
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   360
  refer to the current directory).
58618
782f0b662cae more cartouches;
wenzelm
parents: 58553
diff changeset
   361
\<close>
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   362
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   363
58618
782f0b662cae more cartouches;
wenzelm
parents: 58553
diff changeset
   364
subsubsection \<open>Options\<close>
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   365
58618
782f0b662cae more cartouches;
wenzelm
parents: 58553
diff changeset
   366
text \<open>
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   367
  If the input heap file does not have write permission bits set, or
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   368
  the \<^verbatim>\<open>-r\<close> option is given explicitly, then the session
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   369
  started will be read-only.  That is, the ML world cannot be
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   370
  committed back into the image file.  Otherwise, a writable session
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   371
  enables commits into either the input file, or into another output
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   372
  heap file (if that is given as the second argument on the command
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   373
  line).
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   374
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   375
  The read-write state of sessions is determined at startup only, it
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   376
  cannot be changed intermediately. Also note that heap images may
59904
wenzelm
parents: 59350
diff changeset
   377
  require considerable amounts of disk space (hundreds of MB or some GB).
wenzelm
parents: 59350
diff changeset
   378
  Users are responsible for themselves to dispose their heap files
wenzelm
parents: 59350
diff changeset
   379
  when they are no longer needed.
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   380
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 59904
diff changeset
   381
  \<^medskip>
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   382
  The \<^verbatim>\<open>-w\<close> option makes the output heap file
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   383
  read-only after terminating.  Thus subsequent invocations cause the
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   384
  logic image to be read-only automatically.
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   385
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 59904
diff changeset
   386
  \<^medskip>
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   387
  Using the \<^verbatim>\<open>-e\<close> option, arbitrary ML code may be
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   388
  passed to the Isabelle session from the command line. Multiple
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   389
  \<^verbatim>\<open>-e\<close> options are evaluated in the given order. Strange things
56604
1b153b989860 tuned spelling;
wenzelm
parents: 56439
diff changeset
   390
  may happen when erroneous ML code is provided. Also make sure that
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   391
  the ML commands are terminated properly by semicolon.
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   392
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 59904
diff changeset
   393
  \<^medskip>
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   394
  The \<^verbatim>\<open>-m\<close> option adds identifiers of print modes
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   395
  to be made active for this session. Typically, this is used by some
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   396
  user interface, e.g.\ to enable output of proper mathematical
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   397
  symbols.
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   398
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 59904
diff changeset
   399
  \<^medskip>
eb2463fc4d7b more symbols;
wenzelm
parents: 59904
diff changeset
   400
  Isabelle normally enters an interactive top-level loop
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   401
  (after processing the \<^verbatim>\<open>-e\<close> texts). The \<^verbatim>\<open>-q\<close>
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   402
  option inhibits interaction, thus providing a pure batch mode
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   403
  facility.
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   404
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 59904
diff changeset
   405
  \<^medskip>
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   406
  Option \<^verbatim>\<open>-o\<close> allows to override Isabelle system
52056
fc458f304f93 added isabelle-process option -o;
wenzelm
parents: 52054
diff changeset
   407
  options for this process, see also \secref{sec:system-options}.
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   408
  Alternatively, option \<^verbatim>\<open>-O\<close> specifies the full environment of
57581
74bbe9317aa4 provide explicit options file -- avoid multiple Scala/JVM invocation;
wenzelm
parents: 57439
diff changeset
   409
  system options as a file in YXML format (according to the Isabelle/Scala
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   410
  function \<^verbatim>\<open>isabelle.Options.encode\<close>).
52056
fc458f304f93 added isabelle-process option -o;
wenzelm
parents: 52054
diff changeset
   411
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 59904
diff changeset
   412
  \<^medskip>
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   413
  The \<^verbatim>\<open>-P\<close> option starts the Isabelle process wrapper
59350
acba5d6fdb2f discontinued fifo channel, always use portable socket;
wenzelm
parents: 58846
diff changeset
   414
  for Isabelle/Scala, with a private protocol running over the specified TCP
acba5d6fdb2f discontinued fifo channel, always use portable socket;
wenzelm
parents: 58846
diff changeset
   415
  socket. Isabelle/ML and Isabelle/Scala provide various programming
acba5d6fdb2f discontinued fifo channel, always use portable socket;
wenzelm
parents: 58846
diff changeset
   416
  interfaces to invoke protocol functions over untyped strings and XML
acba5d6fdb2f discontinued fifo channel, always use portable socket;
wenzelm
parents: 58846
diff changeset
   417
  trees.
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   418
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 59904
diff changeset
   419
  \<^medskip>
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   420
  The \<^verbatim>\<open>-S\<close> option makes the Isabelle process more
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   421
  secure by disabling some critical operations, notably runtime
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   422
  compilation and evaluation of ML source code.
58618
782f0b662cae more cartouches;
wenzelm
parents: 58553
diff changeset
   423
\<close>
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   424
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   425
58618
782f0b662cae more cartouches;
wenzelm
parents: 58553
diff changeset
   426
subsubsection \<open>Examples\<close>
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   427
58618
782f0b662cae more cartouches;
wenzelm
parents: 58553
diff changeset
   428
text \<open>
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   429
  Run an interactive session of the default object-logic (as specified
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   430
  by the @{setting ISABELLE_LOGIC} setting) like this:
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   431
  @{verbatim [display] \<open>isabelle_process\<close>}
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   432
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   433
  Usually @{setting ISABELLE_LOGIC} refers to one of the standard
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   434
  logic images, which are read-only by default.  A writable session
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   435
  --- based on \<^verbatim>\<open>HOL\<close>, but output to \<^verbatim>\<open>Test\<close> (in the
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   436
  directory specified by the @{setting ISABELLE_OUTPUT} setting) ---
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   437
  may be invoked as follows:
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   438
  @{verbatim [display] \<open>isabelle_process HOL Test\<close>}
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   439
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   440
  Ending this session normally (e.g.\ by typing control-D) dumps the
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   441
  whole ML system state into \<^verbatim>\<open>Test\<close> (be prepared for more
47823
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
   442
  than 100\,MB):
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   443
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   444
  The \<^verbatim>\<open>Test\<close> session may be continued later (still in
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   445
  writable state) by: @{verbatim [display] \<open>isabelle_process Test\<close>}
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   446
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   447
  A read-only \<^verbatim>\<open>Test\<close> session may be started by:
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   448
  @{verbatim [display] \<open>isabelle_process -r Test\<close>}
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   449
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 59904
diff changeset
   450
  \<^bigskip>
eb2463fc4d7b more symbols;
wenzelm
parents: 59904
diff changeset
   451
  The next example demonstrates batch execution of Isabelle.
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   452
  We retrieve the \<^verbatim>\<open>Main\<close> theory value from the theory loader
47823
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
   453
  within ML (observe the delicate quoting rules for the Bash shell
4fad76e6f4ba some manual updates;
wenzelm
parents: 47661
diff changeset
   454
  vs.\ ML):
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   455
  @{verbatim [display] \<open>isabelle_process -e 'Thy_Info.get_theory "Main";' -q -r HOL\<close>}
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   456
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   457
  Note that the output text will be interspersed with additional junk
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   458
  messages by the ML runtime environment.  The \<^verbatim>\<open>-W\<close> option
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   459
  allows to communicate with the Isabelle process via an external
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   460
  program in a more robust fashion.
58618
782f0b662cae more cartouches;
wenzelm
parents: 58553
diff changeset
   461
\<close>
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   462
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   463
58618
782f0b662cae more cartouches;
wenzelm
parents: 58553
diff changeset
   464
section \<open>The Isabelle tool wrapper \label{sec:isabelle-tool}\<close>
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   465
58618
782f0b662cae more cartouches;
wenzelm
parents: 58553
diff changeset
   466
text \<open>
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   467
  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
   468
  wrapper --- @{executable isabelle}:
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   469
  @{verbatim [display]
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   470
\<open>Usage: isabelle TOOL [ARGS ...]
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   471
28506
3ab515ee4e6f tuned isabelle usage;
wenzelm
parents: 28504
diff changeset
   472
  Start Isabelle tool NAME with ARGS; pass "-?" for tool specific help.
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   473
48858
86816c61b5ca tuned message;
wenzelm
parents: 48844
diff changeset
   474
Available tools:
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   475
  ...\<close>}
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   476
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   477
  In principle, Isabelle tools are ordinary executable scripts that
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   478
  are run within the Isabelle settings environment, see
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   479
  \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
   480
  @{executable isabelle} from the directories listed in the @{setting
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   481
  ISABELLE_TOOLS} setting.  Do not try to call the scripts directly
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   482
  from the shell.  Neither should you add the tool directories to your
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   483
  shell's search path!
58618
782f0b662cae more cartouches;
wenzelm
parents: 58553
diff changeset
   484
\<close>
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   485
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   486
58618
782f0b662cae more cartouches;
wenzelm
parents: 58553
diff changeset
   487
subsubsection \<open>Examples\<close>
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   488
58618
782f0b662cae more cartouches;
wenzelm
parents: 58553
diff changeset
   489
text \<open>Show the list of available documentation of the Isabelle
48813
wenzelm
parents: 48602
diff changeset
   490
  distribution:
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   491
  @{verbatim [display] \<open>isabelle doc\<close>}
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   492
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   493
  View a certain document as follows:
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   494
  @{verbatim [display] \<open>isabelle doc system\<close>}
28238
398bf960d3d4 misc tuning and modernization;
wenzelm
parents: 28223
diff changeset
   495
48813
wenzelm
parents: 48602
diff changeset
   496
  Query the Isabelle settings environment:
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   497
  @{verbatim [display] \<open>isabelle getenv ISABELLE_HOME_USER\<close>}
58618
782f0b662cae more cartouches;
wenzelm
parents: 58553
diff changeset
   498
\<close>
28215
a1cfc43ac47d converted basics.tex to theory file;
wenzelm
parents:
diff changeset
   499
28223
wenzelm
parents: 28215
diff changeset
   500
end