Bounded Verification of Multi-threaded Programs via Lazy Sequentialization