doc-src/TutorialI/Misc/document/pairs.tex
author chaieb
Wed, 19 May 2004 11:23:59 +0200
changeset 14758 af3b71a46a1c
parent 13778 61272514e3b5
child 17056 05fc32a23b8b
permissions -rw-r--r--
A new implementation for presburger arithmetic following the one suggested in technical report Chaieb Amine and Tobias Nipkow. It is generic an smaller. the tactic has also changed and allows the abstaction over fuction occurences whose type is nat or int.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
9722
a5f86aed785b *** empty log message ***
nipkow
parents: 9721
diff changeset
     1
%
a5f86aed785b *** empty log message ***
nipkow
parents: 9721
diff changeset
     2
\begin{isabellebody}%
9924
3370f6aa3200 updated;
wenzelm
parents: 9792
diff changeset
     3
\def\isabellecontext{pairs}%
11866
fbd097aec213 updated;
wenzelm
parents: 11456
diff changeset
     4
\isamarkupfalse%
9541
d17c0b34d5c8 *** empty log message ***
nipkow
parents: 9145
diff changeset
     5
%
d17c0b34d5c8 *** empty log message ***
nipkow
parents: 9145
diff changeset
     6
\begin{isamarkuptext}%
11428
332347b9b942 tidying the index
paulson
parents: 10839
diff changeset
     7
\label{sec:pairs}\index{pairs and tuples}
332347b9b942 tidying the index
paulson
parents: 10839
diff changeset
     8
HOL also has ordered pairs: \isa{($a@1$,$a@2$)} is of type $\tau@1$
10538
d1bf9ca9008d *** empty log message ***
nipkow
parents: 10187
diff changeset
     9
\indexboldpos{\isasymtimes}{$Isatype} $\tau@2$ provided each $a@i$ is of type
11428
332347b9b942 tidying the index
paulson
parents: 10839
diff changeset
    10
$\tau@i$. The functions \cdx{fst} and
332347b9b942 tidying the index
paulson
parents: 10839
diff changeset
    11
\cdx{snd} extract the components of a pair:
10538
d1bf9ca9008d *** empty log message ***
nipkow
parents: 10187
diff changeset
    12
 \isa{fst($x$,$y$) = $x$} and \isa{snd($x$,$y$) = $y$}. Tuples
9933
9feb1e0c4cb3 *** empty log message ***
nipkow
parents: 9924
diff changeset
    13
are simulated by pairs nested to the right: \isa{($a@1$,$a@2$,$a@3$)} stands
9feb1e0c4cb3 *** empty log message ***
nipkow
parents: 9924
diff changeset
    14
for \isa{($a@1$,($a@2$,$a@3$))} and $\tau@1 \times \tau@2 \times \tau@3$ for
9feb1e0c4cb3 *** empty log message ***
nipkow
parents: 9924
diff changeset
    15
$\tau@1 \times (\tau@2 \times \tau@3)$. Therefore we have
9feb1e0c4cb3 *** empty log message ***
nipkow
parents: 9924
diff changeset
    16
\isa{fst(snd($a@1$,$a@2$,$a@3$)) = $a@2$}.
9541
d17c0b34d5c8 *** empty log message ***
nipkow
parents: 9145
diff changeset
    17
10539
5929460a41df *** empty log message ***
nipkow
parents: 10538
diff changeset
    18
Remarks:
5929460a41df *** empty log message ***
nipkow
parents: 10538
diff changeset
    19
\begin{itemize}
5929460a41df *** empty log message ***
nipkow
parents: 10538
diff changeset
    20
\item
11428
332347b9b942 tidying the index
paulson
parents: 10839
diff changeset
    21
There is also the type \tydx{unit}, which contains exactly one
11456
7eb63f63e6c6 revisions and indexing
paulson
parents: 11428
diff changeset
    22
element denoted by~\cdx{()}.  This type can be viewed
10539
5929460a41df *** empty log message ***
nipkow
parents: 10538
diff changeset
    23
as a degenerate product with 0 components.
5929460a41df *** empty log message ***
nipkow
parents: 10538
diff changeset
    24
\item
5929460a41df *** empty log message ***
nipkow
parents: 10538
diff changeset
    25
Products, like type \isa{nat}, are datatypes, which means
10538
d1bf9ca9008d *** empty log message ***
nipkow
parents: 10187
diff changeset
    26
in particular that \isa{induct{\isacharunderscore}tac} and \isa{case{\isacharunderscore}tac} are applicable to
10539
5929460a41df *** empty log message ***
nipkow
parents: 10538
diff changeset
    27
terms of product type.
10839
1f93f5a27de6 *** empty log message ***
nipkow
parents: 10795
diff changeset
    28
Both replace the term by a pair of variables.
10539
5929460a41df *** empty log message ***
nipkow
parents: 10538
diff changeset
    29
\item
10795
9e888d60d3e5 minor edits to Chapters 1-3
paulson
parents: 10543
diff changeset
    30
Tuples with more than two or three components become unwieldy;
9e888d60d3e5 minor edits to Chapters 1-3
paulson
parents: 10543
diff changeset
    31
records are preferable.
10539
5929460a41df *** empty log message ***
nipkow
parents: 10538
diff changeset
    32
\end{itemize}
5929460a41df *** empty log message ***
nipkow
parents: 10538
diff changeset
    33
For more information on pairs and records see Chapter~\ref{ch:more-types}.%
9541
d17c0b34d5c8 *** empty log message ***
nipkow
parents: 9145
diff changeset
    34
\end{isamarkuptext}%
11866
fbd097aec213 updated;
wenzelm
parents: 11456
diff changeset
    35
\isamarkuptrue%
fbd097aec213 updated;
wenzelm
parents: 11456
diff changeset
    36
\isamarkupfalse%
9722
a5f86aed785b *** empty log message ***
nipkow
parents: 9721
diff changeset
    37
\end{isabellebody}%
9145
9f7b8de5bfaf updated;
wenzelm
parents: 8749
diff changeset
    38
%%% Local Variables:
9f7b8de5bfaf updated;
wenzelm
parents: 8749
diff changeset
    39
%%% mode: latex
9f7b8de5bfaf updated;
wenzelm
parents: 8749
diff changeset
    40
%%% TeX-master: "root"
9f7b8de5bfaf updated;
wenzelm
parents: 8749
diff changeset
    41
%%% End: