Zulip Chat Archive
Stream: Is there code for X?
Topic: Induction principles
Bolton Bailey (Sep 25 2023 at 17:12):
Do we have something like
lemma list_induction (P : List α → Prop) :
(∀ (l : List α), P l) ↔ ( P [] ∧ (∀ (a : α) (l : List α), P l → P (a :: l))) := by
sorry
Bolton Bailey (Sep 25 2023 at 17:13):
I feel like I was told once that when an inductive datatype is declared, a lemma like this is automatically generated.
Junyan Xu (Sep 25 2023 at 17:18):
#check List.rec
/- List.rec.{u_1, u} {α : Type u} {motive : List α → Sort u_1} (nil : motive [])
(cons : (head : α) → (tail : List α) → motive tail → motive (head :: tail)) (t : List α) : motive t -/
lemma list_induction {α} (P : List α → Prop) :
(∀ (l : List α), P l) ↔ ( P [] ∧ (∀ (a : α) (l : List α), P l → P (a :: l))) :=
⟨fun h ↦ ⟨h _, fun _ _ _ ↦ h _⟩, fun h ↦ List.rec h.1 h.2⟩
Last updated: Dec 20 2023 at 11:08 UTC