\documentclass[11pt,a4paper]{book}
\usepackage{isabelle,isabellesym}
\usepackage{graphicx}
\graphicspath {{figures/}}

% further packages required for unusual symbols (see also
% isabellesym.sty), use only when needed


\usepackage{latexsym}
\usepackage{amssymb}
  %for \<leadsto>, \<box>, \<diamond>, \<sqsupset>, \<mho>, \<Join>,
  %\<lhd>, \<lesssim>, \<greatersim>, \<lessapprox>, \<greaterapprox>,
  %\<triangleq>, \<yen>, \<lozenge>

%\usepackage[greek,english]{babel}
  %option greek for \<euro>
  %option english (default language) for \<guillemotleft>, \<guillemotright>

%\usepackage[latin1]{inputenc}
  %for \<onesuperior>, \<onequarter>, \<twosuperior>, \<onehalf>,
  %\<threesuperior>, \<threequarters>, \<degree>

%\usepackage[only,bigsqcap]{stmaryrd}
  %for \<Sqinter>

%\usepackage{eufrak}
  %for \<AA> ... \<ZZ>, \<aa> ... \<zz> (also included in amssymb)

%\usepackage{textcomp}
  %for \<cent>, \<currency>

% this should be the last package used
\usepackage{pdfsetup}

% urls in roman style, theory text in math-similar italics
\urlstyle{rm}
\isabellestyle{it}
\newcommand{\HOL}[1]{\verb{HOL}}
\newcommand{\eg}[1]{e.g.}
\renewcommand{\isasymdegree}{XXX}


\begin{document}

\title{Type and Proof Support for SI Units}
\author{ Simon Foster \and Burkhart Wolff}
\maketitle

