1. A method for performing string analysis, the method comprising: expressing, by use of a processor, a property of a string in a computer software application as a three-valued logic shape predicate; performing a three-valued logic shape analysis using the three-valued shape predicate to reach a fixpoint solution; and evaluating the fixpoint solution to determine a three-valued logic value of the property, wherein the three-valued logic shape predicate uses a binary successor predicate to enforce order between characters of the string and a unary is-letter [z] predicate template to denote a value of each character in the string where z is a letter of the string instantiating the three-valued logic shape predicate.