1##  <#GAPDoc Label="Singular">
2##  <Subsection Label="Singular">
3##  <Heading>&Singular;</Heading>
4##  <Example><![CDATA[
5##  gap> F2 := HomalgRingOfIntegersInSingular( 2 );
6##  GF(2)
7##  gap> Display( F2 );
8##  <An external ring residing in the CAS Singular>
9##  gap> F2s := HomalgRingOfIntegersInSingular( 2, "s" ,F2 );
10##  GF(2)(s)
11##  gap> Display( F2s );
12##  <An external ring residing in the CAS Singular>
13##  gap> ZZ := HomalgRingOfIntegersInSingular( F2 );
14##  Z
15##  gap> Display( ZZ );
16##  <An external ring residing in the CAS Singular>
17##  gap> Q := HomalgFieldOfRationalsInSingular( F2 );
18##  Q
19##  gap> Display( Q );
20##  <An external ring residing in the CAS Singular>
21##  gap> Qs := HomalgFieldOfRationalsInSingular( "s", F2 );
22##  Q(s)
23##  gap> Display( Qs );
24##  <An external ring residing in the CAS Singular>
25##  gap> Qi := HomalgFieldOfRationalsInSingular( "i", "i^2+1", Q );
26##  Q[i]/(i^2+1)
27##  gap> Display( Qi );
28##  <An external ring residing in the CAS Singular>
29##  ]]></Example>
30##  <C>Q := HomalgFieldOfRationalsInSingular( )</C> would launch another Singular.
31##  <Example><![CDATA[
32##  gap> F2xyz := F2 * "x,y,z";
33##  GF(2)[x,y,z]
34##  gap> Display( F2xyz );
35##  <An external ring residing in the CAS Singular>
36##  gap> F2sxyz := F2s * "x,y,z";
37##  GF(2)(s)[x,y,z]
38##  gap> Display( F2sxyz );
39##  <An external ring residing in the CAS Singular>
40##  gap> F2xyzw := F2xyz * "w";
41##  GF(2)[x,y,z][w]
42##  gap> Display( F2xyzw );
43##  <An external ring residing in the CAS Singular>
44##  gap> F2sxyzw := F2sxyz * "w";
45##  GF(2)(s)[x,y,z][w]
46##  gap> Display( F2sxyzw );
47##  <An external ring residing in the CAS Singular>
48##  gap> ZZxyz := ZZ * "x,y,z";
49##  Z[x,y,z]
50##  gap> Display( ZZxyz );
51##  <An external ring residing in the CAS Singular>
52##  gap> ZZxyzw := ZZxyz * "w";
53##  Z[x,y,z][w]
54##  gap> Display( ZZxyzw );
55##  <An external ring residing in the CAS Singular>
56##  gap> Qxyz := Q * "x,y,z";
57##  Q[x,y,z]
58##  gap> Display( Qxyz );
59##  <An external ring residing in the CAS Singular>
60##  gap> Qsxyz := Qs * "x,y,z";
61##  Q(s)[x,y,z]
62##  gap> Display( Qsxyz );
63##  <An external ring residing in the CAS Singular>
64##  gap> Qixyz := Qi * "x,y,z";
65##  (Q[i]/(i^2+1))[x,y,z]
66##  gap> Display( Qixyz );
67##  <An external ring residing in the CAS Singular>
68##  gap> Qxyzw := Qxyz * "w";
69##  Q[x,y,z][w]
70##  gap> Display( Qxyzw );
71##  <An external ring residing in the CAS Singular>
72##  gap> Qsxyzw := Qsxyz * "w";
73##  Q(s)[x,y,z][w]
74##  gap> Display( Qsxyzw );
75##  <An external ring residing in the CAS Singular>
76##  gap> Dxyz := RingOfDerivations( Qxyz, "Dx,Dy,Dz" );
77##  Q[x,y,z]<Dx,Dy,Dz>
78##  gap> Display( Dxyz );
79##  <An external ring residing in the CAS Singular>
80##  gap> Exyz := ExteriorRing( Qxyz, "e,f,g" );
81##  Q{e,f,g}
82##  gap> Display( Exyz );
83##  <An external ring residing in the CAS Singular>
84##  gap> Dsxyz := RingOfDerivations( Qsxyz, "Dx,Dy,Dz" );
85##  Q(s)[x,y,z]<Dx,Dy,Dz>
86##  gap> Display( Dsxyz );
87##  <An external ring residing in the CAS Singular>
88##  gap> Esxyz := ExteriorRing( Qsxyz, "e,f,g" );
89##  Q(s){e,f,g}
90##  gap> Display( Esxyz );
91##  <An external ring residing in the CAS Singular>
92##  gap> Dixyz := RingOfDerivations( Qixyz, "Dx,Dy,Dz" );
93##  (Q[i]/(i^2+1))[x,y,z]<Dx,Dy,Dz>
94##  gap> Display( Dixyz );
95##  <An external ring residing in the CAS Singular>
96##  gap> Eixyz := ExteriorRing( Qixyz, "e,f,g" );
97##  (Q[i]/(i^2+1)){e,f,g}
98##  gap> Display( Eixyz );
99##  <An external ring residing in the CAS Singular>
100##  ]]></Example>
101##  </Subsection>
102##  <#/GAPDoc>
103
104LoadPackage( "RingsForHomalg" );
105
106Print( "~~~~~~~~~~~\n\n" );
107Print( "Singular\n\n" );
108
109F2 := HomalgRingOfIntegersInSingular( 2 );
110Display( F2 );
111
112F2s := HomalgRingOfIntegersInSingular( 2, "s", F2 );
113Display( F2s );
114
115ZZ := HomalgRingOfIntegersInSingular( F2 );
116Display( ZZ );
117
118Q := HomalgFieldOfRationalsInSingular( F2 );
119Display( Q );
120
121Qs := HomalgFieldOfRationalsInSingular( "s", F2 );
122Display( Qs );
123
124Qi := HomalgFieldOfRationalsInSingular( "i", "i^2+1", Q );
125Display( Qi );
126
127F2xyz := F2 * "x,y,z";
128Display( F2xyz );
129
130F2sxyz := F2s * "x,y,z";
131Display( F2sxyz );
132
133F2xyzw := F2xyz * "w";
134Display( F2xyzw );
135
136F2sxyzw := F2sxyz * "w";
137Display( F2sxyzw );
138
139ZZxyz := ZZ * "x,y,z";
140Display( ZZxyz );
141
142ZZxyzw := ZZxyz * "w";
143Display( ZZxyzw );
144
145Qxyz := Q * "x,y,z";
146Display( Qxyz );
147
148Qsxyz := Qs * "x,y,z";
149Display( Qsxyz );
150
151Qixyz := Qi * "x,y,z";
152Display( Qixyz );
153
154Qxyzw := Qxyz * "w";
155Display( Qxyzw );
156
157Qsxyzw := Qsxyz * "w";
158Display( Qsxyzw );
159
160Dxyz := RingOfDerivations( Qxyz, "Dx,Dy,Dz" );
161Display( Dxyz );
162
163Exyz := ExteriorRing( Qxyz, "e,f,g" );
164Display( Exyz );
165
166Dsxyz := RingOfDerivations( Qsxyz, "Dx,Dy,Dz" );
167Display( Dsxyz );
168
169Esxyz := ExteriorRing( Qsxyz, "e,f,g" );
170Display( Esxyz );
171
172Dixyz := RingOfDerivations( Qixyz, "Dx,Dy,Dz" );
173Display( Dixyz );
174
175Eixyz := ExteriorRing( Qixyz, "e,f,g" );
176Display( Eixyz );
177