Function: idealadd
Section: number_fields
C-Name: idealadd
Prototype: GGG
Help: idealadd(nf,x,y): sum of two ideals x and y in the number field
 defined by nf.
Doc: sum of the two ideals $x$ and $y$ in the number field $\var{nf}$. The
 result is given in HNF.
 \bprog
  ? K = nfinit(x^2 + 1);
  ? a = idealadd(K, 2, x + 1)  \\ ideal generated by 2 and 1+I
  %2 =
  [2 1]

  [0 1]
  ? pr = idealprimedec(K, 5)[1];  \\ a prime ideal above 5
  ? idealadd(K, a, pr)     \\ coprime, as expected
  %4 =
  [1 0]

  [0 1]
 @eprog\noindent
 This function cannot be used to add arbitrary $\Z$-modules, since it assumes
 that its arguments are ideals:
 \bprog
   ? b = Mat([1,0]~);
   ? idealadd(K, b, b)     \\ only square t_MATs represent ideals
   *** idealadd: nonsquare t_MAT in idealtyp.
   ? c = [2, 0; 2, 0]; idealadd(K, c, c)   \\ nonsense
   %6 =
   [2 0]

   [0 2]
   ? d = [1, 0; 0, 2]; idealadd(K, d, d)   \\ nonsense
   %7 =
   [1 0]

   [0 1]

 @eprog\noindent In the last two examples, we get wrong results since the
 matrices $c$ and $d$ do not correspond to an ideal: the $\Z$-span of their
 columns (as usual interpreted as coordinates with respect to the integer basis
 \kbd{K.zk}) is not an $\Z_{K}$-module. To add arbitrary $\Z$-modules generated
 by the columns of matrices $A$ and $B$, use \kbd{mathnf(concat(A,B))}.
