Dominator and post-dominator trees are useful data structures which are used to encode static analysis information. Dominator trees for example are used to compute the dominance frontiers for SSA conversion, whereas post-dominator trees are used to compute control dependencies of a statement. Post-dominance is usually computed by calculating dominance of a reverse CFG.
Strictly speaking, if some node a dominates node b, it does not necessarily imply that b post-dominates a. So, the question is 1) what is the relation between dominance and post-dominance? 2) Is there a graphical representation that can encode both relations, and are there any theoretical work that spells out the properties of this representation?
I am aware of data structures such as DJ graph (combination of dominator edges + control flow edges not captured by dominator edges, called join edges) that are used for tasks such as dominance frontier calculation or performing exhaustive/incremental data flow analysis, but none on combined representation of dominance and post-dominance.
Any pointers or references to related work is highly appreciated.