An interface for a specific dataflow problem used to generate a Soufflé program.
It is used to express the dataflow problem and serves the same purpose as the transfer
function when using the worklist fixpoint algorithm. The join/meet semilattice
operations should be expressed implicitly in the Soufflé rules. Maintaining the
monotonicity property is a responsibility of the user, i.e. the designed rules
must ensure that the dataflow information only grows or remains the same.
When implementing definitions inside the functions of this interface, the user can refer
to some fields that have special meanings and are added by the Soufflé solver by default:
An interface for a specific dataflow problem used to generate a Soufflé program.
It is used to express the dataflow problem and serves the same purpose as the transfer function when using the worklist fixpoint algorithm. The join/meet semilattice operations should be expressed implicitly in the Soufflé rules. Maintaining the monotonicity property is a responsibility of the user, i.e. the designed rules must ensure that the dataflow information only grows or remains the same.
When implementing definitions inside the functions of this interface, the user can refer to some fields that have special meanings and are added by the Soufflé solver by default:
bb${index}
- Basic block with the given indexedge
- Edge relations between two blocks