Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupport News AboutSign UpSign In
| Download
Views: 45899
Kernel: Python 3

expression.is_valid

Whether all the starred sub-expressions have a constant-term that admits a star value.

Postconditions:

  • expression.constant_term does not throw an exception.

See also:

Examples

The following funtion will help display the result of is_valid.

import vcsn from IPython.display import Latex def valid(ctx, *rs): eqs = [] for r in rs: r = ctx.expression(r) eqs.append(r'{0} &: \mathrm{{{1}}}' .format(r.format('latex'), "valid" if r.is_valid() else "invalid")) return Latex(r'''\begin{{aligned}} {0} \end{{aligned}}'''.format(r'\\'.join(eqs)))

In B\mathbb{B} all the values have a star-power, so expressions are always valid.

b = vcsn.context('lal_char(ab), b') valid(b, '\e*')
ε:valid\begin{aligned} {\varepsilon}^{*} &: \mathrm{valid} \end{aligned}

In Z\mathbb{Z}, 00 is the only weight that admits a star.

z = vcsn.context('lal_char(ab), z') valid(z, '(<0>\e)*', '(<1>\e)*', '(<42>\e)*')
ε:validε:invalid(42ε):invalid\begin{aligned} \varepsilon &: \mathrm{valid}\\{\varepsilon}^{*} &: \mathrm{invalid}\\\left( \left\langle 42 \right\rangle \,\varepsilon\right)^{*} &: \mathrm{invalid} \end{aligned}

In Q\mathbb{Q} (and R\mathbb{R}), only weights ww such that w<1|w| < 1 admit a star.

q = vcsn.context('lal_char(ab), q') valid(q, '(<1/2>\e)*', '(<99/100>\e)*', '(<-99/100>\e)*', '(<101/100>\e)*', '(<-101/100>\e)*')
(12ε):valid(99100ε):valid(99100ε):valid(101100ε):invalid(101100ε):invalid\begin{aligned} \left( \left\langle \frac{1}{2} \right\rangle \,\varepsilon\right)^{*} &: \mathrm{valid}\\\left( \left\langle \frac{99}{100} \right\rangle \,\varepsilon\right)^{*} &: \mathrm{valid}\\\left( \left\langle \frac{-99}{100} \right\rangle \,\varepsilon\right)^{*} &: \mathrm{valid}\\\left( \left\langle \frac{101}{100} \right\rangle \,\varepsilon\right)^{*} &: \mathrm{invalid}\\\left( \left\langle \frac{-101}{100} \right\rangle \,\varepsilon\right)^{*} &: \mathrm{invalid} \end{aligned}