\textbf{ Abstract } 
The International System of Units 
(SI, abbreviated from the French Syst\`eme international (d’unit\'es)) is the modern form of 
the metric system and is the most widely used system of measurement. It comprises a coherent 
system of units of measurement built on seven base units, which are the second, metre, kilogram, 
ampere, kelvin, mole, candela, and a set of twenty prefixes to the unit names and unit symbols 
that may be used when specifying multiples and fractions of the units. The system also specifies 
names for 22 derived units, such as lumen and watt, for other common physical quantities. 

This theory represents a formal model of SI Units together with a deep integration in Isabelle's
type system: unitswere represented in a way that they have a \emph{unit type} comprising its 
\emph{magnitude type} and its physical \emph{dimension}. Congruences on dimensions were supported. 
Our construction is validated by a test-set of known equivalences between SI Units.
Moreover, the presented theory can be used for type-safe conversions between the SI system and
others, like the British Imperial System (BIS).

\tableofcontents

% sane default for proof documents
\parindent 0pt\parskip 0.5ex


\chapter{SI Units in Isabelle \\ An Introduction}

The International System of Units (SI, abbreviated from the French
Système international (d'unités)) is the modern form of the metric
system and is the most widely used system of measurement. It comprises
a coherent system of units of measurement built on seven base units,
which are the second, metre, kilogram, ampere, kelvin, mole, candela,
and a set of twenty prefixes to the unit names and unit symbols that
may be used when specifying multiples and fractions of the units.
The system also specifies names for 22 derived units, such as lumen and
watt, for other common physical quantities.

(cited from \url{https://en.wikipedia.org/wiki/International_System_of_Units}).

In more detail, the SI provides the following fundamental concepts:

%
\begin{enumerate}%
\item \emph{quantities}, i.e. \emph{time}, \emph{length}, \emph{mass}, \emph{electric current},
\emph{temperature}, \emph{amount of substance},\emph{luminous intensity},
and other derived quantities such as \emph{volume};

\item \emph{dimensions}, i.e. a set of the symbols  \isa{T}, \isa{L}, \isa{M}, \isa{I},  \isa{{\isasymTheta}}, \isa{N}, \isa{J}  corresponding
to the above mentioned base quantities,  indexed by an integer exponent
(dimensions were also called \emph{base unit names} or just \emph{base units});

\item \emph{magnitudes}, i.e. a factor or \emph{prefix}
(typically integers, reals, vectors on real or complex numbers);

\item \emph{units}, which are basically pairs of magnitudes and dimensions denoting quantities.
\end{enumerate}

Note that \emph{quantities} are understood as idealized  \emph{physical concepts}, and are sharply 
distinguished from  \emph{units} representing \emph{a means to measure} them. The difference is 
roughly similar between words (or: symbols) and notions. This distinction reflects the fact that
these concepts have been at times heavily questioned in the history of physics; the interested
reader is referred to the debate around the "relativistic mass" at in the twenties of the last century.

The purpose of the presented theory is to model SI units with polymorphic magnitudes inside the
Isabelle/HOL\cite{nipkow.ea:isabelle:2002} system. The objective of our construction is to
reflect the types of the magnitudes as well as their dimensions in order to allow type-safe 
calculations on SI units.

As a result, it is possible to express "4500.0 kilogram times meter per second square" which can
have the type 
\isa{{\isasymreal}\ {\isacharbrackleft}M\ \isactrlsup {\isachardot}\ L\ \isactrlsup 
 {\isachardot}\ T\isactrlsup {\isacharminus}\isactrlsup {\isadigit{3}} 
 \isactrlsup {\isachardot}\   T\isactrlsup {\isadigit{1}}{\isacharbrackright}}. 
For units of this type we can infer that this corresponds to the derived unit "4.5 kN" (kilo-Newton) 
 of type \isa{{\isasymreal}\ {\isacharbrackleft}M\ \isactrlsup {\isachardot}\ L\ \isactrlsup 
 {\isachardot}\ T\isactrlsup {\isacharminus}\isactrlsup {\isadigit{2}}{\isacharbrackright}}.  

This is an attempt to model the standard SI system and its derived entities (cf.
\url{https://www.quora.com/What-are-examples-of-SI-units}),
both from a type-checking as well as a proof-support perspective.
These design objectives are for the case of Isabelle system somewhat contradictory.
Since the Isabelle type system follows the Curry-style paradigm, which can be 
characterized by: "be as implicit as possible, inference as automatic as possible", it is not
possible to do computations on type-terms (in contrast to, for example, Coq). We therefore
need a more involved construction using Isabelle's type-classes to establish a semantic 
interpretation on certain classes of types. This paves the way to derive rules that
establish and exploit type isomorphisms implicitely. For example, the implicit
type isomorhisms for the dimensions $T^{-2} * T$ and $T^{-1}$ is dealt with appropriate
rules on terms and a special form of equivalence. 

Our construction proceeds in three phases:
\begin{enumerate}%
\item We construct a type \isa{Dimension} which is basically a "semantic representation" or
"semantic domain" of all SI dimensions. Since SI-types have an interpretation in this domain,
it serves to give semantics to type-constructors by operations on this domain, too.
We construct a multiplicative group on it.

\item From \isa{Dimension} we build a language of type-constructors of \isa{dimS}-types, 
 captured in a type class \isa{dim-types} giving it a pseudo-inductive structure. Types of
 this class are required to have  an interpretation function into \isa{Dimension}'s, which
 allows for establishing equivalences on \isa{dim-types}.
      
\item We construct a SI Unit-type as a pair of a polymorphic magnitude and a dimension type.
  This type will be inhabited by all basic SI units and predicates expressing their relationship.
\end{enumerate}%

On this basis, an algebra of SI units can be derived; while types can not be "touched" inside
an Isabelle/HOL logic, it is possible to transform unit types by applying rules of this algebra.
Tactical support over this algebra is provided enabling the construction of normal forms on 
both units and their type.  

\subsubsection{Previous Attempts.} The work of \cite{HayesBrendan95} represents to our knowledge a
first attempt to formalize SI units in Z, thus a similar language of HOL. While our typing
representation is more rigourous due to the use of type-classes, this works lacks any attempt
to support formal and automated deduction on Si unit equivalences.

MORE TO COME.

% generated text of all theories
\chapter{Appendix: The Theories}

\input{session}

% optional bibliography
\bibliographystyle{abbrv}
\bibliography{adb-long,root}

\end{document}

%%% Local Variables:
%%% mode: latex
%%% TeX-master: t
%%% End:
