A Model for Functional Reasoning in Design