Inference based analysis of functional programs: dead-code and strictness