Target program decision tree Guard (VConstant:0): guard(true) = Leaf=VConstant:1 guard(false) = Guard (VConstant:1): guard(true) = Leaf=VConstant:2 guard(false) = Leaf=VConstant:3 Source program decision tree Switch AcRoot:{ } Fallback: Guard (Unit ) = guard(true) = Leaf='Int 1 ' guard(false) = Guard (Int 1 ) = guard(true) = Leaf='Int 2 ' guard(false) = Leaf='Int 3 ' The two programs are equivalent.