summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHannes Schulze <haschu0103@outlook.de>2025-10-20 19:41:14 +0200
committerHannes Schulze <haschu0103@outlook.de>2025-10-20 19:41:14 +0200
commit6dc12564566a00f24c1e03f83aa80b897ca71f56 (patch)
tree42c66c9d1c1f6413022e24133ed91d65322e6d20
parent992aa8fdd40521d2cc7ed4759bce92c912cbeb80 (diff)
Prove nonempty induction on finsets
-rw-r--r--Nominal/Helpers/Finset.lean23
1 files changed, 23 insertions, 0 deletions
diff --git a/Nominal/Helpers/Finset.lean b/Nominal/Helpers/Finset.lean
new file mode 100644
index 0000000..1287c8e
--- /dev/null
+++ b/Nominal/Helpers/Finset.lean
@@ -0,0 +1,23 @@
+import Mathlib.Tactic
+
+namespace Finset.Nonempty
+
+theorem induction
+ {α : Type} {motive : Finset α → Prop} [DecidableEq α]
+ (single : ∀ (a : α), motive {a})
+ (insert : ∀ (a : α) (s : Finset α), a ∉ s → motive s → motive (insert a s))
+ : ∀ s, Finset.Nonempty s → motive s := by
+ intro S
+ induction' S using Finset.induction
+ · simp
+ · expose_names
+ intro _
+ by_cases h : (Finset.Nonempty s)
+ · apply insert
+ · assumption
+ · apply h_1; assumption
+ · simp at h
+ rw [h]
+ apply single
+
+end Finset.Nonempty