Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 92a5424

Browse files
ChrisHughes24mergify[bot]
authored andcommitted
feat(data/fin): mem_find_iff (#1307)
* feat(data/fin): mem_find_iff * add find_eq_some_iff (#1308)
1 parent f46b0dc commit 92a5424

File tree

1 file changed

+16
-6
lines changed

1 file changed

+16
-6
lines changed

src/data/fin.lean

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -304,14 +304,24 @@ begin
304304
exact fin.eta _ _⟩ } }
305305
end
306306

307+
lemma mem_find_iff {p : fin n → Prop} [decidable_pred p] {i : fin n} :
308+
i ∈ fin.find p ↔ p i ∧ ∀ j, p j → i ≤ j :=
309+
⟨λ hi, ⟨find_spec _ hi, λ _, find_min' hi⟩,
310+
begin
311+
rintros ⟨hpi, hj⟩,
312+
cases hfp : fin.find p,
313+
{ rw [find_eq_none_iff] at hfp,
314+
exact (hfp _ hpi).elim },
315+
{ exact option.some_inj.2 (le_antisymm (find_min' hfp hpi) (hj _ (find_spec _ hfp))) }
316+
end
317+
318+
lemma find_eq_some_iff {p : fin n → Prop} [decidable_pred p] {i : fin n} :
319+
fin.find p = some i ↔ p i ∧ ∀ j, p j → i ≤ j :=
320+
mem_find_iff
321+
307322
lemma mem_find_of_unique {p : fin n → Prop} [decidable_pred p]
308323
(h : ∀ i j, p i → p j → i = j) {i : fin n} (hi : p i) : i ∈ fin.find p :=
309-
begin
310-
cases hfp : fin.find p,
311-
{ rw [find_eq_none_iff] at hfp,
312-
exact (hfp _ hi).elim },
313-
{ exact option.some_inj.2 (h _ _ (find_spec _ hfp) hi) }
314-
end
324+
mem_find_iff.2 ⟨hi, λ j hj, le_of_eq $ h i j hi hj⟩
315325

316326
end find
317327

0 commit comments

Comments
 (0)