refactor: remove and rename rule methods
allow variable and method declarations in strategies
methods and variables for strategies
use only one random
fix permutation : use shared random
test-reference