Default semiring in compile and linear are different
Σ = Set{Label{String}}(["[a-z]", "⇪", "[A-Z]"])
Δ = Set{Label{Int}}(1:27) # 26 latin letters + 1 key "caps lock"
Ω = Set{Label{Char}}('a':'z') ∪ Set{Label{Char}}('A':'Z')
meta = compile(
[
(src = 1, dest = 2, label = ("⇪",)),
(src = 2, dest = 1, label = ("⇪",)),
(src = 1, dest = 1, label = ("[a-z]",)),
(src = 2, dest = 2, label = ("[A-Z]",))
];
init = [1],
final = [1, 2],
symbols = Σ,
)
uppercase = union([
linear(["[A-Z]"], [i], [c]; symbols = (Σ, Δ, Ω))
for (i, c) in zip(1:3, 'A':'C')
]...)
info(meta)
info(uppercase)