The bottom-up pass computes a possible state set for every node.

highlighted = computed this step

Work from leaves toward the root

The bottom-up pass visits children before parents. Each internal node compares the Fitch sets of its children.

post-order: children before parent\text{post-order}:\ \text{children before parent}
Fitch bottom-up passEach row is computed by the Fitch set rule.NodeChildrenFitch setUnion?0·{A}no1·{C}no20, 1{A, C}yes3·{A}no4·{G}no53, 4{A, G}yes62, 5{A}no

Intersect if possible, otherwise union

The 2 lower internal nodes have disjoint child sets, so they take unions. The root intersects those sets and keeps A.

empty intersectionunion\text{empty intersection} \Rightarrow \text{union}
Fitch bottom-up passEach row is computed by the Fitch set rule.NodeChildrenFitch setUnion?0·{A}no1·{C}no20, 1{A, C}yes3·{A}no4·{G}no53, 4{A, G}yes62, 5{A}no