Beyond deductive inference in program analysis