algebra 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +53 -0
  3. data/.travis.yml +7 -0
  4. data/CODE_OF_CONDUCT.md +49 -0
  5. data/Gemfile +7 -0
  6. data/Gemfile.lock +28 -0
  7. data/LICENSE.txt +21 -0
  8. data/README-ja.txt +60 -0
  9. data/README.md +61 -0
  10. data/Rakefile +43 -0
  11. data/algebra.gemspec +33 -0
  12. data/bin/console +14 -0
  13. data/bin/setup +8 -0
  14. data/doc-ja/README-ja.html +69 -0
  15. data/doc-ja/README-ja.rd +60 -0
  16. data/doc-ja/README.html +0 -0
  17. data/doc-ja/README.rd +0 -0
  18. data/doc-ja/algebra-ja.html +66 -0
  19. data/doc-ja/algebra-ja.rd +60 -0
  20. data/doc-ja/algebraic-equation-ja.html +36 -0
  21. data/doc-ja/algebraic-equation-ja.rd +26 -0
  22. data/doc-ja/algebraic-extension-field-ja.html +122 -0
  23. data/doc-ja/algebraic-extension-field-ja.rd +118 -0
  24. data/doc-ja/algebraic-parser-ja.html +87 -0
  25. data/doc-ja/algebraic-parser-ja.rd +95 -0
  26. data/doc-ja/changes.html +161 -0
  27. data/doc-ja/changes.rd +119 -0
  28. data/doc-ja/elementary-divisor-ja.html +56 -0
  29. data/doc-ja/elementary-divisor-ja.rd +45 -0
  30. data/doc-ja/euclidian-ring-ja.html +78 -0
  31. data/doc-ja/euclidian-ring-ja.rd +69 -0
  32. data/doc-ja/finite-group-ja.html +285 -0
  33. data/doc-ja/finite-group-ja.rd +276 -0
  34. data/doc-ja/finite-map-ja.html +224 -0
  35. data/doc-ja/finite-map-ja.rd +227 -0
  36. data/doc-ja/finite-set-ja.html +393 -0
  37. data/doc-ja/finite-set-ja.rd +408 -0
  38. data/doc-ja/index-ja.html +113 -0
  39. data/doc-ja/index-ja.rd +112 -0
  40. data/doc-ja/jordan-form-ja.html +106 -0
  41. data/doc-ja/jordan-form-ja.rd +99 -0
  42. data/doc-ja/localized-ring-ja.html +121 -0
  43. data/doc-ja/localized-ring-ja.rd +131 -0
  44. data/doc-ja/m-polynomial-ja.html +542 -0
  45. data/doc-ja/m-polynomial-ja.rd +596 -0
  46. data/doc-ja/matrix-algebra-ja.html +686 -0
  47. data/doc-ja/matrix-algebra-ja.rd +727 -0
  48. data/doc-ja/matrix-algebra-triplet-ja.html +124 -0
  49. data/doc-ja/matrix-algebra-triplet-ja.rd +129 -0
  50. data/doc-ja/permutation-group-ja.html +159 -0
  51. data/doc-ja/permutation-group-ja.rd +151 -0
  52. data/doc-ja/polynomial-converter-ja.html +64 -0
  53. data/doc-ja/polynomial-converter-ja.rd +54 -0
  54. data/doc-ja/polynomial-ja.html +446 -0
  55. data/doc-ja/polynomial-ja.rd +473 -0
  56. data/doc-ja/residue-class-ring-ja.html +112 -0
  57. data/doc-ja/residue-class-ring-ja.rd +113 -0
  58. data/doc-ja/sample-algebraic-equation01.rb.v.rd +11 -0
  59. data/doc-ja/sample-algebraic-equation02.rb.v.rd +11 -0
  60. data/doc-ja/sample-algebraic-root01.rb.v.rd +20 -0
  61. data/doc-ja/sample-algebraicfield01.rb.v.rd +26 -0
  62. data/doc-ja/sample-algebraicfield02.rb.v.rd +15 -0
  63. data/doc-ja/sample-cayleyhamilton01.rb.v.rd +14 -0
  64. data/doc-ja/sample-diagonalization01.rb.v.rd +48 -0
  65. data/doc-ja/sample-divmod01.rb.v.rd +17 -0
  66. data/doc-ja/sample-elementary-divisor01.rb.v.rd +48 -0
  67. data/doc-ja/sample-factorize01.rb.v.rd +11 -0
  68. data/doc-ja/sample-factorize02.rb.v.rd +13 -0
  69. data/doc-ja/sample-factorize03.rb.v.rd +14 -0
  70. data/doc-ja/sample-factorize04.rb.v.rd +14 -0
  71. data/doc-ja/sample-factorize05.rb.v.rd +53 -0
  72. data/doc-ja/sample-galois-group01.rb.v.rd +27 -0
  73. data/doc-ja/sample-gaussian-elimination01.rb.v.rd +19 -0
  74. data/doc-ja/sample-geometry01.rb.v.rd +33 -0
  75. data/doc-ja/sample-geometry02.rb.v.rd +34 -0
  76. data/doc-ja/sample-geometry03.rb.v.rd +45 -0
  77. data/doc-ja/sample-geometry04.rb.v.rd +33 -0
  78. data/doc-ja/sample-geometry07.rb.v.rd +62 -0
  79. data/doc-ja/sample-groebner01.rb.v.rd +13 -0
  80. data/doc-ja/sample-groebner02.rb.v.rd +18 -0
  81. data/doc-ja/sample-groebner03.rb.v.rd +19 -0
  82. data/doc-ja/sample-group01.rb.v.rd +21 -0
  83. data/doc-ja/sample-jordan-form01.rb.v.rd +56 -0
  84. data/doc-ja/sample-jordanform01.rb.v.rd +55 -0
  85. data/doc-ja/sample-lagrange-multiplier01.rb.v.rd +35 -0
  86. data/doc-ja/sample-m-factorize01.rb.v.rd +15 -0
  87. data/doc-ja/sample-m-factorize02.rb.v.rd +12 -0
  88. data/doc-ja/sample-m-polynomial01.rb.v.rd +10 -0
  89. data/doc-ja/sample-map01.rb.v.rd +9 -0
  90. data/doc-ja/sample-polynomial01.rb.v.rd +9 -0
  91. data/doc-ja/sample-polynomial02.rb.v.rd +11 -0
  92. data/doc-ja/sample-primefield01.rb.v.rd +13 -0
  93. data/doc-ja/sample-quotientfield01.rb.v.rd +11 -0
  94. data/doc-ja/sample-quotientfield02.rb.v.rd +18 -0
  95. data/doc-ja/sample-quotientfield03.rb.v.rd +16 -0
  96. data/doc-ja/sample-quotientfield04.rb.v.rd +16 -0
  97. data/doc-ja/sample-set01.rb.v.rd +18 -0
  98. data/doc-ja/sample-splitting-field01.rb.v.rd +19 -0
  99. data/doc-ja/samples-ja.html +885 -0
  100. data/doc-ja/samples-ja.rd +221 -0
  101. data/doc-ja/style.css +85 -0
  102. data/doc-ja/todo.html +20 -0
  103. data/doc-ja/todo.rd +9 -0
  104. data/lib/algebra.rb +36 -0
  105. data/lib/algebra/algebraic-equation.rb +56 -0
  106. data/lib/algebra/algebraic-extension-field.rb +135 -0
  107. data/lib/algebra/algebraic-parser.rb +160 -0
  108. data/lib/algebra/algebraic-system.rb +224 -0
  109. data/lib/algebra/annihilate.rb +52 -0
  110. data/lib/algebra/array-supplement.rb +53 -0
  111. data/lib/algebra/auto-require.rb +84 -0
  112. data/lib/algebra/chinese-rem-th.rb +135 -0
  113. data/lib/algebra/combinatorial.rb +145 -0
  114. data/lib/algebra/elementary-divisor.rb +193 -0
  115. data/lib/algebra/euclidian-ring.rb +161 -0
  116. data/lib/algebra/factors.rb +305 -0
  117. data/lib/algebra/finite-group.rb +374 -0
  118. data/lib/algebra/finite-map.rb +201 -0
  119. data/lib/algebra/finite-set.rb +456 -0
  120. data/lib/algebra/galois-group.rb +129 -0
  121. data/lib/algebra/gaussian-elimination.rb +385 -0
  122. data/lib/algebra/groebner-basis-coeff.rb +228 -0
  123. data/lib/algebra/groebner-basis.rb +197 -0
  124. data/lib/algebra/import-module-single-thread.rb +86 -0
  125. data/lib/algebra/import-module.rb +491 -0
  126. data/lib/algebra/jordan-form.rb +114 -0
  127. data/lib/algebra/linear-algebra.rb +143 -0
  128. data/lib/algebra/localized-ring.rb +294 -0
  129. data/lib/algebra/m-index.rb +282 -0
  130. data/lib/algebra/m-polynomial-factor-int.rb +186 -0
  131. data/lib/algebra/m-polynomial-factor-zp.rb +114 -0
  132. data/lib/algebra/m-polynomial-factor.rb +315 -0
  133. data/lib/algebra/m-polynomial-gcd.rb +40 -0
  134. data/lib/algebra/m-polynomial.rb +875 -0
  135. data/lib/algebra/matrix-algebra-triplet.rb +292 -0
  136. data/lib/algebra/matrix-algebra.rb +929 -0
  137. data/lib/algebra/numeric-supplement.rb +123 -0
  138. data/lib/algebra/permutation-group.rb +257 -0
  139. data/lib/algebra/polynomial-converter.rb +193 -0
  140. data/lib/algebra/polynomial-factor-alg.rb +148 -0
  141. data/lib/algebra/polynomial-factor-int.rb +252 -0
  142. data/lib/algebra/polynomial-factor-zp.rb +165 -0
  143. data/lib/algebra/polynomial-factor.rb +140 -0
  144. data/lib/algebra/polynomial.rb +592 -0
  145. data/lib/algebra/powers.rb +31 -0
  146. data/lib/algebra/prime-gen.rb +32 -0
  147. data/lib/algebra/rational.rb +81 -0
  148. data/lib/algebra/residue-class-ring.rb +219 -0
  149. data/lib/algebra/sets-system.rb +43 -0
  150. data/lib/algebra/splitting-field.rb +103 -0
  151. data/lib/algebra/version.rb +3 -0
  152. data/sample/Makefile +10 -0
  153. data/sample/do-testscripts.rb +100 -0
  154. data/sample/sample-algebraic-equation01.rb +6 -0
  155. data/sample/sample-algebraic-equation02.rb +6 -0
  156. data/sample/sample-algebraic-root01.rb +15 -0
  157. data/sample/sample-algebraicfield01.rb +21 -0
  158. data/sample/sample-algebraicfield02.rb +10 -0
  159. data/sample/sample-cayleyhamilton01.rb +9 -0
  160. data/sample/sample-diagonalization01.rb +43 -0
  161. data/sample/sample-divmod01.rb +12 -0
  162. data/sample/sample-elementary-divisor01.rb +43 -0
  163. data/sample/sample-factorize01.rb +6 -0
  164. data/sample/sample-factorize02.rb +8 -0
  165. data/sample/sample-factorize03.rb +9 -0
  166. data/sample/sample-factorize04.rb +9 -0
  167. data/sample/sample-factorize05.rb +48 -0
  168. data/sample/sample-galois-group01.rb +22 -0
  169. data/sample/sample-gaussian-elimination01.rb +14 -0
  170. data/sample/sample-geometry01.rb +28 -0
  171. data/sample/sample-geometry02.rb +29 -0
  172. data/sample/sample-geometry03.rb +40 -0
  173. data/sample/sample-geometry04.rb +28 -0
  174. data/sample/sample-geometry07.rb +58 -0
  175. data/sample/sample-groebner01.rb +8 -0
  176. data/sample/sample-groebner02.rb +13 -0
  177. data/sample/sample-groebner03.rb +14 -0
  178. data/sample/sample-group01.rb +16 -0
  179. data/sample/sample-jordan-form01.rb +51 -0
  180. data/sample/sample-lagrange-multiplier01.rb +30 -0
  181. data/sample/sample-m-factorize01.rb +10 -0
  182. data/sample/sample-m-factorize02.rb +7 -0
  183. data/sample/sample-m-polynomial01.rb +5 -0
  184. data/sample/sample-map01.rb +4 -0
  185. data/sample/sample-polynomial01.rb +4 -0
  186. data/sample/sample-polynomial02.rb +6 -0
  187. data/sample/sample-primefield01.rb +8 -0
  188. data/sample/sample-quotientfield01.rb +6 -0
  189. data/sample/sample-quotientfield02.rb +13 -0
  190. data/sample/sample-quotientfield03.rb +11 -0
  191. data/sample/sample-quotientfield04.rb +11 -0
  192. data/sample/sample-set01.rb +13 -0
  193. data/sample/sample-splitting-field01.rb +14 -0
  194. data/sample/test-00-cayley-hamilton.rb +76 -0
  195. data/sample/test-00-groebner-basis.rb +274 -0
  196. data/sample/test-00-polynomial-factor-alg.rb +89 -0
  197. data/sample/test-00.list +4 -0
  198. data/sample/time-trial.rb +65 -0
  199. metadata +373 -0
