diff --git a/help/C/gel-function-list.xml b/help/C/gel-function-list.xml
index a89d86d..d7f048d 100644
--- a/help/C/gel-function-list.xml
+++ b/help/C/gel-function-list.xml
@@ -21,7 +21,7 @@ To get help on a specific function from the console type:
          <term>load</term>
          <listitem>
           <synopsis>load "file.gel"</synopsis>
-          <para>Load a file into the interpretor.  The file will execute
+          <para>Load a file into the interpretor. The file will execute
 as if it were typed onto the command line.</para>
          </listitem>
         </varlistentry>
@@ -54,7 +54,7 @@ as if it were typed onto the command line.</para>
          <term>plugin</term>
          <listitem>
           <synopsis>plugin plugin_name</synopsis>
-          <para>Load a plugin.  Plugin of that name must be installed on the system
+          <para>Load a plugin. Plugin of that name must be installed on the system
 in the proper directory.</para>
          </listitem>
         </varlistentry>
@@ -70,10 +70,10 @@ in the proper directory.</para>
           <synopsis>AskButtons (query)</synopsis>
           <synopsis>AskButtons (query, button1, ...)</synopsis>
 	  <para>Asks a question and presents a list of buttons to the user (or
-a menu of options in text mode).  Returns the 1-based index of the button
-pressed.  That is, returns 1 if the first button was pressed, 2 if the second
-button was pressed, and so on.  If the user closes the window (or simply hits
-enter in text mode), then <constant>null</constant> is returned.  The execution
+a menu of options in text mode). Returns the 1-based index of the button
+pressed. That is, returns 1 if the first button was pressed, 2 if the second
+button was pressed, and so on. If the user closes the window (or simply hits
+enter in text mode), then <constant>null</constant> is returned. The execution
 of the program is blocked until the user responds.</para>
          </listitem>
         </varlistentry>
@@ -84,9 +84,9 @@ of the program is blocked until the user responds.</para>
           <synopsis>AskString (query)</synopsis>
           <synopsis>AskString (query, default)</synopsis>
           <para>Asks a question and lets the user enter a string which
-it then returns.  If the user cancels or closes the window, then
-<constant>null</constant> is returned.  The execution of the program
-is blocked until the user responds.  If <varname>default</varname> is given, then it is pre-typed in for the user to just press enter on.</para>
+it then returns. If the user cancels or closes the window, then
+<constant>null</constant> is returned. The execution of the program
+is blocked until the user responds. If <varname>default</varname> is given, then it is pre-typed in for the user to just press enter on.</para>
          </listitem>
         </varlistentry>
 
@@ -102,7 +102,7 @@ is blocked until the user responds.  If <varname>default</varname> is given, the
          <term>ComposePower</term>
          <listitem>
           <synopsis>ComposePower (f,n,x)</synopsis>
-          <para>Compose and execute a function with itself <varname>n</varname> times, passing <varname>x</varname> as argument.   Returning <varname>x</varname> if
+          <para>Compose and execute a function with itself <varname>n</varname> times, passing <varname>x</varname> as argument. Returning <varname>x</varname> if
 <varname>n</varname> equals 0.
 		Example:
           <screen><prompt>genius></prompt> <userinput>function f(x) = x^2 ;</userinput>
@@ -128,9 +128,9 @@ is blocked until the user responds.  If <varname>default</varname> is given, the
          <term>GetCurrentModulo</term>
          <listitem>
           <synopsis>GetCurrentModulo</synopsis>
-          <para>Get current modulo from the context outside the function.  That is, if outside of
+          <para>Get current modulo from the context outside the function. That is, if outside of
 the function was executed in modulo (using <literal>mod</literal>) then this returns what
-this modulo was.  Normally the body of the function called is not executed in modular arithmetic,
+this modulo was. Normally the body of the function called is not executed in modular arithmetic,
 and this builtin function makes it possible to make GEL functions aware of modular arithmetic.</para>
          </listitem>
         </varlistentry>
@@ -152,7 +152,7 @@ and this builtin function makes it possible to make GEL functions aware of modul
 	    <constant>true</constant>) from a boolean value.
 	    <varname>bval</varname> can also be a number in which case a
 	    non-zero value will be interpreted as <constant>true</constant> and
-	    zero will be interpretted as <constant>false</constant>.
+	    zero will be interpreted as <constant>false</constant>.
 	  </para>
          </listitem>
         </varlistentry>
@@ -169,8 +169,8 @@ and this builtin function makes it possible to make GEL functions aware of modul
          <term>IsDefined</term>
          <listitem>
           <synopsis>IsDefined (id)</synopsis>
-          <para>Check if an id is defined.  You should pass a string or
-	   and identifier.  If you pass a matrix, each entry will be
+          <para>Check if an id is defined. You should pass a string or
+	   and identifier. If you pass a matrix, each entry will be
 	   evaluated separately and the matrix should contain strings
 	   or identifiers.</para>
          </listitem>
@@ -196,7 +196,7 @@ and this builtin function makes it possible to make GEL functions aware of modul
          <term>IsFunctionRef</term>
          <listitem>
           <synopsis>IsFunctionRef (arg)</synopsis>
-          <para>Check if argument is a function reference.  This includes variable
+          <para>Check if argument is a function reference. This includes variable
 references.</para>
          </listitem>
         </varlistentry>
@@ -205,7 +205,7 @@ references.</para>
          <term>IsMatrix</term>
          <listitem>
           <synopsis>IsMatrix (arg)</synopsis>
-          <para>Check if argument is a matrix.  Even though <constant>null</constant> is
+          <para>Check if argument is a matrix. Even though <constant>null</constant> is
 sometimes considered an empty matrix, the function <function>IsMatrix</function> does
 not consider <constant>null</constant> a matrix.</para>
          </listitem>
@@ -239,8 +239,8 @@ not consider <constant>null</constant> a matrix.</para>
          <term>Parse</term>
          <listitem>
           <synopsis>Parse (str)</synopsis>
-          <para>Parses but does not evaluate a string.  Note that certain
-	    precomputation is done during the parsing stage.</para>
+          <para>Parses but does not evaluate a string. Note that certain
+	    pre-computation is done during the parsing stage.</para>
          </listitem>
         </varlistentry>
 
@@ -250,7 +250,7 @@ not consider <constant>null</constant> a matrix.</para>
           <synopsis>SetFunctionFlags (id,flags...)</synopsis>
           <para>Set flags for a function, currently <literal>"PropagateMod"</literal> and <literal>"NoModuloArguments"</literal>.
 If <literal>"PropagateMod"</literal> is set, then the body of the function is evaluated in modular arithmetic when the function
-is called inside a block that was evaluated using modular arithmetic (using <literal>mod</literal>).  If
+is called inside a block that was evaluated using modular arithmetic (using <literal>mod</literal>). If
 <literal>"NoModuloArguments"</literal>, then the arguments of the function are never evaluated using modular arithmetic.
  </para>
          </listitem>
