passagemath-repl 10.5.1__py3-none-any.whl
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.
- passagemath_repl-10.5.1.data/scripts/sage-cachegrind +25 -0
- passagemath_repl-10.5.1.data/scripts/sage-callgrind +16 -0
- passagemath_repl-10.5.1.data/scripts/sage-cleaner +230 -0
- passagemath_repl-10.5.1.data/scripts/sage-coverage +327 -0
- passagemath_repl-10.5.1.data/scripts/sage-eval +14 -0
- passagemath_repl-10.5.1.data/scripts/sage-fixdoctests +710 -0
- passagemath_repl-10.5.1.data/scripts/sage-inline-fortran +12 -0
- passagemath_repl-10.5.1.data/scripts/sage-ipynb2rst +50 -0
- passagemath_repl-10.5.1.data/scripts/sage-ipython +16 -0
- passagemath_repl-10.5.1.data/scripts/sage-massif +25 -0
- passagemath_repl-10.5.1.data/scripts/sage-notebook +267 -0
- passagemath_repl-10.5.1.data/scripts/sage-omega +25 -0
- passagemath_repl-10.5.1.data/scripts/sage-preparse +302 -0
- passagemath_repl-10.5.1.data/scripts/sage-run +27 -0
- passagemath_repl-10.5.1.data/scripts/sage-run-cython +10 -0
- passagemath_repl-10.5.1.data/scripts/sage-runtests +9 -0
- passagemath_repl-10.5.1.data/scripts/sage-startuptime.py +163 -0
- passagemath_repl-10.5.1.data/scripts/sage-valgrind +34 -0
- passagemath_repl-10.5.1.dist-info/METADATA +77 -0
- passagemath_repl-10.5.1.dist-info/RECORD +162 -0
- passagemath_repl-10.5.1.dist-info/WHEEL +5 -0
- passagemath_repl-10.5.1.dist-info/top_level.txt +1 -0
- sage/all__sagemath_repl.py +119 -0
- sage/doctest/__init__.py +4 -0
- sage/doctest/__main__.py +236 -0
- sage/doctest/all.py +4 -0
- sage/doctest/check_tolerance.py +261 -0
- sage/doctest/control.py +1727 -0
- sage/doctest/external.py +534 -0
- sage/doctest/fixtures.py +383 -0
- sage/doctest/forker.py +2665 -0
- sage/doctest/marked_output.py +102 -0
- sage/doctest/parsing.py +1708 -0
- sage/doctest/parsing_test.py +79 -0
- sage/doctest/reporting.py +733 -0
- sage/doctest/rif_tol.py +124 -0
- sage/doctest/sources.py +1657 -0
- sage/doctest/test.py +584 -0
- sage/doctest/tests/1second.rst +4 -0
- sage/doctest/tests/99seconds.rst +4 -0
- sage/doctest/tests/abort.rst +5 -0
- sage/doctest/tests/atexit.rst +7 -0
- sage/doctest/tests/fail_and_die.rst +6 -0
- sage/doctest/tests/initial.rst +15 -0
- sage/doctest/tests/interrupt.rst +7 -0
- sage/doctest/tests/interrupt_diehard.rst +14 -0
- sage/doctest/tests/keyboardinterrupt.rst +11 -0
- sage/doctest/tests/longtime.rst +5 -0
- sage/doctest/tests/nodoctest +5 -0
- sage/doctest/tests/random_seed.rst +4 -0
- sage/doctest/tests/show_skipped.rst +18 -0
- sage/doctest/tests/sig_on.rst +9 -0
- sage/doctest/tests/simple_failure.rst +8 -0
- sage/doctest/tests/sleep_and_raise.rst +106 -0
- sage/doctest/tests/tolerance.rst +31 -0
- sage/doctest/util.py +750 -0
- sage/interfaces/cleaner.py +48 -0
- sage/interfaces/quit.py +163 -0
- sage/misc/all__sagemath_repl.py +51 -0
- sage/misc/banner.py +235 -0
- sage/misc/benchmark.py +221 -0
- sage/misc/classgraph.py +134 -0
- sage/misc/copying.py +22 -0
- sage/misc/cython.py +694 -0
- sage/misc/dev_tools.py +745 -0
- sage/misc/edit_module.py +304 -0
- sage/misc/explain_pickle.py +3079 -0
- sage/misc/gperftools.py +361 -0
- sage/misc/inline_fortran.py +212 -0
- sage/misc/messaging.py +86 -0
- sage/misc/pager.py +21 -0
- sage/misc/profiler.py +179 -0
- sage/misc/python.py +70 -0
- sage/misc/remote_file.py +53 -0
- sage/misc/sage_eval.py +249 -0
- sage/misc/sage_input.py +3621 -0
- sage/misc/sagedoc.py +1742 -0
- sage/misc/sh.py +38 -0
- sage/misc/trace.py +90 -0
- sage/repl/__init__.py +16 -0
- sage/repl/all.py +15 -0
- sage/repl/attach.py +625 -0
- sage/repl/configuration.py +186 -0
- sage/repl/display/__init__.py +1 -0
- sage/repl/display/fancy_repr.py +354 -0
- sage/repl/display/formatter.py +318 -0
- sage/repl/display/jsmol_iframe.py +290 -0
- sage/repl/display/pretty_print.py +153 -0
- sage/repl/display/util.py +163 -0
- sage/repl/image.py +302 -0
- sage/repl/inputhook.py +91 -0
- sage/repl/interface_magic.py +298 -0
- sage/repl/interpreter.py +854 -0
- sage/repl/ipython_extension.py +593 -0
- sage/repl/ipython_kernel/__init__.py +1 -0
- sage/repl/ipython_kernel/__main__.py +4 -0
- sage/repl/ipython_kernel/all_jupyter.py +10 -0
- sage/repl/ipython_kernel/install.py +301 -0
- sage/repl/ipython_kernel/interact.py +278 -0
- sage/repl/ipython_kernel/kernel.py +217 -0
- sage/repl/ipython_kernel/widgets.py +466 -0
- sage/repl/ipython_kernel/widgets_sagenb.py +587 -0
- sage/repl/ipython_tests.py +163 -0
- sage/repl/load.py +326 -0
- sage/repl/preparse.py +2218 -0
- sage/repl/prompts.py +90 -0
- sage/repl/rich_output/__init__.py +4 -0
- sage/repl/rich_output/backend_base.py +648 -0
- sage/repl/rich_output/backend_doctest.py +316 -0
- sage/repl/rich_output/backend_emacs.py +151 -0
- sage/repl/rich_output/backend_ipython.py +596 -0
- sage/repl/rich_output/buffer.py +311 -0
- sage/repl/rich_output/display_manager.py +829 -0
- sage/repl/rich_output/example.avi +0 -0
- sage/repl/rich_output/example.canvas3d +1 -0
- sage/repl/rich_output/example.dvi +0 -0
- sage/repl/rich_output/example.flv +0 -0
- sage/repl/rich_output/example.gif +0 -0
- sage/repl/rich_output/example.jpg +0 -0
- sage/repl/rich_output/example.mkv +0 -0
- sage/repl/rich_output/example.mov +0 -0
- sage/repl/rich_output/example.mp4 +0 -0
- sage/repl/rich_output/example.ogv +0 -0
- sage/repl/rich_output/example.pdf +0 -0
- sage/repl/rich_output/example.png +0 -0
- sage/repl/rich_output/example.svg +54 -0
- sage/repl/rich_output/example.webm +0 -0
- sage/repl/rich_output/example.wmv +0 -0
- sage/repl/rich_output/example_jmol.spt.zip +0 -0
- sage/repl/rich_output/example_wavefront_scene.mtl +7 -0
- sage/repl/rich_output/example_wavefront_scene.obj +17 -0
- sage/repl/rich_output/output_basic.py +391 -0
- sage/repl/rich_output/output_browser.py +103 -0
- sage/repl/rich_output/output_catalog.py +54 -0
- sage/repl/rich_output/output_graphics.py +320 -0
- sage/repl/rich_output/output_graphics3d.py +345 -0
- sage/repl/rich_output/output_video.py +231 -0
- sage/repl/rich_output/preferences.py +432 -0
- sage/repl/rich_output/pretty_print.py +339 -0
- sage/repl/rich_output/test_backend.py +201 -0
- sage/repl/user_globals.py +214 -0
- sage/tests/all.py +0 -0
- sage/tests/all__sagemath_repl.py +3 -0
- sage/tests/article_heuberger_krenn_kropf_fsm-in-sage.py +630 -0
- sage/tests/arxiv_0812_2725.py +351 -0
- sage/tests/benchmark.py +1925 -0
- sage/tests/book_schilling_zabrocki_kschur_primer.py +795 -0
- sage/tests/book_stein_ent.py +651 -0
- sage/tests/book_stein_modform.py +558 -0
- sage/tests/cmdline.py +796 -0
- sage/tests/combinatorial_hopf_algebras.py +52 -0
- sage/tests/finite_poset.py +623 -0
- sage/tests/functools_partial_src.py +27 -0
- sage/tests/gosper-sum.py +218 -0
- sage/tests/lazy_imports.py +28 -0
- sage/tests/modular_group_cohomology.py +80 -0
- sage/tests/numpy.py +21 -0
- sage/tests/parigp.py +76 -0
- sage/tests/startup.py +27 -0
- sage/tests/symbolic-series.py +76 -0
- sage/tests/sympy.py +16 -0
- sage/tests/test_deprecation.py +31 -0
@@ -0,0 +1,630 @@
|
|
1
|
+
# sage_setup: distribution = sagemath-repl
|
2
|
+
# sage.doctest: needs sage.graphs sage.modules
|
3
|
+
r"""
|
4
|
+
This file contains doctests of the article ::
|
5
|
+
|
6
|
+
Automata and Transducers
|
7
|
+
in the Computer Algebra System Sage
|
8
|
+
|
9
|
+
by Clemens Heuberger, Daniel Krenn, and Sara Kropf, :arxiv:`1404.7458`.
|
10
|
+
|
11
|
+
IF IT BECOMES NECESSARY TO CHANGE ANY TESTS IN THIS FILE, THERE
|
12
|
+
NEEDS TO BE A ONE-YEAR DEPRECATION PERIOD. ALSO, PLEASE INFORM:
|
13
|
+
|
14
|
+
- Clemens Heuberger <clemens.heuberger@aau.at>,
|
15
|
+
- Daniel Krenn <devel@danielkrenn.at>, AND
|
16
|
+
- Sara Kropf <sara.kropf@aau.at>
|
17
|
+
|
18
|
+
IN THIS CASE REGARDING THE CHANGES!
|
19
|
+
"""
|
20
|
+
|
21
|
+
r"""
|
22
|
+
|
23
|
+
Sage example in fsm-in-sage.tex, line 376::
|
24
|
+
|
25
|
+
sage: NAF_Abb = Transducer([(-1, 0, 0, None), (-1, 1, 1, None), (0, 0, 0, 0),
|
26
|
+
....: (0, 1, 1, 0), (1, 0, 0, 1), (1, 2, 1, -1),
|
27
|
+
....: (2, 1, 0, 0), (2, 2, 1, 0)],
|
28
|
+
....: initial_states=[-1], final_states=[0],
|
29
|
+
....: input_alphabet=[0, 1])
|
30
|
+
sage: NAF_Abb.state(-1).format_label=lambda: r'\mathcal{I}'
|
31
|
+
sage: NAF_Abb.latex_options(
|
32
|
+
....: coordinates = {-1: (1.5, 3),
|
33
|
+
....: 0: (0, 0),
|
34
|
+
....: 1: (3, 0),
|
35
|
+
....: 2: (6, 0)},
|
36
|
+
....: initial_where = {-1: 'above'},
|
37
|
+
....: format_letter=NAF_Abb.format_letter_negative,
|
38
|
+
....: loop_where = lambda x: 'below')
|
39
|
+
|
40
|
+
|
41
|
+
Sage example in fsm-in-sage.tex, line 377::
|
42
|
+
|
43
|
+
sage: str(latex(NAF_Abb))
|
44
|
+
'\\begin{tikzpicture}[auto, initial text=, >=latex]\n\\node[state, initial, initial where=above] (v0) at (1.500000, 3.000000) {$\\mathcal{I}$};\n\\node[state, accepting] (v1) at (0.000000, 0.000000) {$0$};\n\\node[state] (v2) at (3.000000, 0.000000) {$1$};\n\\node[state] (v3) at (6.000000, 0.000000) {$2$};\n\\path[->] (v0) edge node[rotate=63.43, anchor=south] {$0\\mid \\varepsilon$} (v1);\n\\path[->] (v0) edge node[rotate=-63.43, anchor=south] {$1\\mid \\varepsilon$} (v2);\n\\path[->] (v1) edge[loop below] node {$0\\mid 0$} ();\n\\path[->] (v1.5.00) edge node[rotate=0.00, anchor=south] {$1\\mid 0$} (v2.175.00);\n\\path[->] (v2.185.00) edge node[rotate=360.00, anchor=north] {$0\\mid 1$} (v1.355.00);\n\\path[->] (v2.5.00) edge node[rotate=0.00, anchor=south] {$1\\mid \\overline{1}$} (v3.175.00);\n\\path[->] (v3.185.00) edge node[rotate=360.00, anchor=north] {$0\\mid 0$} (v2.355.00);\n\\path[->] (v3) edge[loop below] node {$1\\mid 0$} ();\n\\end{tikzpicture}'
|
45
|
+
|
46
|
+
|
47
|
+
Sage example in fsm-in-sage.tex, line 395::
|
48
|
+
|
49
|
+
sage: NAF1 = Transducer([('I', 0, 0, None), ('I', 1, 1, None),
|
50
|
+
....: (0, 0, 0, 0), (0, 1, 1, 0),
|
51
|
+
....: (1, 0, 0, 1), (1, 2, 1, -1),
|
52
|
+
....: (2, 1, 0, 0), (2, 2, 1, 0)],
|
53
|
+
....: initial_states=['I'], final_states=[0],
|
54
|
+
....: input_alphabet=[0, 1])
|
55
|
+
|
56
|
+
|
57
|
+
Sage example in fsm-in-sage.tex, line 422::
|
58
|
+
|
59
|
+
sage: NAF = NAF1
|
60
|
+
|
61
|
+
|
62
|
+
Sage example in fsm-in-sage.tex, line 434::
|
63
|
+
|
64
|
+
sage: sage.combinat.finite_state_machine.FSMOldProcessOutput = False
|
65
|
+
|
66
|
+
|
67
|
+
Sage example in fsm-in-sage.tex, line 455::
|
68
|
+
|
69
|
+
sage: str(12.digits(base=2))
|
70
|
+
'[0, 0, 1, 1]'
|
71
|
+
|
72
|
+
|
73
|
+
Sage example in fsm-in-sage.tex, line 460::
|
74
|
+
|
75
|
+
sage: NAF.process(12.digits(base=2)),
|
76
|
+
((False, 2, [0, 0, -1]),)
|
77
|
+
|
78
|
+
|
79
|
+
Sage example in fsm-in-sage.tex, line 461::
|
80
|
+
|
81
|
+
sage: str(NAF.process(12.digits(base=2)))
|
82
|
+
'(False, 2, [0, 0, -1])'
|
83
|
+
|
84
|
+
|
85
|
+
Sage example in fsm-in-sage.tex, line 471::
|
86
|
+
|
87
|
+
sage: NAF_of_12 = NAF(12.digits(base=2) + [0, 0, 0])
|
88
|
+
|
89
|
+
|
90
|
+
Sage example in fsm-in-sage.tex, line 472::
|
91
|
+
|
92
|
+
sage: str(NAF_of_12)
|
93
|
+
'[0, 0, -1, 0, 1, 0]'
|
94
|
+
|
95
|
+
|
96
|
+
Sage example in fsm-in-sage.tex, line 482::
|
97
|
+
|
98
|
+
sage: NAF = NAF.with_final_word_out(0)
|
99
|
+
|
100
|
+
|
101
|
+
Sage example in fsm-in-sage.tex, line 494::
|
102
|
+
|
103
|
+
sage: NAF_of_12 = NAF(12.digits(base=2))
|
104
|
+
|
105
|
+
|
106
|
+
Sage example in fsm-in-sage.tex, line 496::
|
107
|
+
|
108
|
+
sage: str(NAF_of_12)
|
109
|
+
'[0, 0, -1, 0, 1]'
|
110
|
+
|
111
|
+
|
112
|
+
Sage example in fsm-in-sage.tex, line 534::
|
113
|
+
|
114
|
+
sage: def NAF_transition(state_from, read):
|
115
|
+
....: if state_from == 'I':
|
116
|
+
....: write = None
|
117
|
+
....: state_to = read
|
118
|
+
....: return (state_to, write)
|
119
|
+
....: current = 2*read + state_from
|
120
|
+
....: if current % 2 == 0:
|
121
|
+
....: write = 0
|
122
|
+
....: elif current % 4 == 1:
|
123
|
+
....: write = 1
|
124
|
+
....: else:
|
125
|
+
....: write = -1
|
126
|
+
....: state_to = (current - write) / 2
|
127
|
+
....: return (state_to, write)
|
128
|
+
|
129
|
+
|
130
|
+
Sage example in fsm-in-sage.tex, line 544::
|
131
|
+
|
132
|
+
sage: NAF2 = Transducer(NAF_transition,
|
133
|
+
....: initial_states=['I'],
|
134
|
+
....: final_states=[0],
|
135
|
+
....: input_alphabet=[0, 1]).with_final_word_out(0)
|
136
|
+
|
137
|
+
|
138
|
+
Sage example in fsm-in-sage.tex, line 548::
|
139
|
+
|
140
|
+
sage: NAF == NAF2
|
141
|
+
True
|
142
|
+
|
143
|
+
|
144
|
+
Sage example in fsm-in-sage.tex, line 549::
|
145
|
+
|
146
|
+
sage: str(NAF==NAF2)
|
147
|
+
'True'
|
148
|
+
|
149
|
+
|
150
|
+
Sage example in fsm-in-sage.tex, line 579::
|
151
|
+
|
152
|
+
sage: def f(state_from, read):
|
153
|
+
....: current = 3*read + state_from
|
154
|
+
....: write = current % 2
|
155
|
+
....: state_to = (current - write) / 2
|
156
|
+
....: return (state_to, write)
|
157
|
+
|
158
|
+
|
159
|
+
Sage example in fsm-in-sage.tex, line 588::
|
160
|
+
|
161
|
+
sage: Triple = Transducer(f, input_alphabet=[0, 1],
|
162
|
+
....: initial_states=[0],
|
163
|
+
....: final_states=[0]).with_final_word_out(0)
|
164
|
+
|
165
|
+
|
166
|
+
Sage example in fsm-in-sage.tex, line 592::
|
167
|
+
|
168
|
+
sage: three_times_four = Triple(4.digits(base=2))
|
169
|
+
|
170
|
+
|
171
|
+
Sage example in fsm-in-sage.tex, line 593::
|
172
|
+
|
173
|
+
sage: str(three_times_four)
|
174
|
+
'[0, 0, 1, 1]'
|
175
|
+
|
176
|
+
|
177
|
+
Sage example in fsm-in-sage.tex, line 602::
|
178
|
+
|
179
|
+
sage: Id = Transducer([(0, 0, 0, 0), (0, 0, 1, 1)],
|
180
|
+
....: initial_states=[0], final_states=[0],
|
181
|
+
....: input_alphabet=[0, 1])
|
182
|
+
|
183
|
+
|
184
|
+
Sage example in fsm-in-sage.tex, line 608::
|
185
|
+
|
186
|
+
sage: prebuiltId = transducers.Identity([0, 1])
|
187
|
+
|
188
|
+
|
189
|
+
Sage example in fsm-in-sage.tex, line 620::
|
190
|
+
|
191
|
+
sage: sage.combinat.finite_state_machine.\
|
192
|
+
....: FSMOldCodeTransducerCartesianProduct = False
|
193
|
+
sage: Combined_3n_n = Triple.cartesian_product(Id).relabeled()
|
194
|
+
|
195
|
+
|
196
|
+
Sage example in fsm-in-sage.tex, line 630::
|
197
|
+
|
198
|
+
sage: twelve_and_four = Combined_3n_n(4.digits(base=2))
|
199
|
+
|
200
|
+
|
201
|
+
Sage example in fsm-in-sage.tex, line 631::
|
202
|
+
|
203
|
+
sage: str(twelve_and_four)
|
204
|
+
'[(0, 0), (0, 0), (1, 1), (1, None)]'
|
205
|
+
|
206
|
+
|
207
|
+
Sage example in fsm-in-sage.tex, line 639::
|
208
|
+
|
209
|
+
sage: def g(read0, read1):
|
210
|
+
....: return ZZ(read0) - ZZ(read1)
|
211
|
+
|
212
|
+
|
213
|
+
Sage example in fsm-in-sage.tex, line 643::
|
214
|
+
|
215
|
+
sage: Minus = transducers.operator(g, input_alphabet=[None, -1, 0, 1])
|
216
|
+
|
217
|
+
|
218
|
+
Sage example in fsm-in-sage.tex, line 644::
|
219
|
+
|
220
|
+
sage: latex(ZZ(None))
|
221
|
+
0
|
222
|
+
|
223
|
+
|
224
|
+
Sage example in fsm-in-sage.tex, line 650::
|
225
|
+
|
226
|
+
sage: prebuiltMinus = transducers.sub([-1, 0, 1])
|
227
|
+
|
228
|
+
|
229
|
+
Sage example in fsm-in-sage.tex, line 654::
|
230
|
+
|
231
|
+
sage: latex(Combined_3n_n.state(1))
|
232
|
+
1
|
233
|
+
|
234
|
+
|
235
|
+
Sage example in fsm-in-sage.tex, line 657::
|
236
|
+
|
237
|
+
sage: final_word_out = Combined_3n_n.state(1).final_word_out
|
238
|
+
|
239
|
+
|
240
|
+
Sage example in fsm-in-sage.tex, line 658::
|
241
|
+
|
242
|
+
sage: str(final_word_out)
|
243
|
+
'[(1, None)]'
|
244
|
+
|
245
|
+
|
246
|
+
Sage example in fsm-in-sage.tex, line 663::
|
247
|
+
|
248
|
+
sage: NAF3 = Minus(Combined_3n_n).relabeled()
|
249
|
+
|
250
|
+
|
251
|
+
Sage example in fsm-in-sage.tex, line 672::
|
252
|
+
|
253
|
+
sage: NAF_of_12 = NAF3(12.digits(base=2))
|
254
|
+
|
255
|
+
|
256
|
+
Sage example in fsm-in-sage.tex, line 673::
|
257
|
+
|
258
|
+
sage: str(NAF_of_12)
|
259
|
+
'[0, 0, 0, -1, 0, 1]'
|
260
|
+
|
261
|
+
|
262
|
+
Sage example in fsm-in-sage.tex, line 736::
|
263
|
+
|
264
|
+
sage: NAF = NAF3
|
265
|
+
|
266
|
+
|
267
|
+
Sage example in fsm-in-sage.tex, line 741::
|
268
|
+
|
269
|
+
sage: NAF3n = NAF(Triple)
|
270
|
+
|
271
|
+
|
272
|
+
Sage example in fsm-in-sage.tex, line 749::
|
273
|
+
|
274
|
+
sage: Combined_NAF_3n_n = NAF3n.cartesian_product(NAF).relabeled()
|
275
|
+
|
276
|
+
|
277
|
+
Sage example in fsm-in-sage.tex, line 757::
|
278
|
+
|
279
|
+
sage: T = Minus(Combined_NAF_3n_n).relabeled()
|
280
|
+
|
281
|
+
|
282
|
+
Sage example in fsm-in-sage.tex, line 762::
|
283
|
+
|
284
|
+
sage: str(T)
|
285
|
+
'Transducer with 9 states'
|
286
|
+
|
287
|
+
|
288
|
+
Sage example in fsm-in-sage.tex, line 769::
|
289
|
+
|
290
|
+
sage: expansion_of_12 = T(12.digits(base=2))
|
291
|
+
|
292
|
+
|
293
|
+
Sage example in fsm-in-sage.tex, line 772::
|
294
|
+
|
295
|
+
sage: str(expansion_of_12)
|
296
|
+
'[0, 0, 0, 2, 0, -1, 1]'
|
297
|
+
|
298
|
+
|
299
|
+
Sage example in fsm-in-sage.tex, line 806::
|
300
|
+
|
301
|
+
sage: def minus(trans1, trans2):
|
302
|
+
....: if trans1.word_in == trans2.word_in:
|
303
|
+
....: return (trans1.word_in,
|
304
|
+
....: trans1.word_out[0] - trans2.word_out[0])
|
305
|
+
....: else:
|
306
|
+
....: raise LookupError
|
307
|
+
|
308
|
+
|
309
|
+
Sage example in fsm-in-sage.tex, line 815::
|
310
|
+
|
311
|
+
sage: from itertools import zip_longest
|
312
|
+
sage: def final_minus(state1, state2):
|
313
|
+
....: return [x - y for x, y in
|
314
|
+
....: zip_longest(state1.final_word_out,
|
315
|
+
....: state2.final_word_out,
|
316
|
+
....: fillvalue=0)]
|
317
|
+
|
318
|
+
|
319
|
+
Sage example in fsm-in-sage.tex, line 829::
|
320
|
+
|
321
|
+
sage: Talternative = NAF3n.product_FiniteStateMachine(
|
322
|
+
....: NAF, minus,
|
323
|
+
....: final_function=final_minus).relabeled()
|
324
|
+
|
325
|
+
|
326
|
+
Sage example in fsm-in-sage.tex, line 845::
|
327
|
+
|
328
|
+
sage: Talternative == T
|
329
|
+
True
|
330
|
+
|
331
|
+
|
332
|
+
Sage example in fsm-in-sage.tex, line 846::
|
333
|
+
|
334
|
+
sage: str(Talternative==T)
|
335
|
+
'True'
|
336
|
+
|
337
|
+
|
338
|
+
Sage example in fsm-in-sage.tex, line 854::
|
339
|
+
|
340
|
+
sage: for t in T.iter_states():
|
341
|
+
....: other = Talternative.state(t.label())
|
342
|
+
....: assert t.is_final == other.is_final
|
343
|
+
....: if t.is_final:
|
344
|
+
....: assert t.final_word_out == other.final_word_out
|
345
|
+
|
346
|
+
|
347
|
+
Sage example in fsm-in-sage.tex, line 872::
|
348
|
+
|
349
|
+
sage: sage.combinat.finite_state_machine.setup_latex_preamble()
|
350
|
+
|
351
|
+
|
352
|
+
Sage example in fsm-in-sage.tex, line 888::
|
353
|
+
|
354
|
+
sage: T.set_coordinates({
|
355
|
+
....: 0: (-2, 0.75),
|
356
|
+
....: 1: (0, -1),
|
357
|
+
....: 2: (-6, -1),
|
358
|
+
....: 3: (6, -1),
|
359
|
+
....: 4: (-4, 2.5),
|
360
|
+
....: 5: (-6, 5),
|
361
|
+
....: 6: (6, 5),
|
362
|
+
....: 7: (4, 2.5),
|
363
|
+
....: 8: (2, 0.75)})
|
364
|
+
|
365
|
+
|
366
|
+
Sage example in fsm-in-sage.tex, line 905::
|
367
|
+
|
368
|
+
sage: T.latex_options(format_letter=T.format_letter_negative,
|
369
|
+
....: accepting_where={
|
370
|
+
....: 0: 'right',
|
371
|
+
....: 1: 'below',
|
372
|
+
....: 2: 'below',
|
373
|
+
....: 3: 'below',
|
374
|
+
....: 4: 60,
|
375
|
+
....: 5: 'above',
|
376
|
+
....: 6: 'above',
|
377
|
+
....: 7: 120,
|
378
|
+
....: 8: 'left'},
|
379
|
+
....: accepting_show_empty=True)
|
380
|
+
|
381
|
+
|
382
|
+
Sage example in fsm-in-sage.tex, line 919::
|
383
|
+
|
384
|
+
sage: str(latex(T))
|
385
|
+
'\\begin{tikzpicture}[auto, initial text=, >=latex, accepting text=, accepting/.style=accepting by arrow, accepting distance=7ex]\n\\node[state, initial] (v0) at (-2.000000, 0.750000) {$0$};\n\\path[->] (v0.0.00) edge node[rotate=0.00, anchor=south] {$\\$ \\mid \\varepsilon$} ++(0.00:7ex);\n\\node[state] (v1) at (0.000000, -1.000000) {$1$};\n\\path[->] (v1.270.00) edge node[rotate=450.00, anchor=south] {$\\$ \\mid \\overline{2} 0 1$} ++(270.00:7ex);\n\\node[state] (v2) at (-6.000000, -1.000000) {$2$};\n\\path[->] (v2.270.00) edge node[rotate=450.00, anchor=south] {$\\$ \\mid 0 1$} ++(270.00:7ex);\n\\node[state] (v3) at (6.000000, -1.000000) {$3$};\n\\path[->] (v3.270.00) edge node[rotate=450.00, anchor=south] {$\\$ \\mid 0 \\overline{1} 1$} ++(270.00:7ex);\n\\node[state] (v4) at (-4.000000, 2.500000) {$4$};\n\\path[->] (v4.60.00) edge node[rotate=60.00, anchor=south] {$\\$ \\mid 1$} ++(60.00:7ex);\n\\node[state] (v5) at (-6.000000, 5.000000) {$5$};\n\\path[->] (v5.90.00) edge node[rotate=90.00, anchor=south] {$\\$ \\mid \\overline{1} 0 1$} ++(90.00:7ex);\n\\node[state] (v6) at (6.000000, 5.000000) {$6$};\n\\path[->] (v6.90.00) edge node[rotate=90.00, anchor=south] {$\\$ \\mid \\overline{1} 1$} ++(90.00:7ex);\n\\node[state] (v7) at (4.000000, 2.500000) {$7$};\n\\path[->] (v7.120.00) edge node[rotate=300.00, anchor=south] {$\\$ \\mid 1 \\overline{1} 1$} ++(120.00:7ex);\n\\node[state] (v8) at (2.000000, 0.750000) {$8$};\n\\path[->] (v8.180.00) edge node[rotate=360.00, anchor=south] {$\\$ \\mid 0 \\overline{2} 0 1$} ++(180.00:7ex);\n\\path[->] (v0) edge[loop above] node {$0\\mid 0$} ();\n\\path[->] (v0) edge node[rotate=-41.19, anchor=south] {$1\\mid 0$} (v1);\n\\path[->] (v1) edge node[rotate=360.00, anchor=south] {$0\\mid \\overline{2}$} (v2);\n\\path[->] (v1) edge node[rotate=0.00, anchor=south] {$1\\mid 2$} (v3);\n\\path[->] (v2) edge node[rotate=60.26, anchor=south] {$0\\mid 0$} (v4);\n\\path[->] (v2.95.00) edge node[rotate=90.00, anchor=south] {$1\\mid 0$} (v5.265.00);\n\\path[->] (v3.95.00) edge node[rotate=90.00, anchor=south] {$0\\mid 0$} (v6.265.00);\n\\path[->] (v3) edge node[rotate=299.74, anchor=south] {$1\\mid 0$} (v7);\n\\path[->] (v4) edge node[rotate=-41.19, anchor=south] {$0\\mid 1$} (v0);\n\\path[->] (v4) edge node[rotate=308.66, anchor=south] {$1\\mid \\overline{1}$} (v5);\n\\path[->] (v5.-85.00) edge node[rotate=90.00, anchor=north] {$0\\mid \\overline{1}$} (v2.85.00);\n\\path[->] (v5) edge node[rotate=-14.04, anchor=south] {$1\\mid 1$} (v7);\n\\path[->] (v6.-85.00) edge node[rotate=90.00, anchor=north] {$1\\mid 1$} (v3.85.00);\n\\path[->] (v6) edge node[rotate=14.04, anchor=south] {$0\\mid \\overline{1}$} (v4);\n\\path[->] (v7) edge node[rotate=51.34, anchor=south] {$0\\mid 1$} (v6);\n\\path[->] (v7) edge node[rotate=41.19, anchor=south] {$1\\mid \\overline{1}$} (v8);\n\\path[->] (v8) edge node[rotate=41.19, anchor=south] {$0\\mid 0$} (v1);\n\\path[->] (v8) edge[loop above] node {$1\\mid 0$} ();\n\\end{tikzpicture}'
|
386
|
+
|
387
|
+
|
388
|
+
Sage example in fsm-in-sage.tex, line 946::
|
389
|
+
|
390
|
+
sage: R = T.output_projection()
|
391
|
+
|
392
|
+
|
393
|
+
Sage example in fsm-in-sage.tex, line 951::
|
394
|
+
|
395
|
+
sage: latex(len(R.states()))
|
396
|
+
10
|
397
|
+
|
398
|
+
|
399
|
+
Sage example in fsm-in-sage.tex, line 955::
|
400
|
+
|
401
|
+
sage: R = R.split_transitions()
|
402
|
+
|
403
|
+
|
404
|
+
Sage example in fsm-in-sage.tex, line 956::
|
405
|
+
|
406
|
+
sage: latex(len(R.states()))
|
407
|
+
23
|
408
|
+
|
409
|
+
|
410
|
+
Sage example in fsm-in-sage.tex, line 959::
|
411
|
+
|
412
|
+
sage: str(R.is_deterministic())
|
413
|
+
'False'
|
414
|
+
|
415
|
+
|
416
|
+
Sage example in fsm-in-sage.tex, line 964::
|
417
|
+
|
418
|
+
sage: Rdet = R.determinisation()
|
419
|
+
|
420
|
+
|
421
|
+
Sage example in fsm-in-sage.tex, line 967::
|
422
|
+
|
423
|
+
sage: latex(len(Rdet.states()))
|
424
|
+
22
|
425
|
+
|
426
|
+
|
427
|
+
Sage example in fsm-in-sage.tex, line 974::
|
428
|
+
|
429
|
+
sage: Rdet12 = Rdet(expansion_of_12)
|
430
|
+
|
431
|
+
|
432
|
+
Sage example in fsm-in-sage.tex, line 977::
|
433
|
+
|
434
|
+
sage: str(Rdet12)
|
435
|
+
'True'
|
436
|
+
|
437
|
+
|
438
|
+
Sage example in fsm-in-sage.tex, line 984::
|
439
|
+
|
440
|
+
sage: Rdet1 = Rdet.minimization()
|
441
|
+
|
442
|
+
|
443
|
+
Sage example in fsm-in-sage.tex, line 986::
|
444
|
+
|
445
|
+
sage: latex(len(Rdet1.states()))
|
446
|
+
17
|
447
|
+
|
448
|
+
|
449
|
+
Sage example in fsm-in-sage.tex, line 999::
|
450
|
+
|
451
|
+
sage: Rdet2 = R.minimization(algorithm='Brzozowski')
|
452
|
+
|
453
|
+
|
454
|
+
Sage example in fsm-in-sage.tex, line 1001::
|
455
|
+
|
456
|
+
sage: latex(len(Rdet2.states()))
|
457
|
+
17
|
458
|
+
|
459
|
+
|
460
|
+
Sage example in fsm-in-sage.tex, line 1034::
|
461
|
+
|
462
|
+
sage: def weight(state_from, read):
|
463
|
+
....: write = ZZ(read != 0)
|
464
|
+
....: return (0, write)
|
465
|
+
sage: Weight = Transducer(weight, input_alphabet=srange(-2, 2+1),
|
466
|
+
....: initial_states=[0], final_states=[0])
|
467
|
+
|
468
|
+
|
469
|
+
Sage example in fsm-in-sage.tex, line 1044::
|
470
|
+
|
471
|
+
sage: prebuiltWeight = transducers.weight(srange(-2, 2+1))
|
472
|
+
|
473
|
+
|
474
|
+
Sage example in fsm-in-sage.tex, line 1050::
|
475
|
+
|
476
|
+
sage: W = Weight(T)
|
477
|
+
|
478
|
+
|
479
|
+
Sage example in fsm-in-sage.tex, line 1051::
|
480
|
+
|
481
|
+
sage: latex(len(W.states()))
|
482
|
+
9
|
483
|
+
|
484
|
+
|
485
|
+
Sage example in fsm-in-sage.tex, line 1056::
|
486
|
+
|
487
|
+
sage: W(12.digits(base=2))
|
488
|
+
[0, 0, 0, 1, 0, 1, 1]
|
489
|
+
|
490
|
+
|
491
|
+
Sage example in fsm-in-sage.tex, line 1057::
|
492
|
+
|
493
|
+
sage: str(W(12.digits(base=2)))
|
494
|
+
'[0, 0, 0, 1, 0, 1, 1]'
|
495
|
+
|
496
|
+
|
497
|
+
Sage example in fsm-in-sage.tex, line 1058::
|
498
|
+
|
499
|
+
sage: latex(add(W(12.digits(base=2))))
|
500
|
+
3
|
501
|
+
|
502
|
+
|
503
|
+
Sage example in fsm-in-sage.tex, line 1064::
|
504
|
+
|
505
|
+
sage: W.prepone_output()
|
506
|
+
|
507
|
+
|
508
|
+
Sage example in fsm-in-sage.tex, line 1091::
|
509
|
+
|
510
|
+
sage: var('y') # needs sage.symbolic
|
511
|
+
y
|
512
|
+
sage: def am_entry(trans):
|
513
|
+
....: return y^add(trans.word_out) / 2
|
514
|
+
sage: A = W.adjacency_matrix(entry=am_entry) # needs sage.symbolic
|
515
|
+
|
516
|
+
|
517
|
+
Sage example in fsm-in-sage.tex, line 1097::
|
518
|
+
|
519
|
+
sage: latex.matrix_column_alignment('c')
|
520
|
+
|
521
|
+
|
522
|
+
Sage example in fsm-in-sage.tex, line 1099::
|
523
|
+
|
524
|
+
sage: latex(A) # needs sage.symbolic
|
525
|
+
\left(\begin{array}{ccccccccc}
|
526
|
+
\frac{1}{2} & \frac{1}{2} \, y^{2} & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
|
527
|
+
0 & 0 & \frac{1}{2} & \frac{1}{2} & 0 & 0 & 0 & 0 & 0 \\
|
528
|
+
0 & 0 & 0 & 0 & \frac{1}{2} & \frac{1}{2} & 0 & 0 & 0 \\
|
529
|
+
0 & 0 & 0 & 0 & 0 & 0 & \frac{1}{2} & \frac{1}{2} & 0 \\
|
530
|
+
\frac{1}{2} & 0 & 0 & 0 & 0 & \frac{1}{2} \, y & 0 & 0 & 0 \\
|
531
|
+
0 & 0 & \frac{1}{2} \, y & 0 & 0 & 0 & 0 & \frac{1}{2} \, y & 0 \\
|
532
|
+
0 & 0 & 0 & \frac{1}{2} \, y & \frac{1}{2} \, y & 0 & 0 & 0 & 0 \\
|
533
|
+
0 & 0 & 0 & 0 & 0 & 0 & \frac{1}{2} \, y & 0 & \frac{1}{2} \\
|
534
|
+
0 & \frac{1}{2} \, y^{2} & 0 & 0 & 0 & 0 & 0 & 0 & \frac{1}{2}
|
535
|
+
\end{array}\right)
|
536
|
+
|
537
|
+
|
538
|
+
Sage example in fsm-in-sage.tex, line 1109::
|
539
|
+
|
540
|
+
sage: A1mI = (A.subs(y=1) - A.parent().identity_matrix()) # needs sage.symbolic
|
541
|
+
sage: (pi_not_normalized,) = A1mI.left_kernel().basis() # needs sage.symbolic
|
542
|
+
sage: pi = pi_not_normalized / pi_not_normalized.norm(p=1) # needs sage.symbolic
|
543
|
+
|
544
|
+
|
545
|
+
Sage example in fsm-in-sage.tex, line 1110::
|
546
|
+
|
547
|
+
sage: str(pi) # needs sage.symbolic
|
548
|
+
'(1/9, 1/9, 1/9, 1/9, 1/9, 1/9, 1/9, 1/9, 1/9)'
|
549
|
+
|
550
|
+
|
551
|
+
Sage example in fsm-in-sage.tex, line 1117::
|
552
|
+
|
553
|
+
sage: expected_output = derivative(A, y).subs(y=1) * vector(len(W.states())*[1]) # needs sage.symbolic
|
554
|
+
|
555
|
+
|
556
|
+
Sage example in fsm-in-sage.tex, line 1118::
|
557
|
+
|
558
|
+
sage: latex(expected_output) # needs sage.symbolic
|
559
|
+
\left(1,\,0,\,0,\,0,\,\frac{1}{2},\,1,\,1,\,\frac{1}{2},\,1\right)
|
560
|
+
|
561
|
+
|
562
|
+
Sage example in fsm-in-sage.tex, line 1126::
|
563
|
+
|
564
|
+
sage: pi * expected_output # needs sage.symbolic
|
565
|
+
5/9
|
566
|
+
|
567
|
+
|
568
|
+
Sage example in fsm-in-sage.tex, line 1127::
|
569
|
+
|
570
|
+
sage: latex(pi * expected_output) # needs sage.symbolic
|
571
|
+
\frac{5}{9}
|
572
|
+
|
573
|
+
|
574
|
+
Sage example in fsm-in-sage.tex, line 1129::
|
575
|
+
|
576
|
+
sage: latex(pi * expected_output) # needs sage.symbolic
|
577
|
+
\frac{5}{9}
|
578
|
+
|
579
|
+
|
580
|
+
Sage example in fsm-in-sage.tex, line 1145::
|
581
|
+
|
582
|
+
sage: var('k') # needs sage.symbolic
|
583
|
+
k
|
584
|
+
sage: moments = W.asymptotic_moments(k) # needs sage.symbolic
|
585
|
+
|
586
|
+
|
587
|
+
Sage example in fsm-in-sage.tex, line 1155::
|
588
|
+
|
589
|
+
sage: latex(moments['expectation']) # needs sage.symbolic
|
590
|
+
\frac{5}{9} \, k + \mathcal{O}\left(1\right)
|
591
|
+
|
592
|
+
|
593
|
+
Sage example in fsm-in-sage.tex, line 1162::
|
594
|
+
|
595
|
+
sage: latex(moments['variance']) # needs sage.symbolic
|
596
|
+
\frac{44}{243} \, k + \mathcal{O}\left(1\right)
|
597
|
+
|
598
|
+
|
599
|
+
Sage example in fsm-in-sage.tex, line 1192::
|
600
|
+
|
601
|
+
sage: expectation_binary = Id.asymptotic_moments(k)['expectation'] # needs sage.symbolic
|
602
|
+
|
603
|
+
|
604
|
+
Sage example in fsm-in-sage.tex, line 1195::
|
605
|
+
|
606
|
+
sage: latex(expectation_binary) # needs sage.symbolic
|
607
|
+
\frac{1}{2} \, k + \mathcal{O}\left(1\right)
|
608
|
+
|
609
|
+
|
610
|
+
Sage example in fsm-in-sage.tex, line 1202::
|
611
|
+
|
612
|
+
sage: expectation_NAF = Weight(NAF).asymptotic_moments(k)['expectation'] # needs sage.symbolic
|
613
|
+
|
614
|
+
|
615
|
+
Sage example in fsm-in-sage.tex, line 1205::
|
616
|
+
|
617
|
+
sage: latex(expectation_NAF) # needs sage.symbolic
|
618
|
+
\frac{1}{3} \, k + \mathcal{O}\left(1\right)
|
619
|
+
|
620
|
+
|
621
|
+
Sage example in fsm-in-sage.tex, line 1211::
|
622
|
+
|
623
|
+
sage: Abs = transducers.abs([-1, 0, 1]) # needs sage.symbolic
|
624
|
+
|
625
|
+
|
626
|
+
Sage example in fsm-in-sage.tex, line 1216::
|
627
|
+
|
628
|
+
sage: latex(moments['expectation']) # needs sage.symbolic
|
629
|
+
\frac{5}{9} \, k + \mathcal{O}\left(1\right)
|
630
|
+
"""
|