@@ -0,0 +1,276 @@
1
+ ########################################################################
2
+ # #
3
+ # lib/finite-group.rb #
4
+ # #
5
+ ########################################################################
6
+ =begin
7
+ [((<index-ja|URL:index-ja.html>))]
8
+ ((<Algebra::OperatorDomain>))
9
+ /
10
+ ((<Algebra::Set>))
11
+ /
12
+ ((<Algebra::Group>))
13
+ /
14
+ ((<Algebra::QuotientGroup>))
15
+
16
+ = Algebra::OperatorDomain
17
+
18
+ 群が作用する集合の性質を集めたモジュールです。
19
+ ((<Group>)) クラスがインクルードしています。
20
+
21
+ == ファイル名:
22
+ * ((|finite-group.rb|))
23
+
24
+ == メソッド:
25
+
26
+ --- right_act(other)
27
+ ((|self|)) と ((|other|)) の積を返します。すなわち ((|self|))
28
+ の元 ((|x|)) と ((|other|)) の元 ((|y|)) に対して (({x * y})) の
29
+ 形の元の集合(((|Set|)))を返します。
30
+
31
+ --- act
32
+ ((<right_act>)) のエイリアスです。
33
+
34
+ --- left_act(other)
35
+ ((|self|)) と ((|other|)) の積を返します。すなわち ((|self|))
36
+ の元 ((|x|)) と ((|other|)) の元 ((|y|)) に対して (({y * x})) の
37
+ 形の元の集合(((|Set|)))を返します。
38
+
39
+ --- right_quotient(other)
40
+ ((|self|)) を ((|other|)) で割った右剰余類の集合(((|Set|)))
41
+ を返します。
42
+
43
+ --- quotient
44
+ --- right_coset
45
+ --- coset
46
+ ((<right_quotient>)) のエイリアスです。
47
+
48
+ --- left_quotient(other)
49
+ ((|self|)) を ((|other|)) で割った左剰余類の集合(((|Set|)))
50
+ を返します。
51
+
52
+ --- left_coset
53
+ ((<left_quotient>)) のエイリアスです。
54
+
55
+ --- right_representatives(other)
56
+ 右剰余類 ((<right_quotient>)) から取った代表元の集合を返します。
57
+
58
+ --- representatives
59
+ ((<right_representatives>)) のエイリアスです。
60
+
61
+ --- left_representatives(other)
62
+ 左剰余類 ((<left_quotient>)) から取った代表元の集合を返します。
63
+
64
+ --- right_orbit!(other)
65
+ ((|self|)) を ((|other|)) を繰り返し右から作用させて広げます。
66
+ 作用は ((|*|)) によります。
67
+
68
+ --- orbit!
69
+ ((<right_orbit!>)) のエイリアスです。
70
+
71
+ --- left_orbit!(other)
72
+ ((|self|)) を ((|other|)) を繰り返し左から作用させて広げます。
73
+ 作用は ((|*|)) によります。
74
+
75
+
76
+ = Algebra::Set
77
+
78
+ == ファイル名:
79
+ * ((|finite-group.rb|))
80
+ ここでは ((|finite-set.rb|)) で定義された ((<Set|URL:finite-set.html>))
81
+ に付け加えるべきメソッドを定義しています。
82
+
83
+ == インクルードしているモジュール:
84
+
85
+ * ((|OperatorDomain|))
86
+
87
+ == メソッド:
88
+
89
+ --- *
90
+ ((<act>)) のエイリアスです。
91
+
92
+ --- /
93
+ ((<quotient>)) のエイリアスです。
94
+
95
+ --- %
96
+ ((<representatives>)) のエイリアスです。
97
+
98
+ --- increasing_series([x])
99
+ ((|x|)) から始まる増大列の配列を返します。これは次のコードと同値
100
+ です。
101
+
102
+ def increasing_series(x = unit_group)
103
+ a = []
104
+ loop do
105
+ a.push x
106
+ if x >= (y = yield x)
107
+ break
108
+ end
109
+ x = y
110
+ end
111
+ a
112
+ end
113
+
114
+ --- decreasing_series([x])
115
+ ((|x|)) から始まる減少の配列を返します。これは次のコードと同値
116
+ です。
117
+
118
+ def decreasing_series(x = self)
119
+ a = []
120
+ loop do
121
+ a.push x
122
+ if x <= (y = yield x)
123
+ break
124
+ end
125
+ x = y
126
+ end
127
+ a
128
+ end
129
+
130
+ = Algebra::Group
131
+
132
+ == ファイル名:
133
+ * ((|finite-group.rb|))
134
+
135
+ == スーパークラス:
136
+ * ((|Set|))
137
+
138
+ == クラスメソッド:
139
+
140
+ --- ::new(u, [g0, g1, ...]])
141
+ ((|u|)) を単位元とし、((|g0|)), ((|g1|)), ... で構成される群を
142
+ 返します。
143
+
144
+ --- ::generate_strong(u, [g0, [g1, ...]])
145
+ 単位元を ((|u|))、強生成元を ((|g0|)), ((|g1|)), ... として、
146
+ 生成される群を返します。
147
+
148
+ == メソッド:
149
+
150
+ --- quotient_group(u)
151
+ 正規部分群 ((|u|)) による剰余群を返します。
152
+
153
+ --- separate
154
+ ブロックを真とする元からなる部分群を返します。
155
+
156
+ --- to_a
157
+ 各要素を配列にして返します。最初の要素は単位元です。
158
+
159
+ --- unity
160
+ 単位元を返します。
161
+
162
+ --- unit_group
163
+ 単位元で生成される単位群を返します。
164
+
165
+ --- semi_complete!
166
+ 現在の要素を掛け合わせて半群を構成します。
167
+
168
+ --- semi_complete
169
+ 現在の要素を掛け合わせて半群を構成たものを返します。
170
+
171
+ --- complete!
172
+ 現在の要素を掛け合わせて群を構成します。
173
+
174
+ --- complete
175
+ 現在の要素を掛け合わせて群を構成たものを返します。
176
+
177
+ --- closed?
178
+ 群として閉じているとき真を返します。
179
+
180
+ --- subgroups
181
+ 全ての部分群の集合を返します。
182
+
183
+ --- centralizer(s)
184
+ ((|self|)) における ((|s|)) の中心化群を返します。
185
+
186
+ --- center
187
+ ((|self|)) の中心化群を返します。
188
+
189
+ --- center?(x)
190
+ ((|self|)) の中で元 ((|x|)) が中心に含まれているとき、真を返します。
191
+
192
+ --- normalizer(s)
193
+ ((|self|)) における ((|s|)) の正規化群を返します。
194
+
195
+ --- normal?(s)
196
+ ((|s|)) が ((|self|)) の正規部分群であるとき真を返します。
197
+
198
+ --- normal_subgroups
199
+ 全ての正規部分群の集合を返します。
200
+
201
+ --- conjugacy_class(x)
202
+ 元 ((|x|)) の共役類を返します
203
+
204
+ --- conjugacy_classes
205
+ ((|self|)) の全ての共役類の集合を返します。
206
+
207
+ --- simple?
208
+ 単純群であるとき、真を返します。
209
+
210
+ --- commutator([h])
211
+ ((|self|)) と ((|h|)) との交換子群を返します。((|h|)) を省略
212
+ すると ((|self|)) が用いられます。
213
+
214
+ --- D([n])
215
+ ((|n|)) 番目の交換子群を返します。(({D(0) = 自分自身})),
216
+ (({D(n+1) = [D[n], D[n]]})) で定義されています。
217
+ ((|n|)) を省略すると 1 が用いられます。
218
+
219
+ --- commutator_series
220
+ (({[D(0), D(1), D(2),..., D(n)]})) という配列を返します。この配列は
221
+ (({D(n) == D(n+1)})) となる ((|n|)) で停止します。
222
+
223
+ --- solvable?
224
+ 可解群であるとき真を返します。
225
+
226
+ --- K([n])
227
+ (({K(0) = 自分自身})),
228
+ (({K(n+1) = [self, K[n]]})) で定義される群を返します。
229
+ ((|n|)) を省略すると 1 が用いられます。
230
+
231
+ --- descending_central_series
232
+ 降中心列
233
+ (({[K(0), K(1), K(2),..., K(n)]})) という配列を返します。この配列は
234
+ (({K(n) == K(n+1)})) となる ((|n|)) で停止します。
235
+
236
+ --- Z([n])
237
+ (({Z(0) = 単位群})),
238
+ (({Z(n+1) = separate{|x| commutator(Set[x]) <= Z(n-1)}}))
239
+ で定義される群を返します。
240
+ ((|n|)) を省略すると 1 が用いられます。
241
+
242
+ --- ascending_central_series
243
+ 昇中心列
244
+ (({[Z(0), Z(1), Z(2),..., Z(n)]})) という配列を返します。この配列は
245
+ (({Z(n) == Z(n+1)})) となる ((|n|)) で停止します。
246
+
247
+ --- nilpotent?
248
+ 冪零群であるとき真を返します。
249
+
250
+ --- nilpotency_class
251
+ 冪零クラスを返します。冪例群でないとき ((|nil|)) を返します。
252
+
253
+
254
+ = Algebra::QuotientGroup
255
+
256
+ == ファイル名:
257
+ * ((|finite-group.rb|))
258
+
259
+ == スーパークラス:
260
+ * ((|Group|))
261
+
262
+ == クラスメソッド:
263
+ --- new(u, [g0, [g1,...]])
264
+ ((|self|)) の正規部分群を ((|u|)) として、
265
+ ((|u|)), ((|g0|)), ((|g1|)), .. を剰余類とする剰余群を返します。
266
+
267
+ == メソッド:
268
+
269
+ --- inverse
270
+ 逆元を返します
271
+
272
+ --- inv
273
+ ((<inverse>)) のエイリアスです。
274
+
275
+ =end
276
+
@@ -0,0 +1,224 @@
1
+ <?xml version="1.0" encoding="utf-8" ?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+ <html xmlns="http://www.w3.org/1999/xhtml">
6
+ <head>
7
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
8
+ <title>doc-ja/finite-map-ja.rd</title>
9
+ <link href="style.css" type="text/css" rel="stylesheet" />
10
+ </head>
11
+ <body>
12
+ <p>[<a href="index-ja.html">index-ja</a>]
13
+ [<a href="finite-set-ja.html">finite-set-ja</a>]
14
+ <a href="#label-0">Algebra::Map</a></p>
15
+ <h1><a name="label-0" id="label-0">Algebra::Map</a></h1><!-- RDLabel: "Algebra::Map" -->
16
+ <p><em>写像クラス</em></p>
17
+ <p>写像を表現するクラスです。</p>
18
+ <h2><a name="label-1" id="label-1">ファイル名:</a></h2><!-- RDLabel: "ファイル名:" -->
19
+ <ul>
20
+ <li><var>finite-map.rb</var></li>
21
+ </ul>
22
+ <h2><a name="label-2" id="label-2">スーパークラス:</a></h2><!-- RDLabel: "スーパークラス:" -->
23
+ <ul>
24
+ <li><var>Set</var></li>
25
+ </ul>
26
+ <h2><a name="label-3" id="label-3">インクルードしているモジュール:</a></h2><!-- RDLabel: "インクルードしているモジュール:" -->
27
+ <ul>
28
+ <li><var>Powers</var></li>
29
+ </ul>
30
+ <h2><a name="label-4" id="label-4">クラスメソッド:</a></h2><!-- RDLabel: "クラスメソッド:" -->
31
+ <dl>
32
+ <dt><a name="label-5" id="label-5"><code>::[[<var>x0</var> =&gt; <var>y0</var>, [<var>x1</var> =&gt; <var>y1</var>, [<var>x2</var> =&gt; <var>y2</var>, ...]]]]</code></a></dt><!-- RDLabel: "::[]" -->
33
+ <dd>
34
+ <p><var>x0</var> の時 <var>y0</var>, <var>x1</var> の時 <var>y1</var>, <var>x2</var> の時 <var>y2</var>,..
35
+ という値を持つ写像を返します。</p>
36
+ <p>例: </p>
37
+ <pre>require "finite-map"
38
+ include Algebra
39
+ p Map[0 =&gt; 10, 1 =&gt; 11, 2 =&gt; 12] #=&gt; {0 =&gt; 10, 1 =&gt; 11, 2 =&gt; 12}
40
+ p Map[{0 =&gt; 10, 1 =&gt; 11, 2 =&gt; 12}] #=&gt; {0 =&gt; 10, 1 =&gt; 11, 2 =&gt; 12}
41
+ p Map.new(0 =&gt; 10, 1 =&gt; 11, 2 =&gt; 12) #=&gt; {0 =&gt; 10, 1 =&gt; 11, 2 =&gt; 12}
42
+ p Map.new({0 =&gt; 10, 1 =&gt; 11, 2 =&gt; 12}) #=&gt; {0 =&gt; 10, 1 =&gt; 11, 2 =&gt; 12}
43
+ p Map.new_a([0, 10, 1, 11, 2, 12]) #=&gt; {0 =&gt; 10, 1 =&gt; 11, 2 =&gt; 12}</pre></dd>
44
+ <dt><a name="label-6" id="label-6"><code>::new([<var>x0</var> =&gt; <var>y0</var>, [<var>x1</var> =&gt; <var>y1</var>, [<var>x2</var> =&gt; <var>y2</var>, ...]]])</code></a></dt><!-- RDLabel: "::new" -->
45
+ <dd>
46
+ <var>x0</var> の時 <var>y0</var>, <var>x1</var> の時 <var>y1</var>, <var>x2</var> の時 <var>y</var>,..
47
+ という値を持つ写像を返します。<a href="#label-5">::[]</a> と同じです。</dd>
48
+ <dt><a name="label-7" id="label-7"><code>::new_a(<var>a</var>)</code></a></dt><!-- RDLabel: "::new_a" -->
49
+ <dd>
50
+ 配列 a の偶数番目を定義域の元、奇数番目を値域の元として定義される
51
+ 写像を生成します。</dd>
52
+ <dt><a name="label-8" id="label-8"><code>::phi([<var>t</var>])</code></a></dt><!-- RDLabel: "::phi" -->
53
+ <dd>
54
+ <p>空写像(定義域が空集合である写像)を返します。集合 <var>t</var> を
55
+ 引数にすると、それを定義域 <a href="#label-14">target</a> にします。</p>
56
+ <p>例: </p>
57
+ <pre>p Map.phi #=&gt; {}
58
+ p Map.phi(Set[0, 1]) #=&gt; {}
59
+ p Map.phi(Set[0, 1]).target #=&gt; {0, 1}</pre></dd>
60
+ <dt><a name="label-9" id="label-9"><code>::empty_set</code></a></dt><!-- RDLabel: "::empty_set" -->
61
+ <dd>
62
+ <a href="#label-8">::phi</a> のエイリアスです。</dd>
63
+ <dt><a name="label-10" id="label-10"><code>::singleton(<var>x</var>, <var>y</var>)</code></a></dt><!-- RDLabel: "::singleton" -->
64
+ <dd>
65
+ ただ一つの元で構成される集合 <code>{x}</code> 上で定義された <var>y</var> という
66
+ 値を取る関数を返します。</dd>
67
+ </dl>
68
+ <h2><a name="label-11" id="label-11">メソッド:</a></h2><!-- RDLabel: "メソッド:" -->
69
+ <dl>
70
+ <dt><a name="label-12" id="label-12"><code>target=(<var>s</var>)</code></a></dt><!-- RDLabel: "target=" -->
71
+ <dd>
72
+ 写像の値域を <var>s</var> に設定します。<a href="#label-42">surjective?</a> などに
73
+ 利用されます。</dd>
74
+ <dt><a name="label-13" id="label-13"><code>codomain=(<var>s</var>)</code></a></dt><!-- RDLabel: "codomain=" -->
75
+ <dd>
76
+ <a href="#label-12">target=</a> のエイリアスです。</dd>
77
+ <dt><a name="label-14" id="label-14"><code>target</code></a></dt><!-- RDLabel: "target" -->
78
+ <dd>
79
+ 写像の値域を返します。</dd>
80
+ <dt><a name="label-15" id="label-15"><code>codomain</code></a></dt><!-- RDLabel: "codomain" -->
81
+ <dd>
82
+ <a href="#label-14">target</a> のエイリアスです。</dd>
83
+ <dt><a name="label-16" id="label-16"><code>source</code></a></dt><!-- RDLabel: "source" -->
84
+ <dd>
85
+ <p>写像の定義域を返します。</p>
86
+ <p>例: </p>
87
+ <pre>require "finite-map"
88
+ include Algebra
89
+ m = Map[0 =&gt; 10, 1 =&gt; 11, 2 =&gt; 12]
90
+ p m.source #=&gt; {0, 1, 2}
91
+ p m.target #=&gt; nil
92
+ m.target = Set[10, 11, 12, 13]
93
+ p m.target #=&gt; {10, 11, 12, 13}</pre></dd>
94
+ <dt><a name="label-17" id="label-17"><code>domain</code></a></dt><!-- RDLabel: "domain" -->
95
+ <dd>
96
+ <a href="#label-16">source</a> のエイリアスです。</dd>
97
+ <dt><a name="label-18" id="label-18"><code>phi([<var>t</var>])</code></a></dt><!-- RDLabel: "phi" -->
98
+ <dd>
99
+ 値域を <var>t</var> とする空の写像を返します。</dd>
100
+ <dt><a name="label-19" id="label-19"><code>empty_set</code></a></dt><!-- RDLabel: "empty_set" -->
101
+ <dt><a name="label-20" id="label-20"><code>null</code></a></dt><!-- RDLabel: "null" -->
102
+ <dd>
103
+ <a href="#label-18">phi</a> のエイリアスです。</dd>
104
+ <dt><a name="label-21" id="label-21"><code>call(<var>x</var>)</code></a></dt><!-- RDLabel: "call" -->
105
+ <dd>
106
+ 写像の <var>x</var> における値を返します。</dd>
107
+ <dt><a name="label-22" id="label-22"><code>act</code></a></dt><!-- RDLabel: "act" -->
108
+ <dt><a name="label-23" id="label-23"><code>[]</code></a></dt><!-- RDLabel: "[]" -->
109
+ <dd>
110
+ <a href="#label-21">call</a> のエイリアスです。</dd>
111
+ <dt><a name="label-24" id="label-24"><code>each</code></a></dt><!-- RDLabel: "each" -->
112
+ <dd>
113
+ <p>すべての <code>[原像, 像]</code> について繰り返すイテレータです。</p>
114
+ <p>例: </p>
115
+ <pre>require "finite-map"
116
+ include Algebra
117
+ Map[0 =&gt; 10, 1 =&gt; 11, 2 =&gt; 12].each do |x, y|
118
+ p [x, y] #=&gt; [1, 11], [0, 10], [2, 12]
119
+ end</pre></dd>
120
+ <dt><a name="label-25" id="label-25"><code>compose(<var>other</var>)</code></a></dt><!-- RDLabel: "compose" -->
121
+ <dd>
122
+ <p><var>self</var> と <var>other</var> の合成写像を返します。</p>
123
+ <p>例: </p>
124
+ <pre>require "finite-map"
125
+ include Algebra
126
+ f = Map.new(0 =&gt; 10, 1 =&gt; 11, 2 =&gt; 12)
127
+ g = Map.new(10 =&gt; 20, 11 =&gt; 21, 12 =&gt; 22)
128
+ p g * f #=&gt; {0 =&gt; 20, 1 =&gt; 21, 2 =&gt; 22}</pre></dd>
129
+ <dt><a name="label-26" id="label-26"><code>*</code></a></dt><!-- RDLabel: "*" -->
130
+ <dd>
131
+ <a href="#label-25">compose</a> のエイリアスです。</dd>
132
+ <dt><a name="label-27" id="label-27"><code>dup</code></a></dt><!-- RDLabel: "dup" -->
133
+ <dd>
134
+ 自身の複製を返します。値域の値も返します。</dd>
135
+ <dt><a name="label-28" id="label-28"><code>append!(<var>x</var>, <var>y</var>)</code></a></dt><!-- RDLabel: "append!" -->
136
+ <dd>
137
+ <p><var>x</var> で <var>y</var> という値を取るように設定します。</p>
138
+ <p>例: </p>
139
+ <pre>require "finite-map"
140
+ include Algebra
141
+ m = Map[0 =&gt; 10, 1 =&gt; 11]
142
+ m.append!(2, 12)
143
+ p m #=&gt; {0 =&gt; 10, 1 =&gt; 11, 2 =&gt; 12}</pre></dd>
144
+ <dt><a name="label-29" id="label-29"><code>[<var>x</var>] = <var>y</var></code></a></dt><!-- RDLabel: "[]=" -->
145
+ <dd>
146
+ <a href="#label-28">append!</a> のエイリアスです。</dd>
147
+ <dt><a name="label-30" id="label-30"><code>append(<var>x</var>, <var>y</var>)</code></a></dt><!-- RDLabel: "append" -->
148
+ <dd>
149
+ <a href="#label-27">dup</a> の後、<a href="#label-28">append!</a>(x, y) したものを返します。</dd>
150
+ <dt><a name="label-31" id="label-31"><code>include?(<var>x</var>)</code></a></dt><!-- RDLabel: "include?" -->
151
+ <dd>
152
+ <var>x</var> が定義域に含まれるとき真を返します。</dd>
153
+ <dt><a name="label-32" id="label-32"><code>contains?(<var>x</var>)</code></a></dt><!-- RDLabel: "contains?" -->
154
+ <dd>
155
+ <a href="#label-31">include?</a> のエイリアスです。</dd>
156
+ <dt><a name="label-33" id="label-33"><code>member?(<var>a</var>)</code></a></dt><!-- RDLabel: "member?" -->
157
+ <dd>
158
+ <p><var>a</var> を配列 <code>[x, y]</code> としたとき、<var>x</var> における値が
159
+ <var>y</var> となるとき、真を返します。</p>
160
+ <p>例: </p>
161
+ <pre>require "finite-map"
162
+ include Algebra
163
+ m = Map[0 =&gt; 10, 1 =&gt; 11]
164
+ p m.include?(1) #=&gt; true
165
+ p m.member?([1, 11]) #=&gt; true</pre></dd>
166
+ <dt><a name="label-34" id="label-34"><code>has?</code></a></dt><!-- RDLabel: "has?" -->
167
+ <dd>
168
+ member? のエイリアスです。</dd>
169
+ <dt><a name="label-35" id="label-35"><code>image([<var>s</var>])</code></a></dt><!-- RDLabel: "image" -->
170
+ <dd>
171
+ 写像の像を返します。定義域の部分集合 <var>s</var> が与えられれば、
172
+ <var>s</var> の像を返します。</dd>
173
+ <dt><a name="label-36" id="label-36"><code>inv_image(<var>s</var>)</code></a></dt><!-- RDLabel: "inv_image" -->
174
+ <dd>
175
+ 集合 <var>s</var> の原像を返します。</dd>
176
+ <dt><a name="label-37" id="label-37"><code>map_s</code></a></dt><!-- RDLabel: "map_s" -->
177
+ <dd>
178
+ <p>写像の各 [原像, 像] のペアについて繰り返し、ブロックで得た
179
+ 値の集合を返します。</p>
180
+ <p>例: </p>
181
+ <pre>require "finite-map"
182
+ include Algebra
183
+ p Map.new(0 =&gt; 10, 1 =&gt; 11, 2 =&gt; 12).map_s{|x, y| y - 2*x}
184
+ #=&gt; Set[10, 9, 8]</pre></dd>
185
+ <dt><a name="label-38" id="label-38"><code>map_m</code></a></dt><!-- RDLabel: "map_m" -->
186
+ <dd>
187
+ <p>写像の各 [原像, 像] のペアについて繰り返し、ブロックで得た
188
+ 値の配列で構成される写像を返します。</p>
189
+ <p>例: </p>
190
+ <pre>require "finite-map"
191
+ include Algebra
192
+ p Map.new(0 =&gt; 10, 1 =&gt; 11, 2 =&gt; 12).map_m{|x, y| [y, x]}
193
+ #=&gt; {10 =&gt; 0, 11 =&gt; 1, 12 =&gt; 2}</pre></dd>
194
+ <dt><a name="label-39" id="label-39"><code>inverse</code></a></dt><!-- RDLabel: "inverse" -->
195
+ <dd>
196
+ 逆写像を返します。</dd>
197
+ <dt><a name="label-40" id="label-40"><code>inv_coset</code></a></dt><!-- RDLabel: "inv_coset" -->
198
+ <dd>
199
+ <p>各像に逆像の集合を対応させる写像を返します。</p>
200
+ <p>例: </p>
201
+ <pre>require "finite-map"
202
+ include Algebra
203
+ m = Map[0=&gt;0, 1=&gt;0, 2=&gt;2, 3=&gt;2, 4=&gt;0]
204
+ p m.inv_coset #=&gt; {0=&gt;{0, 1, 4}, 2=&gt;{2, 3}}
205
+ m.codomain = Set[0, 1, 2, 3]
206
+ p m.inv_coset #=&gt; {0=&gt;{0, 1, 4}, 1=&gt;{}, 2=&gt;{2, 3}, 3=&gt;{}}</pre></dd>
207
+ <dt><a name="label-41" id="label-41"><code>indentity?</code></a></dt><!-- RDLabel: "indentity?" -->
208
+ <dd>
209
+ 恒等写像であるとき、真を返します。</dd>
210
+ <dt><a name="label-42" id="label-42"><code>surjective?</code></a></dt><!-- RDLabel: "surjective?" -->
211
+ <dd>
212
+ 全射である時、真を返します。あらかじめ <a href="#label-14">target</a> が指定されて
213
+ いる必要があります。</dd>
214
+ <dt><a name="label-43" id="label-43"><code>injective?</code></a></dt><!-- RDLabel: "injective?" -->
215
+ <dd>
216
+ 単射である時、真を返します。</dd>
217
+ <dt><a name="label-44" id="label-44"><code>bijective?</code></a></dt><!-- RDLabel: "bijective?" -->
218
+ <dd>
219
+ 全単射である時、真を返します。あらかじめ <a href="#label-14">target</a> が指定されて
220
+ いる必要があります。</dd>
221
+ </dl>
222
+
223
+ </body>
224
+ </html>