automaton.codeterminize

Compute the transposition of determinization of transposed automaton.

Preconditions:

  • its labelset is free
  • its weightset features a division operator (which is the case for $\mathbb{B}$).

Postconditions:

  • the result is codeterministic
  • the result is equivalent to the input.transpose().determinize().transpose()

Caveats:

  • might not terminate if the weightset is not $\mathbb{B}$

See also:

Examples

In [1]:
import vcsn
In [2]:
%%automaton -s a
context = "lal_char(ab), b"
$ -> 0
0 -> 1 a
0 -> 2 b
1 -> 3 b
2 -> 3 b
3 -> $
%3 I0 0 0 I0->0 F3 1 1 0->1 a 2 2 0->2 b 3 3 1->3 b 2->3 b 3->F3
In [3]:
a.codeterminize()
Out[3]:
%3 I2 2 0 I2->2 F0 0 3 0->F0 1 1, 2 1->0 b 2->1 a, b

The resulting automaton has states labeled with subsets of the input automaton set of states.

In [4]:
a.determinize()
Out[4]:
%3 I0 0 0 I0->0 F3 1 1 0->1 a 2 2 0->2 b 3 3 1->3 b 2->3 b 3->F3