data Synthesized b a = Synthesized
  { syn_trace :: b
  , syn_val   :: a
  }
  deriving (Eq, Show)


mapTrace :: (b -> b) -> Synthesized b a -> Synthesized b a
mapTrace fbb (Synthesized b a)
  = Synthesized {syn_trace = fbb b, syn_val = a}