mathlib documentation

data.set.enumerate

Set enumeration #

This file allows enumeration of sets given a choice function.

The definition does not assume sel actually is a choice function, i.e. sel s ∈ s and sel s = none ↔ s = ∅. These assumptions are added to the lemmas needing them.

def set.enumerate {α : Type u_1} (sel : set αoption α) :
set αoption α

Given a choice function sel, enumerates the elements of a set in the order a 0 = sel s, a 1 = sel (s \ {a 0}), a 2 = sel (s \ {a 0, a 1}), ... and stops when sel (s \ {a 0, ..., a n}) = none. Note that we don't require sel to be a choice function.

Equations
theorem set.enumerate_eq_none_of_sel {α : Type u_1} (sel : set αoption α) {s : set α} (h : sel s = option.none) {n : } :
theorem set.enumerate_eq_none {α : Type u_1} (sel : set αoption α) {s : set α} {n₁ n₂ : } :
set.enumerate sel s n₁ = option.nonen₁ n₂set.enumerate sel s n₂ = option.none
theorem set.enumerate_mem {α : Type u_1} (sel : set αoption α) (h_sel : ∀ (s : set α) (a : α), sel s = option.some aa s) {s : set α} {n : } {a : α} :
set.enumerate sel s n = option.some aa s
theorem set.enumerate_inj {α : Type u_1} (sel : set αoption α) {n₁ n₂ : } {a : α} {s : set α} (h_sel : ∀ (s : set α) (a : α), sel s = option.some aa s) (h₁ : set.enumerate sel s n₁ = option.some a) (h₂ : set.enumerate sel s n₂ = option.some a) :
n₁ = n₂