higher-order strategy function (not in the spec api), strategy_cheap and strategy_expensive implemented in terms of it