lean4-htt/.github/workflows
Joachim Breitner 8038604d3e
feat: functional induction (#3432)
This adds the concept of **functional induction** to lean.

Derived from the definition of a (possibly mutually) recursive function,
a **functional
induction principle** is tailored to proofs about that function. For
example from:

```
def ackermann : Nat → Nat → Nat
  | 0, m => m + 1
  | n+1, 0 => ackermann n 1
  | n+1, m+1 => ackermann n (ackermann (n + 1) m)
derive_functional_induction ackermann
```
we get
```
ackermann.induct (motive : Nat → Nat → Prop) (case1 : ∀ (m : Nat), motive 0 m)
  (case2 : ∀ (n : Nat), motive n 1 → motive (Nat.succ n) 0)
  (case3 : ∀ (n m : Nat), motive (n + 1) m → motive n (ackermann (n + 1) m) → motive (Nat.succ n) (Nat.succ m))
  (x x : Nat) : motive x x
```

At the moment, the user has to ask for the functional induction
principle explicitly using
```
derive_functional_induction ackermann
```

The module docstring of `Lean/Meta/Tactic/FunInd.lean` contains more
details on the
design and implementation of this command.

More convenience around this (e.g. a `functional induction` tactic) will
follow eventually.


This PR includes a bunch of `PSum`/`PSigma` related functions in the
`Lean.Tactic.FunInd`
namespace. I plan to move these to `PackArgs`/`PackMutual` afterwards,
and do some cleaning
up as I do that.

---------

Co-authored-by: David Thrane Christiansen <david@davidchristiansen.dk>
Co-authored-by: Leonardo de Moura <leomoura@amazon.com>
2024-03-05 13:02:05 +00:00
..
actionlint.yml chore: CI: add actionlint action, fix actions (#3156) 2024-01-15 17:53:04 +00:00
backport.yml chore: CI: add backport action 2023-09-25 11:33:14 +02:00
check-prelude.yml chore: CI: typo 2024-02-23 18:23:00 +01:00
ci.yml feat: functional induction (#3432) 2024-03-05 13:02:05 +00:00
copyright-header.yml chore: typo (#3415) 2024-02-20 10:40:59 +00:00
labels-from-comments.yml chore: CI: update github-script (#3002) 2023-12-01 08:39:51 +00:00
nix-ci.yml chore: run nix-ci whenever we run ci (#3600) 2024-03-05 09:11:19 +00:00
pr-release.yml chore: pr-release to suggest a git rebase command (#3417) 2024-02-20 13:06:06 +00:00
pr-title.yml chore: CI: update github-script (#3002) 2023-12-01 08:39:51 +00:00
stale.yml chore: activate stale PR labeler 2023-09-20 09:18:46 +02:00
update-stage0.yml chore: Nix CI: stop pushing to cachix (#3402) 2024-02-19 16:41:20 +00:00