This PR adds the `fun_induction` and `fun_cases` tactics, which add convenience around using functional induction and functional cases principles. ``` fun_induction foo x y z ``` elaborates `foo x y z`, then looks up `foo.induct`, and then essentially does ``` induction z using foo.induct y ``` including and in particular figuring out which arguments are parameters, targets or dropped. This only works for non-mutual functions so far. Likewise there is the `fun_cases` tactic using `foo.fun_cases`. |
||
|---|---|---|
| .. | ||
| Nonrec | ||
| PartialFixpoint | ||
| Structural | ||
| WF | ||
| Basic.lean | ||
| Eqns.lean | ||
| EqUnfold.lean | ||
| Main.lean | ||
| MkInhabitant.lean | ||
| Mutual.lean | ||
| PartialFixpoint.lean | ||
| Structural.lean | ||
| TerminationHint.lean | ||
| TerminationMeasure.lean | ||
| WF.lean | ||