
  dynamic_var_ordering - Deals with the dynamic variable ordering.
     _________________________________________________________________
   
   dynamic_var_ordering [-d] [-e <method>] [-f <method>] [-h]
   
   Controls the application and the modalities of (dynamic) variable
   ordering. Dynamic ordering is a technique to reorder the BDD variables
   to reduce the size of the existing BDDs. When no options are
   specified, the current status of dynamic ordering is displayed. At
   most one of the options -e, -f, and -d should be specified.
   
   Dynamic ordering may be time consuming, but can often reduce the size
   of the BDDs dramatically. A good point to invoke dynamic ordering
   explicitly (using the -f option) is after the commands build_model,
   once the transition relation has been built. It is possible to save
   the ordering found using write_order in order to reuse it (using
   build_model -i order-file) in the future.
   
   Command options:
   
   -d
          Disable dynamic ordering from triggering automatically.
          
   -e <method>
          Enable dynamic ordering to trigger automatically whenever a
          certain threshold on the overall BDD size is reached. <method>
          must be one of the following:
          
          + _sift_: Moves each variable throughout the order to find an
            optimal position for that variable (assuming all other
            variables are fixed). This generally achieves greater size
            reductions than the window method, but is slower.
          + _random_: Pairs of variables are randomly chosen, and swapped
            in the order. The swap is performed by a series of swaps of
            adjacent variables. The best order among those obtained by
            the series of swaps is retained. The number of pairs chosen
            for swapping equals the number of variables in the diagram.
          + _random_pivot_: Same as _random_, but the two variables are
            chosen so that the first is above the variable with the
            largest number of nodes, and the second is below that
            variable. In case there are several variables tied for the
            maximum number of nodes, the one closest to the root is used.
          + _sift_converge_: The _sift_ method is iterated until no
            further improvement is obtained.
          + _symmetry_sift_: This method is an implementation of
            symmetric sifting. It is similar to sifting, with one
            addition: Variables that become adjacent during sifting are
            tested for symmetry. If they are symmetric, they are linked
            in a group. Sifting then continues with a group being moved,
            instead of a single variable.
          + _symmetry_sift_converge_: The _symmetry_sift_ method is
            iterated until no further improvement is obtained.
          + _window{2,3,4}_: Permutes the variables within windows of "n"
            adjacent variables, where "n" can be either 2, 3 or 4, so as
            to minimize the overall BDD size.
          + _window{2,3,4}_converge_: The _window{2,3,4}_ method is
            iterated until no further improvement is obtained.
          + _group_sift_: This method is similar to _symmetry_sift_, but
            uses more general criteria to create groups.
          + _group_sift_converge_: The _group_sift_ method is iterated
            until no further improvement is obtained.
          + _annealing_: This method is an implementation of simulated
            annealing for variable ordering. This method is potentially
            very slow.
          + _genetic_: This method is an implementation of a genetic
            algorithm for variable ordering. This method is potentially
            very slow.
          + _exact_: This method implements a dynamic programming
            approach to exact reordering. It only stores a BDD at a time.
            Therefore, it is relatively efficient in terms of memory.
            Compared to other reordering strategies, it is very slow, and
            is not recommended for more than 16 boolean variables.
          + _linear_: This method is a combination of sifting and linear
            transformations.
          + _linear_conv_: The _linear_ method is iterated until no
            further improvement is obtained.
            
   -f <method>
          Force dynamic ordering to be invoked immediately. The values
          for <method> are the same as in option -e.
     _________________________________________________________________
   
   Last updated on 990119 20h08
