- 05 Dec, 2017 6 commits
-
-
Akim Demaille authored
* tests/bin/ipynbdoctest.py: here.
-
Akim Demaille authored
* tests/bin/ipynbdoctest.py: Improve style. (canonicalize): Be more specific per result type. Please pylint.
-
Akim Demaille authored
* tests/bin/rat.py: here.
-
Akim Demaille authored
* tests/bin/update-test: here.
-
Akim Demaille authored
* tests/bin/update-test: here.
-
Akim Demaille authored
* tests/bin/update-test: here.
-
- 03 Dec, 2017 19 commits
-
-
Akim Demaille authored
* tests/unit/pylint.chk: here.
-
Akim Demaille authored
* libexec/vcsn-tools.cc: here.
-
Akim Demaille authored
* libexec/vcsn-compile: here.
-
Akim Demaille authored
Needed for static libraries such as benchmark.a. * libexec/vcsn-compile: here.
-
Akim Demaille authored
* AUTHORS.md: New (from `git summary`). * share/vcsn/config.in.yaml, configure.ac, bin/vcsn.in: Use it.
-
Akim Demaille authored
* NEWS.md: here.
-
Akim Demaille authored
Currently on Stretch we fail with: lib/.libs/libvcsn.so: undefined reference to `YAML::detail::node_data::empty_scalar' It looks like what is described in https://github.com/jbeder/yaml-cpp/issues/332, but defining YAML_CPP_DLL does not solve our issue. * configure.ac: Fix object instantiation.
-
Akim Demaille authored
This is really handy. * bin/vcsn.in: Here. While at it, revamp --help.
-
Akim Demaille authored
* libexec/vcsn-score: here.
-
Akim Demaille authored
With four threads, we run in 3:47 instead of 7 minutes. With one thread, it's about the same as without thread pool. It seems that -j4 is a sweet spot: it is more than twice faster, the results are not to biased. However, real measurements must still be done with -j0, even -j2 is significantly worse. -j0: 407,97s user 15,23s system 99% cpu 7:05,14 total -j1: 405,23s user 14,81s system 99% cpu 7:01,31 total -j2: 440,83s user 15,80s system 180% cpu 4:13,22 total -j3: 485,92s user 18,85s system 243% cpu 3:26,96 total -j4: 484,52s user 18,58s system 285% cpu 2:56,11 total -j5: 494,52s user 18,68s system 288% cpu 2:57,84 total -j6: 594,24s user 22,43s system 360% cpu 2:50,85 total -j7: 646,45s user 25,01s system 388% cpu 2:52,62 total -j8: 657,94s user 24,55s system 408% cpu 2:47,13 total -j9: 663,67s user 24,60s system 416% cpu 2:45,37 total With colors: 0 1 2 3 4 5 6 7 8 9 12.61[0m 13.29[0m 12.35[0m 14.76[0m [31m[1m14.80[0m 12.81[0m 13.45[0m 14.12[0m 13.96[0m [32m[1m12.07[0m a & 12 # a = std([a-e]*b(<2>[a-e])*) 0.41[0m [32m[1m 0.37[0m 0.44[0m [32m[1m 0.40[0m [32m[1m 0.34[0m [32m[1m 0.37[0m 0.43[0m [31m[1m 0.71[0m [32m[1m 0.40[0m [31m[1m 0.58[0m a.accessible() # a = thm([a-m]{20000}).proper(prune=False), 4x [32m[1m 0.52[0m [32m[1m 0.51[0m [32m[1m 0.51[0m [32m[1m 0.58[0m [32m[1m 0.51[0m 0.72[0m [31m[1m 0.96[0m [31m[1m 1.08[0m [31m[1m 1.07[0m [31m[1m 1.32[0m a.compose(a) # a = std(((\e|a+a|b+b|c+c|d+d|a)(w|x+x|y+y|z+z|w+z|\e)){300}), c = [a-z]x[a-z] -> B, 20x [32m[1m 0.77[0m [32m[1m 0.77[0m [32m[1m 0.76[0m [32m[1m 0.75[0m [32m[1m 0.77[0m 1.01[0m [32m[1m 0.76[0m [32m[1m 0.78[0m [31m[1m 1.82[0m [31m[1m 1.90[0m a.compose(a) # a = std(((a|b+b|c+c|d+d|a)(w|x+x|y+y|z+z|w)){300}), c = [a-z]x[a-z] -> B, 50x 19.95[0m 19.87[0m 20.00[0m 20.17[0m 19.72[0m 20.10[0m 19.94[0m 20.17[0m 20.14[0m 20.00[0m a.compose(a) # a = std(['(a,a)'-'(i,z)']{4}), c = [a-z]x[a-z] -> B [32m[1m 0.69[0m [32m[1m 0.81[0m [32m[1m 0.81[0m [32m[1m 0.87[0m [32m[1m 0.69[0m 0.98[0m 1.09[0m [31m[1m 1.41[0m [31m[1m 1.37[0m [31m[1m 1.59[0m a.compose(a) # a = thm(((\e|a+a|b+b|c+c|d+d|a)(w|x+x|y+y|z+z|w+z|\e)){300}), c = [a-z]x[a-z] -> B, 10x [32m[1m 0.65[0m [32m[1m 0.64[0m [32m[1m 0.64[0m [32m[1m 0.71[0m [32m[1m 0.65[0m 1.00[0m [31m[1m 1.22[0m [31m[1m 1.40[0m [31m[1m 1.37[0m [31m[1m 1.59[0m a.compose(a) # a = thm(((a|b+b|c+c|d+d|a)(w|x+x|y+y|z+z|w)){300}), c = [a-z]x[a-z] -> B, 20x 0.70[0m 0.71[0m 0.75[0m 0.79[0m [31m[1m 0.83[0m 0.71[0m 0.72[0m 0.73[0m 0.75[0m 0.71[0m a.compose(a2) # a2 = std(([a-z]|[a-z])?{20}), a = std(a|a), 50x [32m[1m 2.43[0m [32m[1m 2.13[0m [32m[1m 2.34[0m [32m[1m 2.68[0m [32m[1m 2.84[0m [32m[1m 2.82[0m 3.31[0m [31m[1m 3.82[0m [31m[1m 4.48[0m [31m[1m 4.95[0m a.conjunction(a) # a = std([a-e]?{50}) [32m[1m 0.67[0m [32m[1m 0.67[0m 0.69[0m 0.77[0m 0.78[0m 0.80[0m [31m[1m 0.86[0m [31m[1m 0.85[0m 0.82[0m [32m[1m 0.65[0m a.conjunction(a) # a = thm([a-e]?{80}) [32m[1m 1.40[0m [32m[1m 1.40[0m [32m[1m 1.44[0m [32m[1m 1.61[0m [32m[1m 1.69[0m [32m[1m 1.68[0m [31m[1m 2.12[0m [31m[1m 2.34[0m [31m[1m 2.59[0m [31m[1m 2.90[0m a.conjunction(a, a, a) # a = thm([a-e]?{5}) [32m[1m 0.93[0m [32m[1m 0.91[0m [32m[1m 1.20[0m [32m[1m 1.16[0m [32m[1m 1.23[0m 1.32[0m 1.52[0m [31m[1m 1.78[0m [31m[1m 1.85[0m [31m[1m 2.10[0m a.determinize("lazy,weighted").accessible() # a = de_bruijn(13), c = [abc] -> F2, 5x [32m[1m 0.36[0m [32m[1m 0.36[0m [32m[1m 0.46[0m [32m[1m 0.39[0m [32m[1m 0.47[0m [32m[1m 0.45[0m [31m[1m 0.66[0m [31m[1m 0.68[0m [31m[1m 0.71[0m [31m[1m 0.84[0m a.determinize("lazy,weighted").accessible() # a = std(([^]+a){100}), c = [a-zA-Z0-9] -> B, 2x [32m[1m 0.46[0m [32m[1m 0.45[0m [32m[1m 0.46[0m [32m[1m 0.60[0m [32m[1m 0.55[0m 0.73[0m 0.74[0m [31m[1m 0.84[0m [31m[1m 0.93[0m [31m[1m 1.07[0m a.determinize("weighted") # a = de_bruijn(13), 5x [32m[1m 0.45[0m [32m[1m 0.45[0m [32m[1m 0.46[0m 0.61[0m [32m[1m 0.58[0m 0.63[0m [31m[1m 0.75[0m 0.71[0m [31m[1m 0.89[0m [31m[1m 1.00[0m a.determinize("weighted") # a = de_bruijn(13), c = [abc] -> F2, 5x [32m[1m 1.12[0m [32m[1m 1.11[0m [32m[1m 1.33[0m [32m[1m 1.22[0m [32m[1m 1.30[0m [32m[1m 1.39[0m [31m[1m 1.73[0m [31m[1m 1.95[0m [31m[1m 2.02[0m [31m[1m 2.32[0m a.determinize("weighted") # a = de_bruijn(14), 5x [32m[1m 1.11[0m [32m[1m 1.13[0m [32m[1m 1.31[0m [32m[1m 1.27[0m [32m[1m 1.28[0m 1.39[0m [31m[1m 1.69[0m [31m[1m 1.75[0m [31m[1m 2.02[0m [31m[1m 2.19[0m a.determinize("weighted") # a = de_bruijn(14), c = [abc] -> F2, 5x [32m[1m 1.16[0m [32m[1m 1.17[0m [32m[1m 1.14[0m [32m[1m 1.21[0m [32m[1m 1.33[0m 1.35[0m [31m[1m 1.68[0m [31m[1m 1.90[0m [31m[1m 1.82[0m [31m[1m 2.19[0m a.determinize("weighted") # a = de_bruijn(16) [32m[1m 1.17[0m [32m[1m 1.19[0m [32m[1m 1.15[0m [32m[1m 1.19[0m [32m[1m 1.23[0m [32m[1m 1.22[0m 1.48[0m [31m[1m 1.83[0m [31m[1m 1.88[0m [31m[1m 2.05[0m a.determinize("weighted") # a = de_bruijn(16), c = [abc] -> F2 [32m[1m 0.28[0m [32m[1m 0.29[0m [32m[1m 0.37[0m [32m[1m 0.31[0m [32m[1m 0.38[0m [32m[1m 0.40[0m [31m[1m 0.55[0m [31m[1m 0.63[0m [31m[1m 0.59[0m [31m[1m 0.70[0m a.determinize("weighted") # a = std(([^]+a){100}), c = [a-zA-Z0-9] -> B, 2x [32m[1m 0.57[0m [32m[1m 0.57[0m [32m[1m 0.61[0m [32m[1m 0.62[0m [32m[1m 0.71[0m 0.84[0m [31m[1m 1.02[0m [31m[1m 1.15[0m [31m[1m 1.12[0m [31m[1m 1.26[0m a.determinize() # a = de_bruijn(13), 20x [32m[1m 0.66[0m [32m[1m 0.63[0m [32m[1m 0.67[0m [32m[1m 0.69[0m [32m[1m 0.81[0m 0.88[0m [31m[1m 1.17[0m [31m[1m 1.26[0m [31m[1m 1.22[0m [31m[1m 1.41[0m a.determinize() # a = de_bruijn(13), c = [abc] -> F2, 20x [32m[1m 0.61[0m [32m[1m 0.61[0m [32m[1m 0.65[0m [32m[1m 0.79[0m 0.82[0m 0.84[0m 0.96[0m [31m[1m 0.97[0m [31m[1m 1.20[0m [31m[1m 1.35[0m a.determinize() # a = de_bruijn(14), 10x [32m[1m 0.67[0m [32m[1m 0.67[0m [32m[1m 0.73[0m [32m[1m 0.82[0m 0.89[0m [32m[1m 0.78[0m 1.02[0m [31m[1m 1.24[0m [31m[1m 1.28[0m [31m[1m 1.40[0m a.determinize() # a = de_bruijn(14), c = [abc] -> F2, 10x [32m[1m 0.51[0m [32m[1m 0.51[0m [32m[1m 0.61[0m [32m[1m 0.59[0m [32m[1m 0.61[0m 0.67[0m 0.77[0m [31m[1m 0.87[0m [31m[1m 0.99[0m [31m[1m 1.05[0m a.determinize() # a = de_bruijn(16), 2x [32m[1m 0.56[0m [32m[1m 0.56[0m [32m[1m 0.62[0m [32m[1m 0.63[0m [32m[1m 0.70[0m [32m[1m 0.71[0m [31m[1m 0.92[0m [31m[1m 1.05[0m [31m[1m 1.08[0m [31m[1m 1.17[0m a.determinize() # a = de_bruijn(16), c = [abc] -> F2, 2x [32m[1m 0.77[0m [32m[1m 0.77[0m [32m[1m 0.75[0m [32m[1m 0.80[0m [32m[1m 0.75[0m [32m[1m 0.80[0m 0.97[0m [31m[1m 1.03[0m [31m[1m 1.20[0m [31m[1m 1.38[0m a.determinize() # a = ladybird(18) [32m[1m 0.76[0m [32m[1m 0.78[0m [32m[1m 0.71[0m [32m[1m 0.77[0m [32m[1m 0.81[0m 0.92[0m [31m[1m 1.14[0m [31m[1m 1.17[0m [31m[1m 1.16[0m [31m[1m 1.35[0m a.determinize() # a = ladybird(18), c = [a-zA-Z0-9] -> B [32m[1m 6.92[0m [32m[1m 6.99[0m [32m[1m 6.98[0m [32m[1m 6.95[0m [32m[1m 7.29[0m 7.87[0m 8.99[0m [31m[1m10.07[0m [31m[1m10.46[0m [31m[1m12.05[0m a.determinize() # a = ladybird(21) [32m[1m 1.21[0m [32m[1m 1.21[0m [32m[1m 1.42[0m [32m[1m 1.31[0m 1.49[0m 1.47[0m 1.72[0m [31m[1m 1.84[0m [31m[1m 1.97[0m [31m[1m 2.44[0m a.determinize() # a = std(([^]+a){100}), c = [a-zA-Z0-9] -> B, 2x [32m[1m 1.31[0m [32m[1m 1.24[0m [32m[1m 1.55[0m [32m[1m 1.57[0m [32m[1m 1.58[0m [32m[1m 1.68[0m [31m[1m 2.24[0m [31m[1m 2.54[0m [31m[1m 2.68[0m [31m[1m 3.05[0m a.evaluate("a"*151) # a = de_bruijn(150), 10000x [32m[1m 0.80[0m [32m[1m 0.76[0m [32m[1m 0.95[0m [32m[1m 0.98[0m 1.16[0m 1.05[0m 1.17[0m [31m[1m 1.35[0m [31m[1m 1.42[0m [31m[1m 1.82[0m a.evaluate("abcxyz"*25) # a = std([a-z]*), c = [a-z] -> Z, 20000x [32m[1m 1.27[0m [32m[1m 1.21[0m [32m[1m 1.29[0m [32m[1m 1.48[0m [32m[1m 1.62[0m 1.68[0m [31m[1m 2.23[0m [31m[1m 2.46[0m [31m[1m 2.55[0m [31m[1m 2.84[0m a.evaluate("abcxyz"*25) # a = std([a-z]*), c = [a-z]* -> Z, 10000x [32m[1m 0.82[0m [32m[1m 0.78[0m [32m[1m 0.83[0m [32m[1m 1.01[0m [32m[1m 1.04[0m 1.08[0m 1.27[0m [31m[1m 1.44[0m [31m[1m 1.56[0m [31m[1m 1.77[0m a.evaluate(wc.polynomial("abcxyz"*25)) # a = std([a-z]*), c = [a-z] -> Z, 20000x [32m[1m 1.32[0m [32m[1m 1.27[0m [32m[1m 1.33[0m [32m[1m 1.50[0m [32m[1m 1.71[0m [32m[1m 1.64[0m [31m[1m 2.27[0m [31m[1m 2.60[0m [31m[1m 2.59[0m [31m[1m 3.26[0m a.evaluate(wc.polynomial("abcxyz"*25)) # a = std([a-z]*), c = [a-z]* -> Z, 10000x [32m[1m 0.99[0m [32m[1m 0.95[0m [32m[1m 1.16[0m [32m[1m 1.31[0m [32m[1m 1.29[0m [32m[1m 1.25[0m [31m[1m 1.78[0m [31m[1m 1.89[0m [31m[1m 1.87[0m [31m[1m 2.33[0m a.expression("associative", "delgado") # a = ladybird(2000), 10x [32m[1m 0.61[0m [32m[1m 0.56[0m [32m[1m 0.68[0m [32m[1m 0.63[0m 0.79[0m [32m[1m 0.74[0m [31m[1m 0.93[0m [31m[1m 1.02[0m [31m[1m 1.13[0m [31m[1m 1.24[0m a.expression("associative", "naive") # a = ladybird(8000), 10x [32m[1m 0.51[0m [32m[1m 0.44[0m [32m[1m 0.52[0m [32m[1m 0.59[0m 0.79[0m 0.72[0m [31m[1m 0.94[0m [31m[1m 1.05[0m [31m[1m 1.14[0m [31m[1m 1.25[0m a.expression("associative", "naive") # a = std([a-d]?{100}) [32m[1m 0.93[0m [32m[1m 0.85[0m [32m[1m 1.17[0m [32m[1m 1.12[0m [32m[1m 1.13[0m 1.24[0m 1.46[0m [31m[1m 1.54[0m [31m[1m 1.80[0m [31m[1m 2.06[0m a.expression("linear", "delgado") # a = ladybird(2000), 5x [32m[1m 0.77[0m [32m[1m 0.74[0m [32m[1m 1.03[0m [32m[1m 1.02[0m [32m[1m 1.02[0m [32m[1m 1.02[0m [31m[1m 1.51[0m [31m[1m 1.63[0m [31m[1m 1.75[0m [31m[1m 1.92[0m a.expression("linear", "delgado") # a = std([a-d]?{15}), 5x [32m[1m 0.72[0m [32m[1m 0.66[0m [32m[1m 0.72[0m [32m[1m 0.96[0m [32m[1m 0.97[0m [32m[1m 0.95[0m 1.14[0m [31m[1m 1.48[0m [31m[1m 1.81[0m [31m[1m 1.92[0m a.expression("linear", "naive") # a = ladybird(4000), 2x [32m[1m 0.48[0m [32m[1m 0.47[0m [32m[1m 0.62[0m [32m[1m 0.64[0m [32m[1m 0.62[0m [32m[1m 0.66[0m 0.77[0m [31m[1m 1.07[0m [31m[1m 1.12[0m [31m[1m 1.27[0m a.expression("linear", "naive") # a = std([a-d]?{9}), 5x [32m[1m 0.54[0m [32m[1m 0.53[0m [32m[1m 0.58[0m [32m[1m 0.58[0m [32m[1m 0.60[0m 0.74[0m [31m[1m 0.88[0m [31m[1m 1.00[0m [31m[1m 1.10[0m [31m[1m 1.27[0m a.format("daut") # a = std(a?{500}), 5x [32m[1m 0.65[0m [32m[1m 0.65[0m [32m[1m 0.70[0m [32m[1m 0.73[0m [32m[1m 0.78[0m 0.88[0m [31m[1m 1.11[0m [31m[1m 1.20[0m [31m[1m 1.39[0m [31m[1m 1.58[0m a.format("dot") # a = std(a?{500}), 5x [32m[1m 0.25[0m [32m[1m 0.25[0m [32m[1m 0.27[0m [32m[1m 0.28[0m [32m[1m 0.29[0m 0.35[0m [31m[1m 0.42[0m [31m[1m 0.42[0m [31m[1m 0.55[0m [31m[1m 0.64[0m a.format("efsm") # a = std(a?{500}), 5x [32m[1m 0.25[0m [32m[1m 0.25[0m [32m[1m 0.26[0m [32m[1m 0.28[0m [32m[1m 0.28[0m 0.35[0m 0.36[0m [31m[1m 0.53[0m [31m[1m 0.53[0m [31m[1m 0.63[0m a.format("fado") # a = std(a?{500}), 5x [32m[1m 0.33[0m [32m[1m 0.33[0m [32m[1m 0.35[0m [32m[1m 0.36[0m [32m[1m 0.37[0m 0.44[0m 0.50[0m [31m[1m 0.68[0m [31m[1m 0.71[0m [31m[1m 0.81[0m a.format("grail") # a = std(a?{500}), 5x [32m[1m 0.53[0m [32m[1m 0.54[0m [32m[1m 0.56[0m [32m[1m 0.59[0m [32m[1m 0.59[0m 0.69[0m 0.78[0m [31m[1m 0.85[0m [31m[1m 1.11[0m [31m[1m 1.25[0m a.format("tikz") # a = std(a?{500}), 5x [32m[1m 0.55[0m [32m[1m 0.55[0m [32m[1m 0.56[0m [32m[1m 0.56[0m [32m[1m 0.57[0m [32m[1m 0.54[0m 0.67[0m [31m[1m 0.74[0m [31m[1m 0.79[0m [31m[1m 0.92[0m a.has_bounded_lag() # a = std(['(a,x)'-'(b,y)']*{600}), 20x [32m[1m 1.13[0m [32m[1m 1.13[0m [32m[1m 1.14[0m [32m[1m 1.20[0m [31m[1m 1.89[0m [32m[1m 1.48[0m [31m[1m 1.86[0m [31m[1m 1.89[0m [31m[1m 2.37[0m [31m[1m 2.36[0m a.has_bounded_lag() # a = std(['(a,x)'-'(b,y)']{1000}*), 10x FAIL FAIL FAIL FAIL FAIL FAIL FAIL FAIL FAIL FAIL a.has_twins_property() # a = std([a-c]{200}*+[a-c]{200}*, "associative"), c = [abc] -> Zmin 6.01[0m [32m[1m 5.86[0m [32m[1m 5.91[0m 6.48[0m 6.89[0m [31m[1m 7.55[0m [31m[1m 8.22[0m 6.86[0m 6.78[0m [32m[1m 5.54[0m a.infiltrate(a) # a = std([a-e]?{30}) [32m[1m 0.50[0m [32m[1m 0.51[0m [32m[1m 0.54[0m [32m[1m 0.54[0m [32m[1m 0.62[0m 0.71[0m [31m[1m 0.83[0m [31m[1m 1.07[0m [31m[1m 1.00[0m [31m[1m 1.08[0m a.is_ambiguous() # a = std([a-c]{2000}(<2>ab+a<3>b)), c = [abc] -> Z, 20x [32m[1m 1.13[0m [32m[1m 1.18[0m [32m[1m 1.22[0m [32m[1m 1.29[0m [32m[1m 1.56[0m 1.59[0m [31m[1m 2.19[0m [31m[1m 2.34[0m [31m[1m 2.23[0m [31m[1m 2.71[0m a.is_cycle_ambiguous() # a = std([a-c]{2000}(<2>ab+a<3>b)), c = [abc] -> Z, 20x [32m[1m 0.30[0m [32m[1m 0.33[0m [32m[1m 0.32[0m [32m[1m 0.34[0m [32m[1m 0.39[0m [32m[1m 0.39[0m [31m[1m 0.59[0m [31m[1m 0.63[0m [31m[1m 0.76[0m [31m[1m 0.90[0m a.is_deterministic() # a = ladybird(15).determinize(), 1000000x [32m[1m 0.54[0m [32m[1m 0.55[0m [32m[1m 0.56[0m [32m[1m 0.59[0m [32m[1m 0.63[0m [32m[1m 0.63[0m [31m[1m 0.95[0m [31m[1m 1.13[0m [31m[1m 1.07[0m [31m[1m 1.12[0m a.is_functional() # a = std((a|x){2000}(b|y)), 100x [32m[1m 0.30[0m [32m[1m 0.33[0m [32m[1m 0.31[0m [32m[1m 0.32[0m [32m[1m 0.35[0m 0.41[0m 0.48[0m [31m[1m 0.57[0m [31m[1m 0.66[0m [31m[1m 0.70[0m a.is_proper() # a = "", 1000000x 1.08[0m 1.08[0m 1.05[0m 1.07[0m 1.08[0m 1.13[0m [31m[1m 1.48[0m [31m[1m 1.40[0m 1.15[0m 1.12[0m a.is_synchronized() # a = std((abc|de)((f|\e)+((g|h)(i|j)*(\e|k)))(l|mn){500000}) [32m[1m 0.35[0m [32m[1m 0.33[0m [32m[1m 0.52[0m [32m[1m 0.48[0m 0.73[0m [32m[1m 0.59[0m 0.76[0m [31m[1m 1.00[0m [31m[1m 1.05[0m [31m[1m 1.18[0m a.lightest() # a = std([a-e]?{150}), c = [a-e] -> Nmin, 500x [32m[1m 0.70[0m [32m[1m 0.67[0m [32m[1m 0.68[0m [32m[1m 0.67[0m [32m[1m 0.72[0m 0.79[0m 0.91[0m [31m[1m 1.04[0m [31m[1m 1.18[0m [31m[1m 1.29[0m a.lightest(5, "auto") # a = std([a-e]?{150}), c = [a-e] -> Nmin, 10x [32m[1m 1.35[0m [32m[1m 1.21[0m [32m[1m 1.44[0m [32m[1m 1.68[0m 1.89[0m 1.85[0m 2.11[0m [31m[1m 2.80[0m [31m[1m 2.69[0m [31m[1m 3.08[0m a.lightest(5, "eppstein") # a = std([a-e]?{150}), c = [a-e] -> Nmin, 500x [32m[1m 0.90[0m [32m[1m 0.85[0m [32m[1m 1.08[0m [32m[1m 1.19[0m [32m[1m 1.42[0m 1.55[0m [31m[1m 1.90[0m [31m[1m 2.17[0m [31m[1m 2.41[0m [31m[1m 2.75[0m a.lightest(5, "yen") # a = std([a-e]?{150}), c = [a-e] -> Nmin, 500x [32m[1m 0.29[0m [32m[1m 0.27[0m [32m[1m 0.29[0m [32m[1m 0.33[0m 0.37[0m 0.40[0m 0.43[0m [31m[1m 0.50[0m [31m[1m 0.60[0m [31m[1m 0.59[0m a.lightest(5000) # a = derived_term((\e|x + a|\e)*), c = [a]x[x] -> Q, 10x [32m[1m 0.25[0m [32m[1m 0.22[0m [32m[1m 0.28[0m [32m[1m 0.29[0m 0.31[0m [32m[1m 0.29[0m [31m[1m 0.39[0m [31m[1m 0.44[0m [31m[1m 0.47[0m [31m[1m 0.48[0m a.lightest_automaton(1, "a-star") # a = std([a-e]?{150}), c = [a-e] -> Nmin, 20x [32m[1m 0.64[0m [32m[1m 0.61[0m [32m[1m 0.70[0m [32m[1m 0.70[0m [32m[1m 0.81[0m [32m[1m 0.81[0m [31m[1m 1.16[0m [31m[1m 1.33[0m [31m[1m 1.39[0m [31m[1m 1.54[0m a.lightest_automaton(1, "bellman-ford") # a = std([a-e]?{150}), c = [a-e] -> Nmin [32m[1m 0.36[0m [32m[1m 0.34[0m [32m[1m 0.42[0m [32m[1m 0.48[0m [32m[1m 0.59[0m [31m[1m 0.75[0m [31m[1m 0.77[0m [31m[1m 0.96[0m [31m[1m 0.93[0m [31m[1m 1.14[0m a.lightest_automaton(1, "dijkstra") # a = std([a-e]?{150}), c = [a-e] -> Nmin, 500x [32m[1m 0.96[0m [32m[1m 0.96[0m [32m[1m 1.31[0m 1.41[0m 1.41[0m 1.45[0m [31m[1m 1.83[0m [31m[1m 2.04[0m [31m[1m 1.94[0m [31m[1m 2.00[0m a.minimize("brzozowski") # a = std([a-g]{300}), c = [a-k] -> B, 200x [32m[1m 1.05[0m [32m[1m 1.07[0m 1.47[0m 1.50[0m 1.53[0m 1.48[0m [31m[1m 2.08[0m [31m[1m 2.32[0m [31m[1m 1.81[0m [31m[1m 1.85[0m a.minimize("hopcroft") # a = std([a-g]{300}), c = [a-k] -> B, 2x [32m[1m 0.58[0m [32m[1m 0.58[0m [32m[1m 0.81[0m [32m[1m 0.83[0m [32m[1m 0.82[0m [32m[1m 0.82[0m [31m[1m 1.08[0m [31m[1m 1.26[0m [31m[1m 1.42[0m [31m[1m 1.58[0m a.minimize("moore") # a = std([a-g]{300}), c = [a-k] -> B, 40x [32m[1m 0.74[0m [32m[1m 0.73[0m [32m[1m 0.98[0m [32m[1m 1.02[0m [32m[1m 1.04[0m [32m[1m 1.03[0m [31m[1m 1.35[0m [31m[1m 1.54[0m [31m[1m 1.61[0m [31m[1m 2.00[0m a.minimize("signature") # a = std([a-g]{300}), c = [a-k] -> B, 2x [32m[1m 1.14[0m [32m[1m 1.15[0m [32m[1m 1.45[0m [32m[1m 1.50[0m [32m[1m 1.57[0m [32m[1m 1.60[0m [31m[1m 2.15[0m [31m[1m 2.59[0m [31m[1m 2.43[0m [31m[1m 2.70[0m a.minimize("weighted") # a = std([a-g]{300}), c = [a-k] -> B [32m[1m 1.24[0m [32m[1m 1.14[0m [32m[1m 1.58[0m [32m[1m 1.28[0m [32m[1m 1.46[0m 1.67[0m [31m[1m 2.25[0m [31m[1m 2.39[0m [31m[1m 2.39[0m [31m[1m 2.21[0m a.minimize("weighted") # a = std([a-g]{300}), c = [a-k] -> Z [32m[1m 2.16[0m [32m[1m 2.00[0m [32m[1m 2.94[0m [32m[1m 2.97[0m [32m[1m 3.00[0m 3.45[0m [31m[1m 4.08[0m [31m[1m 4.83[0m [31m[1m 5.13[0m [31m[1m 6.07[0m a.proper() # a = thm(a?{1200}) [32m[1m 1.95[0m [32m[1m 1.96[0m [32m[1m 2.05[0m [32m[1m 2.35[0m 2.88[0m [32m[1m 2.34[0m [31m[1m 3.66[0m [31m[1m 4.10[0m [31m[1m 3.79[0m [31m[1m 3.73[0m a.reduce() # a = std([a-g]{300}), c = [a-k] -> Q [32m[1m 1.35[0m [32m[1m 1.37[0m [32m[1m 1.73[0m [32m[1m 1.50[0m 2.03[0m [32m[1m 1.64[0m [31m[1m 2.63[0m [31m[1m 2.99[0m [31m[1m 3.06[0m [31m[1m 3.68[0m a.reduce() # a = std([a-g]{300}), c = [a-k] -> Z [32m[1m 0.18[0m [32m[1m 0.20[0m [32m[1m 0.19[0m [32m[1m 0.20[0m 0.25[0m [32m[1m 0.22[0m 0.24[0m [31m[1m 0.39[0m [31m[1m 0.38[0m [31m[1m 0.40[0m a.scc("dijkstra") # a = std((abc)*{1000}), 20x [32m[1m 0.24[0m [32m[1m 0.24[0m [32m[1m 0.21[0m [32m[1m 0.22[0m [32m[1m 0.23[0m [32m[1m 0.24[0m [31m[1m 0.37[0m [31m[1m 0.45[0m [31m[1m 0.38[0m [31m[1m 0.41[0m a.scc("kosaraju") # a = std((abc)*{1000}), 20x [32m[1m 0.22[0m [32m[1m 0.22[0m [32m[1m 0.23[0m [32m[1m 0.24[0m [32m[1m 0.26[0m [32m[1m 0.27[0m [31m[1m 0.52[0m 0.33[0m [31m[1m 0.57[0m [31m[1m 0.53[0m a.scc("tarjan_iterative") # a = std((abc)*{1000}), 20x [32m[1m 0.23[0m [32m[1m 0.23[0m [32m[1m 0.20[0m [32m[1m 0.23[0m [32m[1m 0.21[0m 0.25[0m [31m[1m 0.34[0m 0.28[0m [31m[1m 0.34[0m [31m[1m 0.36[0m a.scc("tarjan_recursive") # a = std((abc)*{1000}), 20x [32m[1m 0.59[0m [32m[1m 0.61[0m [32m[1m 0.56[0m [32m[1m 0.63[0m 0.74[0m 0.76[0m [31m[1m 0.88[0m [31m[1m 0.98[0m [31m[1m 0.92[0m [31m[1m 1.01[0m a.shortest(5) # a = de_bruijn(9), 10x [32m[1m 1.24[0m [32m[1m 1.21[0m [32m[1m 1.12[0m [32m[1m 1.22[0m [32m[1m 1.25[0m [32m[1m 1.22[0m 1.37[0m [31m[1m 1.72[0m [31m[1m 1.61[0m [31m[1m 1.96[0m a.shortest(5) # a = std([a-e]?{600}), c = [a-e] -> Z, 5x [32m[1m 0.68[0m [32m[1m 0.63[0m [32m[1m 0.62[0m [32m[1m 0.67[0m 0.82[0m 0.77[0m 0.87[0m [31m[1m 0.91[0m [31m[1m 1.08[0m [31m[1m 1.21[0m a.shortest(5000) # a = de_bruijn(9), 10x [32m[1m 0.22[0m [32m[1m 0.21[0m [32m[1m 0.22[0m [32m[1m 0.23[0m [32m[1m 0.27[0m 0.32[0m [31m[1m 0.34[0m [31m[1m 0.37[0m [31m[1m 0.38[0m [31m[1m 0.44[0m a.shortest(5000) # a = derived_term((\e|x + a|\e)*), c = [a]x[x] -> Q, 10x [32m[1m 2.49[0m [32m[1m 2.32[0m 2.85[0m 2.95[0m 2.94[0m 2.87[0m 3.27[0m [31m[1m 3.43[0m [31m[1m 3.87[0m [31m[1m 4.05[0m a.shuffle(a) # a = std([a-e]?{50}) [32m[1m 0.92[0m [32m[1m 0.86[0m [32m[1m 1.07[0m [32m[1m 1.11[0m 1.14[0m [32m[1m 1.08[0m 1.31[0m [31m[1m 1.40[0m [31m[1m 1.51[0m [31m[1m 1.94[0m a.sort() # a = std([a-e]?{700}) [32m[1m 0.68[0m [32m[1m 0.66[0m [32m[1m 0.70[0m 0.81[0m [32m[1m 0.70[0m [32m[1m 0.77[0m 0.90[0m 0.93[0m [31m[1m 1.23[0m [31m[1m 1.24[0m a.synchronize() # a = std((abc|de)((f|\e)+((g|h)(i|j)*(\e|k)))(l|mn){2000}) [32m[1m 0.33[0m [32m[1m 0.34[0m [32m[1m 0.35[0m [32m[1m 0.37[0m 0.48[0m [32m[1m 0.40[0m [31m[1m 0.60[0m [31m[1m 0.79[0m [31m[1m 0.56[0m [31m[1m 0.62[0m a.synchronizing_word() # a = de_bruijn(6) [32m[1m 0.75[0m [32m[1m 0.77[0m [32m[1m 0.80[0m [32m[1m 0.80[0m [32m[1m 0.88[0m 1.02[0m 1.06[0m 1.06[0m [31m[1m 1.49[0m [31m[1m 1.63[0m a.weight_series() # a = std([a-z]{200}), c = [a-z] -> Z, 10x [32m[1m 0.65[0m [32m[1m 0.65[0m [32m[1m 0.69[0m [32m[1m 0.69[0m 0.72[0m [31m[1m 0.88[0m [31m[1m 1.05[0m [31m[1m 0.95[0m 0.77[0m 0.73[0m a.weight_series() # a = std(a{12000}+<1>[b-z]{12000}), c = [a-z] -> Nmin, 200x [32m[1m 0.57[0m [32m[1m 0.62[0m [32m[1m 0.62[0m [32m[1m 0.64[0m [32m[1m 0.65[0m 0.75[0m 0.85[0m [31m[1m 0.88[0m [31m[1m 1.03[0m [31m[1m 1.16[0m b.expression(e) # e = "(\e+a)" * 500, 100x [32m[1m 0.31[0m [32m[1m 0.33[0m [32m[1m 0.33[0m [32m[1m 0.35[0m [32m[1m 0.37[0m 0.42[0m 0.44[0m 0.45[0m [31m[1m 0.54[0m [31m[1m 0.58[0m b.expression(e) # e = [ab]{20000}, 1000x [32m[1m 0.12[0m [32m[1m 0.11[0m [32m[1m 0.12[0m [32m[1m 0.13[0m [32m[1m 0.13[0m 0.16[0m 0.17[0m [31m[1m 0.20[0m [31m[1m 0.24[0m [31m[1m 0.26[0m b.format("text") # b = [abc] -> B, 100000x [32m[1m 0.90[0m [32m[1m 0.85[0m [32m[1m 1.11[0m 1.21[0m 1.17[0m [32m[1m 1.11[0m 1.36[0m [31m[1m 1.54[0m [31m[1m 1.50[0m [31m[1m 1.88[0m e.split() # e = [a-e]?{15} [32m[1m 0.98[0m [32m[1m 0.97[0m [32m[1m 1.00[0m [32m[1m 1.01[0m [32m[1m 1.07[0m [32m[1m 1.04[0m [31m[1m 1.42[0m 1.26[0m [31m[1m 1.65[0m [31m[1m 1.83[0m p.trie() # p = [a-j]{6} [32m[1m 0.68[0m [32m[1m 0.69[0m [32m[1m 0.75[0m 0.87[0m 0.81[0m 0.84[0m [31m[1m 0.99[0m [31m[1m 1.01[0m [31m[1m 1.10[0m [31m[1m 1.23[0m r.derived_term("derivation") # r = (a+b)*b(<2>a+<2>b){150}, c = [a-z] -> Z, 50x [32m[1m 0.36[0m [32m[1m 0.35[0m [32m[1m 0.37[0m [32m[1m 0.38[0m 0.44[0m 0.45[0m 0.48[0m [31m[1m 0.50[0m [31m[1m 0.50[0m [31m[1m 0.56[0m r.derived_term("derivation") # r = (a+b)*b(<2>a+<2>b){150}, c = [ab] -> Z, 50x [32m[1m 0.98[0m [32m[1m 0.99[0m [32m[1m 1.04[0m 1.18[0m 1.14[0m 1.28[0m 1.31[0m [31m[1m 1.38[0m [31m[1m 1.49[0m [31m[1m 1.69[0m r.derived_term("derivation") # r = (a+b)*b(<2>a+<2>b){300}, c = [a-z] -> Z, 20x [32m[1m 0.55[0m [32m[1m 0.55[0m 0.62[0m 0.71[0m 0.64[0m 0.67[0m 0.72[0m 0.74[0m [31m[1m 0.79[0m [31m[1m 0.89[0m r.derived_term("derivation") # r = (a+b)*b(<2>a+<2>b){300}, c = [ab] -> Z, 20x [32m[1m 0.42[0m [32m[1m 0.42[0m [32m[1m 0.45[0m [32m[1m 0.46[0m [32m[1m 0.47[0m 0.57[0m 0.58[0m [31m[1m 0.66[0m [31m[1m 0.82[0m [31m[1m 0.96[0m r.derived_term("derivation") # r = a?{150}, c = [a] -> Z, 2x [32m[1m 0.25[0m [32m[1m 0.24[0m [32m[1m 0.26[0m 0.31[0m [32m[1m 0.28[0m 0.30[0m 0.33[0m [31m[1m 0.35[0m [31m[1m 0.38[0m [31m[1m 0.43[0m r.derived_term("expansion") # r = (a+b)*b(<2>a+<2>b){150}, c = [a-z] -> Z, 50x [32m[1m 0.38[0m [32m[1m 0.37[0m [32m[1m 0.40[0m [32m[1m 0.41[0m 0.44[0m 0.44[0m 0.49[0m 0.49[0m [31m[1m 0.54[0m [31m[1m 0.62[0m r.derived_term("expansion") # r = (a+b)*b(<2>a+<2>b){300}, c = [a-z] -> Z, 20x [32m[1m 0.32[0m [32m[1m 0.32[0m [32m[1m 0.35[0m [32m[1m 0.35[0m 0.42[0m [32m[1m 0.40[0m 0.44[0m [31m[1m 0.51[0m [31m[1m 0.63[0m [31m[1m 0.73[0m r.derived_term("expansion") # r = (a+b)*b(<2>a+<2>b){3}, c = [a-z] -> Z, 10000x [32m[1m 0.45[0m [32m[1m 0.45[0m [32m[1m 0.48[0m [32m[1m 0.51[0m [32m[1m 0.54[0m 0.62[0m 0.63[0m [31m[1m 0.73[0m [31m[1m 0.93[0m [31m[1m 1.04[0m r.derived_term("expansion") # r = a?{150}, c = [a] -> Z, 2x [32m[1m 0.37[0m [32m[1m 0.37[0m [32m[1m 0.39[0m [32m[1m 0.41[0m 0.46[0m 0.47[0m 0.51[0m [31m[1m 0.56[0m [31m[1m 0.58[0m [31m[1m 0.65[0m r.derived_term("lazy,expansion").accessible() # r = (a+b)*b(<2>a+<2>b){300}, c = [a-z] -> Z, 20x [32m[1m 0.36[0m [32m[1m 0.37[0m [32m[1m 0.39[0m [32m[1m 0.41[0m [32m[1m 0.44[0m 0.51[0m 0.56[0m [31m[1m 0.59[0m [31m[1m 0.69[0m [31m[1m 0.78[0m r.derived_term("lazy,expansion").accessible() # r = (a+b)*b(<2>a+<2>b){3}, c = [a-z] -> Z, 10000x [32m[1m 0.45[0m [32m[1m 0.50[0m [32m[1m 0.47[0m [32m[1m 0.49[0m [32m[1m 0.54[0m [32m[1m 0.55[0m 0.68[0m [31m[1m 0.83[0m [31m[1m 0.91[0m [31m[1m 1.05[0m r.derived_term("lazy,expansion").accessible() # r = a?{150}, c = [a] -> Z, 2x [32m[1m 0.11[0m [32m[1m 0.11[0m [32m[1m 0.12[0m [32m[1m 0.12[0m 0.13[0m 0.15[0m 0.15[0m 0.14[0m [31m[1m 0.16[0m [31m[1m 0.19[0m r.format("text") # r = b.expression("(\e+a)" * 500), 1000x [32m[1m 0.35[0m [32m[1m 0.35[0m [32m[1m 0.37[0m [32m[1m 0.38[0m [32m[1m 0.39[0m 0.45[0m 0.50[0m [31m[1m 0.57[0m [31m[1m 0.64[0m [31m[1m 0.72[0m r.standard() # r = (a+b)*b(<2>a+<2>b){20000}, c = [a-z] -> Z, 10x [32m[1m 0.38[0m [32m[1m 0.38[0m [32m[1m 0.40[0m [32m[1m 0.43[0m [32m[1m 0.45[0m 0.50[0m [31m[1m 0.62[0m [31m[1m 0.64[0m [31m[1m 0.71[0m [31m[1m 0.81[0m r.thompson() # r = (a+b)*b(<2>a+<2>b){20000}, c = [a-z] -> Z, 10x [32m[1m 0.64[0m [32m[1m 0.64[0m [32m[1m 0.68[0m [32m[1m 0.70[0m [32m[1m 0.73[0m 0.91[0m 0.96[0m [31m[1m 1.14[0m [31m[1m 1.33[0m [31m[1m 1.52[0m read(s) # s = daut(std(a?{500})), 5x [32m[1m 0.55[0m [32m[1m 0.56[0m [32m[1m 0.58[0m [32m[1m 0.60[0m [32m[1m 0.65[0m 0.75[0m [31m[1m 0.94[0m [31m[1m 0.99[0m [31m[1m 1.19[0m [31m[1m 1.28[0m read(s) # s = dot(std(a?{500})) [32m[1m 0.70[0m [32m[1m 0.70[0m [32m[1m 0.74[0m [32m[1m 0.75[0m [32m[1m 0.84[0m 0.91[0m 1.01[0m [31m[1m 1.16[0m [31m[1m 1.34[0m [31m[1m 1.58[0m read(s) # s = efsm(std(a?{500})), 5x [32m[1m 0.50[0m [32m[1m 0.50[0m [32m[1m 0.60[0m [32m[1m 0.56[0m [32m[1m 0.58[0m 0.67[0m 0.79[0m [31m[1m 0.95[0m [31m[1m 1.03[0m [31m[1m 1.15[0m read(s) # s = fado(std(a?{500})), 5x 0 1 2 3 4 5 6 7 8 9 Without: 0 1 2 3 4 5 6 7 8 9 12.61 13.29 12.35 14.76 14.80 12.81 13.45 14.12 13.96 12.07 a & 12 # a = std([a-e]*b(<2>[a-e])*) 0.41 0.37 0.44 0.40 0.34 0.37 0.43 0.71 0.40 0.58 a.accessible() # a = thm([a-m]{20000}).proper(prune=False), 4x 0.52 0.51 0.51 0.58 0.51 0.72 0.96 1.08 1.07 1.32 a.compose(a) # a = std(((\e|a+a|b+b|c+c|d+d|a)(w|x+x|y+y|z+z|w+z|\e)){300}), c = [a-z]x[a-z] -> B, 20x 0.77 0.77 0.76 0.75 0.77 1.01 0.76 0.78 1.82 1.90 a.compose(a) # a = std(((a|b+b|c+c|d+d|a)(w|x+x|y+y|z+z|w)){300}), c = [a-z]x[a-z] -> B, 50x 19.95 19.87 20.00 20.17 19.72 20.10 19.94 20.17 20.14 20.00 a.compose(a) # a = std(['(a,a)'-'(i,z)']{4}), c = [a-z]x[a-z] -> B 0.69 0.81 0.81 0.87 0.69 0.98 1.09 1.41 1.37 1.59 a.compose(a) # a = thm(((\e|a+a|b+b|c+c|d+d|a)(w|x+x|y+y|z+z|w+z|\e)){300}), c = [a-z]x[a-z] -> B, 10x 0.65 0.64 0.64 0.71 0.65 1.00 1.22 1.40 1.37 1.59 a.compose(a) # a = thm(((a|b+b|c+c|d+d|a)(w|x+x|y+y|z+z|w)){300}), c = [a-z]x[a-z] -> B, 20x 0.70 0.71 0.75 0.79 0.83 0.71 0.72 0.73 0.75 0.71 a.compose(a2) # a2 = std(([a-z]|[a-z])?{20}), a = std(a|a), 50x 2.43 2.13 2.34 2.68 2.84 2.82 3.31 3.82 4.48 4.95 a.conjunction(a) # a = std([a-e]?{50}) 0.67 0.67 0.69 0.77 0.78 0.80 0.86 0.85 0.82 0.65 a.conjunction(a) # a = thm([a-e]?{80}) 1.40 1.40 1.44 1.61 1.69 1.68 2.12 2.34 2.59 2.90 a.conjunction(a, a, a) # a = thm([a-e]?{5}) 0.93 0.91 1.20 1.16 1.23 1.32 1.52 1.78 1.85 2.10 a.determinize("lazy,weighted").accessible() # a = de_bruijn(13), c = [abc] -> F2, 5x 0.36 0.36 0.46 0.39 0.47 0.45 0.66 0.68 0.71 0.84 a.determinize("lazy,weighted").accessible() # a = std(([^]+a){100}), c = [a-zA-Z0-9] -> B, 2x 0.46 0.45 0.46 0.60 0.55 0.73 0.74 0.84 0.93 1.07 a.determinize("weighted") # a = de_bruijn(13), 5x 0.45 0.45 0.46 0.61 0.58 0.63 0.75 0.71 0.89 1.00 a.determinize("weighted") # a = de_bruijn(13), c = [abc] -> F2, 5x 1.12 1.11 1.33 1.22 1.30 1.39 1.73 1.95 2.02 2.32 a.determinize("weighted") # a = de_bruijn(14), 5x 1.11 1.13 1.31 1.27 1.28 1.39 1.69 1.75 2.02 2.19 a.determinize("weighted") # a = de_bruijn(14), c = [abc] -> F2, 5x 1.16 1.17 1.14 1.21 1.33 1.35 1.68 1.90 1.82 2.19 a.determinize("weighted") # a = de_bruijn(16) 1.17 1.19 1.15 1.19 1.23 1.22 1.48 1.83 1.88 2.05 a.determinize("weighted") # a = de_bruijn(16), c = [abc] -> F2 0.28 0.29 0.37 0.31 0.38 0.40 0.55 0.63 0.59 0.70 a.determinize("weighted") # a = std(([^]+a){100}), c = [a-zA-Z0-9] -> B, 2x 0.57 0.57 0.61 0.62 0.71 0.84 1.02 1.15 1.12 1.26 a.determinize() # a = de_bruijn(13), 20x 0.66 0.63 0.67 0.69 0.81 0.88 1.17 1.26 1.22 1.41 a.determinize() # a = de_bruijn(13), c = [abc] -> F2, 20x 0.61 0.61 0.65 0.79 0.82 0.84 0.96 0.97 1.20 1.35 a.determinize() # a = de_bruijn(14), 10x 0.67 0.67 0.73 0.82 0.89 0.78 1.02 1.24 1.28 1.40 a.determinize() # a = de_bruijn(14), c = [abc] -> F2, 10x 0.51 0.51 0.61 0.59 0.61 0.67 0.77 0.87 0.99 1.05 a.determinize() # a = de_bruijn(16), 2x 0.56 0.56 0.62 0.63 0.70 0.71 0.92 1.05 1.08 1.17 a.determinize() # a = de_bruijn(16), c = [abc] -> F2, 2x 0.77 0.77 0.75 0.80 0.75 0.80 0.97 1.03 1.20 1.38 a.determinize() # a = ladybird(18) 0.76 0.78 0.71 0.77 0.81 0.92 1.14 1.17 1.16 1.35 a.determinize() # a = ladybird(18), c = [a-zA-Z0-9] -> B 6.92 6.99 6.98 6.95 7.29 7.87 8.99 10.07 10.46 12.05 a.determinize() # a = ladybird(21) 1.21 1.21 1.42 1.31 1.49 1.47 1.72 1.84 1.97 2.44 a.determinize() # a = std(([^]+a){100}), c = [a-zA-Z0-9] -> B, 2x 1.31 1.24 1.55 1.57 1.58 1.68 2.24 2.54 2.68 3.05 a.evaluate("a"*151) # a = de_bruijn(150), 10000x 0.80 0.76 0.95 0.98 1.16 1.05 1.17 1.35 1.42 1.82 a.evaluate("abcxyz"*25) # a = std([a-z]*), c = [a-z] -> Z, 20000x 1.27 1.21 1.29 1.48 1.62 1.68 2.23 2.46 2.55 2.84 a.evaluate("abcxyz"*25) # a = std([a-z]*), c = [a-z]* -> Z, 10000x 0.82 0.78 0.83 1.01 1.04 1.08 1.27 1.44 1.56 1.77 a.evaluate(wc.polynomial("abcxyz"*25)) # a = std([a-z]*), c = [a-z] -> Z, 20000x 1.32 1.27 1.33 1.50 1.71 1.64 2.27 2.60 2.59 3.26 a.evaluate(wc.polynomial("abcxyz"*25)) # a = std([a-z]*), c = [a-z]* -> Z, 10000x 0.99 0.95 1.16 1.31 1.29 1.25 1.78 1.89 1.87 2.33 a.expression("associative", "delgado") # a = ladybird(2000), 10x 0.61 0.56 0.68 0.63 0.79 0.74 0.93 1.02 1.13 1.24 a.expression("associative", "naive") # a = ladybird(8000), 10x 0.51 0.44 0.52 0.59 0.79 0.72 0.94 1.05 1.14 1.25 a.expression("associative", "naive") # a = std([a-d]?{100}) 0.93 0.85 1.17 1.12 1.13 1.24 1.46 1.54 1.80 2.06 a.expression("linear", "delgado") # a = ladybird(2000), 5x 0.77 0.74 1.03 1.02 1.02 1.02 1.51 1.63 1.75 1.92 a.expression("linear", "delgado") # a = std([a-d]?{15}), 5x 0.72 0.66 0.72 0.96 0.97 0.95 1.14 1.48 1.81 1.92 a.expression("linear", "naive") # a = ladybird(4000), 2x 0.48 0.47 0.62 0.64 0.62 0.66 0.77 1.07 1.12 1.27 a.expression("linear", "naive") # a = std([a-d]?{9}), 5x 0.54 0.53 0.58 0.58 0.60 0.74 0.88 1.00 1.10 1.27 a.format("daut") # a = std(a?{500}), 5x 0.65 0.65 0.70 0.73 0.78 0.88 1.11 1.20 1.39 1.58 a.format("dot") # a = std(a?{500}), 5x 0.25 0.25 0.27 0.28 0.29 0.35 0.42 0.42 0.55 0.64 a.format("efsm") # a = std(a?{500}), 5x 0.25 0.25 0.26 0.28 0.28 0.35 0.36 0.53 0.53 0.63 a.format("fado") # a = std(a?{500}), 5x 0.33 0.33 0.35 0.36 0.37 0.44 0.50 0.68 0.71 0.81 a.format("grail") # a = std(a?{500}), 5x 0.53 0.54 0.56 0.59 0.59 0.69 0.78 0.85 1.11 1.25 a.format("tikz") # a = std(a?{500}), 5x 0.55 0.55 0.56 0.56 0.57 0.54 0.67 0.74 0.79 0.92 a.has_bounded_lag() # a = std(['(a,x)'-'(b,y)']*{600}), 20x 1.13 1.13 1.14 1.20 1.89 1.48 1.86 1.89 2.37 2.36 a.has_bounded_lag() # a = std(['(a,x)'-'(b,y)']{1000}*), 10x FAIL FAIL FAIL FAIL FAIL FAIL FAIL FAIL FAIL FAIL a.has_twins_property() # a = std([a-c]{200}*+[a-c]{200}*, "associative"), c = [abc] -> Zmin 6.01 5.86 5.91 6.48 6.89 7.55 8.22 6.86 6.78 5.54 a.infiltrate(a) # a = std([a-e]?{30}) 0.50 0.51 0.54 0.54 0.62 0.71 0.83 1.07 1.00 1.08 a.is_ambiguous() # a = std([a-c]{2000}(<2>ab+a<3>b)), c = [abc] -> Z, 20x 1.13 1.18 1.22 1.29 1.56 1.59 2.19 2.34 2.23 2.71 a.is_cycle_ambiguous() # a = std([a-c]{2000}(<2>ab+a<3>b)), c = [abc] -> Z, 20x 0.30 0.33 0.32 0.34 0.39 0.39 0.59 0.63 0.76 0.90 a.is_deterministic() # a = ladybird(15).determinize(), 1000000x 0.54 0.55 0.56 0.59 0.63 0.63 0.95 1.13 1.07 1.12 a.is_functional() # a = std((a|x){2000}(b|y)), 100x 0.30 0.33 0.31 0.32 0.35 0.41 0.48 0.57 0.66 0.70 a.is_proper() # a = "", 1000000x 1.08 1.08 1.05 1.07 1.08 1.13 1.48 1.40 1.15 1.12 a.is_synchronized() # a = std((abc|de)((f|\e)+((g|h)(i|j)*(\e|k)))(l|mn){500000}) 0.35 0.33 0.52 0.48 0.73 0.59 0.76 1.00 1.05 1.18 a.lightest() # a = std([a-e]?{150}), c = [a-e] -> Nmin, 500x 0.70 0.67 0.68 0.67 0.72 0.79 0.91 1.04 1.18 1.29 a.lightest(5, "auto") # a = std([a-e]?{150}), c = [a-e] -> Nmin, 10x 1.35 1.21 1.44 1.68 1.89 1.85 2.11 2.80 2.69 3.08 a.lightest(5, "eppstein") # a = std([a-e]?{150}), c = [a-e] -> Nmin, 500x 0.90 0.85 1.08 1.19 1.42 1.55 1.90 2.17 2.41 2.75 a.lightest(5, "yen") # a = std([a-e]?{150}), c = [a-e] -> Nmin, 500x 0.29 0.27 0.29 0.33 0.37 0.40 0.43 0.50 0.60 0.59 a.lightest(5000) # a = derived_term((\e|x + a|\e)*), c = [a]x[x] -> Q, 10x 0.25 0.22 0.28 0.29 0.31 0.29 0.39 0.44 0.47 0.48 a.lightest_automaton(1, "a-star") # a = std([a-e]?{150}), c = [a-e] -> Nmin, 20x 0.64 0.61 0.70 0.70 0.81 0.81 1.16 1.33 1.39 1.54 a.lightest_automaton(1, "bellman-ford") # a = std([a-e]?{150}), c = [a-e] -> Nmin 0.36 0.34 0.42 0.48 0.59 0.75 0.77 0.96 0.93 1.14 a.lightest_automaton(1, "dijkstra") # a = std([a-e]?{150}), c = [a-e] -> Nmin, 500x 0.96 0.96 1.31 1.41 1.41 1.45 1.83 2.04 1.94 2.00 a.minimize("brzozowski") # a = std([a-g]{300}), c = [a-k] -> B, 200x 1.05 1.07 1.47 1.50 1.53 1.48 2.08 2.32 1.81 1.85 a.minimize("hopcroft") # a = std([a-g]{300}), c = [a-k] -> B, 2x 0.58 0.58 0.81 0.83 0.82 0.82 1.08 1.26 1.42 1.58 a.minimize("moore") # a = std([a-g]{300}), c = [a-k] -> B, 40x 0.74 0.73 0.98 1.02 1.04 1.03 1.35 1.54 1.61 2.00 a.minimize("signature") # a = std([a-g]{300}), c = [a-k] -> B, 2x 1.14 1.15 1.45 1.50 1.57 1.60 2.15 2.59 2.43 2.70 a.minimize("weighted") # a = std([a-g]{300}), c = [a-k] -> B 1.24 1.14 1.58 1.28 1.46 1.67 2.25 2.39 2.39 2.21 a.minimize("weighted") # a = std([a-g]{300}), c = [a-k] -> Z 2.16 2.00 2.94 2.97 3.00 3.45 4.08 4.83 5.13 6.07 a.proper() # a = thm(a?{1200}) 1.95 1.96 2.05 2.35 2.88 2.34 3.66 4.10 3.79 3.73 a.reduce() # a = std([a-g]{300}), c = [a-k] -> Q 1.35 1.37 1.73 1.50 2.03 1.64 2.63 2.99 3.06 3.68 a.reduce() # a = std([a-g]{300}), c = [a-k] -> Z 0.18 0.20 0.19 0.20 0.25 0.22 0.24 0.39 0.38 0.40 a.scc("dijkstra") # a = std((abc)*{1000}), 20x 0.24 0.24 0.21 0.22 0.23 0.24 0.37 0.45 0.38 0.41 a.scc("kosaraju") # a = std((abc)*{1000}), 20x 0.22 0.22 0.23 0.24 0.26 0.27 0.52 0.33 0.57 0.53 a.scc("tarjan_iterative") # a = std((abc)*{1000}), 20x 0.23 0.23 0.20 0.23 0.21 0.25 0.34 0.28 0.34 0.36 a.scc("tarjan_recursive") # a = std((abc)*{1000}), 20x 0.59 0.61 0.56 0.63 0.74 0.76 0.88 0.98 0.92 1.01 a.shortest(5) # a = de_bruijn(9), 10x 1.24 1.21 1.12 1.22 1.25 1.22 1.37 1.72 1.61 1.96 a.shortest(5) # a = std([a-e]?{600}), c = [a-e] -> Z, 5x 0.68 0.63 0.62 0.67 0.82 0.77 0.87 0.91 1.08 1.21 a.shortest(5000) # a = de_bruijn(9), 10x 0.22 0.21 0.22 0.23 0.27 0.32 0.34 0.37 0.38 0.44 a.shortest(5000) # a = derived_term((\e|x + a|\e)*), c = [a]x[x] -> Q, 10x 2.49 2.32 2.85 2.95 2.94 2.87 3.27 3.43 3.87 4.05 a.shuffle(a) # a = std([a-e]?{50}) 0.92 0.86 1.07 1.11 1.14 1.08 1.31 1.40 1.51 1.94 a.sort() # a = std([a-e]?{700}) 0.68 0.66 0.70 0.81 0.70 0.77 0.90 0.93 1.23 1.24 a.synchronize() # a = std((abc|de)((f|\e)+((g|h)(i|j)*(\e|k)))(l|mn){2000}) 0.33 0.34 0.35 0.37 0.48 0.40 0.60 0.79 0.56 0.62 a.synchronizing_word() # a = de_bruijn(6) 0.75 0.77 0.80 0.80 0.88 1.02 1.06 1.06 1.49 1.63 a.weight_series() # a = std([a-z]{200}), c = [a-z] -> Z, 10x 0.65 0.65 0.69 0.69 0.72 0.88 1.05 0.95 0.77 0.73 a.weight_series() # a = std(a{12000}+<1>[b-z]{12000}), c = [a-z] -> Nmin, 200x 0.57 0.62 0.62 0.64 0.65 0.75 0.85 0.88 1.03 1.16 b.expression(e) # e = "(\e+a)" * 500, 100x 0.31 0.33 0.33 0.35 0.37 0.42 0.44 0.45 0.54 0.58 b.expression(e) # e = [ab]{20000}, 1000x 0.12 0.11 0.12 0.13 0.13 0.16 0.17 0.20 0.24 0.26 b.format("text") # b = [abc] -> B, 100000x 0.90 0.85 1.11 1.21 1.17 1.11 1.36 1.54 1.50 1.88 e.split() # e = [a-e]?{15} 0.98 0.97 1.00 1.01 1.07 1.04 1.42 1.26 1.65 1.83 p.trie() # p = [a-j]{6} 0.68 0.69 0.75 0.87 0.81 0.84 0.99 1.01 1.10 1.23 r.derived_term("derivation") # r = (a+b)*b(<2>a+<2>b){150}, c = [a-z] -> Z, 50x 0.36 0.35 0.37 0.38 0.44 0.45 0.48 0.50 0.50 0.56 r.derived_term("derivation") # r = (a+b)*b(<2>a+<2>b){150}, c = [ab] -> Z, 50x 0.98 0.99 1.04 1.18 1.14 1.28 1.31 1.38 1.49 1.69 r.derived_term("derivation") # r = (a+b)*b(<2>a+<2>b){300}, c = [a-z] -> Z, 20x 0.55 0.55 0.62 0.71 0.64 0.67 0.72 0.74 0.79 0.89 r.derived_term("derivation") # r = (a+b)*b(<2>a+<2>b){300}, c = [ab] -> Z, 20x 0.42 0.42 0.45 0.46 0.47 0.57 0.58 0.66 0.82 0.96 r.derived_term("derivation") # r = a?{150}, c = [a] -> Z, 2x 0.25 0.24 0.26 0.31 0.28 0.30 0.33 0.35 0.38 0.43 r.derived_term("expansion") # r = (a+b)*b(<2>a+<2>b){150}, c = [a-z] -> Z, 50x 0.38 0.37 0.40 0.41 0.44 0.44 0.49 0.49 0.54 0.62 r.derived_term("expansion") # r = (a+b)*b(<2>a+<2>b){300}, c = [a-z] -> Z, 20x 0.32 0.32 0.35 0.35 0.42 0.40 0.44 0.51 0.63 0.73 r.derived_term("expansion") # r = (a+b)*b(<2>a+<2>b){3}, c = [a-z] -> Z, 10000x 0.45 0.45 0.48 0.51 0.54 0.62 0.63 0.73 0.93 1.04 r.derived_term("expansion") # r = a?{150}, c = [a] -> Z, 2x 0.37 0.37 0.39 0.41 0.46 0.47 0.51 0.56 0.58 0.65 r.derived_term("lazy,expansion").accessible() # r = (a+b)*b(<2>a+<2>b){300}, c = [a-z] -> Z, 20x 0.36 0.37 0.39 0.41 0.44 0.51 0.56 0.59 0.69 0.78 r.derived_term("lazy,expansion").accessible() # r = (a+b)*b(<2>a+<2>b){3}, c = [a-z] -> Z, 10000x 0.45 0.50 0.47 0.49 0.54 0.55 0.68 0.83 0.91 1.05 r.derived_term("lazy,expansion").accessible() # r = a?{150}, c = [a] -> Z, 2x 0.11 0.11 0.12 0.12 0.13 0.15 0.15 0.14 0.16 0.19 r.format("text") # r = b.expression("(\e+a)" * 500), 1000x 0.35 0.35 0.37 0.38 0.39 0.45 0.50 0.57 0.64 0.72 r.standard() # r = (a+b)*b(<2>a+<2>b){20000}, c = [a-z] -> Z, 10x 0.38 0.38 0.40 0.43 0.45 0.50 0.62 0.64 0.71 0.81 r.thompson() # r = (a+b)*b(<2>a+<2>b){20000}, c = [a-z] -> Z, 10x 0.64 0.64 0.68 0.70 0.73 0.91 0.96 1.14 1.33 1.52 read(s) # s = daut(std(a?{500})), 5x 0.55 0.56 0.58 0.60 0.65 0.75 0.94 0.99 1.19 1.28 read(s) # s = dot(std(a?{500})) 0.70 0.70 0.74 0.75 0.84 0.91 1.01 1.16 1.34 1.58 read(s) # s = efsm(std(a?{500})), 5x 0.50 0.50 0.60 0.56 0.58 0.67 0.79 0.95 1.03 1.15 read(s) # s = fado(std(a?{500})), 5x 0 1 2 3 4 5 6 7 8 9
-
Akim Demaille authored
The setup passed to timeit is run for each iteration. That's very costly (some cases are run 100,000 times), especially if we even move the `import vcsn` into the setup: 8:50 to run `vcsn score` instead of 7:30. However, evaluating the setup in the global context is unsafe, especially if we want to run benches in parallel. Fortunately, it is possible to passe to timeit an environment (aka namespace), and `exec` allows to specify the environment in which to run the commands. Once put together, `vcsn score` runs in about 7.15. However, at first sight the result appear much better than before. We might have changed the meaning of our benches. * libexec/vcsn-score: here.
-
Akim Demaille authored
* libexec/vcsn-score: Pass all the variables the bench depends upon.
-
Akim Demaille authored
The idea was to avoid repeating the setup sequence when equal by successive benches. The gains are limited: from 7:23 for benching the previous commit, and 7:36 for this one. * libexec/vcsn-score: Here.
-
Akim Demaille authored
I used to run `v score | tee +scores/4s/$(git describe)`, which has several issues: - I have to rewrite some description so that they always have at least 3 digits (v2.9-41-gf6bb8af2 -> v2.9-041-gf6bb8af2). - now we need to pass --first-parent to make sure we don't take tags from merged branches - passing --all is a good idea (we had several v2.6) - passing --dirty seems good too - now it's really way too long to type... I can run `v score -d +scores/4s`. * libexec/vcsn-score: here.
-
Akim Demaille authored
* libexec/vcsn-score (getargs): New.
-
Akim Demaille authored
* libexec/vcsn-score-compare: We have `v2.9.dev` currently. Accept it.
-
Akim Demaille authored
* share/vcsn/local.mk: Stick to the first-parent brachnes.
-
Akim Demaille authored
Now IPython reports UsageError: Cell magic `%%automaton` not found. UsageError: Line magic function `%demo` not found. * tests/bin/ipynbdoctest.py: here.
-
Akim Demaille authored
We have errors like this on the CI: ``` command vcsn run pylint3 --rcfile=/srv/teamcity-agent/work/9fc823827e961a53/python/pylintrc /srv/teamcity-agent/work/9fc823827e961a53/python/vcsn status (FAIL) expected: 0 effective: 1 Standard error:: Traceback (most recent call last): File "/usr/bin/pylint3", line 3, in <module> run_pylint() File "/usr/lib/python3/dist-packages/pylint/__init__.py", line 17, in run_pylint Run(sys.argv[1:]) File "/usr/lib/python3/dist-packages/pylint/lint.py", line 1333, in __init__ linter.check(args) File "/usr/lib/python3/dist-packages/pylint/lint.py", line 755, in check self._do_check(files_or_modules) File "/usr/lib/python3/dist-packages/pylint/lint.py", line 886, in _do_check self.check_astroid_module(ast_node, walker, rawcheckers, tokencheckers) File "/usr/lib/python3/dist-packages/pylint/lint.py", line 967, in check_astroid_module walker.walk(ast_node) File "/usr/lib/python3/dist-packages/pylint/utils.py", line 959, in walk self.walk(child) File "/usr/lib/python3/dist-packages/pylint/utils.py", line 956, in walk cb(astroid) File "/usr/lib/python3/dist-packages/pylint/checkers/variables.py", line 1051, in visit_import module = next(node.infer_name_module(parts[0])) File "/usr/lib/python3/dist-packages/astroid/context.py", line 49, in cache_generator for result in generator: File "/usr/lib/python3/dist-packages/astroid/bases.py", line 302, in wrapped for res in _func(node, context, **kwargs): File "/usr/lib/python3/dist-packages/astroid/inference.py", line 123, in infer_import yield self.do_import_module(name) File "/usr/lib/python3/dist-packages/astroid/mixins.py", line 129, in do_import_module relative_only=level and level >= 1) File "/usr/lib/python3/dist-packages/astroid/scoped_nodes.py", line 492, in import_module return MANAGER.ast_from_module_name(absmodname) File "/usr/lib/python3/dist-packages/astroid/manager.py", line 136, in ast_from_module_name return self.ast_from_file(filepath, modname, fallback=False) File "/usr/lib/python3/dist-packages/astroid/manager.py", line 86, in ast_from_file return AstroidBuilder(self).file_build(filepath, modname) File "/usr/lib/python3/dist-packages/astroid/builder.py", line 141, in file_build module = self._data_build(data, modname, path) File "/usr/lib/python3/dist-packages/astroid/builder.py", line 185, in _data_build module = builder.visit_module(node, modname, node_file, package) File "/usr/lib/python3/dist-packages/astroid/rebuilder.py", line 154, in visit_module newnode.body = [self.visit(child, newnode) for child in node.body] File "/usr/lib/python3/dist-packages/astroid/rebuilder.py", line 154, in <listcomp> newnode.body = [self.visit(child, newnode) for child in node.body] File "/usr/lib/python3/dist-packages/astroid/rebuilder.py", line 167, in visit return visit_method(node, parent, assign_ctx) File "/usr/lib/python3/dist-packages/astroid/rebuilder.py", line 957, in visit_classdef newnode = super(TreeRebuilder3k, self).visit_classdef(node, parent, assign_ctx) File "/usr/lib/python3/dist-packages/astroid/rebuilder.py", line 357, in visit_classdef for child in node.body] File "/usr/lib/python3/dist-packages/astroid/rebuilder.py", line 357, in <listcomp> for child in node.body] File "/usr/lib/python3/dist-packages/astroid/rebuilder.py", line 167, in visit return visit_method(node, parent, assign_ctx) File "/usr/lib/python3/dist-packages/astroid/rebuilder.py", line 543, in visit_functiondef assign_ctx=assign_ctx) File "/usr/lib/python3/dist-packages/astroid/rebuilder.py", line 528, in _visit_functiondef for child in node.body] File "/usr/lib/python3/dist-packages/astroid/rebuilder.py", line 528, in <listcomp> for child in node.body] File "/usr/lib/python3/dist-packages/astroid/rebuilder.py", line 167, in visit return visit_method(node, parent, assign_ctx) File "/usr/lib/python3/dist-packages/astroid/rebuilder.py", line 510, in visit_for assign_ctx=assign_ctx) File "/usr/lib/python3/dist-packages/astroid/rebuilder.py", line 503, in _visit_for for child in node.body] File "/usr/lib/python3/dist-packages/astroid/rebuilder.py", line 503, in <listcomp> for child in node.body] File "/usr/lib/python3/dist-packages/astroid/rebuilder.py", line 167, in visit return visit_method(node, parent, assign_ctx) File "/usr/lib/python3/dist-packages/astroid/rebuilder.py", line 591, in visit_if for child in node.orelse] File "/usr/lib/python3/dist-packages/astroid/rebuilder.py", line 591, in <listcomp> for child in node.orelse] File "/usr/lib/python3/dist-packages/astroid/rebuilder.py", line 167, in visit return visit_method(node, parent, assign_ctx) File "/usr/lib/python3/dist-packages/astroid/rebuilder.py", line 589, in visit_if for child in node.body] File "/usr/lib/python3/dist-packages/astroid/rebuilder.py", line 589, in <listcomp> for child in node.body] File "/usr/lib/python3/dist-packages/astroid/rebuilder.py", line 167, in visit return visit_method(node, parent, assign_ctx) File "/usr/lib/python3/dist-packages/astroid/rebuilder.py", line 447, in visit_expr newnode.value = self.visit(node.value, newnode, assign_ctx) File "/usr/lib/python3/dist-packages/astroid/rebuilder.py", line 167, in visit return visit_method(node, parent, assign_ctx) File "/usr/lib/python3/dist-packages/astroid/rebuilder.py", line 315, in visit_call for child in node.args] File "/usr/lib/python3/dist-packages/astroid/rebuilder.py", line 315, in <listcomp> for child in node.args] File "/usr/lib/python3/dist-packages/astroid/rebuilder.py", line 165, in visit visit_method = getattr(self, visit_name) AttributeError: 'TreeRebuilder3k' object has no attribute 'visit_joinedstr' ``` It appears to be due to pylint itself, see https://github.com/DonJayamanne/pythonVSCode/issues/798 for instance. * tests/unit/pylint.chk: Require pylint 1.7 with Python 3.6.
-
- 15 Nov, 2017 1 commit
-
-
Akim Demaille authored
* ports/local.mk (Portfile): New target. * ports/vcsn.macports: here.
-
- 14 Nov, 2017 1 commit
-
-
Akim Demaille authored
* ports/vcsn.macports: here.
-
- 13 Nov, 2017 1 commit
-
-
Akim Demaille authored
* configure.ac: here.
-
- 11 Nov, 2017 2 commits
-
-
Akim Demaille authored
* doc/notebooks/!Read-me-first.ipynb: here.
-
Akim Demaille authored
-
- 07 Nov, 2017 1 commit
-
-
Akim Demaille authored
We still have failures when trying to use the Debian package to build the Docker image: The following packages have unmet dependencies: vcsn : Depends: libpython3.6 (>= 3.6.0~b2) but it is not installable Depends: python3 (>= 3.6~) but 3.5.3-1 is to be installed during the build of the Debian package we have: RUN apt-get update && RUNLEVEL=1 DEBIAN_FRONTEND=noninteractive apt-get install \ --no-install-recommends -y --allow-unauthenticated autoconf \ automake bison build-essential ccache debhelper devscripts \ dh-python dot2tex doxygen fakeroot flex g++ git graphviz \ imagemagick libboost-all-dev libgmp-dev libtool libyaml-cpp-dev \ lintian locales pdf2svg python-matplotlib python3-all-dev \ python3-dev texlive-latex-extra texlive-pictures && apt-get autoremove && apt-get clean ... libpython3-dev libpython3-stdlib libpython3.6 libpython3.6-dev libpython3.6-minimal libpython3.6-stdlib libquadmath0 librdmacm1 ... python-cycler python-dateutil python-dev python-functools32 python-matplotlib-data python-minimal python-numpy python-pyparsing python-six python-subprocess32 python-tz python2.7 python2.7-dev python2.7-minimal python3 python3-all python3-minimal python3.6 python3.6-dev python3.6-minimal readline-common shared-mime-info t1utils ... So it installs Python 3.6, but during the Docker build, we get Python 3.5, although in both cases we ask for Python3: RUN apt-get update && RUNLEVEL=1 DEBIAN_FRONTEND=noninteractive apt-get install -y \ --no-install-recommends ccache curl dot2tex g++ gnupg graphviz \ imagemagick libboost-all-dev libgmp-dev libzmq3-dev locales \ pdf2svg python3-colorama python3-dev python3-matplotlib \ python3-pandas python3-pip python3-psutil python3-regex \ python3-setuptools texlive-latex-extra texlive-pictures wamerican \ wamerican-insane wamerican-large wamerican-small wfrench && apt-get autoremove && apt-get clean && pip3 install jupyter ... python3-pyparsing python3-six python3-tz python3.5 python3.5-dev python3.5-minimal readline-common shared-mime-info t1utils tex-common ... So the difference is probably that in the debian package is built with `Step 1/11 : FROM debian:sid`, while the Docker image build is built with `Step 1/16 : FROM debian:stable`. Let's use stable in both cases. * debuild/Dockerfile: here.
-
- 30 Oct, 2017 1 commit
-
-
Akim Demaille authored
Our builds currently fail: The following packages have unmet dependencies: vcsn : Depends: libpython3.6 (>= 3.6.0~b2) but it is not installable Depends: python3 (>= 3.6~) but 3.5.3-1 is to be installed E: Unable to correct problems, you have held broken packages. The command '/bin/sh -c apt-get install --no-install-recommends -y vcsn && jupyter nbextension enable --py --sys-prefix widgetsnbextension && useradd -d /vcsn -m -r vcsn' returned a non-zero code: 100 On the one hand we already require that we want Python >= 3.5, and on other place we require the package python-3.5-dev. Let's require python-3 packages, but require Python >= 3.5. * debian/control, debuild/Dockerfile: here.
-
- 28 Oct, 2017 1 commit
-
-
Akim Demaille authored
There is no need to denormalize, the code is not really harder to write, but the result is really bad when we denormalize. The reason is the same compared to what we did with compose: a constant weight is really as if it were attached to $ as first, not \e. So for instance the conjunction of the expansions of `(\e+a)` and `aa` gave two very different results in lal (⟨0⟩) vs. lan (ε ⊙ [ε & aa]). The key difference is that \e . [<k>1] matches a . [P] whereas obviously <k> does not. Denormalizing does simplify the code, but ruins the result. To get simple code, we should get rid of the constant code by attaching it to the endmarker, `$`. This will also help integrating Sarasvati Moutoucomarapoulé's fusion of lal with lan, removing useless differences. * vcsn/core/rat/expansionset.hh: Do not denormalize conjunctions.
-
- 27 Oct, 2017 2 commits
-
-
Akim Demaille authored
Fixes #191. We still accept dubious input: In [9]: %%automaton a daut ...: 0 -> -> a ...: 0 "->" 1 b ...: name_automaton<mutable_automaton<context<letterset<char_letters>, b>>> In [10]: print(a.format('daut')) context = letterset<char_letters(ab)>, b 0 -> 1 a 0 -> 2 b * lib/vcsn/algos/daut.cc: Implement. * tests/python/automaton.py: Check.
-
Akim Demaille authored
-
- 26 Oct, 2017 2 commits
-
-
Akim Demaille authored
See #193: use quotes in error messages. We have one regression: RuntimeError: 1.4-6: unexpected character: ⟩ ab ⟩a⟨ ab ^^^ while reading expression: ab ⟩a⟨ ab now ends with: while reading expression: "ab \xe2\x9f\xa9a\xe2\x9f\xa8 ab" I'm ambivalent on what to do here. * vcsn/algos/make-context.hh, vcsn/dyn/algos.hxx, * lib/vcsn/dyn/context-parser.cc: Use str_quote. Remove useless namespace qualifications. Adjust test suite.
-
Akim Demaille authored
Use delimiters. See #193. * vcsn/misc/escape.hh (str_quote): Be variadic. * lib/vcsn/misc/stream.cc (get_char): Use it to improve messages. * vcsn/misc/raise.hh: Likewise. Adjust test suite.
-
- 25 Oct, 2017 3 commits
-
-
Akim Demaille authored
* lib/vcsn/algos/fado.cc: Do it. * tests/python/automaton.py: Check it.
-
Akim Demaille authored
Error messages are sometimes obscur: RuntimeError: expected ,, got while reading context: lal_char(ab) Prefer: RuntimeError: unexpected end-of-file, expected "," while reading context: lal_char(ab) Caret errors would be nice, but we don't track locations here... Reported by Alexandre Duret-Lutz in #193. * vcsn/misc/escape.hh, lib/vcsn/misc/escape.cc (str_quote): New. * vcsn/misc/stream.hh, lib/vcsn/misc/stream.cc: Use it. * tests/python/context.py: Check. Adjust other tests.
-
Akim Demaille authored
For some reason, the treatment of lal is different from lan (and law). This introduces gratuitous differences when applying Sarasvati Moutoucomarapoulé's fusion of lal with lan. Maybe the special case was meant to distinguish the case of wordset where `aaaaa` is actually a single five-letter label, not a product of `a`. But in that case anyway `aaaaa` is different from `a{5}`, the latter begin a product of single-letter labels. Related to #23 and #24, and b9820c10. * vcsn/core/rat/printer.hh, vcsn/core/rat/printer.hxx: Don't special case lal. * tests/python/expression.py, tests/rat/common.rat, tests/rat/q.rat: Check it.
-