1. A tangible, non-transitory computer readable storage medium having data stored therein representing software executable by a processor, which when implemented cause the processor to perform a method for analyzing a computer program based on source code, the source code comprising a call to a function associated with a function implementation, the method comprising: receiving from a data store a summary that over-approximates the function; ascertaining, via a processor, based on the summary that over approximates the function, an assignment of an input variable and an output variable of the call to the function such that the assignment allows the program to reach a predefined state; determining, via the processor, based on the implementation of the function whether the assignment of the input variable results in the assignment of the output variable; executing a trace refinement software processor module configured to, upon determining that the assignment of the input variable does not result in the assignment of the output variable, determining a narrowed summary for the function such that the narrowed summary over-approximates a strongest postcondition of the function and excludes the assignment of the input variable and the output variable; and storing the narrowed summary associated with the function on a datastore enabling analysis of the computer program without in-lining function calls.