| class  | MarkForLineageReuse |  | 
| class  | RewriteCompressedReblock | Rule: Compressed Re block if config compressed.linalg is enabled, we inject compression directions after read of
 matrices if number of rows is above 1000 and cols at least 1. | 
| class  | RewriteForLoopVectorization | Rule: Simplify program structure by pulling if or else statement body out
 (removing the if statement block ifself) in order to allow intra-procedure
 analysis to propagate exact statistics. | 
| class  | RewriteHoistLoopInvariantOperations | Rule: Simplify program structure by hoisting loop-invariant operations
 out of while, for, or parfor loops. | 
| class  | RewriteInjectSparkLoopCheckpointing | Rule: Insert checkpointing operations for caching purposes. | 
| class  | RewriteMarkLoopVariablesUpdateInPlace | Rule: Mark loop variables that are only read/updated through cp left indexing
 for update in-place. | 
| class  | RewriteMergeBlockSequence | Rule: Simplify program structure by merging sequences of last-level
 statement blocks in order to create optimization opportunities. | 
| class  | RewriteRemoveEmptyBasicBlocks | Rule: Simplify program structure by removing empty last-level blocks,
 which may originate from the original program or due to a sequence of
 rewrites (e.g., checkpoint injection and subsequent IPA). | 
| class  | RewriteRemoveForLoopEmptySequence | Rule: Simplify program structure by removing (par)for statements iterating over
 an empty sequence, i.e., (par)for-loops without a single iteration. | 
| class  | RewriteRemoveUnnecessaryBranches | Rule: Simplify program structure by pulling if or else statement body out
 (removing the if statement block ifself) in order to allow intra-procedure
 analysis to propagate exact statistics. | 
| class  | RewriteSplitDagDataDependentOperators | Rule: Split Hop DAG after specific data-dependent operators. | 
| class  | RewriteSplitDagUnknownCSVRead | Rule: Split Hop DAG after CSV reads with unknown size. |