Reasoning in architecture