1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
|
% appendix.tex %
% Principal lemmas %
% ----------------------------------------------------------------------------
\section{Principal lemmas}
\label{PrincipalLemmas}
Binomial coefficients, \verb@CHOOSE@:
\begin{session}
\begin{verbatim}
CHOOSE_LESS = |- !n k. n < k ==> (CHOOSE n k = 0)
CHOOSE_SAME = |- !n. CHOOSE n n = 1
\end{verbatim}
\end{session}
Algebraic laws:
\begin{session}
\begin{verbatim}
RIGHT_CANCELLATION =
|- !plus. Group plus ==> (!a b c. (plus b a = plus c a) ==> (b = c))
RING_0 =
|- !plus times.
RING(plus,times) ==>
(!a. times(Id plus)a = Id plus) /\ (!a. times a(Id plus) = Id plus)
\end{verbatim}
\end{session}
\newpage
Scalar powers:
\begin{session}
\begin{verbatim}
POWER_1 = |- !plus. MONOID plus ==> (POWER plus 1 a = a)
POWER_DISTRIB =
|- !plus times.
RING(plus,times) ==>
(!a b n. times a(POWER plus n b) = POWER plus n(times a b))
POWER_ADD =
|- !plus.
MONOID plus ==>
(!m n a. POWER plus(m + n)a = plus(POWER plus m a)(POWER plus n a))
\end{verbatim}
\end{session}
Reduction of lists:
\begin{session}
\begin{verbatim}
REDUCE_APPEND =
|- !plus.
MONOID plus ==>
(!as bs.
REDUCE plus(APPEND as bs) = plus(REDUCE plus as)(REDUCE plus bs))
REDUCE_MAP_MULT =
|- !plus times.
RING(plus,times) ==>
(!a bs. REDUCE plus(MAP(times a)bs) = times a(REDUCE plus bs))
REDUCE_MAP =
|- !plus.
MONOID plus /\ COMMUTATIVE plus ==>
(!f g as.
REDUCE plus(MAP(\k. plus(f k)(g k))as) =
plus(REDUCE plus(MAP f as))(REDUCE plus(MAP g as)))
\end{verbatim}
\end{session}
Subranges of the natural numbers:
\begin{session}
\begin{verbatim}
RANGE_TOP = |- !n m. RANGE m(SUC n) = APPEND(RANGE m n)[m + n]
RANGE_SHIFT = |- !n m. RANGE(SUC m)n = MAP SUC(RANGE m n)
\end{verbatim}
\end{session}
\newpage
$\Sigma$-notation:
\begin{session}
\begin{verbatim}
SIGMA_ID = |- !plus m f. SIGMA(plus,m,0)f = Id plus
SIGMA_LEFT_SPLIT =
|- !plus m n f. SIGMA(plus,m,SUC n)f = plus(f m)(SIGMA(plus,SUC m,n)f)
SIGMA_RIGHT_SPLIT =
|- !plus.
MONOID plus ==>
(!m n f. SIGMA(plus,m,SUC n)f = plus(SIGMA(plus,m,n)f)(f(m + n)))
SIGMA_SHIFT =
|- !plus m n f. SIGMA(plus,SUC m,n)f = SIGMA(plus,m,n)(f o SUC)
SIGMA_MULT_COMM =
|- !plus times.
RING(plus,times) ==>
(!m n a f.
times a(SIGMA(plus,m,n)f) = SIGMA(plus,m,n)((times a) o f))
SIGMA_PLUS_COMM =
|- !plus.
MONOID plus /\ COMMUTATIVE plus ==>
(!f g m n.
plus(SIGMA(plus,m,n)f)(SIGMA(plus,m,n)g) =
SIGMA(plus,m,n)(\k. plus(f k)(g k)))
SIGMA_EXT =
|- !plus.
MONOID plus ==>
(!f g m n.
(!k. k < n ==> (f(m + k) = g(m + k))) ==>
(SIGMA(plus,m,n)f = SIGMA(plus,m,n)g))
\end{verbatim}
\end{session}
Terms from the Binomial Theorem:
\begin{session}
\begin{verbatim}
BINTERM_0 =
|- !plus times.
RING(plus,times) ==>
(!a b n. BINTERM plus times a b n 0 = POWER times n a)
BINTERM_n =
|- !plus times.
RING(plus,times) ==>
(!a b n. BINTERM plus times a b n n = POWER times n b)
\end{verbatim}
\end{session}
|