doc-src/System/Thy/document/Scala.tex
author bulwahn
Tue, 08 May 2012 14:31:03 +0200
changeset 47893 4cf901b1089a
parent 47825 4f25960417ae
child 48602 342ca8f3197b
permissions -rw-r--r--
specialised fact in the Record theory should not be appear in proofs discovered by sledgehammer
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
47825
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
     1
%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
     2
\begin{isabellebody}%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
     3
\def\isabellecontext{Scala}%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
     4
%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
     5
\isadelimtheory
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
     6
%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
     7
\endisadelimtheory
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
     8
%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
     9
\isatagtheory
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    10
\isacommand{theory}\isamarkupfalse%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    11
\ Scala\isanewline
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    12
\isakeyword{imports}\ Base\isanewline
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    13
\isakeyword{begin}%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    14
\endisatagtheory
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    15
{\isafoldtheory}%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    16
%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    17
\isadelimtheory
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    18
%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    19
\endisadelimtheory
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    20
%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    21
\isamarkupchapter{Isabelle/Scala development tools%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    22
}
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    23
\isamarkuptrue%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    24
%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    25
\begin{isamarkuptext}%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    26
Isabelle/ML and Isabelle/Scala are the two main language
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    27
environments for Isabelle tool implementations.  There are some basic
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    28
command-line tools to work with the underlying Java Virtual Machine,
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    29
the Scala toplevel and compiler.  Note that Isabelle/jEdit
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    30
(\secref{sec:tool-tty}) provides a Scala Console for interactive
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    31
experimentation within the running application.%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    32
\end{isamarkuptext}%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    33
\isamarkuptrue%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    34
%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    35
\isamarkupsection{Java Runtime Environment within Isabelle \label{sec:tool-java}%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    36
}
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    37
\isamarkuptrue%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    38
%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    39
\begin{isamarkuptext}%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    40
The Isabelle \indexdef{}{tool}{java}\hypertarget{tool.java}{\hyperlink{tool.java}{\mbox{\isa{\isatt{java}}}}} utility is a direct wrapper for
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    41
  the Java Runtime Environment, within the regular Isabelle settings
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    42
  environment (\secref{sec:settings}).  The command line arguments are
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    43
  that of the underlying Java version.  It is run in \verb|-server| mode if possible, to improve performance (at the cost of
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    44
  extra startup time).
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    45
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    46
  The \verb|java| executable is the one within \hyperlink{setting.ISABELLE-JDK-HOME}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}JDK{\isaliteral{5F}{\isacharunderscore}}HOME}}}}, according to the standard directory layout for
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    47
  official JDK distributions.  The class loader is augmented such that
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    48
  the name space of \verb|Isabelle/Pure.jar| is available,
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    49
  which is the main Isabelle/Scala module.
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    50
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    51
  For example, the following command-line invokes the main method of
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    52
  class \verb|isabelle.GUI_Setup|, which opens a windows with
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    53
  some diagnostic information about the Isabelle environment:
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    54
\begin{alltt}
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    55
  isabelle java isabelle.GUI_Setup
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    56
\end{alltt}%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    57
\end{isamarkuptext}%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    58
\isamarkuptrue%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    59
%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    60
\isamarkupsection{Scala toplevel \label{sec:tool-scala}%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    61
}
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    62
\isamarkuptrue%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    63
%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    64
\begin{isamarkuptext}%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    65
The Isabelle \indexdef{}{tool}{scala}\hypertarget{tool.scala}{\hyperlink{tool.scala}{\mbox{\isa{\isatt{scala}}}}} utility is a direct wrapper for
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    66
  the Scala toplevel; see also \hyperlink{tool.java}{\mbox{\isa{\isatt{java}}}} above.  The command line
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    67
  arguments are that of the underlying Scala version.
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    68
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    69
  This allows to interact with Isabelle/Scala in TTY mode like this:
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    70
\begin{alltt}
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    71
  isabelle scala
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    72
  scala> isabelle.Isabelle_System.getenv("ISABELLE_HOME")
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    73
  scala> isabelle.Isabelle_System.find_logics()
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    74
\end{alltt}%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    75
\end{isamarkuptext}%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    76
\isamarkuptrue%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    77
%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    78
\isamarkupsection{Scala compiler \label{sec:tool-scalac}%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    79
}
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    80
\isamarkuptrue%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    81
%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    82
\begin{isamarkuptext}%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    83
The Isabelle \indexdef{}{tool}{scalac}\hypertarget{tool.scalac}{\hyperlink{tool.scalac}{\mbox{\isa{\isatt{scalac}}}}} utility is a direct wrapper
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    84
  for the Scala compiler; see also \hyperlink{tool.scala}{\mbox{\isa{\isatt{scala}}}} above.  The command
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    85
  line arguments are that of the underlying Scala version.
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    86
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    87
  This allows to compile further Scala modules, depending on existing
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    88
  Isabelle/Scala functionality.  The resulting class or jar files can
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    89
  be added to the \hyperlink{setting.CLASSPATH}{\mbox{\isa{\isatt{CLASSPATH}}}} via the \verb|classpath|
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    90
  Bash function that is provided by the Isabelle process environment.
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    91
  Thus add-on components can register themselves in a modular manner,
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    92
  see also \secref{sec:components}.
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    93
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    94
  Note that jEdit (\secref{sec:tool-jedit}) has its own mechanisms for
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    95
  adding plugin components, which needs special attention since
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    96
  it overrides the standard Java class loader.%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    97
\end{isamarkuptext}%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    98
\isamarkuptrue%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    99
%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
   100
\isadelimtheory
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
   101
%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
   102
\endisadelimtheory
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
   103
%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
   104
\isatagtheory
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
   105
\isacommand{end}\isamarkupfalse%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
   106
%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
   107
\endisatagtheory
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
   108
{\isafoldtheory}%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
   109
%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
   110
\isadelimtheory
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
   111
%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
   112
\endisadelimtheory
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
   113
\isanewline
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
   114
\end{isabellebody}%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
   115
%%% Local Variables:
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
   116
%%% mode: latex
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
   117
%%% TeX-master: "root"
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
   118
%%% End: