use functional induction