I have one comment and one nitpick. Since you're touching the tests by adding new passes to fx_test_value_expression[], you might as well also test those new passes in test_effect_value_expression(). Unless there is some reason that can't be done right now.
It would be nicer if you kept a consistent style in the pres_*() handlers (e.g. always define the individual argument vars and use consistent naming for them, or any other option as long as it's always applied), as it's slightly distracting otherwise. Not a big deal of course, but nice to have.