Vcsn issueshttps://gitlab.lre.epita.fr/vcsn/vcsn/-/issues2018-02-19T20:20:09+01:00https://gitlab.lre.epita.fr/vcsn/vcsn/-/issues/207Is-ambiguous: check whether the approach works with automata with spontaneous...2018-02-19T20:20:09+01:00Akim DemailleIs-ambiguous: check whether the approach works with automata with spontaneous transitionsThe code was not checking this precondition. See whether it actually works, or if a precondition must be added.
(Also applies to is-cycle-ambiguous).The code was not checking this precondition. See whether it actually works, or if a precondition must be added.
(Also applies to is-cycle-ambiguous).3.0Akim DemailleAkim Demaillehttps://gitlab.lre.epita.fr/vcsn/vcsn/-/issues/201automatonset: complement produces an open context2018-02-03T14:31:47+01:00Akim Demailleautomatonset: complement produces an open contextIn `standard.py` we have:
```
check(qexp('[abc]*{c}'), zero('abc'))
```
It is commented because the lhs has an opened context, not the rhs. It was not seen before because we were not showing whether the context was open or not.In `standard.py` we have:
```
check(qexp('[abc]*{c}'), zero('abc'))
```
It is commented because the lhs has an opened context, not the rhs. It was not seen before because we were not showing whether the context was open or not.3.0https://gitlab.lre.epita.fr/vcsn/vcsn/-/issues/198random_label: a functor?2017-10-31T06:51:12+01:00Akim Demaillerandom_label: a functor?random_weight can be used with a functor, which saves the repeated parsing of the params, especially in places like random_automaton or random_expression.
random_label should be similar.random_weight can be used with a functor, which saves the repeated parsing of the params, especially in places like random_automaton or random_expression.
random_label should be similar.3.0Akim DemailleAkim Demaillehttps://gitlab.lre.epita.fr/vcsn/vcsn/-/issues/197is_proper_tape2017-10-31T06:49:12+01:00Akim Demailleis_proper_tapeThis property is weird. Do we really need it? It appears to be used in `is_free(automaton)`This property is weird. Do we really need it? It appears to be used in `is_free(automaton)`3.0https://gitlab.lre.epita.fr/vcsn/vcsn/-/issues/196is deterministic, etc.2018-05-01T07:09:31+02:00Akim Demailleis deterministic, etc.In the process of moving to lal/lan, we now have algorithms that used to require a free labelset that no longer do. So for instance, `is_deterministic` used to refuse to work on lan, which was a problem btw when this lan automaton was p...In the process of moving to lal/lan, we now have algorithms that used to require a free labelset that no longer do. So for instance, `is_deterministic` used to refuse to work on lan, which was a problem btw when this lan automaton was proper. But now we have the converse issue: is_deterministic returns true on automaton which is deterministic if `\e` is viewed as a letter.
This is not acceptable. OpenFST does have this behaviour, but it would be a real nuisance when Vcsn is used for teaching: if you are not proper, you cannot be deterministic.
So we need an intermediate property, and make sure is-deterministic answers properly.
This applies to other properties. See in particular what `automaton.info` returns.3.0https://gitlab.lre.epita.fr/vcsn/vcsn/-/issues/194expansion: derived_term?2017-10-31T06:49:52+01:00Akim Demailleexpansion: derived_term?It would be nice to be able to display the derived-term automaton from an expansion. And actually the derived-term of an expression is the derived-term of its expansion.
That would sometimes help when working with expansions.It would be nice to be able to display the derived-term automaton from an expansion. And actually the derived-term of an expression is the derived-term of its expansion.
That would sometimes help when working with expansions.https://gitlab.lre.epita.fr/vcsn/vcsn/-/issues/188random_expression: issues with tuple sets2017-06-10T07:24:22+02:00Akim Demaillerandom_expression: issues with tuple sets- [ ] we can still generate '\e|\e' as a label, even if we did not ask for \e.
- [ ] this should be also checked for lan
- [ ] when we generate for lat, we generate tuple operators even if we did not ask for it.
The reason is that w...- [ ] we can still generate '\e|\e' as a label, even if we did not ask for \e.
- [ ] this should be also checked for lan
- [ ] when we generate for lat, we generate tuple operators even if we did not ask for it.
The reason is that we generate multitape labels, and pretty-print them, which turns them into multitape expressions. And with identities = none, that's all we have left: tupling operator on single-tape labels.https://gitlab.lre.epita.fr/vcsn/vcsn/-/issues/184scc: many issues2017-10-31T06:25:48+01:00Akim Demaillescc: many issuesCheck that files for:
- confusion bw num_of_states and states_size
- support of lazy-automata
- returns non-const references
- should rather return a copy with std::move
And check if there are other similar problems elsewhere.Check that files for:
- confusion bw num_of_states and states_size
- support of lazy-automata
- returns non-const references
- should rather return a copy with std::move
And check if there are other similar problems elsewhere.3.0https://gitlab.lre.epita.fr/vcsn/vcsn/-/issues/183lightest: it does not support lazy automata2017-10-31T06:25:59+01:00Akim Demaillelightest: it does not support lazy automata```Python
a = exp1('abc').derived_term(lazy=True)
a.lightest()
```
return empty.
This is because we use a fixed size vector indexed by the number of states. But with lazy automata, this can change.
Automata should provide a state_map_...```Python
a = exp1('abc').derived_term(lazy=True)
a.lightest()
```
return empty.
This is because we use a fixed size vector indexed by the number of states. But with lazy automata, this can change.
Automata should provide a state_map_t structure that we should just be able to use.3.0https://gitlab.lre.epita.fr/vcsn/vcsn/-/issues/178lightest: incorrect result2017-05-10T06:44:22+02:00Akim Demaillelightest: incorrect resultIt seems that we are not mature on lightest...
There is probably smaller automata to demonstrate the problem, but at least this one does. We should find something simpler asap.
```
> c = vcsn.context('lan, q')
> e = c.expression('[ab]...It seems that we are not mature on lightest...
There is probably smaller automata to demonstrate the problem, but at least this one does. We should find something simpler asap.
```
> c = vcsn.context('lan, q')
> e = c.expression('[ab]*a(<2>[ab])*')
> a = e.automaton()
> b = a | a
> b.shortest(10)
a|a⊕⟨3⟩a|aa⊕⟨2⟩a|ab⊕a|ba⊕⟨3⟩aa|a⊕⟨9⟩aa|aa⊕⟨6⟩aa|ab⊕⟨3⟩aa|ba⊕⟨2⟩ab|a⊕⟨6⟩ab|aa
> b.lightest(10)
a|a⊕a|aa⊕a|ba⊕aa|a⊕aa|aa⊕aa|ba⊕ba|a⊕ba|aa⊕ba|ba⊕a|aaa
```
This is obviously wrong (`a|aa` has weight 3, not 1), even though we use here bread-first. And Yen is not better. Only Eppstein is decent enough to report that it cannot work on this automaton.
@spiat If you have comments about this, I would be happy to hear about them.https://gitlab.lre.epita.fr/vcsn/vcsn/-/issues/175complete: keep the origins2017-07-25T10:51:02+02:00Akim Demaillecomplete: keep the originsIt is bad that `a.determinize().proper()` loses the origins.It is bad that `a.determinize().proper()` loses the origins.https://gitlab.lre.epita.fr/vcsn/vcsn/-/issues/174proper: keep origins2017-07-25T10:51:02+02:00Akim Demailleproper: keep originsIt is really annoying to lose the origins when we eliminate spontaneous transitions. Even with `inplace`.It is really annoying to lose the origins when we eliminate spontaneous transitions. Even with `inplace`.https://gitlab.lre.epita.fr/vcsn/vcsn/-/issues/164shortest: fails to work on `nullable<lat<lal>>, b`2017-05-10T06:44:22+02:00Akim Demailleshortest: fails to work on `nullable<lat<lal>>, b`The problem appears to be that the label set multiplication of the corresponding wordset does not accept the `letters` from `nullable<lat<lal>>`.
Labelset: `nullable<lat<lal>>`
Wordset: `lat<wordset>`.
All this should disappear with Sa...The problem appears to be that the label set multiplication of the corresponding wordset does not accept the `letters` from `nullable<lat<lal>>`.
Labelset: `nullable<lat<lal>>`
Wordset: `lat<wordset>`.
All this should disappear with Sarasvati's changes for 2.6, so I am not going to spend time on this now.3.0Akim DemailleAkim Demaillehttps://gitlab.lre.epita.fr/vcsn/vcsn/-/issues/149split: possible generalizations2018-04-28T14:12:57+02:00Akim Demaillesplit: possible generalizations- [ ] we don't support tuples at all, but we should
- [ ] we don't split the operators that do support distributivity laws, such as `&`, but maybe we should
- [ ] maybe we should offer a means to enable/disable these cases- [ ] we don't support tuples at all, but we should
- [ ] we don't split the operators that do support distributivity laws, such as `&`, but maybe we should
- [ ] maybe we should offer a means to enable/disable these caseshttps://gitlab.lre.epita.fr/vcsn/vcsn/-/issues/131random_expression: dumb parser2017-05-10T06:44:22+02:00Akim Demaillerandom_expression: dumb parserThe current "parser" for the params of random_expression is not robust. It is based on something which is meant for CSV files, so for instance we need to use double-quotes to pass arguments to other generators (w="min=1, max=10") where ...The current "parser" for the params of random_expression is not robust. It is based on something which is meant for CSV files, so for instance we need to use double-quotes to pass arguments to other generators (w="min=1, max=10") where I wanted to use parens or braces.
Please, write a genuine parser over streams.Younes KhoudliYounes Khoudlihttps://gitlab.lre.epita.fr/vcsn/vcsn/-/issues/127insplit: generalize to any label2018-04-28T14:12:57+02:00Akim Demailleinsplit: generalize to any labelCurrently `insplit` makes sure incoming transitions are either all spontaneous, or all proper. We could also provide a means to guarantee that each state has a single incoming label.Currently `insplit` makes sure incoming transitions are either all spontaneous, or all proper. We could also provide a means to guarantee that each state has a single incoming label.https://gitlab.lre.epita.fr/vcsn/vcsn/-/issues/107is_synchronized_by: speed up?2018-04-28T14:12:57+02:00Akim Demailleis_synchronized_by: speed up?- There is an intermediate unordered_set that should probably be pulled out of the loop
- Is there a way to use the implementation of evaluate, instead of duplicating it partially
- why do we need completeness?- There is an intermediate unordered_set that should probably be pulled out of the loop
- Is there a way to use the implementation of evaluate, instead of duplicating it partially
- why do we need completeness?https://gitlab.lre.epita.fr/vcsn/vcsn/-/issues/87shuffle (and infiltrate) does not work with denormalized expansions2017-05-10T06:44:22+02:00Akim Demailleshuffle (and infiltrate) does not work with denormalized expansionsTry this:
```Python
vcsn.context('lan, q').expression('((⟨2⟩ε){\}a) : b').automaton()
vcsn.context('lan, q').expression('((⟨2⟩ε){\}a) : b').inductive()
```
The first one is wrong, the second one is right.
![87](/uploads/535ce...Try this:
```Python
vcsn.context('lan, q').expression('((⟨2⟩ε){\}a) : b').automaton()
vcsn.context('lan, q').expression('((⟨2⟩ε){\}a) : b').inductive()
```
The first one is wrong, the second one is right.
![87](/uploads/535ce18cbad9e842977bc68e4b306ce3/87.png)
When both #86 and #87 are fixed, restore the commented tests about check_prod in `tests/python/to-expansion.py`.
3.0https://gitlab.lre.epita.fr/vcsn/vcsn/-/issues/86shuffle (and infiltrate): does not work with spontaneous transitions2017-05-10T06:44:22+02:00Akim Demailleshuffle (and infiltrate): does not work with spontaneous transitions![Capture_d_écran_2016-06-22_à_15.21.10](/uploads/1a385eefb8db3c798d1eaa7f92af3d7f/Capture_d_écran_2016-06-22_à_15.21.10.png)
and
![Capture_d_écran_2016-06-22_à_15.22.17](/uploads/49bd156b07fb92f75ba754c18a86c8e6/Capture_d_écran_20...![Capture_d_écran_2016-06-22_à_15.21.10](/uploads/1a385eefb8db3c798d1eaa7f92af3d7f/Capture_d_écran_2016-06-22_à_15.21.10.png)
and
![Capture_d_écran_2016-06-22_à_15.22.17](/uploads/49bd156b07fb92f75ba754c18a86c8e6/Capture_d_écran_2016-06-22_à_15.22.17.png)
When both #86 and #87 are fixed, restore the commented tests about check_prod in `tests/python/to-expansion.py`.
3.0Thibaud MichaudThibaud Michaudhttps://gitlab.lre.epita.fr/vcsn/vcsn/-/issues/81weightset: explore `max`2018-04-28T14:12:57+02:00Akim Demailleweightset: explore `max`We need to explore other types of tropical semirings, using `max`. We might have issues with algos such as `lightest` etc.We need to explore other types of tropical semirings, using `max`. We might have issues with algos such as `lightest` etc.