This document discusses composing source-to-source data-flow transformations with dependent dynamic rewrite rules. It outlines strategies for basic constant propagation, dead code elimination, and copy propagation. It also discusses issues that can arise with dynamic rewrite rules, such as insufficient dependencies, free variable capture, and escaping variables, and proposes solutions like undefining rules when variables are modified or go out of scope.