# -*- coding: utf-8 -*-
# <nbformat>3.0</nbformat>

# <codecell>

import vcsn

# <codecell>

b = vcsn.context('lal_char(ab)_b'); b

# <codecell>

r = b.ratexp('a+b*+a'); r

# <codecell>

r+r*r

# <codecell>

r.standard().determinize().minimize().shortest(10)

# <codecell>

a = r.derived_term()

# <codecell>

a+a

# <codecell>

b = vcsn.context('lan_char(ab)_b')

# <codecell>

b.ratexp('(a+b)*').thompson().proper()

# <codecell>

z = vcsn.context('lal_char(ab)_z'); z

# <codecell>

rz=z.ratexp('[ab]*b(<2>[ab])*'); rz

# <codecell>

az =rz.derived_term(); az

# <codecell>

q = vcsn.context('lal_char(ab)_q'); q

# <codecell>

rq = q.ratexp('(<1/2>[ab])*<1/2>b[ab]*'); rq

# <codecell>

aq = rq.derived_term(); aq

# <codecell>

az&aq

# <codecell>

b = vcsn.context('lal_char(abc)_b')

# <codecell>

b

# <codecell>

a = b.ladybird(20).determinize()

# <codecell>

a.info()

# <codecell>

ctx = vcsn.context('lal_char(ab)_lat<q, r>')

# <codecell>

ctx

# <codecell>

ctx.ratexp('(<(1/2,.44)>a)*').derived_term().shortest(10)

# <codecell>

ctx = vcsn.context('lat<lal_char(ab),law_char(xyz)>_ratexpset<lal_char(uvw)_b>')

# <codecell>

ctx

# <codecell>

e = ctx.ratexp("<u*>'(a,xyz)'")

# <codecell>

e+e

# <codecell>

e.standard().info()

# <codecell>

b

# <codecell>

b = vcsn.context('lal_char(abc)_b'); b

# <codecell>

a = b.ratexp('[ab]*a[ab]').derived_term(); a

# <codecell>

print(a.format('dot'))

# <codecell>

a2 = vcsn.automaton('''digraph {
vcsn_context = "lal_char(abc)_ratexpset<lal_char(uv)_b>"
 0 -> 1 [label="a,b"]
 0->0 [label="<u*>a"]
 I-> 0
 1 -> F [label="<v>"]
 }''')

# <codecell>

a2

# <codecell>

a2.ratexp()

# <codecell>

a2.shortest(10)

# <codecell>

a2.eval('aab')

# <codecell>

vcsn.context('law_char(0-9)_b')

# <codecell>

e = b.ratexp('[ab]*%abab'); e

# <codecell>

e.derived_term().determinize().minimize("signature").universal()

# <codecell>