@@ -326,7 +326,7 @@ is called inside a block that was evaluated using modular arithmetic (using <lit
          <term>print</term>
          <listitem>
           <synopsis>print (str)</synopsis>
-          <para>Prints an expression and then print a newline.  The argument <varname>str</varname> can be any expression.  It is
+          <para>Prints an expression and then print a newline. The argument <varname>str</varname> can be any expression. It is
 made into a string before being printed.</para>
          </listitem>
         </varlistentry>
@@ -335,7 +335,7 @@ made into a string before being printed.</para>
          <term>printn</term>
          <listitem>
           <synopsis>printn (str)</synopsis>
-          <para>Prints an expression without a trailing newline.  The argument <varname>str</varname> can be any expression.  It is
+          <para>Prints an expression without a trailing newline. The argument <varname>str</varname> can be any expression. It is
 made into a string before being printed.</para>
          </listitem>
         </varlistentry>
@@ -344,7 +344,7 @@ made into a string before being printed.</para>
          <term>protect</term>
          <listitem>
           <synopsis>protect (id)</synopsis>
-          <para>Protect a variable from being modified.  This is used on the internal GEL functions to
+          <para>Protect a variable from being modified. This is used on the internal GEL functions to
 avoid them being accidentally overridden.</para>
          </listitem>
         </varlistentry>
@@ -354,8 +354,8 @@ avoid them being accidentally overridden.</para>
          <listitem>
           <synopsis>ProtectAll ()</synopsis>
           <para>Protect all currently defined variables, parameters and
-functions from being modified.  This is used on the internal GEL functions to
-avoid them being accidentally overridden.  Normally &app; considers
+functions from being modified. This is used on the internal GEL functions to
+avoid them being accidentally overridden. Normally &app; considers
 unprotected variables as user defined.</para>
          </listitem>
         </varlistentry>
@@ -364,7 +364,7 @@ unprotected variables as user defined.</para>
          <term>set</term>
          <listitem>
           <synopsis>set (id,val)</synopsis>
-          <para>Set a global variable.  The <varname>id</varname>
+          <para>Set a global variable. The <varname>id</varname>
             can be either a string or a quoted identifier as follows.
 	    For example:
 	    <programlisting>set(`x,1)
@@ -378,7 +378,7 @@ unprotected variables as user defined.</para>
          <term>string</term>
          <listitem>
           <synopsis>string (s)</synopsis>
-          <para>Make a string.  This will make a string out of any argument.</para>
+          <para>Make a string. This will make a string out of any argument.</para>
          </listitem>
         </varlistentry>
 
@@ -396,9 +396,9 @@ unprotected variables as user defined.</para>
          <listitem>
           <synopsis>undefine (id)</synopsis>
           <para>Alias: <function>Undefine</function></para>
-          <para>Undefine a variable.  This includes locals and globals,
-	    every value on all context levels is wiped.  This function
-	    should really not be used on local variables.  A vector of
+          <para>Undefine a variable. This includes locals and globals,
+	    every value on all context levels is wiped. This function
+	    should really not be used on local variables. A vector of
 	    identifiers can also be passed to undefine several variables.
           </para>
          </listitem>
@@ -409,9 +409,9 @@ unprotected variables as user defined.</para>
          <listitem>
           <synopsis>UndefineAll ()</synopsis>
 	  <para>Undefine all unprotected global variables
-	    (including functions and parameters).  Normally &app;
+	    (including functions and parameters). Normally &app;
 	    considers protected variables as system defined functions
-	    and variables.  Note that <function>UndefineAll</function>
+	    and variables. Note that <function>UndefineAll</function>
 	    only removes the global definition of symbols not local ones,
 	    so that it may be run from inside other functions safely.
 	  </para>
@@ -439,8 +439,8 @@ unprotected variables as user defined.</para>
          <term>wait</term>
          <listitem>
           <synopsis>wait (secs)</synopsis>
-          <para>Waits a specified number of seconds.  <varname>secs</varname>
-must be nonnegative.  Zero is accepted and nothing happens in this case,
+          <para>Waits a specified number of seconds. <varname>secs</varname>
+must be non-negative. Zero is accepted and nothing happens in this case,
 except possibly user interface events are processed.</para>
          </listitem>
         </varlistentry>
@@ -450,7 +450,7 @@ except possibly user interface events are processed.</para>
          <listitem>
           <synopsis>version</synopsis>
           <para>Returns the version of Genius as a horizontal 3-vector with
-	  major version first, then minor version and finally patchlevel.</para>
+	  major version first, then minor version and finally the patch level.</para>
          </listitem>
         </varlistentry>
 
@@ -656,7 +656,7 @@ display <computeroutput>0.0</computeroutput> instead of the number.
 </para>
 <para>
 Output is never chopped if <function>OutputChopExponent</function> is zero.
-It must be a nonnegative integer.
+It must be a non-negative integer.
 </para>
 <para>
 If you want output always chopped according to
@@ -672,7 +672,7 @@ greater than or equal to
          <term>OutputChopWhenExponent</term>
          <listitem>
           <synopsis>OutputChopWhenExponent = number</synopsis>
-	  <para>When to chop output.  See
+	  <para>When to chop output. See
           <link linkend="gel-function-OutputChopExponent"><function>OutputChopExponent</function></link>.
 </para>
          </listitem>
@@ -687,7 +687,7 @@ greater than or equal to
 	  </para>
 	  <para>
 	    This affects mostly how matrices and fractions are printed out and
-	    is useful for pasting into documents.  For example you can set this
+	    is useful for pasting into documents. For example you can set this
 	    to the latex by:
 	    <programlisting>OutputStyle = "latex"
 </programlisting>
@@ -716,7 +716,7 @@ greater than or equal to
          <listitem>
           <synopsis>SlopefieldTicks = [vertical,horizontal]</synopsis>
           <para>Sets the number of vertical and horizontal ticks in a
-slopefield plot.  (See <link linkend="gel-function-SlopefieldPlot"><function>SlopefieldPlot</function></link>).
+slopefield plot. (See <link linkend="gel-function-SlopefieldPlot"><function>SlopefieldPlot</function></link>).
           </para>
          </listitem>
         </varlistentry>
@@ -769,8 +769,8 @@ slopefield plot.  (See <link linkend="gel-function-SlopefieldPlot"><function>Slo
          <term>VectorfieldNormalized</term>
          <listitem>
           <synopsis>VectorfieldNormalized = true</synopsis>
-          <para>Should the vectorfield plotting have normalized arrow length.  If true, vector fields will only show direction
-	   and not magnitude.  (See <link linkend="gel-function-VectorfieldPlot"><function>VectorfieldPlot</function></link>).
+          <para>Should the vectorfield plotting have normalized arrow length. If true, vector fields will only show direction
+	   and not magnitude. (See <link linkend="gel-function-VectorfieldPlot"><function>VectorfieldPlot</function></link>).
           </para>
          </listitem>
         </varlistentry>
@@ -780,7 +780,7 @@ slopefield plot.  (See <link linkend="gel-function-SlopefieldPlot"><function>Slo
          <listitem>
           <synopsis>VectorfieldTicks = [vertical,horizontal]</synopsis>
           <para>Sets the number of vertical and horizontal ticks in a
-vectorfield plot.  (See <link linkend="gel-function-VectorfieldPlot"><function>VectorfieldPlot</function></link>).
+vectorfield plot. (See <link linkend="gel-function-VectorfieldPlot"><function>VectorfieldPlot</function></link>).
           </para>
          </listitem>
         </varlistentry>
@@ -796,7 +796,7 @@ vectorfield plot.  (See <link linkend="gel-function-VectorfieldPlot"><function>V
          <listitem>
           <synopsis>CatalanConstant</synopsis>
           <para>
-	    Catalan's Constant, approximately 0.915...  It is defined to be the series where terms are <userinput>(-1^k)/((2*k+1)^2)</userinput>, where <varname>k</varname> ranges from 0 to infinity.
+	    Catalan's Constant, approximately 0.915... It is defined to be the series where terms are <userinput>(-1^k)/((2*k+1)^2)</userinput>, where <varname>k</varname> ranges from 0 to infinity.
 	  </para>
           <para>
 	    See
@@ -811,7 +811,7 @@ vectorfield plot.  (See <link linkend="gel-function-VectorfieldPlot"><function>V
           <synopsis>EulerConstant</synopsis>
           <para>Aliases: <function>gamma</function></para>
           <para>
-	    Euler's Constant gamma.  Sometimes called the
+	    Euler's Constant gamma. Sometimes called the
 	    Euler-Mascheroni constant.
 	  </para>
           <para>
@@ -854,9 +854,9 @@ vectorfield plot.  (See <link linkend="gel-function-VectorfieldPlot"><function>V
          <listitem>
           <synopsis>e</synopsis>
           <para>
-	    The base of the natural logarithm.  <userinput>e^x</userinput>
+	    The base of the natural logarithm. <userinput>e^x</userinput>
 	    is the exponential function
-	    <link linkend="gel-function-exp"><function>exp</function></link>.  This is the
+	    <link linkend="gel-function-exp"><function>exp</function></link>. This is the
 	    number approximately 2.71828182846...
 	  </para>
           <para>
@@ -874,7 +874,7 @@ vectorfield plot.  (See <link linkend="gel-function-VectorfieldPlot"><function>V
           <synopsis>pi</synopsis>
           <para>
 	    The number pi, that is the ratio of a circle's circumference
-	    to its diameter.  This is approximately 3.14159265359...
+	    to its diameter. This is approximately 3.14159265359...
 	  </para>
           <para>
 	    See
@@ -898,7 +898,7 @@ vectorfield plot.  (See <link linkend="gel-function-VectorfieldPlot"><function>V
           <para>Aliases: <function>abs</function></para>
           <para>
 	    Absolute value of a number and if <varname>x</varname> is
-	    a complex value the modulus of <varname>x</varname>.  I.e. this
+	    a complex value the modulus of <varname>x</varname>. I.e. this
 	    the distance of <varname>x</varname> to the origin.
 	  </para>
           <para>
@@ -926,7 +926,7 @@ for more information.
          <listitem>
           <synopsis>ComplexConjugate (z)</synopsis>
           <para>Aliases: <function>conj</function> <function>Conj</function></para>
-          <para>Calculates the complex conjugate of the complex number <varname>z</varname>.  If <varname>z</varname> is a vector or matrix,
+          <para>Calculates the complex conjugate of the complex number <varname>z</varname>. If <varname>z</varname> is a vector or matrix,
 all its elements are conjugated.</para>
           <para>
 	    See
@@ -992,8 +992,8 @@ all its elements are conjugated.</para>
          <term>IsComplexRational</term>
          <listitem>
           <synopsis>IsComplexRational (num)</synopsis>
-	  <para>Check if argument is a possibly complex rational number.  That is, if both real and imaginary parts are
-	  given as rational numbers.  Of course rational simply means "not stored as a floating point number."</para>
+	  <para>Check if argument is a possibly complex rational number. That is, if both real and imaginary parts are
+	  given as rational numbers. Of course rational simply means "not stored as a floating point number."</para>
          </listitem>
         </varlistentry>
 
@@ -1022,10 +1022,10 @@ all its elements are conjugated.</para>
          </listitem>
         </varlistentry>
 
-        <varlistentry id="gel-function-IsNonNegativeInteger">
-         <term>IsNonNegativeInteger</term>
+        <varlistentry id="gel-function-Isnon-negativeInteger">
+         <term>Isnon-negativeInteger</term>
          <listitem>
-          <synopsis>IsNonNegativeInteger (num)</synopsis>
+          <synopsis>Isnon-negativeInteger (num)</synopsis>
           <para>Check if argument is a non-negative real integer.</para>
          </listitem>
         </varlistentry>
@@ -1035,7 +1035,7 @@ all its elements are conjugated.</para>
          <listitem>
           <synopsis>IsPositiveInteger (num)</synopsis>
           <para>Aliases: <function>IsNaturalNumber</function></para>
-          <para>Check if argument is a positive real integer.  Note that
+          <para>Check if argument is a positive real integer. Note that
 we accept the convention that 0 is not a natural number.</para>
          </listitem>
         </varlistentry>
@@ -1044,7 +1044,7 @@ we accept the convention that 0 is not a natural number.</para>
          <term>IsRational</term>
          <listitem>
           <synopsis>IsRational (num)</synopsis>
-          <para>Check if argument is a rational number (non-complex).  Of course rational simply means "not stored as a floating point number."</para>
+          <para>Check if argument is a rational number (non-complex). Of course rational simply means "not stored as a floating point number."</para>
          </listitem>
         </varlistentry>
 
@@ -1086,10 +1086,10 @@ we accept the convention that 0 is not a natural number.</para>
          <listitem>
           <synopsis>Sign (x)</synopsis>
           <para>Aliases: <function>sign</function></para>
-          <para>Return the sign of a number.  That is returns
+          <para>Return the sign of a number. That is returns
 <literal>-1</literal> if value is negative,
 <literal>0</literal> if value is zero and
-<literal>1</literal> if value is positive.  If <varname>x</varname> is a complex
+<literal>1</literal> if value is positive. If <varname>x</varname> is a complex
 value then <function>Sign</function> returns the direction or 0.
           </para>
          </listitem>
@@ -1109,7 +1109,7 @@ value then <function>Sign</function> returns the direction or 0.
          <listitem>
           <synopsis>exp (x)</synopsis>
           <para>
-	    The exponential function.  This is the function
+	    The exponential function. This is the function
 	    <userinput>e^x</userinput> where <varname>e</varname>
 	    is the <link linkend="gel-function-e">base of the natural
 	    logarithm</link>.
@@ -1127,7 +1127,7 @@ value then <function>Sign</function> returns the direction or 0.
          <term>float</term>
          <listitem>
           <synopsis>float (x)</synopsis>
-          <para>Make number a floating point value.  That is returns the floating point representation of the number <varname>x</varname>.</para>
+          <para>Make number a floating point value. That is returns the floating point representation of the number <varname>x</varname>.</para>
          </listitem>
         </varlistentry>
 
@@ -1209,7 +1209,7 @@ number is specified) of the given size returned.</para>
           <para>Generate random integer in the range
 <literal>[0,max)</literal>.
 If size is given then a matrix (if two numbers are specified) or vector (if one
-number is specified) of the given size returned.  For example
+number is specified) of the given size returned. For example
           <screen><prompt>genius></prompt> <userinput>randint(4)</userinput>
 = 3
 <prompt>genius></prompt> <userinput>randint(4,2)</userinput>
@@ -1238,7 +1238,7 @@ number is specified) of the given size returned.  For example
          <listitem>
           <synopsis>sqrt (x)</synopsis>
           <para>Aliases: <function>SquareRoot</function></para>
-          <para>The square root.  When operating modulo some integer will return either a <constant>null</constant> or a vector of the square roots.  Examples:
+          <para>The square root. When operating modulo some integer will return either a <constant>null</constant> or a vector of the square roots. Examples:
           <screen><prompt>genius></prompt> <userinput>sqrt(2)</userinput>
 = 1.41421356237
 <prompt>genius></prompt> <userinput>sqrt(-1)</userinput>
@@ -1390,12 +1390,12 @@ number is specified) of the given size returned.  For example
          <listitem>
           <synopsis>atan2 (y, x)</synopsis>
           <para>Aliases: <function>arctan2</function></para>
-          <para>Calculates the arctan2 function.  If
+          <para>Calculates the arctan2 function. If
 	  <userinput>x&gt;0</userinput> then it returns
-	  <userinput>atan(y/x)</userinput>.  If <userinput>x&lt;0</userinput>
+	  <userinput>atan(y/x)</userinput>. If <userinput>x&lt;0</userinput>
 	  then it returns <userinput>sign(y) * (pi - atan(|y/x|)</userinput>.
 	  When <userinput>x=0</userinput> it returns <userinput>sign(y) *
-	  pi/2</userinput>.  <userinput>atan2(0,0)</userinput> returns 0
+	  pi/2</userinput>. <userinput>atan2(0,0)</userinput> returns 0
 	  rather then failing.
 	  </para>
           <para>
@@ -1635,7 +1635,7 @@ number is specified) of the given size returned.  For example
           <synopsis>DiscreteLog (n,b,q)</synopsis>
           <para>Find discrete log of <varname>n</varname> base <varname>b</varname> in
 	    F<subscript>q</subscript>, the finite field of order <varname>q</varname>, where <varname>q</varname>
-	    is a prime, using the Silver-Pohlig-Hellman algoritm.</para>
+	    is a prime, using the Silver-Pohlig-Hellman algorithm.</para>
           <para>
 	    See
 	    <ulink url="http://en.wikipedia.org/wiki/Discrete_logarithm">Wikipedia</ulink> or
@@ -1677,9 +1677,9 @@ number is specified) of the given size returned.  For example
           <synopsis>ExactDivision (n,d)</synopsis>
           <para>
 	    Return <userinput>n/d</userinput> but only if <varname>d</varname>
-	    divides <varname>n</varname>.  If <varname>d</varname>
+	    divides <varname>n</varname>. If <varname>d</varname>
 	    does not divide <varname>n</varname> then this function returns
-	    garbage.  This is a lot faster for very large numbers
+	    garbage. This is a lot faster for very large numbers
 	    than the operation <userinput>n/d</userinput>, but of course only
 	    useful if you know that the division is exact.
 	  </para>
@@ -1691,9 +1691,9 @@ number is specified) of the given size returned.  For example
          <listitem>
           <synopsis>Factorize (n)</synopsis>
           <para>
-	    Return factorization of a number as a matrix.  The first
+	    Return factorization of a number as a matrix. The first
 	    row is the primes in the factorization (including 1) and the
-	    second row are the powers.  So for example:
+	    second row are the powers. So for example:
 	    <screen><prompt>genius></prompt> <userinput>Factorize(11*11*13)</userinput>
 =
 [1      11      13
@@ -1711,11 +1711,11 @@ number is specified) of the given size returned.  For example
          <listitem>
           <synopsis>Factors (n)</synopsis>
           <para>
-	    Return all factors of <varname>n</varname> in a vector.  This
-	    includes all the non-prime factors as well.  It includes 1 and the
-	    number itself.  So for example to print all the perfect numbers
+	    Return all factors of <varname>n</varname> in a vector. This
+	    includes all the non-prime factors as well. It includes 1 and the
+	    number itself. So for example to print all the perfect numbers
 	    (those that are sums of their factors) up to the number 1000 you
-	    could do (this is of course very inefficent)
+	    could do (this is of course very inefficient)
 	    <programlisting>for n=1 to 1000 do (
     if MatrixSum (Factors(n)) == 2*n then
         print(n)
@@ -1752,7 +1752,7 @@ number is specified) of the given size returned.  For example
          <listitem>
           <synopsis>FindPrimitiveElementMod (q)</synopsis>
           <para>Find the first primitive element in F<subscript>q</subscript>, the finite
-group of order <varname>q</varname>.  Of course <varname>q</varname> must be a prime.</para>
+group of order <varname>q</varname>. Of course <varname>q</varname> must be a prime.</para>
          </listitem>
         </varlistentry>
 
@@ -1771,7 +1771,7 @@ group of order <varname>q</varname> (q must be a prime).</para>
           <synopsis>IndexCalculus (n,b,q,S)</synopsis>
           <para>Compute discrete log base <varname>b</varname> of n in F<subscript>q</subscript>, the finite
 group of order <varname>q</varname> (<varname>q</varname> a prime), using the
-factor base <varname>S</varname>.  <varname>S</varname> should be a column of
+factor base <varname>S</varname>. <varname>S</varname> should be a column of
 primes possibly with second column precalculated by
 <function>IndexCalculusPrecalculation</function>.</para>
          </listitem>
@@ -1785,7 +1785,7 @@ primes possibly with second column precalculated by
 <function>IndexCalculus</function> for logarithms base <varname>b</varname> in
 F<subscript>q</subscript>, the finite group of order <varname>q</varname>
 (<varname>q</varname> a prime), for the factor base <varname>S</varname> (where
-<varname>S</varname> is a column vector of primes).  The logs will be
+<varname>S</varname> is a column vector of primes). The logs will be
 precalculated and returned in the second column.</para>
          </listitem>
         </varlistentry>
@@ -1804,8 +1804,8 @@ precalculated and returned in the second column.</para>
           <synopsis>IsMersennePrimeExponent (p)</synopsis>
           <para>
 	    Tests if a positive integer <varname>p</varname> is a
-	    Mersenne prime exponent.  That is if 
-            2<superscript>p</superscript>-1 is a prime.  It does this
+	    Mersenne prime exponent. That is if 
+            2<superscript>p</superscript>-1 is a prime. It does this
 	    by looking it up in a table of known values which is relatively
 	    short.
 	    See also
@@ -1830,7 +1830,7 @@ precalculated and returned in the second column.</para>
           <synopsis>IsNthPower (m,n)</synopsis>
           <para>
 	    Tests if a rational number <varname>m</varname> is a perfect
-	    <varname>n</varname>th power.  See also
+	    <varname>n</varname>th power. See also
 	    <link linkend='gel-function-IsPerfectPower'>IsPerfectPower</link>
 	    and
 	    <link linkend='gel-function-IsPerfectSquare'>IsPerfectSquare</link>.
@@ -1859,8 +1859,8 @@ precalculated and returned in the second column.</para>
          <listitem>
           <synopsis>IsPerfectSquare (n)</synopsis>
           <para>
-	    Check an integer for being a perfect square of an integer.  The number must
-	    be a real integer.  Negative integers are of course never perfect
+	    Check an integer for being a perfect square of an integer. The number must
+	    be a real integer. Negative integers are of course never perfect
 	    squares of real integers.
 	  </para>
          </listitem>
@@ -1872,18 +1872,18 @@ precalculated and returned in the second column.</para>
           <synopsis>IsPrime (n)</synopsis>
           <para>
 	    Tests primality of integers, for numbers less than 2.5e10 the
-	    answer is deterministic (if Riemann hypothesis is true).  For
+	    answer is deterministic (if Riemann hypothesis is true). For
 	    numbers larger, the probability of a false positive
 	    depends on
 	    <link linkend='gel-function-IsPrimeMillerRabinReps'>
-	    <function>IsPrimeMillerRabinReps</function></link>.  That
+	    <function>IsPrimeMillerRabinReps</function></link>. That
 	    is the probability of false positive is 1/4 to the power
-	    <function>IsPrimeMillerRabinReps</function>.  The default
+	    <function>IsPrimeMillerRabinReps</function>. The default
 	    value of 22 yields a probability of about 5.7e-14.
 	  </para>
           <para>
 	    If <literal>false</literal> is returned, you can be sure that
-	    the number is a composite.  If you want to be absolutely sure
+	    the number is a composite. If you want to be absolutely sure
 	    that you have a prime you can use 
 	    <link linkend='gel-function-MillerRabinTestSure'>
 	    <function>MillerRabinTestSure</function></link> but it may take
@@ -1902,7 +1902,7 @@ precalculated and returned in the second column.</para>
          <listitem>
           <synopsis>IsPrimitiveMod (g,q)</synopsis>
           <para>Check if <varname>g</varname> is primitive in F<subscript>q</subscript>, the finite
-group of order <varname>q</varname>, where <varname>q</varname> is a prime.  If <varname>q</varname> is not prime results are bogus.</para>
+group of order <varname>q</varname>, where <varname>q</varname> is a prime. If <varname>q</varname> is not prime results are bogus.</para>
          </listitem>
         </varlistentry>
 
@@ -1922,7 +1922,7 @@ If <varname>q</varname> is not prime results are bogus.</para>
          <listitem>
           <synopsis>IsPseudoprime (n,b)</synopsis>
           <para>If <varname>n</varname> is a pseudoprime base <varname>b</varname> but not a prime,
-that is if <userinput>b^(n-1) == 1 mod n</userinput>.  This calles the <function>PseudoprimeTest</function></para>
+that is if <userinput>b^(n-1) == 1 mod n</userinput>. This calles the <function>PseudoprimeTest</function></para>
          </listitem>
         </varlistentry>
 
@@ -2046,8 +2046,8 @@ that is if <userinput>b^(n-1) == 1 mod n</userinput>.  This calles the <function
           <synopsis>MillerRabinTest (n,reps)</synopsis>
           <para>
 	    Use the Miller-Rabin primality test on <varname>n</varname>,
-	    <varname>reps</varname> number of times.  The probability of false
-	    positive is <userinput>(1/4)^reps</userinput>.  It is probably
+	    <varname>reps</varname> number of times. The probability of false
+	    positive is <userinput>(1/4)^reps</userinput>. It is probably
 	    usually better to use
 	    <link linkend='gel-function-IsPrime'>
 	    <function>IsPrime</function></link> since that is faster and
@@ -2139,7 +2139,7 @@ that is if <userinput>b^(n-1) == 1 mod n</userinput>.  This calles the <function
          <term>PadicValuation</term>
          <listitem>
           <synopsis>PadicValuation (n,p)</synopsis>
-          <para>Returns the padic valuation (number of trailing zeros in base <varname>p</varname>).</para>
+          <para>Returns the p-adic valuation (number of trailing zeros in base <varname>p</varname>).</para>
           <para>
 	    See
 	    <ulink url="http://planetmath.org/encyclopedia/PAdicValuation.html">Planetmath</ulink> for more information.
@@ -2152,10 +2152,10 @@ that is if <userinput>b^(n-1) == 1 mod n</userinput>.  This calles the <function
          <listitem>
           <synopsis>PowerMod (a,b,m)</synopsis>
           <para>
-	    Compute <userinput>a^b mod m</userinput>.  The
+	    Compute <userinput>a^b mod m</userinput>. The
 	    <varname>b</varname>'s power of <varname>a</varname> modulo
-	    <varname>m</varname>.  It is not neccessary to use this function
-	    as it is automatically used in modulo mode.  Hence
+	    <varname>m</varname>. It is not necessary to use this function
+	    as it is automatically used in modulo mode. Hence
 	    <userinput>a^b mod m</userinput> is just as fast.
           </para>
          </listitem>
@@ -2205,7 +2205,7 @@ that is if <userinput>b^(n-1) == 1 mod n</userinput>.  This calles the <function
          <term>RemoveFactor</term>
          <listitem>
           <synopsis>RemoveFactor (n,m)</synopsis>
-          <para>Removes all instances of the factor <varname>m</varname> from the number <varname>n</varname>.  That is divides by the largest power of <varname>m</varname>, that divides <varname>n</varname>.</para>
+          <para>Removes all instances of the factor <varname>m</varname> from the number <varname>n</varname>. That is divides by the largest power of <varname>m</varname>, that divides <varname>n</varname>.</para>
           <para>
 	    See
 	    <ulink url="http://planetmath.org/encyclopedia/Divisibility.html">Planetmath</ulink> or
@@ -2218,7 +2218,7 @@ that is if <userinput>b^(n-1) == 1 mod n</userinput>.  This calles the <function
          <term>SilverPohligHellmanWithFactorization</term>
          <listitem>
           <synopsis>SilverPohligHellmanWithFactorization (n,b,q,f)</synopsis>
-          <para>Find discrete log of <varname>n</varname> base <varname>b</varname> in F<subscript>q</subscript>, the finite group of order <varname>q</varname>, where <varname>q</varname> is a prime using the Silver-Pohlig-Hellman algoritm, given <varname>f</varname> being the factorization of <varname>q</varname>-1.</para>
+          <para>Find discrete log of <varname>n</varname> base <varname>b</varname> in F<subscript>q</subscript>, the finite group of order <varname>q</varname>, where <varname>q</varname> is a prime using the Silver-Pohlig-Hellman algorithm, given <varname>f</varname> being the factorization of <varname>q</varname>-1.</para>
          </listitem>
         </varlistentry>
 
@@ -2226,7 +2226,7 @@ that is if <userinput>b^(n-1) == 1 mod n</userinput>.  This calles the <function
          <term>SqrtModPrime</term>
          <listitem>
           <synopsis>SqrtModPrime (n,p)</synopsis>
-          <para>Find square root of <varname>n</varname> modulo <varname>p</varname> (where <varname>p</varname> is a prime).  Null is returned if not a quadratic residue.</para>
+          <para>Find square root of <varname>n</varname> modulo <varname>p</varname> (where <varname>p</varname> is a prime). Null is returned if not a quadratic residue.</para>
           <para>
 	    See
 	    <ulink url="http://planetmath.org/encyclopedia/QuadraticResidue.html">Planetmath</ulink> or
@@ -2254,9 +2254,9 @@ that is if <userinput>b^(n-1) == 1 mod n</userinput>.  This calles the <function
           <synopsis>gcd (a,args...)</synopsis>
           <para>Aliases: <function>GCD</function></para>
           <para>
-	    Greatest common divisor of integers.  You can enter as many
+	    Greatest common divisor of integers. You can enter as many
 	    integers in the argument list, or you can give a vector or a matrix
-	    of integers.  If you give more than one matrix of the same
+	    of integers. If you give more than one matrix of the same
 	    size then GCD is done element by element.
 	  </para>
           <para>
@@ -2273,9 +2273,9 @@ that is if <userinput>b^(n-1) == 1 mod n</userinput>.  This calles the <function
           <synopsis>lcm (a,args...)</synopsis>
           <para>Aliases: <function>LCM</function></para>
           <para>
-	    Least common multiplier of integers.  You can enter as many
+	    Least common multiplier of integers. You can enter as many
 	    integers in the argument list, or you can give a vector or a matrix
-	    of integers.  If you give more than one matrix of the same size
+	    of integers. If you give more than one matrix of the same size
 	    then LCM is done element by element.
 	  </para>
           <para>
@@ -2328,7 +2328,7 @@ that is if <userinput>b^(n-1) == 1 mod n</userinput>.  This calles the <function
          <term>CompoundMatrix</term>
          <listitem>
           <synopsis>CompoundMatrix (k,A)</synopsis>
-          <para>Calculate the kth compund matrix of A.</para>
+          <para>Calculate the kth compound matrix of A.</para>
          </listitem>
         </varlistentry>
 
@@ -2337,9 +2337,9 @@ that is if <userinput>b^(n-1) == 1 mod n</userinput>.  This calles the <function
          <listitem>
           <synopsis>CountZeroColumns (M)</synopsis>
           <para>
-	   Count the number of zero columns in a matrix.  For example
+	   Count the number of zero columns in a matrix. For example
 	   Once you column reduce a matrix you can use this to find
-	   the nullity.  See <link linkend="gel-function-cref"><function>cref</function></link>
+	   the nullity. See <link linkend="gel-function-cref"><function>cref</function></link>
 	   and <link linkend="gel-function-Nullity"><function>Nullity</function></link>.
           </para>
          </listitem>
@@ -2377,8 +2377,8 @@ that is if <userinput>b^(n-1) == 1 mod n</userinput>.  This calles the <function
          <term>DotProduct</term>
          <listitem>
           <synopsis>DotProduct (u,v)</synopsis>
-	  <para>Get the dot product of two vectors.  The vectors must be of the
-same size.  No conjugates are taken so this is a bilinear form even if working over the complex numbers.</para>
+	  <para>Get the dot product of two vectors. The vectors must be of the
+same size. No conjugates are taken so this is a bilinear form even if working over the complex numbers.</para>
           <para>
 	    See
 	    <ulink url="http://planetmath.org/encyclopedia/DotProduct.html">Planetmath</ulink> for more information.
@@ -2392,7 +2392,7 @@ same size.  No conjugates are taken so this is a bilinear form even if working o
           <synopsis>ExpandMatrix (M)</synopsis>
           <para>
 	    Expands a matrix just like we do on unquoted matrix input.
-	    That is we expand any internal matrices as blocks.  This is
+	    That is we expand any internal matrices as blocks. This is
 	    a way to construct matrices out of smaller ones and this is
 	    normally done automatically on input unless the matrix is quoted.
 	  </para>
@@ -2404,7 +2404,7 @@ same size.  No conjugates are taken so this is a bilinear form even if working o
          <listitem>
           <synopsis>HermitianProduct (u,v)</synopsis>
           <para>Aliases: <function>InnerProduct</function></para>
-          <para>Get the hermitian product of two vectors.  The vectors must be of the same size.  This is a sesquilinear form using the identity matrix.</para>
+          <para>Get the hermitian product of two vectors. The vectors must be of the same size. This is a sesquilinear form using the identity matrix.</para>
           <para>
 	    See
 	    <ulink url="http://mathworld.wolfram.com/HermitianInnerProduct.html">Mathworld</ulink> for more information.
@@ -2417,7 +2417,7 @@ same size.  No conjugates are taken so this is a bilinear form even if working o
          <listitem>
           <synopsis>I (n)</synopsis>
           <para>Aliases: <function>eye</function></para>
-          <para>Return an identity matrix of a given size, that is <varname>n</varname> by <varname>n</varname>.  If <varname>n</varname> is zero, returns null.</para>
+          <para>Return an identity matrix of a given size, that is <varname>n</varname> by <varname>n</varname>. If <varname>n</varname> is zero, returns null.</para>
           <para>
 	    See
 	    <ulink url="http://planetmath.org/encyclopedia/IdentityMatrix.html">Planetmath</ulink> for more information.
@@ -2429,8 +2429,8 @@ same size.  No conjugates are taken so this is a bilinear form even if working o
          <term>IndexComplement</term>
          <listitem>
           <synopsis>IndexComplement (vec,msize)</synopsis>
-          <para>Return the index complement of a vector of indexes.  Everything is one based.  For example for vector <userinput>[2,3]</userinput> and size
-<userinput>5</userinput>, we return <userinput>[1,4,5]</userinput>.  If
+          <para>Return the index complement of a vector of indexes. Everything is one based. For example for vector <userinput>[2,3]</userinput> and size
+<userinput>5</userinput>, we return <userinput>[1,4,5]</userinput>. If
 <varname>msize</varname> is 0, we always return null.</para>
          </listitem>
         </varlistentry>
@@ -2452,9 +2452,9 @@ same size.  No conjugates are taken so this is a bilinear form even if working o
          <term>IsIdentity</term>
          <listitem>
           <synopsis>IsIdentity (x)</synopsis>
-          <para>Check if a matrix is the identity matrix.  Automatically returns <varname>false</varname>
-	    if the matrix is not square.  Also works on numbers, in which
-	    case it is equivalent to <userinput>x==1</userinput>.  When <varname>x</varname> is
+          <para>Check if a matrix is the identity matrix. Automatically returns <varname>false</varname>
+	    if the matrix is not square. Also works on numbers, in which
+	    case it is equivalent to <userinput>x==1</userinput>. When <varname>x</varname> is
 	    <literal>null</literal> (we could think of that as a 0 by 0 matrix),
 	    no error is generated and <varname>false</varname> is returned.</para>
          </listitem>
@@ -2464,7 +2464,7 @@ same size.  No conjugates are taken so this is a bilinear form even if working o
          <term>IsLowerTriangular</term>
          <listitem>
           <synopsis>IsLowerTriangular (M)</synopsis>
-          <para>Is a matrix lower triangular.  That is, are all the entries below the diagonal zero.</para>
+          <para>Is a matrix lower triangular. That is, are all the entries below the diagonal zero.</para>
          </listitem>
         </varlistentry>
 
@@ -2476,11 +2476,11 @@ same size.  No conjugates are taken so this is a bilinear form even if working o
          </listitem>
         </varlistentry>
 
-        <varlistentry id="gel-function-IsMatrixNonnegative">
-         <term>IsMatrixNonnegative</term>
+        <varlistentry id="gel-function-IsMatrixnon-negative">
+         <term>IsMatrixnon-negative</term>
          <listitem>
-          <synopsis>IsMatrixNonnegative (M)</synopsis>
-          <para>Check if a matrix is nonnegative, that is if each element is nonnegative.
+          <synopsis>IsMatrixnon-negative (M)</synopsis>
+          <para>Check if a matrix is non-negative, that is if each element is non-negative.
 	  Do not confuse positive matrices with positive semi-definite matrices.</para>
           <para>
 	    See
@@ -2494,7 +2494,7 @@ same size.  No conjugates are taken so this is a bilinear form even if working o
          <listitem>
           <synopsis>IsMatrixPositive (M)</synopsis>
 	  <para>Check if a matrix is positive, that is if each element is
-positive (and hence real).  In particular, no element is 0.  Do not confuse
+positive (and hence real). In particular, no element is 0. Do not confuse
 positive matrices with positive definite matrices.</para>
           <para>
 	    See
@@ -2543,8 +2543,8 @@ numbers.</para>
          <term>IsValueOnly</term>
          <listitem>
           <synopsis>IsValueOnly (M)</synopsis>
-          <para>Check if a matrix is a matrix of numbers only.  Many internal
-functions make this check.  Values can be any number including complex numbers.</para>
+          <para>Check if a matrix is a matrix of numbers only. Many internal
+functions make this check. Values can be any number including complex numbers.</para>
          </listitem>
         </varlistentry>
 
@@ -2553,7 +2553,7 @@ functions make this check.  Values can be any number including complex numbers.<
          <listitem>
           <synopsis>IsVector (v)</synopsis>
           <para>
-	    Is argument a horizontal or a vertical vector.  Genius does
+	    Is argument a horizontal or a vertical vector. Genius does
 	    not distinguish between a matrix and a vector and a vector
 	    is just a 1 by <varname>n</varname> or <varname>n</varname> by 1 matrix.
 	  </para>
@@ -2564,8 +2564,8 @@ functions make this check.  Values can be any number including complex numbers.<
          <term>IsZero</term>
          <listitem>
           <synopsis>IsZero (x)</synopsis>
-          <para>Check if a matrix is composed of all zeros.  Also works on numbers, in which
-	    case it is equivalent to <userinput>x==0</userinput>.  When <varname>x</varname> is
+          <para>Check if a matrix is composed of all zeros. Also works on numbers, in which
+	    case it is equivalent to <userinput>x==0</userinput>. When <varname>x</varname> is
 	    <literal>null</literal> (we could think of that as a 0 by 0 matrix),
 	    no error is generated and <varname>true</varname> is returned as the condition is
 	    vacuous.
@@ -2600,7 +2600,7 @@ functions make this check.  Values can be any number including complex numbers.<
          <listitem>
           <synopsis>MakeVector (A)</synopsis>
           <para>Make column vector out of matrix by putting columns above
-	    each other.  Returns null when given null.</para>
+	    each other. Returns null when given null.</para>
          </listitem>
         </varlistentry>
 
@@ -2621,7 +2621,7 @@ functions make this check.  Values can be any number including complex numbers.<
          <listitem>
           <synopsis>MatrixSum (A)</synopsis>
           <para>
-	    Calculate the sum of all elements in a matrix or vecgtor.  That is
+	    Calculate the sum of all elements in a matrix or vector. That is
 	    we add all the elements and return a number that is the
 	    sum of all the elements.
 	  </para>
@@ -2641,7 +2641,7 @@ functions make this check.  Values can be any number including complex numbers.<
          <term>OuterProduct</term>
          <listitem>
           <synopsis>OuterProduct (u,v)</synopsis>
-          <para>Get the outer product of two vectors.  That is, suppose that
+          <para>Get the outer product of two vectors. That is, suppose that
 <varname>u</varname> and <varname>v</varname> are vertical vectors, then
 the outer product is <userinput>v * u.'</userinput>.</para>
          </listitem>
@@ -2676,10 +2676,10 @@ vector with the result.</para>
          <term>RowsOf</term>
          <listitem>
           <synopsis>RowsOf (M)</synopsis>
-	  <para>Gets the rows of a matrix as a vertical vector.  Each element
+	  <para>Gets the rows of a matrix as a vertical vector. Each element
 of the vector is a horizontal vector which is the corresponding row of
-<varname>M</varname>.  This function is useful if you wish to loop over the
-rows of a matrix.  For example, as <userinput>for r in RowsOf(M) do
+<varname>M</varname>. This function is useful if you wish to loop over the
+rows of a matrix. For example, as <userinput>for r in RowsOf(M) do
 something(r)</userinput>.</para>
          </listitem>
         </varlistentry>
@@ -2688,8 +2688,8 @@ something(r)</userinput>.</para>
          <term>SetMatrixSize</term>
          <listitem>
           <synopsis>SetMatrixSize (M,rows,columns)</synopsis>
-          <para>Make new matrix of given size from old one.  That is, a new
-	  matrix will be returned to which the old one is copied.  Entries that
+          <para>Make new matrix of given size from old one. That is, a new
+	  matrix will be returned to which the old one is copied. Entries that
 	  don't fit are clipped and extra space is filled with zeros.
 	  if <varname>rows</varname> or <varname>columns</varname> are zero
 	  then null is returned.
@@ -2725,8 +2725,8 @@ something(r)</userinput>.</para>
          <term>Submatrix</term>
          <listitem>
           <synopsis>Submatrix (m,r,c)</synopsis>
-          <para>Return column(s) and row(s) from a matrix.  This is
-just equivalent to <userinput>m@(r,c)</userinput>.  <varname>r</varname>
+          <para>Return column(s) and row(s) from a matrix. This is
+just equivalent to <userinput>m@(r,c)</userinput>. <varname>r</varname>
 and <varname>c</varname> should be vectors of rows and columns (or single numbers if only one row or column is needed).</para>
          </listitem>
         </varlistentry>
@@ -2759,7 +2759,7 @@ and <varname>c</varname> should be vectors of rows and columns (or single number
          <term>elements</term>
          <listitem>
           <synopsis>elements (M)</synopsis>
-          <para>Get the total number of elements of a matrix.  This is the
+          <para>Get the total number of elements of a matrix. This is the
 number of columns times the number of rows.</para>
          </listitem>
         </varlistentry>
@@ -2768,7 +2768,7 @@ number of columns times the number of rows.</para>
          <term>ones</term>
          <listitem>
           <synopsis>ones (rows,columns...)</synopsis>
-          <para>Make an matrix of all ones (or a row vector if only one argument is given).  Returns null if either rows or columns are zero.</para>
+          <para>Make an matrix of all ones (or a row vector if only one argument is given). Returns null if either rows or columns are zero.</para>
          </listitem>
         </varlistentry>
 
@@ -2784,7 +2784,7 @@ number of columns times the number of rows.</para>
          <term>zeros</term>
          <listitem>
           <synopsis>zeros (rows,columns...)</synopsis>
-          <para>Make a matrix of all zeros (or a row vector if only one argument is given).  Returns null if either rows or columns are zero.</para>
+          <para>Make a matrix of all zeros (or a row vector if only one argument is given). Returns null if either rows or columns are zero.</para>
          </listitem>
         </varlistentry>
 
@@ -2798,8 +2798,8 @@ number of columns times the number of rows.</para>
          <term>AuxilliaryUnitMatrix</term>
          <listitem>
           <synopsis>AuxilliaryUnitMatrix (n)</synopsis>
-          <para>Get the auxilliary unit matrix of size <varname>n</varname>.  This is a square matrix matrix with that is all zero except the
-superdiagonal being all ones.  It is the Jordan block matrix of one zero eigenvalue.</para>
+          <para>Get the auxiliary unit matrix of size <varname>n</varname>. This is a square matrix matrix with that is all zero except the
+superdiagonal being all ones. It is the Jordan block matrix of one zero eigenvalue.</para>
           <para>
 	    See
 	    <ulink url="http://planetmath.org/encyclopedia/JordanCanonicalFormTheorem.html">Planetmath</ulink> or
@@ -2829,9 +2829,9 @@ superdiagonal being all ones.  It is the Jordan block matrix of one zero eigenva
          <listitem>
           <synopsis>CharacteristicPolynomial (M)</synopsis>
           <para>Aliases: <function>CharPoly</function></para>
-	  <para>Get the characteristic polynomial as a vector.  That is, return
-the coefficients of the polynomial starting with the constant term.  This is
-the polynomial defined by <userinput>det(M-xI)</userinput>.  The roots of this
+	  <para>Get the characteristic polynomial as a vector. That is, return
+the coefficients of the polynomial starting with the constant term. This is
+the polynomial defined by <userinput>det(M-xI)</userinput>. The roots of this
 polynomial are the eigenvalues of <varname>M</varname>.
 See also <link linkend="gel-function-CharacteristicPolynomialFunction">CharacteristicPolynomialFunction</link>.
 </para>
@@ -2846,8 +2846,8 @@ See also <link linkend="gel-function-CharacteristicPolynomialFunction">Character
          <term>CharacteristicPolynomialFunction</term>
          <listitem>
           <synopsis>CharacteristicPolynomialFunction (M)</synopsis>
-	  <para>Get the characteristic polynomial as a function.   This is
-the polynomial defined by <userinput>det(M-xI)</userinput>.  The roots of this
+	  <para>Get the characteristic polynomial as a function.  This is
+the polynomial defined by <userinput>det(M-xI)</userinput>. The roots of this
 polynomial are the eigenvalues of <varname>M</varname>.
 See also <link linkend="gel-function-CharacteristicPolynomial">CharacteristicPolynomial</link>.
 </para>
@@ -2862,9 +2862,9 @@ See also <link linkend="gel-function-CharacteristicPolynomial">CharacteristicPol
          <term>ColumnSpace</term>
          <listitem>
           <synopsis>ColumnSpace (M)</synopsis>
-	  <para>Get a basis matrix for the columnspace of a matrix.  That is,
+	  <para>Get a basis matrix for the columnspace of a matrix. That is,
 return a matrix whose columns are the basis for the column space of
-<varname>M</varname>.  That is the space spanned by the columns of
+<varname>M</varname>. That is the space spanned by the columns of
 <varname>M</varname>.</para>
          </listitem>
         </varlistentry>
@@ -2891,7 +2891,7 @@ matrices A.</para>
          <term>ConjugateTranspose</term>
          <listitem>
           <synopsis>ConjugateTranspose (M)</synopsis>
-          <para>Conjugate transpose of a matrix (adjoint).  This is the
+          <para>Conjugate transpose of a matrix (adjoint). This is the
 	  same as the <userinput>'</userinput> operator.</para>
           <para>
 	    See
@@ -2913,7 +2913,7 @@ matrices A.</para>
          <term>ConvolutionVector</term>
          <listitem>
           <synopsis>ConvolutionVector (a,b)</synopsis>
-          <para>Calculate convolution of two horizontal vectors.  Return
+          <para>Calculate convolution of two horizontal vectors. Return
 result as a vector and not added together.</para>
          </listitem>
         </varlistentry>
@@ -2975,7 +2975,7 @@ result as a vector and not added together.</para>
           <synopsis>Eigenvectors (M)</synopsis>
           <synopsis>Eigenvectors (M, &amp;eigenvalues)</synopsis>
           <synopsis>Eigenvectors (M, &amp;eigenvalues, &amp;multiplicities)</synopsis>
-	  <para>Get the eigenvectors of a square matrix.  Optionally get also
+	  <para>Get the eigenvectors of a square matrix. Optionally get also
 the eigenvalues and their algebraic multiplicities.
 	    Currently only works for matrices of size up to 2 by 2.
 	  </para>
@@ -2993,10 +2993,10 @@ the eigenvalues and their algebraic multiplicities.
          <listitem>
           <synopsis>GramSchmidt (v,B...)</synopsis>
 	  <para>Apply the Gram-Schmidt process (to the columns) with respect to
-inner product given by <varname>B</varname>.  If <varname>B</varname> is not
-given then the standard hermitian product is used.  <varname>B</varname> can
+inner product given by <varname>B</varname>. If <varname>B</varname> is not
+given then the standard hermitian product is used. <varname>B</varname> can
 either be a sesquilinear function of two arguments or it can be a matrix giving
-a sesquilinear form.  The vectors will be made orthonormal with respect to
+a sesquilinear form. The vectors will be made orthonormal with respect to
 <varname>B</varname>.</para>
           <para>
 	    See
@@ -3065,7 +3065,7 @@ a sesquilinear form.  The vectors will be made orthonormal with respect to
          <term>IsHermitian</term>
          <listitem>
           <synopsis>IsHermitian (M)</synopsis>
-          <para>Is a matrix hermitian.  That is, is it equal to its conjugate transpose.</para>
+          <para>Is a matrix hermitian. That is, is it equal to its conjugate transpose.</para>
           <para>
 	    See
 	    <ulink url="http://planetmath.org/encyclopedia/HermitianMatrix.html">Planetmath</ulink> for more information.
@@ -3101,7 +3101,7 @@ a sesquilinear form.  The vectors will be made orthonormal with respect to
          <term>IsNormal</term>
          <listitem>
           <synopsis>IsNormal (M)</synopsis>
-          <para>Is <varname>M</varname> a normal matrix.  That is,
+          <para>Is <varname>M</varname> a normal matrix. That is,
 	  does <userinput>M*M' == M'*M</userinput>.</para>
           <para>
 	    See
@@ -3115,18 +3115,18 @@ a sesquilinear form.  The vectors will be made orthonormal with respect to
          <term>IsPositiveDefinite</term>
          <listitem>
           <synopsis>IsPositiveDefinite (M)</synopsis>
-          <para>Is <varname>M</varname> a hermitian positive definite matrix.  That is if
+          <para>Is <varname>M</varname> a hermitian positive definite matrix. That is if
 <userinput>HermitianProduct(M*v,v)</userinput> is always strictly positive for
 any vector <varname>v</varname>.
 <varname>M</varname> must be square and hermitian to be positive definite.
-The check that is performed is that every principal submatrix has a nonnegative
+The check that is performed is that every principal submatrix has a non-negative
 determinant.
 (See <link linkend="gel-function-HermitianProduct">HermitianProduct</link>)</para>
 	  <para>
 	    Note that some authors (for example Mathworld) do not require that
 	    <varname>M</varname> be hermitian, and then the condition is
 	    on the real part of the inner product, but we do not take this
-	    view.  If you wish to perform this check, just check the
+	    view. If you wish to perform this check, just check the
 	    hermitian part of the matrix <varname>M</varname> as follows:
 	    <userinput>IsPositiveDefinite(M+M')</userinput>.
 	  </para>
@@ -3138,29 +3138,29 @@ determinant.
          </listitem>
         </varlistentry>
 
-        <varlistentry id="gel-function-IsPositiveSemidefinite">
-         <term>IsPositiveSemidefinite</term>
+        <varlistentry id="gel-function-IsPositivesemi-definite">
+         <term>IsPositivesemi-definite</term>
          <listitem>
-          <synopsis>IsPositiveSemidefinite (M)</synopsis>
-          <para>Is <varname>M</varname> a hermitian positive semidefinite matrix.  That is if
-<userinput>HermitianProduct(M*v,v)</userinput> is always nonnegative for
+          <synopsis>IsPositivesemi-definite (M)</synopsis>
+          <para>Is <varname>M</varname> a hermitian positive semi-definite matrix. That is if
+<userinput>HermitianProduct(M*v,v)</userinput> is always non-negative for
 any vector <varname>v</varname>.
-<varname>M</varname> must be square and hermitian to be positive semidefinite.
-The check that is performed is that every principal submatrix has a nonnegative
+<varname>M</varname> must be square and hermitian to be positive semi-definite.
+The check that is performed is that every principal submatrix has a non-negative
 determinant.
 (See <link linkend="gel-function-HermitianProduct">HermitianProduct</link>)</para>
 	  <para>
 	    Note that some authors do not require that
 	    <varname>M</varname> be hermitian, and then the condition is
 	    on the real part of the inner product, but we do not take this
-	    view.  If you wish to perform this check, just check the
+	    view. If you wish to perform this check, just check the
 	    hermitian part of the matrix <varname>M</varname> as follows:
-	    <userinput>IsPositiveSemidefinite(M+M')</userinput>.
+	    <userinput>IsPositivesemi-definite(M+M')</userinput>.
 	  </para>
           <para>
 	    See
-	    <ulink url="http://planetmath.org/encyclopedia/PositiveSemidefinite.html">Planetmath</ulink> or
-	    <ulink url="http://mathworld.wolfram.com/PositiveSemidefiniteMatrix.html">Mathworld</ulink> for more information.
+	    <ulink url="http://planetmath.org/encyclopedia/Positivesemi-definite.html">Planetmath</ulink> or
+	    <ulink url="http://mathworld.wolfram.com/Positivesemi-definiteMatrix.html">Mathworld</ulink> for more information.
           </para>
          </listitem>
         </varlistentry>
@@ -3169,7 +3169,7 @@ determinant.
          <term>IsSkewHermitian</term>
          <listitem>
           <synopsis>IsSkewHermitian (M)</synopsis>
-          <para>Is a matrix skew-hermitian.  That is, is the conjugate transpose equal to negative of the matrix.</para>
+          <para>Is a matrix skew-hermitian. That is, is the conjugate transpose equal to negative of the matrix.</para>
           <para>
 	    See
 	    <ulink url="http://planetmath.org/encyclopedia/SkewHermitianMatrix.html">Planetmath</ulink> for more information.
@@ -3226,7 +3226,7 @@ determinant.
           <para>
 	    Get the LU decomposition of <varname>A</varname>
 	    and store the result in the <varname>L</varname> and
-	    <varname>U</varname> which should be references.  It returns true
+	    <varname>U</varname> which should be references. It returns true
 	    if successful.
 	    For example suppose that A is a square matrix, then after running:
 	    <screen><prompt>genius></prompt> <userinput>LUDecomposition(A,&amp;L,&amp;U)</userinput>
@@ -3240,7 +3240,7 @@ determinant.
 	    reduction.
 	    (ISBN 0-201-11577-8 pp.99-103)
 	    The upper triangular matrix features a diagonal
-	    of values 1 (one).  This is not Doolittle's Method which features
+	    of values 1 (one). This is not Doolittle's Method which features
 	    the 1's diagonal on the lower matrix. 
 	  </para>
 	  <para>
@@ -3290,8 +3290,8 @@ determinant.
          <term>NullSpace</term>
          <listitem>
           <synopsis>NullSpace (T)</synopsis>
-          <para>Get the nullspace of a matrix.  That is the kernel of the
-	  linear mapping that the matrix represents.  This is returned
+          <para>Get the nullspace of a matrix. That is the kernel of the
+	  linear mapping that the matrix represents. This is returned
 	  as a matrix whose column space is the nullspace of
 	  <varname>T</varname>.</para>
           <para>
@@ -3306,7 +3306,7 @@ determinant.
          <listitem>
           <synopsis>Nullity (M)</synopsis>
           <para>Aliases: <function>nullity</function></para>
-          <para>Get the nullity of a matrix.  That is, return the dimension of
+          <para>Get the nullity of a matrix. That is, return the dimension of
 the nullspace; the dimension of the kernel of <varname>M</varname>.</para>
           <para>
 	    See
@@ -3327,7 +3327,7 @@ the nullspace; the dimension of the kernel of <varname>M</varname>.</para>
          <term>PivotColumns</term>
          <listitem>
           <synopsis>PivotColumns (M)</synopsis>
-          <para>Return pivot columns of a matrix, that is columns which have a leading 1 in row reduced form.  Also returns the row where they occur.</para>
+          <para>Return pivot columns of a matrix, that is columns which have a leading 1 in row reduced form. Also returns the row where they occur.</para>
          </listitem>
         </varlistentry>
 
@@ -3337,8 +3337,8 @@ the nullspace; the dimension of the kernel of <varname>M</varname>.</para>
           <synopsis>Projection (v,W,B...)</synopsis>
 	  <para>Projection of vector <varname>v</varname> onto subspace
 <varname>W</varname> with respect to inner product given by
-<varname>B</varname>.  If <varname>B</varname> is not given then the standard
-hermitian product is used.  <varname>B</varname> can either be a sesquilinear
+<varname>B</varname>. If <varname>B</varname> is not given then the standard
+hermitian product is used. <varname>B</varname> can either be a sesquilinear
 function of two arguments or it can be a matrix giving a sesquilinear form.
 	  </para>
          </listitem>
@@ -3387,10 +3387,10 @@ function of two arguments or it can be a matrix giving a sesquilinear form.
          <listitem>
           <synopsis>RayleighQuotientIteration (A,x,epsilon,maxiter,vecref)</synopsis>
           <para>Find eigenvalues of <varname>A</varname> using the Rayleigh
-	        quotient iteration method.  <varname>x</varname> is a guess
-		at a eigenvector and could be random.  It should have 
-	        nonzero imaginary part if it will have any chance at finding
-	        complex eigenvalues.  The code will run at most
+	        quotient iteration method. <varname>x</varname> is a guess
+		at a eigenvector and could be random. It should have 
+	        non-zero imaginary part if it will have any chance at finding
+	        complex eigenvalues. The code will run at most
 	        <varname>maxiter</varname> iterations and return null
 		if we cannot get within an error of <varname>epsilon</varname>.
 		<varname>vecref</varname> should either be null or a reference
@@ -3501,7 +3501,7 @@ function of two arguments or it can be a matrix giving a sesquilinear form.
          <term>SolveLinearSystem</term>
          <listitem>
           <synopsis>SolveLinearSystem (M,V,args...)</synopsis>
-          <para>Solve linear system Mx=V, return solution V if there is a unique solution, null otherwise.  Extra two reference parameters can optionally be used to get the reduced M and V.</para>
+          <para>Solve linear system Mx=V, return solution V if there is a unique solution, null otherwise. Extra two reference parameters can optionally be used to get the reduced M and V.</para>
          </listitem>
         </varlistentry>
 
@@ -3510,8 +3510,8 @@ function of two arguments or it can be a matrix giving a sesquilinear form.
          <listitem>
           <synopsis>ToeplitzMatrix (c, r...)</synopsis>
 	  <para>Return the Toeplitz matrix constructed given the first column c
-and (optionally) the first row r.  If only the column c is given then it is
-conjugated and the nonconjugated version is used for the first row to give a
+and (optionally) the first row r. If only the column c is given then it is
+conjugated and the non-conjugated version is used for the first row to give a
 Hermitian matrix (if the first element is real of course).</para>
           <para>
 	    See
@@ -3525,7 +3525,7 @@ Hermitian matrix (if the first element is real of course).</para>
          <listitem>
           <synopsis>Trace (M)</synopsis>
           <para>Aliases: <function>trace</function></para>
-          <para>Calculate the trace of a matrix.  That is the sum of the diagonal elements.</para>
+          <para>Calculate the trace of a matrix. That is the sum of the diagonal elements.</para>
           <para>
 	    See
 	    <ulink url="http://planetmath.org/encyclopedia/Trace.html">Planetmath</ulink> for more information.
@@ -3537,7 +3537,7 @@ Hermitian matrix (if the first element is real of course).</para>
          <term>Transpose</term>
          <listitem>
           <synopsis>Transpose (M)</synopsis>
-          <para>Transpose of a matrix.  This is the same as the
+          <para>Transpose of a matrix. This is the same as the
           <userinput>.'</userinput> operator.</para>
           <para>
 	    See
@@ -3560,8 +3560,8 @@ Hermitian matrix (if the first element is real of course).</para>
          <listitem>
           <synopsis>VectorAngle (v,w,B...)</synopsis>
           <para>The angle of two vectors with respect to inner product given by
-<varname>B</varname>.  If <varname>B</varname> is not given then the standard
-hermitian product is used.  <varname>B</varname> can either be a sesquilinear
+<varname>B</varname>. If <varname>B</varname> is not given then the standard
+hermitian product is used. <varname>B</varname> can either be a sesquilinear
 function of two arguments or it can be a matrix giving a sesquilinear form.
 </para>
          </listitem>
@@ -3628,8 +3628,8 @@ function of two arguments or it can be a matrix giving a sesquilinear form.
          <listitem>
           <synopsis>ref (M)</synopsis>
           <para>Aliases: <function>REF</function> <function>RowEchelonForm</function></para>
-	  <para>Get the row echelon form of a matrix.  That is, apply gaussian
-elimination but not backaddition to <varname>M</varname>.  The pivot rows are
+	  <para>Get the row echelon form of a matrix. That is, apply gaussian
+elimination but not backaddition to <varname>M</varname>. The pivot rows are
 divided to make all pivots 1.</para>
           <para>
 	    See
@@ -3644,7 +3644,7 @@ divided to make all pivots 1.</para>
          <listitem>
           <synopsis>rref (M)</synopsis>
           <para>Aliases: <function>RREF</function> <function>ReducedRowEchelonForm</function></para>
-          <para>Get the reduced row echelon form of a matrix.  That is, apply gaussian elimination together with backaddition to <varname>M</varname>.</para>
+          <para>Get the reduced row echelon form of a matrix. That is, apply gaussian elimination together with backaddition to <varname>M</varname>.</para>
           <para>
 	    See
 	    <ulink url="http://en.wikipedia.org/wiki/Reduced_row_echelon_form">Wikipedia</ulink> or
@@ -3723,7 +3723,7 @@ divided to make all pivots 1.</para>
           <synopsis>Fibonacci (x)</synopsis>
           <para>Aliases: <function>fib</function></para>
           <para>
-	    Calculate <varname>n</varname>th fibonacci number.  That
+	    Calculate <varname>n</varname>th fibonacci number. That
 	    is the number defined recursively by
 	    <userinput>Fibonacci(n) = Fibonacci(n-1) + Fibonacci(n-2)</userinput>
 	    and 
@@ -3743,9 +3743,9 @@ divided to make all pivots 1.</para>
          <listitem>
           <synopsis>FrobeniusNumber (v,arg...)</synopsis>
           <para>
-	    Calculate the Frobenius number.  That is calculate smallest
-	    number that cannot be given as a nonnegative integer linear
-	    combination of a given vector of nonnegative integers.
+	    Calculate the Frobenius number. That is calculate smallest
+	    number that cannot be given as a non-negative integer linear
+	    combination of a given vector of non-negative integers.
 	    The vector can be given as separate numbers or a single vector.
 	    All the numbers given should have GCD of 1.
 	  </para>
@@ -3769,11 +3769,11 @@ divided to make all pivots 1.</para>
          <listitem>
           <synopsis>FrobeniusNumber (n,v)</synopsis>
           <para>
-	    Find the vector <varname>c</varname> of nonnegative integers
+	    Find the vector <varname>c</varname> of non-negative integers
 	    such that taking the dot product with <varname>v</varname> is
-	    equal to n.  If not possible returns null.  <varname>v</varname>
+	    equal to n. If not possible returns null. <varname>v</varname>
 	    should be given sorted in increasing order and should consist
-	    of nonnegative integers.
+	    of non-negative integers.
 	  </para>
           <para>
 	    See
@@ -3811,9 +3811,9 @@ divided to make all pivots 1.</para>
          <term>Multinomial</term>
          <listitem>
           <synopsis>Multinomial (v,arg...)</synopsis>
-          <para>Calculate multinomial coefficients.  Takes a vector of
+          <para>Calculate multinomial coefficients. Takes a vector of
 	    <varname>k</varname>
-	    nonnegative integers and computes the multinomial coefficient.
+	    non-negative integers and computes the multinomial coefficient.
 	    This corresponds to the coefficient in the homogeneous polynomial
 	    in <varname>k</varname> variables with the corresponding powers.
 	  </para>
@@ -3841,7 +3841,7 @@ divided to make all pivots 1.</para>
          <listitem>
           <synopsis>NextCombination (v,n)</synopsis>
 	  <para>Get combination that would come after v in call to
-combinations, first combination should be <userinput>[1:k]</userinput>.  This
+combinations, first combination should be <userinput>[1:k]</userinput>. This
 function is useful if you have many combinations to go through and you don't
 want to waste memory to store them all.
 	  </para>
@@ -3866,7 +3866,7 @@ do (
          <term>Pascal</term>
          <listitem>
           <synopsis>Pascal (i)</synopsis>
-          <para>Get the Pascal's triangle as a matrix.  This will return
+          <para>Get the Pascal's triangle as a matrix. This will return
 	  an <varname>i</varname>+1 by <varname>i</varname>+1 lower diagonal
 	  matrix which is the Pascal's triangle after <varname>i</varname>
 	  iterations.</para>
@@ -4022,7 +4022,7 @@ do (
          <listitem>
           <synopsis>EvenPeriodicExtension (f,L)</synopsis>
 	  <para>Return a function which is even periodic extension of
-<function>f</function> with half period <varname>L</varname>.  That
+<function>f</function> with half period <varname>L</varname>. That
 is a function defined on the interval <userinput>[0,L]</userinput>
 extended to be even on <userinput>[-L,L]</userinput> and then
 extended to be periodic with period <userinput>2*L</userinput>.</para>
@@ -4041,11 +4041,11 @@ extended to be periodic with period <userinput>2*L</userinput>.</para>
           <synopsis>FourierSeriesFunction (a,b,L)</synopsis>
 	  <para>Return a function which is a Fourier series with the
 coefficients given by the vectors <varname>a</varname> (sines) and
-<varname>b</varname> (cosines).  Note that <userinput>a@(1)</userinput> is
+<varname>b</varname> (cosines). Note that <userinput>a@(1)</userinput> is
 the constant coefficient!  That is, <userinput>a@(n)</userinput> refers to
 the term <userinput>cos(x*(n-1)*pi/L)</userinput>, while
 <userinput>b@(n)</userinput> refers to the term
-<userinput>sin(x*n*pi/L)</userinput>.  Either <varname>a</varname>
+<userinput>sin(x*n*pi/L)</userinput>. Either <varname>a</varname>
 or <varname>b</varname> can be <constant>null</constant>.</para>
           <para>
 	    See
@@ -4115,7 +4115,7 @@ or <varname>b</varname> can be <constant>null</constant>.</para>
          <term>Limit</term>
          <listitem>
           <synopsis>Limit (f,x0)</synopsis>
-          <para>Calculate the limit of a real-valued function at x0.  Tries to calculate both left and right limits.</para>
+          <para>Calculate the limit of a real-valued function at x0. Tries to calculate both left and right limits.</para>
          </listitem>
         </varlistentry>
 
@@ -4146,7 +4146,7 @@ where <varname>a</varname> are the cosine coefficients and
 the Fourier series of
 <function>f</function> with half-period <varname>L</varname> (that is defined
 on <userinput>[-L,L]</userinput> and extended periodically) with coefficients
-up to <varname>N</varname>th harmonic computed numerically.  The coefficients are
+up to <varname>N</varname>th harmonic computed numerically. The coefficients are
 computed by numerical integration using
 <function>NumericalIntegral</function>.</para>
           <para>
@@ -4164,8 +4164,8 @@ computed by numerical integration using
 	  <para>Return a function which is the Fourier series of
 <function>f</function> with half-period <varname>L</varname> (that is defined
 on <userinput>[-L,L]</userinput> and extended periodically) with coefficients
-up to <varname>N</varname>th harmonic computed numerically.  This is the
-trigonometric real series composed of sines and cosines.  The coefficients are
+up to <varname>N</varname>th harmonic computed numerically. This is the
+trigonometric real series composed of sines and cosines. The coefficients are
 computed by numerical integration using
 <function>NumericalIntegral</function>.</para>
           <para>
@@ -4182,11 +4182,11 @@ computed by numerical integration using
           <synopsis>NumericalFourierCosineSeriesCoefficients (f,L,N)</synopsis>
 	  <para>Return a vector of coefficients of the
 the cosine Fourier series of
-<function>f</function> with half-period <varname>L</varname>.  That is,
+<function>f</function> with half-period <varname>L</varname>. That is,
 we take <function>f</function> defined on <userinput>[0,L]</userinput>
 take the even periodic extension and compute the Fourier series, which
-only has sine terms.  The series is computed up to the 
-<varname>N</varname>th harmonic.  The coefficients are
+only has sine terms. The series is computed up to the 
+<varname>N</varname>th harmonic. The coefficients are
 computed by numerical integration using
 <function>NumericalIntegral</function>.
 Note that <userinput>a@(1)</userinput> is
@@ -4205,11 +4205,11 @@ the term <userinput>cos(x*(n-1)*pi/L)</userinput>.</para>
          <listitem>
           <synopsis>NumericalFourierCosineSeriesFunction (f,L,N)</synopsis>
 	  <para>Return a function which is the cosine Fourier series of
-<function>f</function> with half-period <varname>L</varname>.  That is,
+<function>f</function> with half-period <varname>L</varname>. That is,
 we take <function>f</function> defined on <userinput>[0,L]</userinput>
 take the even periodic extension and compute the Fourier series, which
-only has cosine terms.  The series is computed up to the 
-<varname>N</varname>th harmonic.  The coefficients are
+only has cosine terms. The series is computed up to the 
+<varname>N</varname>th harmonic. The coefficients are
 computed by numerical integration using
 <function>NumericalIntegral</function>.</para>
           <para>
@@ -4226,11 +4226,11 @@ computed by numerical integration using
           <synopsis>NumericalFourierSineSeriesCoefficients (f,L,N)</synopsis>
 	  <para>Return a vector of coefficients of the
 the sine Fourier series of
-<function>f</function> with half-period <varname>L</varname>.  That is,
+<function>f</function> with half-period <varname>L</varname>. That is,
 we take <function>f</function> defined on <userinput>[0,L]</userinput>
 take the odd periodic extension and compute the Fourier series, which
-only has sine terms.  The series is computed up to the 
-<varname>N</varname>th harmonic.  The coefficients are
+only has sine terms. The series is computed up to the 
+<varname>N</varname>th harmonic. The coefficients are
 computed by numerical integration using
 <function>NumericalIntegral</function>.</para>
           <para>
@@ -4246,11 +4246,11 @@ computed by numerical integration using
          <listitem>
           <synopsis>NumericalFourierSineSeriesFunction (f,L,N)</synopsis>
 	  <para>Return a function which is the sine Fourier series of
-<function>f</function> with half-period <varname>L</varname>.  That is,
+<function>f</function> with half-period <varname>L</varname>. That is,
 we take <function>f</function> defined on <userinput>[0,L]</userinput>
 take the odd periodic extension and compute the Fourier series, which
-only has sine terms.  The series is computed up to the 
-<varname>N</varname>th harmonic.  The coefficients are
+only has sine terms. The series is computed up to the 
+<varname>N</varname>th harmonic. The coefficients are
 computed by numerical integration using
 <function>NumericalIntegral</function>.</para>
           <para>
@@ -4298,7 +4298,7 @@ computed by numerical integration using
          <listitem>
           <synopsis>OddPeriodicExtension (f,L)</synopsis>
 	  <para>Return a function which is odd periodic extension of
-<function>f</function> with half period <varname>L</varname>.  That
+<function>f</function> with half period <varname>L</varname>. That
 is a function defined on the interval <userinput>[0,L]</userinput>
 extended to be odd on <userinput>[-L,L]</userinput> and then
 extended to be periodic with period <userinput>2*L</userinput>.</para>
@@ -4429,7 +4429,7 @@ and has period <userinput>b-a</userinput>.</para>
          <listitem>
           <synopsis>GammaFunction (x)</synopsis>
           <para>Aliases: <function>Gamma</function></para>
-          <para>The Gamma function.  Currently only implemented for real values.</para>
+          <para>The Gamma function. Currently only implemented for real values.</para>
           <para>
 	    See
 	    <ulink url="http://planetmath.org/encyclopedia/GammaFunction.html">Planetmath</ulink> for more information.
@@ -4534,7 +4534,7 @@ and has period <userinput>b-a</userinput>.</para>
          <listitem>
           <synopsis>RiemannZeta (x)</synopsis>
           <para>Aliases: <function>zeta</function></para>
-          <para>The Riemann zeta function.  Currently only implemented for real values.</para>
+          <para>The Riemann zeta function. Currently only implemented for real values.</para>
           <para>
 	    See
 	    <ulink url="http://planetmath.org/encyclopedia/RiemannZetaFunction.html">Planetmath</ulink> for more information.
@@ -4546,7 +4546,7 @@ and has period <userinput>b-a</userinput>.</para>
          <term>UnitStep</term>
          <listitem>
           <synopsis>UnitStep (x)</synopsis>
-          <para>The unit step function is 0 for x&lt;0, 1 otherwise.  This is the integral of the Dirac Delta function.  Also called the Heaviside function.</para>
+          <para>The unit step function is 0 for x&lt;0, 1 otherwise. This is the integral of the Dirac Delta function. Also called the Heaviside function.</para>
           <para>
 	    See
 	    <ulink url="http://en.wikipedia.org/wiki/Unit_step">Wikipedia</ulink> for more information.
@@ -4594,11 +4594,11 @@ and has period <userinput>b-a</userinput>.</para>
           <synopsis>CubicFormula (p)</synopsis>
           <para>
 	    Compute roots of a cubic (degree 3) polynomial using the
-	    cubic formula.  The polynomial should be given as a
-	    vector of coefficients.  That is
+	    cubic formula. The polynomial should be given as a
+	    vector of coefficients. That is
 	    <userinput>4*x^3 + 2*x + 1</userinput> corresponds to the vector
             <userinput>[1,2,0,4]</userinput>.
-	    Returns a column vector of the three solutions.  The first solution is always
+	    Returns a column vector of the three solutions. The first solution is always
 	    the real one as a cubic always has one real solution.
 	  </para>
           <para>
@@ -4622,7 +4622,7 @@ and has period <userinput>b-a</userinput>.</para>
 	  </para>
 	  <para>
 	    Systems can be solved by just having <varname>y</varname> be a
-	    (column) vector everywhere.  That is, <varname>y0</varname> can
+	    (column) vector everywhere. That is, <varname>y0</varname> can
 	    be a vector in which case <varname>f</varname> should take a number
 	    <varname>x</varname> and a vector of the same size for the second
 	    argument and should return a vector of the same size.
@@ -4641,7 +4641,7 @@ and has period <userinput>b-a</userinput>.</para>
           <synopsis>FindRootBisection (f,a,b,TOL,N)</synopsis>
           <para>Find root of a function using the bisection method.
 	    <varname>TOL</varname> is the desired tolerance and
-<varname>N</varname> is the limit on the number of iterations to run, 0 means no limit.  The function returns a vector <userinput>[success,value,iteration]</userinput>, where <varname>success</varname> is a boolean indicating success, <varname>value</varname> is the last value computed, and <varname>iteration</varname> is the number of iterations done.</para>
+<varname>N</varname> is the limit on the number of iterations to run, 0 means no limit. The function returns a vector <userinput>[success,value,iteration]</userinput>, where <varname>success</varname> is a boolean indicating success, <varname>value</varname> is the last value computed, and <varname>iteration</varname> is the number of iterations done.</para>
          </listitem>
         </varlistentry>
 
@@ -4651,7 +4651,7 @@ and has period <userinput>b-a</userinput>.</para>
           <synopsis>FindRootFalsePosition (f,a,b,TOL,N)</synopsis>
           <para>Find root of a function using the method of false position.
 	    <varname>TOL</varname> is the desired tolerance and
-<varname>N</varname> is the limit on the number of iterations to run, 0 means no limit.  The function returns a vector <userinput>[success,value,iteration]</userinput>, where <varname>success</varname> is a boolean indicating success, <varname>value</varname> is the last value computed, and <varname>iteration</varname> is the number of iterations done.</para>
+<varname>N</varname> is the limit on the number of iterations to run, 0 means no limit. The function returns a vector <userinput>[success,value,iteration]</userinput>, where <varname>success</varname> is a boolean indicating success, <varname>value</varname> is the last value computed, and <varname>iteration</varname> is the number of iterations done.</para>
          </listitem>
         </varlistentry>
 
@@ -4661,7 +4661,7 @@ and has period <userinput>b-a</userinput>.</para>
           <synopsis>FindRootMullersMethod (f,x1,x2,x3,TOL,N)</synopsis>
           <para>Find root of a function using the Muller's method.
 	    <varname>TOL</varname> is the desired tolerance and
-<varname>N</varname> is the limit on the number of iterations to run, 0 means no limit.  The function returns a vector <userinput>[success,value,iteration]</userinput>, where <varname>success</varname> is a boolean indicating success, <varname>value</varname> is the last value computed, and <varname>iteration</varname> is the number of iterations done.</para>
+<varname>N</varname> is the limit on the number of iterations to run, 0 means no limit. The function returns a vector <userinput>[success,value,iteration]</userinput>, where <varname>success</varname> is a boolean indicating success, <varname>value</varname> is the last value computed, and <varname>iteration</varname> is the number of iterations done.</para>
          </listitem>
         </varlistentry>
 
@@ -4671,7 +4671,7 @@ and has period <userinput>b-a</userinput>.</para>
           <synopsis>FindRootSecant (f,a,b,TOL,N)</synopsis>
           <para>Find root of a function using the secant method.
 	    <varname>TOL</varname> is the desired tolerance and
-<varname>N</varname> is the limit on the number of iterations to run, 0 means no limit.  The function returns a vector <userinput>[success,value,iteration]</userinput>, where <varname>success</varname> is a boolean indicating success, <varname>value</varname> is the last value computed, and <varname>iteration</varname> is the number of iterations done.</para>
+<varname>N</varname> is the limit on the number of iterations to run, 0 means no limit. The function returns a vector <userinput>[success,value,iteration]</userinput>, where <varname>success</varname> is a boolean indicating success, <varname>value</varname> is the last value computed, and <varname>iteration</varname> is the number of iterations done.</para>
          </listitem>
         </varlistentry>
 
@@ -4683,7 +4683,7 @@ and has period <userinput>b-a</userinput>.</para>
 	    Compute roots of a polynomial (degrees 1 through 4)
 	    using one of the formulas for such polynomials.
 	    The polynomial should be given as a
-	    vector of coefficients.  That is
+	    vector of coefficients. That is
 	    <userinput>4*x^3 + 2*x + 1</userinput> corresponds to the vector
             <userinput>[1,2,0,4]</userinput>.
 	    Returns a column vector of the solutions.
@@ -4703,8 +4703,8 @@ and has period <userinput>b-a</userinput>.</para>
           <synopsis>QuadraticFormula (p)</synopsis>
           <para>
 	    Compute roots of a quadratic (degree 2) polynomial using the
-	    quadratic formula.  The polynomial should be given as a
-	    vector of coefficients.  That is
+	    quadratic formula. The polynomial should be given as a
+	    vector of coefficients. That is
 	    <userinput>3*x^2 + 2*x + 1</userinput> corresponds to the vector
             <userinput>[1,2,3]</userinput>.
 	    Returns a column vector of the two solutions.
@@ -4723,8 +4723,8 @@ and has period <userinput>b-a</userinput>.</para>
           <synopsis>QuarticFormula (p)</synopsis>
           <para>
 	    Compute roots of a quartic (degree 4) polynomial using the
-	    quartic formula.  The polynomial should be given as a
-	    vector of coefficients.  That is
+	    quartic formula. The polynomial should be given as a
+	    vector of coefficients. That is
 	    <userinput>5*x^4 + 2*x + 1</userinput> corresponds to the vector
             <userinput>[1,2,0,0,5]</userinput>.
 	    Returns a column vector of the four solutions.
@@ -4751,7 +4751,7 @@ and has period <userinput>b-a</userinput>.</para>
 	  </para>
 	  <para>
 	    Systems can be solved by just having <varname>y</varname> be a
-	    (column) vector everywhere.  That is, <varname>y0</varname> can
+	    (column) vector everywhere. That is, <varname>y0</varname> can
 	    be a vector in which case <varname>f</varname> should take a number
 	    <varname>x</varname> and a vector of the same size for the second
 	    argument and should return a vector of the same size.
@@ -4904,8 +4904,8 @@ and has period <userinput>b-a</userinput>.</para>
           <synopsis>DividePoly (p,q,&amp;r)</synopsis>
           <para>Divide two polynomials (as vectors) using long division.
 	   Returns the quotient
-	   of the two polynomials.  The optional argument <varname>r</varname>
-	   is used to return the remainder.  The remainder will have lower
+	   of the two polynomials. The optional argument <varname>r</varname>
+	   is used to return the remainder. The remainder will have lower
 	   degree than <varname>q</varname>.</para>
           <para>
 	    See
@@ -5155,7 +5155,7 @@ and has period <userinput>b-a</userinput>.</para>
 	    First up to 10 arguments are functions, then optionally
             you can specify the limits of the plotting window as
 	    <varname>x1</varname>, <varname>x2</varname>,
-	    <varname>y1</varname>, <varname>y2</varname>.  If limits are not
+	    <varname>y1</varname>, <varname>y2</varname>. If limits are not
 	    specified, then the currently set limits apply
 	    (See <link linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>)
           </para>
@@ -5208,7 +5208,7 @@ and has period <userinput>b-a</userinput>.</para>
 	    <userinput>"origin"</userinput>,
 	    <userinput>"end"</userinput>,
 	    <userinput>"both"</userinput>, or
-	    <userinput>"none"</userinput>.  For 
+	    <userinput>"none"</userinput>. For 
 	    <userinput>"window"</userinput> we can specify 
 	    <userinput>"fit"</userinput> rather than a vector in which case,
 	    the x range will be set precisely and the y range will be set with
@@ -5231,7 +5231,7 @@ and has period <userinput>b-a</userinput>.</para>
           <synopsis>LinePlotParametric (xfunc,yfunc,t1,t2,tinc)</synopsis>
           <synopsis>LinePlotParametric (xfunc,yfunc,t1,t2,tinc,x1,x2,y1,y2)</synopsis>
           <para>
-	    Plot a parametric function with a line.  First come the functions
+	    Plot a parametric function with a line. First come the functions
 for <varname>x</varname> and <varname>y</varname> then optionally the <varname>t</varname> limits as <userinput>t1,t2,tinc</userinput>, then optionally the
 limits as <userinput>x1,x2,y1,y2</userinput>.
           </para>
@@ -5255,7 +5255,7 @@ limits as <userinput>x1,x2,y1,y2</userinput>.
           <synopsis>LinePlotCParametric (func,t1,t2,tinc)</synopsis>
           <synopsis>LinePlotCParametric (func,t1,t2,tinc,x1,x2,y1,y2)</synopsis>
           <para>
-	    Plot a parametric complex valued function with a line.  First comes
+	    Plot a parametric complex valued function with a line. First comes
 the function that returns <computeroutput>x+iy</computeroutput>,
 then optionally the <varname>t</varname> limits as <userinput>t1,t2,tinc</userinput>, then
 optionally the limits as <userinput>x1,x2,y1,y2</userinput>.
@@ -5291,7 +5291,7 @@ optionally the limits as <userinput>x1,x2,y1,y2</userinput>.
           <synopsis>SlopefieldDrawSolution (x, y, dx)</synopsis>
           <para>
 	    When a slope field plot is active, draw a solution with
-	    the specified initial condition.  The standard
+	    the specified initial condition. The standard
 	    Runge-Kutta method is used with increment <varname>dx</varname>.
 	    Solutions stay on the graph until a different plot is shown or until
 	    you call 
@@ -5308,13 +5308,13 @@ optionally the limits as <userinput>x1,x2,y1,y2</userinput>.
           <synopsis>SlopefieldPlot (func)</synopsis>
           <synopsis>SlopefieldPlot (func,x1,x2,y1,y2)</synopsis>
           <para>
-	    Plot a slope field.  The function <varname>func</varname>
+	    Plot a slope field. The function <varname>func</varname>
 	    should take two real numbers <varname>x</varname>
 	    and <varname>y</varname>, or a single complex
 	    number.
             Optionally you can specify the limits of the plotting window as
 	    <varname>x1</varname>, <varname>x2</varname>,
-	    <varname>y1</varname>, <varname>y2</varname>.  If limits are not
+	    <varname>y1</varname>, <varname>y2</varname>. If limits are not
 	    specified, then the currently set limits apply
 	    (See <link linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>).
           </para>
@@ -5337,9 +5337,9 @@ optionally the limits as <userinput>x1,x2,y1,y2</userinput>.
           <synopsis>SurfacePlot (func)</synopsis>
           <synopsis>SurfacePlot (func,x1,x2,y1,y2,z1,z2)</synopsis>
           <para>
-	    Plot a surface function which takes either two arguments or a complex number.  First comes the function then optionally limits as <varname>x1</varname>, <varname>x2</varname>,
+	    Plot a surface function which takes either two arguments or a complex number. First comes the function then optionally limits as <varname>x1</varname>, <varname>x2</varname>,
 	    <varname>y1</varname>, <varname>y2</varname>,
-	    <varname>z1</varname>, <varname>z2</varname>.  If limits are not
+	    <varname>z1</varname>, <varname>z2</varname>. If limits are not
 	    specified, then the currently set limits apply
 	    (See <link linkend="gel-function-SurfacePlotWindow"><function>SurfacePlotWindow</function></link>).
 	    Genius can only plot a single surface function at this time.
@@ -5372,7 +5372,7 @@ optionally the limits as <userinput>x1,x2,y1,y2</userinput>.
           <synopsis>VectorfieldDrawSolution (x, y, dt, tlen)</synopsis>
           <para>
 	    When a vector field plot is active, draw a solution with
-	    the specified initial condition.  The standard
+	    the specified initial condition. The standard
 	    Runge-Kutta method is used with increment <varname>dt</varname>
 	    for an interval of length <varname>tlen</varname>.
 	    Solutions stay on the graph until a different plot is shown or until
@@ -5390,22 +5390,22 @@ optionally the limits as <userinput>x1,x2,y1,y2</userinput>.
           <synopsis>VectorfieldPlot (funcx, funcy)</synopsis>
           <synopsis>VectorfieldPlot (funcx, funcy, x1, x2, y1, y2)</synopsis>
           <para>
-	    Plot a two dimensional vector field.  The function
+	    Plot a two dimensional vector field. The function
 	    <varname>funcx</varname>
 	    should be the dx/dt of the vectorfield and the function
 	    <varname>funcy</varname> should be the dy/dt of the vectorfield.
 	    The functions
 	    should take two real numbers <varname>x</varname>
 	    and <varname>y</varname>, or a single complex
-	    number.  When the parameter
+	    number. When the parameter
 	    <link linkend="gel-function-VectorfieldNormalized"><function>VectorfieldNormalized</function></link>
-	    is <constant>true</constant>, then the magnitude of the vectors is normalized.  That is, only
+	    is <constant>true</constant>, then the magnitude of the vectors is normalized. That is, only
 	    the direction and not the magnitude is shown.
 	  </para>
 	  <para>
             Optionally you can specify the limits of the plotting window as
 	    <varname>x1</varname>, <varname>x2</varname>,
-	    <varname>y1</varname>, <varname>y2</varname>.  If limits are not
+	    <varname>y1</varname>, <varname>y2</varname>. If limits are not
 	    specified, then the currently set limits apply
 	    (See <link linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>).
           </para>
diff --git a/help/C/genius.txt b/help/C/genius.txt
index a3afc0a..b03f8c0 100644
--- a/help/C/genius.txt
+++ b/help/C/genius.txt
@@ -3638,7 +3638,7 @@ Number Theory
 
            PadicValuation (n,p)                                               
 
-           Returns the padic valuation (number of trailing zeros in base p).
+           Returns the p-adic valuation (number of trailing zeros in base p).
 
            See Planetmath for more information.
 
@@ -3770,7 +3770,7 @@ Matrix Manipulation
 
            CompoundMatrix (k,A)                                               
 
-           Calculate the kth compund matrix of A.
+           Calculate the kth compound matrix of A.
 
    CountZeroColumns
 
diff --git a/help/C/genius.xml b/help/C/genius.xml
index 5563ca8..af8aa92 100644
--- a/help/C/genius.xml
+++ b/help/C/genius.xml
@@ -326,7 +326,7 @@ variables.  Finally it allows plotting functions using a user friendly dialog bo
 	work area.  If you are running the text only version then the console
 	will be the only thing that is available to you.  If you want to use
 	&app; as a calculator only, just type in your expression here and it
-	willg et evaluated.
+	will be evaluated.
       </para>
 
       <para>
@@ -693,7 +693,7 @@ Values in GEL can be <link linkend="genius-gel-values-numbers">numbers</link>, <
 Integers are the first type of number in GEL. Integers are written in the normal way.
 <programlisting>1234
 </programlisting>
-Hexidecimal and octal numbers can be written using C notation. For example:
+Hexadecimal and octal numbers can be written using C notation. For example:
 <programlisting>0x123ABC
 01234
 </programlisting>
@@ -1076,7 +1076,7 @@ this should be second nature. However genius can let you pretend it is a
 terminator somewhat, if a <literal>;</literal> is found at the end of a parenthesis or a block,
 genius will itself append a null node to it as if you would have written
 <userinput>;null</userinput>.
-This is usefull in case you do not want to return a value from say a loop,
+This is useful in case you do not want to return a value from say a loop,
 or if you handle the return differently. Note that it will slightly slow down
 the code if it is executed too often as there is one more operator involved.
       </para>
@@ -1310,7 +1310,7 @@ different from <literal>=</literal> because it never gets translated to a
          <term><synopsis>a.%b</synopsis></term>
          <listitem>
            <para>
-             Element by element the mod operator.  Returns the remaineder
+             Element by element the mod operator.  Returns the remainder
 	     after element by element <userinput>a./b</userinput>.
            </para>
          </listitem>
@@ -1588,7 +1588,7 @@ different from <literal>=</literal> because it never gets translated to a
          <term><synopsis>a:b</synopsis></term>
          <listitem>
            <para>
-             Build a vector from <varname>a</varname> to <varname>b</varname> (or specify a row, column region for the <literal>@</literal> operator).  For example to get rows 2 to 4 of mamtrix <varname>A</varname> we could do
+             Build a vector from <varname>a</varname> to <varname>b</varname> (or specify a row, column region for the <literal>@</literal> operator).  For example to get rows 2 to 4 of matrix <varname>A</varname> we could do
 	     <programlisting>A@(2:4,)
 	     </programlisting>
 	     as <userinput>2:4</userinput> will return a vector
@@ -1706,7 +1706,7 @@ until <expression1> do <expression2>
 do <expression2> while <expression1>
 do <expression2> until <expression1>]]></programlisting>
 
-These are similiar to other languages, however they return the result of the last iteration or <literal>NULL</literal> if no iteration was done.  In the boolean expression, <literal>=</literal> is translated into <literal>==</literal> just as for the <literal>if</literal> statement.
+These are similar to other languages, however they return the result of the last iteration or <literal>NULL</literal> if no iteration was done.  In the boolean expression, <literal>=</literal> is translated into <literal>==</literal> just as for the <literal>if</literal> statement.
         </para>
       </sect2>
 
@@ -1793,7 +1793,7 @@ If no body is executed (for example <userinput>sum i=1 to 0 do ...</userinput>)
 
       <para>
 	Normally <literal>=</literal> is translated to <literal>==</literal> if
-	it happens to be somewhere where GEL is expecing a condition such as
+	it happens to be somewhere where GEL is expecting a condition such as
 	in the if condition.  For example
 	<programlisting>if a=b then c
 if a==b then c
@@ -1817,7 +1817,7 @@ if a==b then c
 	To build up logical expressions use the words <literal>not</literal>,
 	<literal>and</literal>, <literal>or</literal>, <literal>xor</literal>.
 	The operators <literal>or</literal> and <literal>and</literal> are
-special beasts as they evaluate their arguemnts one by one, so the usual trick
+special beasts as they evaluate their arguments one by one, so the usual trick
 for conditional evaluation works here as well. For example, <literal>1 or a=1</literal> will not set
 <literal>a=1</literal> since the first argument was true.
       </para>
@@ -1902,7 +1902,7 @@ f();
 function f() = (a:=5);
 f();
 </programlisting>
-	  Sometimes, however, it is neccessary to set
+	  Sometimes, however, it is necessary to set
 a global variable from inside a function.  When this behaviour is needed,
 use the
 <function>set</function> function. Passing a string or a quoted identifier to
@@ -1923,7 +1923,7 @@ or:
         </para>
 	<para>
 	  So to recap in a more technical language:  Genius operates with
-	  different numberred contexts.  The top level is the context 0
+	  different numbered contexts.  The top level is the context 0
 	  (zero).  Whenever a function is entered, the context is raised,
 	  and when the function returns the context is lowered.  A function
 	  or a variable is always visible from all higher numbered contexts.
@@ -1994,7 +1994,7 @@ Example:
     <sect1 id="genius-gel-references">
       <title>References</title>
       <para>
-	It may be neccessary for some functions to return more than one value.
+	It may be necessary for some functions to return more than one value.
 	This may be accomplished by returning a vector of values, but many
 	times it is convenient to use passing a reference to a variable.
 	You pass a reference to a variable to a function, and the function
@@ -2043,7 +2043,7 @@ gives us 4.
     <term><userinput>a</userinput></term>
     <listitem>
       <para>
-	Identifier.  Here we would be setting the varable of name
+	Identifier.  Here we would be setting the variable of name
 	<varname>a</varname>.
       </para>
     </listitem>
@@ -2122,7 +2122,7 @@ could use the following code.
 	as just sequence of lines as if were entered on the command line.
 	In particular, you do not need to enter the separator at the end of the
 	line (unless it is of course part of several statements inside
-	parenteses).
+	parentheses).
       </para>
       <para>
 	The following code will produce an error when entered on the top
@@ -2140,7 +2140,7 @@ else
 	go on to the next
 	line, it will see <literal>else</literal>, and it will produce
 	a parsing error.  To fix this, use parentheses.  &app; will not
-	be satisfied until it has found that all parenteses are closed.
+	be satisfied until it has found that all parentheses are closed.
 <programlisting>if Something() then (
   DoSomething()
 ) else (
diff --git a/lib/library-strings.c b/lib/library-strings.c
index c3570f1..2ebf4c6 100644
--- a/lib/library-strings.c
+++ b/lib/library-strings.c
@@ -64,7 +64,7 @@ char *fake = N_("Test if Mp is a Mersenne prime using the Lucas-Lehmer test");
 char *fake = N_("Return all maximal prime power factors of a number");
 char *fake = N_("Vector with the known Mersenne prime exponents");
 char *fake = N_("Return the Moebius mu function evaluated in n");
-char *fake = N_("Returns the padic valuation (number of trailing zeros in base p).");
+char *fake = N_("Returns the p-adic valuation (number of trailing zeros in base p).");
 char *fake = N_("Compute a^b mod m");
 char *fake = N_("Return all prime factors of a number");
 char *fake = N_("Pseudoprime test, true iff b^(n-1) == 1 (mod n)");
@@ -74,7 +74,7 @@ char *fake = N_("Find square root of n mod p (a prime). Null is returned if not
 char *fake = N_("Apply a function over all entries of a matrix and return a matrix of the results");
 char *fake = N_("Apply a function over all entries of 2 matrices (or 1 value and 1 matrix) and return a matrix of the results");
 char *fake = N_("Remove column(s) and row(s) from a matrix");
-char *fake = N_("Calculate the kth compund matrix of A");
+char *fake = N_("Calculate the kth compound matrix of A");
 char *fake = N_("Delete a column of a matrix");
 char *fake = N_("Delete a row of a matrix");
 char *fake = N_("Get the dot product of two vectors (no conjugates)");
diff --git a/lib/linear_algebra/misc.gel b/lib/linear_algebra/misc.gel
index 7697cfc..2b310aa 100644
--- a/lib/linear_algebra/misc.gel
+++ b/lib/linear_algebra/misc.gel
@@ -271,7 +271,7 @@ function LowerTriangular(M) = (
 	UpperTriangular (M.').'
 )
 
-SetHelp("CompoundMatrix", "matrix", "Calculate the kth compund matrix of A")
+SetHelp("CompoundMatrix", "matrix", "Calculate the kth compound matrix of A")
 function CompoundMatrix(k,A) = (
 	if not IsInteger(k) or k < 1 or k > min(columns(A),rows(A)) or not IsMatrix(A) then
 		(error("CompoundMatrix: arguments of right type/size");bailout);

