Error Detection with Soft Typing for Dynamically Typed Languages