verimag issueshttps://gricad-gitlab.univ-grenoble-alpes.fr/groups/verimag/-/issues2022-07-20T09:08:19+02:00https://gricad-gitlab.univ-grenoble-alpes.fr/verimag/tempo/multidimensional_search/-/issues/1Cleaning code2022-07-20T09:08:19+02:00EXT José Ignacio Requeno JaraboCleaning code@mambakaa :
- [ 1 ] Please, could you remove local paths in source code? It could break automatic tests. Besides the ParetoLib code is public, so it should be as clean as possible. See [1](https://gricad-gitlab.univ-grenoble-alpes.fr/ver...@mambakaa :
- [ 1 ] Please, could you remove local paths in source code? It could break automatic tests. Besides the ParetoLib code is public, so it should be as clean as possible. See [1](https://gricad-gitlab.univ-grenoble-alpes.fr/verimag/tempo/multidimensional_search/-/blob/akshayUpdateClean/ParetoLib/Oracle/OracleEpsSTLe.py#L100)
- [ 2 ] This is the 'print' format for python 2. Please, use 'print("blabla")' format, which is compatible both for python 2 and python 3.x. See [2](https://gricad-gitlab.univ-grenoble-alpes.fr/verimag/tempo/multidimensional_search/-/blob/9c1f57863d3fe341950205517cbd7e988ccb74de/ParetoLib/Search/ParSearch.py#L132)
- [ 3 ] Please, add/fix tag annotations in new functions in a similar way to this format: See [3](https://gricad-gitlab.univ-grenoble-alpes.fr/verimag/tempo/multidimensional_search/-/blob/9c1f57863d3fe341950205517cbd7e988ccb74de/ParetoLib/Search/ParSearch.py#L154). It helps for readability, type fixing within the IDE, and easy cythonization.
- [ 4 ] We should also discuss the structure of the 'example' folder. Too many examples/files over there. Maybe, should we move some of these files to 'Tests'?Akshay MambakamAkshay Mambakamhttps://gricad-gitlab.univ-grenoble-alpes.fr/verimag/synchrone/lutin/-/issues/2issue with free variables constrained in the type declaration2019-07-03T14:23:19+02:00erwanerwan.jahier@univ-grenoble-alpes.frissue with free variables constrained in the type declaration`ok` works fine, but not `ko`:
```lutin
node ko () returns (b: int [0; 0]; a: int) = a = b
node ok () returns (a: int [0; 0]; b: int) = a = b
````ok` works fine, but not `ko`:
```lutin
node ko () returns (b: int [0; 0]; a: int) = a = b
node ok () returns (a: int [0; 0]; b: int) = a = b
```https://gricad-gitlab.univ-grenoble-alpes.fr/verimag/synchrone/sasa/-/issues/3Compute the graph degree, diameter, etc.2019-07-15T09:58:08+02:00erwanerwan.jahier@univ-grenoble-alpes.frCompute the graph degree, diameter, etc.Indeed, this info can be useful for some algo, and would avoid one to hard-code it
in the algo, which outgh to work on any graph.
For example, in the following example, the diameter is hard-coded :
https://gricad-gitlab.univ-grenoble-a...Indeed, this info can be useful for some algo, and would avoid one to hard-code it
in the algo, which outgh to work on any graph.
For example, in the following example, the diameter is hard-coded :
https://gricad-gitlab.univ-grenoble-alpes.fr/verimag/synchrone/sasa/blob/master/test/bfs-spanning-tree/p.mlhttps://gricad-gitlab.univ-grenoble-alpes.fr/verimag/synchrone/lutin/-/issues/3Add n-ary `xor` (and `boolred`) to lutin2019-07-26T14:18:29+02:00erwanerwan.jahier@univ-grenoble-alpes.frAdd n-ary `xor` (and `boolred`) to lutinhttps://gricad-gitlab.univ-grenoble-alpes.fr/verimag/synchrone/lustre-v6/-/issues/6Can not iterate over the plus node (as long as it is named plus)2018-07-10T09:56:56+02:00erwanerwan.jahier@univ-grenoble-alpes.frCan not iterate over the plus node (as long as it is named plus)[iterate_on_plus.lus](/uploads/9f43fb6735fb9379fad8a67d9f51b3cf/iterate_on_plus.lus)
lv6 test.lv6 -n test -en
Fatal error: exception Failure("*** The soc of test::plus is not defined! \n")
mais si je renomme plus en adder ça passe...
l...[iterate_on_plus.lus](/uploads/9f43fb6735fb9379fad8a67d9f51b3cf/iterate_on_plus.lus)
lv6 test.lv6 -n test -en
Fatal error: exception Failure("*** The soc of test::plus is not defined! \n")
mais si je renomme plus en adder ça passe...
lv6 test2.lv6 -n test -echttps://gricad-gitlab.univ-grenoble-alpes.fr/verimag/synchrone/lustre-v6/-/issues/7enum constants don't work in -exec mode2019-05-22T17:24:24+02:00erwanerwan.jahier@univ-grenoble-alpes.frenum constants don't work in -exec modehere is a small example that does not execute (works via -2c-exec)
```
type Bit = enum {X0,X1};
const tt = X0;
node some_node(x:bool) returns (res:Bit);
let
res = tt;
tel
```here is a small example that does not execute (works via -2c-exec)
```
type Bit = enum {X0,X1};
const tt = X0;
node some_node(x:bool) returns (res:Bit);
let
res = tt;
tel
```https://gricad-gitlab.univ-grenoble-alpes.fr/verimag/synchrone/sasa/-/issues/7Process should have acess to their identity2019-06-21T16:59:48+02:00erwanerwan.jahier@univ-grenoble-alpes.frProcess should have acess to their identityhttps://gricad-gitlab.univ-grenoble-alpes.fr/verimag/synchrone/sasa/-/issues/8Add weights to graphs2019-07-12T09:37:20+02:00erwanerwan.jahier@univ-grenoble-alpes.frAdd weights to graphsRequire to handle a weight attribute in the dot (in addition to the algo attribute)
This information can then be added a a field of Algo.neighbor.tRequire to handle a weight attribute in the dot (in addition to the algo attribute)
This information can then be added a a field of Algo.neighbor.terwanerwan.jahier@univ-grenoble-alpes.frerwanerwan.jahier@univ-grenoble-alpes.frhttps://gricad-gitlab.univ-grenoble-alpes.fr/verimag/synchrone/lustre-v6/-/issues/8The difference of 2 enums is wrong when using the --expand-enums-as-bool option2019-09-04T15:56:42+02:00erwanerwan.jahier@univ-grenoble-alpes.frThe difference of 2 enums is wrong when using the --expand-enums-as-bool optionReported by Vincent Mussot.
The program
```lustre
type E = enum { A, B, C};
node bug(do : bool) returns (ok : E);
let
ok = if (false -> (pre(ok) <> A)) then C
else if (false -> do) then B
else A;
tel
```
ret...Reported by Vincent Mussot.
The program
```lustre
type E = enum { A, B, C};
node bug(do : bool) returns (ok : E);
let
ok = if (false -> (pre(ok) <> A)) then C
else if (false -> do) then B
else A;
tel
```
returns A B B instead of A B C when the input is "t t t"
nb: this option is in the -dev category, but it as used by the -ec one!https://gricad-gitlab.univ-grenoble-alpes.fr/verimag/synchrone/sasa/-/issues/9Take into account the initialisation of local variables done the dot again2019-07-12T09:37:24+02:00erwanerwan.jahier@univ-grenoble-alpes.frTake into account the initialisation of local variables done the dot againIndeed, with the new polymorphic API, dot init directives are ignored.Indeed, with the new polymorphic API, dot init directives are ignored.erwanerwan.jahier@univ-grenoble-alpes.frerwanerwan.jahier@univ-grenoble-alpes.frhttps://gricad-gitlab.univ-grenoble-alpes.fr/verimag/synchrone/sasa/-/issues/10Generate oracle skeletons from the dot2019-06-25T13:23:28+02:00erwanerwan.jahier@univ-grenoble-alpes.frGenerate oracle skeletons from the dotSuch skeletons could contains
- a node computing the silence (`silent`)
- a node `after_n`
- some useful constants (card, degree, diameter)
- a node that gathers variables into arrays
```lustre
const card=7;
const degree=3;
const diamet...Such skeletons could contains
- a node computing the silence (`silent`)
- a node `after_n`
- some useful constants (card, degree, diameter)
- a node that gathers variables into arrays
```lustre
const card=7;
const degree=3;
const diameter=7;
node after_n(n:int; x:bool) returns (res:bool);
var cpt:int;
let
cpt = 0 -> pre cpt + 1;
res = cpt <= n or x;
tel
node silent(Enab_a, act: bool^card) returns (ok:bool);
let
ok = after_n(42, boolred<<0,0,card>>(Enab_a));
tel
node oracle(Enab_p1_a, Enab_p2_a, Enab_p3_a, Enab_p4_a, Enab_p5_a,
Enab_p6_a, Enab_p7_a, p1_a, p2_a, p3_a, p4_a, p5_a, p6_a,
p7_a:bool) returns (ok:bool);
var
Enab_a,a: bool^card;
let
Enab_a = [Enab_p1_a,Enab_p2_a,Enab_p3_a,Enab_p4_a,Enab_p5_a,Enab_p6_a,Enab_p7_a];
act = [p1_a, p2_a, p3_a, p4_a, p5_a, p6_a, p7_a];
ok = true;
tel
```https://gricad-gitlab.univ-grenoble-alpes.fr/verimag/synchrone/sasa/-/issues/11Add Lustre oracles to all examples of the test directory2019-07-08T16:46:49+02:00erwanerwan.jahier@univ-grenoble-alpes.frAdd Lustre oracles to all examples of the test directoryNathan RebiscoulNathan Rebiscoulhttps://gricad-gitlab.univ-grenoble-alpes.fr/verimag/synchrone/sasa/-/issues/12Add a get_graph_attributes function to the sasa API2019-07-03T10:40:26+02:00erwanerwan.jahier@univ-grenoble-alpes.frAdd a get_graph_attributes function to the sasa APIThe idea is be able to transmit parameters to algo. For that we
can take advantage of the graph attributes mechanism of dot.
For instance, one could write dot files that looks like:
```dot
graph g {
diameter=2
k=42
p1 [algo=p....The idea is be able to transmit parameters to algo. For that we
can take advantage of the graph attributes mechanism of dot.
For instance, one could write dot files that looks like:
```dot
graph g {
diameter=2
k=42
p1 [algo=p.ml]
p2 [algo=p.ml]
p1 -- p2
}
```
And then access to `k` and to the `diameter` as follows:
```ocaml
let (init_state: int -> 's) =
fun _ ->
let diameter = int_of_string (get_graph_attributes "diameter") in
let k = int_of_string (get_graph_attributes "k") in
diameter+ (Random.int k)
```https://gricad-gitlab.univ-grenoble-alpes.fr/verimag/synchrone/sasa/-/issues/4Generate random graphs2019-07-15T09:55:02+02:00erwanerwan.jahier@univ-grenoble-alpes.frGenerate random graphshttps://gricad-gitlab.univ-grenoble-alpes.fr/verimag/synchrone/sasa/-/issues/13Use the functions of #3 in all the test/examples instead of the current hard-...2020-04-14T09:15:05+02:00erwanerwan.jahier@univ-grenoble-alpes.frUse the functions of #3 in all the test/examples instead of the current hard-coded valueshttps://gricad-gitlab.univ-grenoble-alpes.fr/verimag/synchrone/sasa/-/issues/15Make the diameter() return None when the graph is not connected2021-07-27T10:42:33+02:00Gwennan EliezerMake the diameter() return None when the graph is not connectedWhen a graph is not connected, its diameter doesn't make much sense. Although, when the diameter function is used on a non-connected graph, it returns a value. We should change `diameter ()` (in register.ml), so that it checks if the gra...When a graph is not connected, its diameter doesn't make much sense. Although, when the diameter function is used on a non-connected graph, it returns a value. We should change `diameter ()` (in register.ml), so that it checks if the graph is connected before using the diameter function. If the graph is not connected, it should return `None`, and if the graph is connected, it should return `Some d` (with d being the diameter).https://gricad-gitlab.univ-grenoble-alpes.fr/verimag/synchrone/sasa/-/issues/16Drive rdbg tests in a more portable way2021-03-03T08:31:21+01:00Gabriel B. Sant'Annabaiocchi.gabriel@gmail.comDrive rdbg tests in a more portable wayTests using rdbg simulate user input by piping `echo` output to rdbg, eg. in `test/dijkstra-ring/Makefile`:
```make
rdbg_test: ring.ml
echo "\nnr\nsd\nq\n" | rdbg -o ring.rif -l 10000 -sut "$(sasa) -vl 1 ring.dot -dd"
```
But [this ...Tests using rdbg simulate user input by piping `echo` output to rdbg, eg. in `test/dijkstra-ring/Makefile`:
```make
rdbg_test: ring.ml
echo "\nnr\nsd\nq\n" | rdbg -o ring.rif -l 10000 -sut "$(sasa) -vl 1 ring.dot -dd"
```
But [this is not portable](https://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html) as we are using escaped characters:
> It is not possible to use echo portably across all POSIX systems unless both -n (as the first argument) **and escape sequences** are omitted.
In fact, in my own machine the command above causes rdbg to interpret "\nnr\nsd\nq\n" as a single user input, yielding the error
```
invalid key (\nnr\nsd\nq\n), try again
```
Posix suggests using `printf` instead:
> New applications are encouraged to use printf instead of echo.Gabriel B. Sant'Annabaiocchi.gabriel@gmail.comGabriel B. Sant'Annabaiocchi.gabriel@gmail.comhttps://gricad-gitlab.univ-grenoble-alpes.fr/verimag/synchrone/sasa/-/issues/17Sasa does not recognise ./ as current dir2021-07-27T10:14:37+02:00Gwennan EliezerSasa does not recognise ./ as current dirLet's launch sasa on `./grid10.dot`:
```sh
$ sasa ./grid10.dot
Fatal error: exception Sys_error("sasa-./grid10.dot.seed: No such file or directory")
$ sasa grid10.dot
[sasa] The sasa random engine seed is set to 1025277978
(and so on......Let's launch sasa on `./grid10.dot`:
```sh
$ sasa ./grid10.dot
Fatal error: exception Sys_error("sasa-./grid10.dot.seed: No such file or directory")
$ sasa grid10.dot
[sasa] The sasa random engine seed is set to 1025277978
(and so on... works fine)
```
As you can see, it doesn't work when the path starts with `./`.
Additionnaly, when running with `rdbg` :
```sh
$ ledit rdbg --sasa --missing-vars-last -env "sasa ./grid10.dot -custd"
Enter one of the following key (the first is the default one):
[] #use "rdbg-session.ml" (3/6/2021: rdbg --sasa --missing-vars-last -e[...])
[1] #use "rdbg-session1.ml" (3/6/2021: rdbg --sasa --missing-vars-last -e[...])
[c] create a fresh session
[q] quit
[/1/c/q]: c
Reading my-rdbg-tuning.ml..
Rdbg Version "1.195.0" ("opam")
OCaml version 4.12.0
(rdbg) - : unit = ()
Findlib has been successfully loaded. Additional directives:
#require "package";; to load a package
#list;; to list the available packages
#camlp4o;; to load camlp4 (standard syntax)
#camlp4r;; to load camlp4 (revised syntax)
#predicates "p,q,...";; to set these predicates
Topfind.reset();; to force that packages will be reloaded
#thread;; to enable threads
- : unit = ()
- : unit = ()
Error: /grid10.ml is missing!
```
I don't know if it's the same error, but is is of the same kind.https://gricad-gitlab.univ-grenoble-alpes.fr/verimag/synchrone/sasa/-/issues/18Fonction `rev_cond_gen` manquante2021-07-27T10:32:35+02:00Gwennan EliezerFonction `rev_cond_gen` manquanteDans `sasa-rdbg-cmds.ml`, il semblerait qu'il manque la fonction `rev_cond_gen`. Cela empèche de lancer rdbg avec sasa. J'ai vu ce nom de fonction dans `tools/rdbg4sasa/gtkgui.ml` et `tools/rdbg4sasa/sasa-rdbg-cmds.ml`, et nulle part d'a...Dans `sasa-rdbg-cmds.ml`, il semblerait qu'il manque la fonction `rev_cond_gen`. Cela empèche de lancer rdbg avec sasa. J'ai vu ce nom de fonction dans `tools/rdbg4sasa/gtkgui.ml` et `tools/rdbg4sasa/sasa-rdbg-cmds.ml`, et nulle part d'autre. Aucun des deux fichiers n'a de déclaration de la fonction.
J'ai remarqué le bug dans cc029128, peut-être que le problème viens d'avant.
Voici un exemple d'exécution :
```sh
ledit rdbg -l 100000 0 --sasa --missing-vars-last -env "sasa ring2.dot --replay -custd"
Enter one of the following key (the first is the default one):
[] create a fresh session
[q] quit
[/q]:
Reading my-rdbg-tuning.ml..
nb: some messages are written to the rdbg.log file
--> type 'l' to obtain the list of Level 0 commands
or type 'h' to get a short manual
(rdbg)
Error 3: '
File "/home/username/.opam/ocaml-base-compiler.4.12.0/lib/sasa/sasa-rdbg-cmds.ml", line 169, characters 10-22:
169 | let e = rev_cond_gen e (fun ne -> ne.kind = e.kind && ne.name = e.name)
^^^^^^^^^^^^
Error: Unbound value rev_cond_gen
Hint: Did you mean next_cond_gen?
An error occured when reading the my-rdbg-tuning.ml file
cf "rdbg.log" for more messages
'
Bye
```https://gricad-gitlab.univ-grenoble-alpes.fr/verimag/synchrone/sasa/-/issues/19Sasa's greedy daemons doesn't work proprerly on dijkstra-ring2021-07-31T09:23:41+02:00Gwennan EliezerSasa's greedy daemons doesn't work proprerly on dijkstra-ringWhen testing on dijkstra ring, the greedy daemon doesn't work properly.
```sh
$ cd ../dijkstra-ring/
eliezerg@Laptop...When testing on dijkstra ring, the greedy daemon doesn't work properly.
```sh
$ cd ../dijkstra-ring/
eliezerg@Laptop:~/sasa/test/dijkstra-ring$ sasa diring4.dot -gd
[sasa] The sasa random engine seed is set to 580431516
# Automatically generated by /home/neogalaxy/.opam/ocaml-base-compiler.4.12.0/bin/sasa version "4.6.0-26-g25afed4" ("25afed4")
# on neogalaxy-FeelPad-MK02 the 26/7/2021 at 16:53:47
#sasa diring4.dot -gd
#seed 580431516
#inputs
#outputs "p0_c":int "p1_c":int "p2_c":int "p3_c":int "Enab_p0_T":bool "Enab_p1_T":bool "Enab_p2_T":bool "Enab_p3_T":bool "p0_T":bool "p1_T":bool "p2_T":bool "p3_T":bool potential:real
#step 0
#outs 0 0 1 2 t t t t f f t f 13.
#step 1
#outs 0 0 2 2 t t f t f t f f 6.
#step 2
#outs 0 2 2 2 f f f t f t f f 1.
#This algo reached a legitimate configuration after 2 moves, 2 steps, 0 round.
#quit
eliezerg@Laptop:~/sasa/test/dijkstra-ring$ sasa diring4.dot -gcd
[sasa] The sasa random engine seed is set to 629151512
# Automatically generated by /home/neogalaxy/.opam/ocaml-base-compiler.4.12.0/bin/sasa version "4.6.0-26-g25afed4" ("25afed4")
# on neogalaxy-FeelPad-MK02 the 26/7/2021 at 16:53:49
#sasa diring4.dot -gcd
#seed 629151512
#inputs
#outputs "p0_c":int "p1_c":int "p2_c":int "p3_c":int "Enab_p0_T":bool "Enab_p1_T":bool "Enab_p2_T":bool "Enab_p3_T":bool "p0_T":bool "p1_T":bool "p2_T":bool "p3_T":bool potential:real
#step 0
#outs 0 0 1 2 t t t t f t f f 13.
#step 1
#outs 0 1 1 2 f f t t f f t f 3.
#step 2
#outs 0 1 2 2 f t f t f f f t 2.
#step 3
#outs 0 1 2 0 f t t f f t f f 1.
#step 4
#outs 0 2 2 0 f f t f f t f f 0.
#This algo reached a legitimate configuration after 4 moves, 4 steps, 2 rounds.
#quit
eliezerg@Laptop:~/sasa/test/dijkstra-ring$ sasa diring4.dot -expd greedy
[sasa] The sasa random engine seed is set to 405980181
# Automatically generated by /home/neogalaxy/.opam/ocaml-base-compiler.4.12.0/bin/sasa version "4.6.0-26-g25afed4" ("25afed4")
# on neogalaxy-FeelPad-MK02 the 26/7/2021 at 16:53:58
#sasa diring4.dot -expd greedy
#seed 405980181
#inputs
#outputs "p0_c":int "p1_c":int "p2_c":int "p3_c":int "Enab_p0_T":bool "Enab_p1_T":bool "Enab_p2_T":bool "Enab_p3_T":bool "p0_T":bool "p1_T":bool "p2_T":bool "p3_T":bool potential:real
#step 0
#outs 0 0 1 2 t t t t t f f f 13.
#step 1
#outs 1 0 1 2 f t t t f t f f 12.
#step 2
#outs 1 1 1 2 t f t t f f t f 11.
#step 3
#outs 1 1 2 2 t t f t f f f t 10.
#step 4
#outs 1 1 2 1 t t t f t f f f 9.
#step 5
#outs 2 1 2 1 f t t t f t f f 8.
#step 6
#outs 2 2 2 1 t f t t f f t f 7.
#step 7
#outs 2 2 1 1 t t f t f f f t 6.
#step 8
#outs 2 2 1 2 t t t f t f f f 5.
#step 9
#outs 3 2 1 2 f t t t f t f f 4.
#step 10
#outs 3 1 1 2 f f t t f f t f 3.
#step 11
#outs 3 1 2 2 f t f t f t f f 2.
#step 12
#outs 3 2 2 2 f f f t f t f f 1.
#This algo reached a legitimate configuration after 12 moves, 12 steps, 4 rounds.
#quit
```