Counter-Examples in First-Order Optimization: A Constructive Approach