Text this: Simulating reachability using first-order logic with applications to verification of linked data structures