@@ -483,7 +483,7 @@ theorem any_iff_exists {p : α → Bool} {as : Array α} {start stop} :
483
483
rw [Bool.eq_false_iff, Ne, any_eq_true]
484
484
simp
485
485
486
- theorem any_toList {p : α → Bool} (as : Array α) : as.toList.any p = as.any p := by
486
+ @[simp] theorem any_toList {p : α → Bool} (as : Array α) : as.toList.any p = as.any p := by
487
487
rw [Bool.eq_iff_iff, any_eq_true, List.any_eq_true]
488
488
simp only [List.mem_iff_getElem, getElem_toList]
489
489
exact ⟨fun ⟨_, ⟨i, w, rfl⟩, h⟩ => ⟨i, w, h⟩, fun ⟨i, w, h⟩ => ⟨_, ⟨i, w, rfl⟩, h⟩⟩
@@ -522,7 +522,7 @@ theorem all_iff_forall {p : α → Bool} {as : Array α} {start stop} :
522
522
rw [Bool.eq_false_iff, Ne, all_eq_true]
523
523
simp
524
524
525
- theorem all_toList {p : α → Bool} (as : Array α) : as.toList.all p = as.all p := by
525
+ @[simp] theorem all_toList {p : α → Bool} (as : Array α) : as.toList.all p = as.all p := by
526
526
rw [Bool.eq_iff_iff, all_eq_true, List.all_eq_true]
527
527
simp only [List.mem_iff_getElem, getElem_toList]
528
528
constructor
@@ -534,20 +534,6 @@ theorem all_toList {p : α → Bool} (as : Array α) : as.toList.all p = as.all
534
534
theorem all_eq_true_iff_forall_mem {l : Array α} : l.all p ↔ ∀ x, x ∈ l → p x := by
535
535
simp only [← all_toList, List.all_eq_true, mem_def]
536
536
537
- theorem _root_.List.anyM_toArray [Monad m] [LawfulMonad m] (p : α → m Bool) (l : List α) :
538
- l.toArray.anyM p = l.anyM p := by
539
- rw [← anyM_toList]
540
-
541
- theorem _root_.List.any_toArray (p : α → Bool) (l : List α) : l.toArray.any p = l.any p := by
542
- rw [any_toList]
543
-
544
- theorem _root_.List.allM_toArray [Monad m] [LawfulMonad m] (p : α → m Bool) (l : List α) :
545
- l.toArray.allM p = l.allM p := by
546
- rw [← allM_toList]
547
-
548
- theorem _root_.List.all_toArray (p : α → Bool) (l : List α) : l.toArray.all p = l.all p := by
549
- rw [all_toList]
550
-
551
537
/-- Variant of `anyM_toArray` with a side condition on `stop`. -/
552
538
@[simp] theorem _root_.List.anyM_toArray' [Monad m] [LawfulMonad m] (p : α → m Bool) (l : List α)
553
539
(h : stop = l.toArray.size) :
@@ -574,6 +560,20 @@ theorem _root_.List.all_toArray (p : α → Bool) (l : List α) : l.toArray.all
574
560
subst h
575
561
rw [all_toList]
576
562
563
+ theorem _root_.List.anyM_toArray [Monad m] [LawfulMonad m] (p : α → m Bool) (l : List α) :
564
+ l.toArray.anyM p = l.anyM p := by
565
+ rw [← anyM_toList]
566
+
567
+ theorem _root_.List.any_toArray (p : α → Bool) (l : List α) : l.toArray.any p = l.any p := by
568
+ rw [any_toList]
569
+
570
+ theorem _root_.List.allM_toArray [Monad m] [LawfulMonad m] (p : α → m Bool) (l : List α) :
571
+ l.toArray.allM p = l.allM p := by
572
+ rw [← allM_toList]
573
+
574
+ theorem _root_.List.all_toArray (p : α → Bool) (l : List α) : l.toArray.all p = l.all p := by
575
+ rw [all_toList]
576
+
577
577
/-- Variant of `any_eq_true` in terms of membership rather than an array index. -/
578
578
theorem any_eq_true' {p : α → Bool} {as : Array α} :
579
579
as.any p = true ↔ (∃ x, x ∈ as ∧ p x) := by
@@ -641,7 +641,7 @@ theorem decide_forall_mem {xs : Array α} {p : α → Prop} [DecidablePred p] :
641
641
l.toArray.contains a = l.contains a := by
642
642
simp [Array.contains, List.any_beq]
643
643
644
- @[simp] theorem _root_.List.elem_toArray [BEq α] {l : List α} {a : α} :
644
+ theorem _root_.List.elem_toArray [BEq α] {l : List α} {a : α} :
645
645
Array.elem a l.toArray = List.elem a l := by
646
646
simp [Array.elem]
647
647
@@ -663,26 +663,32 @@ theorem all_bne' [BEq α] [PartialEquivBEq α] {xs : Array α} :
663
663
(xs.all fun x => x != a) = !xs.contains a := by
664
664
simp only [bne_comm, all_bne]
665
665
666
- theorem mem_of_elem_eq_true [BEq α] [LawfulBEq α] {a : α} {as : Array α} : elem a as = true → a ∈ as := by
666
+ theorem mem_of_contains_eq_true [BEq α] [LawfulBEq α] {a : α} {as : Array α} : as.contains a = true → a ∈ as := by
667
667
cases as
668
668
simp
669
669
670
- theorem elem_eq_true_of_mem [BEq α] [LawfulBEq α] {a : α} {as : Array α} (h : a ∈ as) : elem a as = true := by
670
+ @[deprecated mem_of_contains_eq_true (since := "2024-12-12")]
671
+ abbrev mem_of_elem_eq_true := @mem_of_contains_eq_true
672
+
673
+ theorem contains_eq_true_of_mem [BEq α] [LawfulBEq α] {a : α} {as : Array α} (h : a ∈ as) : as.contains a = true := by
671
674
cases as
672
675
simpa using h
673
676
677
+ @[deprecated contains_eq_true_of_mem (since := "2024-12-12")]
678
+ abbrev elem_eq_true_of_mem := @contains_eq_true_of_mem
679
+
674
680
instance [BEq α] [LawfulBEq α] (a : α) (as : Array α) : Decidable (a ∈ as) :=
675
- decidable_of_decidable_of_iff (Iff.intro mem_of_elem_eq_true elem_eq_true_of_mem )
681
+ decidable_of_decidable_of_iff (Iff.intro mem_of_contains_eq_true contains_eq_true_of_mem )
676
682
677
683
@[simp] theorem elem_eq_contains [BEq α] {a : α} {l : Array α} :
678
684
elem a l = l.contains a := by
679
685
simp [elem]
680
686
681
687
theorem elem_iff [BEq α] [LawfulBEq α] {a : α} {as : Array α} :
682
- elem a as = true ↔ a ∈ as := ⟨mem_of_elem_eq_true, elem_eq_true_of_mem ⟩
688
+ elem a as = true ↔ a ∈ as := ⟨mem_of_contains_eq_true, contains_eq_true_of_mem ⟩
683
689
684
690
theorem contains_iff [BEq α] [LawfulBEq α] {a : α} {as : Array α} :
685
- as.contains a = true ↔ a ∈ as := ⟨mem_of_elem_eq_true, elem_eq_true_of_mem ⟩
691
+ as.contains a = true ↔ a ∈ as := ⟨mem_of_contains_eq_true, contains_eq_true_of_mem ⟩
686
692
687
693
theorem elem_eq_mem [BEq α] [LawfulBEq α] (a : α) (as : Array α) :
688
694
elem a as = decide (a ∈ as) := by rw [Bool.eq_iff_iff, elem_iff, decide_eq_true_iff]
@@ -762,24 +768,24 @@ theorem getElem?_set (a : Array α) (i : Nat) (h : i < a.size) (v : α) (j : Nat
762
768
cases as <;> cases n <;> simp [set]
763
769
764
770
theorem set_comm (a b : α)
765
- {n m : Nat} (as : Array α) {hn : n < as.size} {hm : m < (as.set n a).size} (h : n ≠ m ) :
766
- (as.set n a).set m b = (as.set m b (by simpa using hm )).set n a (by simpa using hn ) := by
771
+ {i j : Nat} (as : Array α) {hi : i < as.size} {hj : j < (as.set i a).size} (h : i ≠ j ) :
772
+ (as.set i a).set j b = (as.set j b (by simpa using hj )).set i a (by simpa using hi ) := by
767
773
cases as
768
774
simp [List.set_comm _ _ _ h]
769
775
770
776
@[simp]
771
- theorem set_set (a b : α) (as : Array α) (n : Nat) (h : n < as.size) :
772
- (as.set n a).set n b (by simpa using h) = as.set n b := by
777
+ theorem set_set (a b : α) (as : Array α) (i : Nat) (h : i < as.size) :
778
+ (as.set i a).set i b (by simpa using h) = as.set i b := by
773
779
cases as
774
780
simp
775
781
776
- theorem mem_set (as : Array α) (n : Nat) (h : n < as.size) (a : α) :
777
- a ∈ as.set n a := by
782
+ theorem mem_set (as : Array α) (i : Nat) (h : i < as.size) (a : α) :
783
+ a ∈ as.set i a := by
778
784
simp [mem_iff_getElem]
779
- exact ⟨n , (by simpa using h), by simp⟩
785
+ exact ⟨i , (by simpa using h), by simp⟩
780
786
781
787
theorem mem_or_eq_of_mem_set
782
- {as : Array α} {n : Nat} {a b : α} {w : n < as.size} (h : a ∈ as.set n b) : a ∈ as ∨ a = b := by
788
+ {as : Array α} {i : Nat} {a b : α} {w : i < as.size} (h : a ∈ as.set i b) : a ∈ as ∨ a = b := by
783
789
cases as
784
790
simpa using List.mem_or_eq_of_mem_set (by simpa using h)
785
791
@@ -788,7 +794,10 @@ theorem mem_or_eq_of_mem_set
788
794
789
795
/-! ### setIfInBounds -/
790
796
791
- @[simp] theorem set!_is_setIfInBounds : @set! = @setIfInBounds := rfl
797
+ @[simp] theorem set!_eq_setIfInBounds : @set! = @setIfInBounds := rfl
798
+
799
+ @[deprecated set!_eq_setIfInBounds (since := "2024-12-12")]
800
+ abbrev set!_is_setIfInBounds := @set!_eq_setIfInBounds
792
801
793
802
@[simp] theorem size_setIfInBounds (as : Array α) (index : Nat) (val : α) :
794
803
(as.setIfInBounds index val).size = as.size := by
@@ -820,19 +829,23 @@ abbrev getElem_setIfInBounds_eq := @getElem_setIfInBounds_self
820
829
(as.setIfInBounds i v)[j]'hj = as[j]'(by simpa using hj) := by
821
830
simp [getElem_setIfInBounds, h]
822
831
832
+ theorem getElem?_setIfInBounds {as : Array α} {i j : Nat} {a : α} :
833
+ (as.setIfInBounds i a)[j]? = if i = j then if i < as.size then some a else none else as[j]? := by
834
+ cases as
835
+ simp [List.getElem?_set]
836
+
837
+ theorem getElem?_setIfInBounds_self (as : Array α) {i : Nat} (v : α) :
838
+ (as.setIfInBounds i v)[i]? = if i < as.size then some v else none := by
839
+ simp [getElem?_setIfInBounds]
840
+
823
841
@[simp]
824
- theorem getElem?_setIfInBounds_self (as : Array α) {i : Nat} (p : i < as.size) (v : α ) :
842
+ theorem getElem?_setIfInBounds_self_of_lt (as : Array α) {i : Nat} (v : α) (h : i < as.size) :
825
843
(as.setIfInBounds i v)[i]? = some v := by
826
- simp [getElem?_eq_getElem, p ]
844
+ simp [getElem?_setIfInBounds, h ]
827
845
828
846
@[deprecated getElem?_setIfInBounds_self (since := "2024-12-11")]
829
847
abbrev getElem?_setIfInBounds_eq := @getElem?_setIfInBounds_self
830
848
831
- theorem getElem?_setIfInBounds {as : Array α} {i j : Nat} {a : α} :
832
- (as.setIfInBounds i a)[j]? = if i = j then if i < as.size then some a else none else as[j]? := by
833
- cases as
834
- simp [List.getElem?_set]
835
-
836
849
@[simp] theorem getElem?_setIfInBounds_ne {as : Array α} {i j : Nat} (h : i ≠ j) {a : α} :
837
850
(as.setIfInBounds i a)[j]? = as[j]? := by
838
851
simp [getElem?_setIfInBounds, h]
@@ -847,24 +860,24 @@ theorem setIfInBounds_eq_of_size_le {l : Array α} {n : Nat} (h : l.size ≤ n)
847
860
cases as <;> cases n <;> simp
848
861
849
862
theorem setIfInBounds_comm (a b : α)
850
- {n m : Nat} (as : Array α) (h : n ≠ m ) :
851
- (as.setIfInBounds n a).setIfInBounds m b = (as.setIfInBounds m b).setIfInBounds n a := by
863
+ {i j : Nat} (as : Array α) (h : i ≠ j ) :
864
+ (as.setIfInBounds i a).setIfInBounds j b = (as.setIfInBounds j b).setIfInBounds i a := by
852
865
cases as
853
866
simp [List.set_comm _ _ _ h]
854
867
855
868
@[simp]
856
- theorem setIfInBounds_setIfInBounds (a b : α) (as : Array α) (n : Nat) :
857
- (as.setIfInBounds n a).setIfInBounds n b = as.setIfInBounds n b := by
869
+ theorem setIfInBounds_setIfInBounds (a b : α) (as : Array α) (i : Nat) :
870
+ (as.setIfInBounds i a).setIfInBounds i b = as.setIfInBounds i b := by
858
871
cases as
859
872
simp
860
873
861
- theorem mem_setIfInBounds (as : Array α) (n : Nat) (h : n < as.size) (a : α) :
862
- a ∈ as.setIfInBounds n a := by
874
+ theorem mem_setIfInBounds (as : Array α) (i : Nat) (h : i < as.size) (a : α) :
875
+ a ∈ as.setIfInBounds i a := by
863
876
simp [mem_iff_getElem]
864
- exact ⟨n , (by simpa using h), by simp⟩
877
+ exact ⟨i , (by simpa using h), by simp⟩
865
878
866
879
theorem mem_or_eq_of_mem_setIfInBounds
867
- {as : Array α} {n : Nat} {a b : α} (h : a ∈ as.setIfInBounds n b) : a ∈ as ∨ a = b := by
880
+ {as : Array α} {i : Nat} {a b : α} (h : a ∈ as.setIfInBounds i b) : a ∈ as ∨ a = b := by
868
881
cases as
869
882
simpa using List.mem_or_eq_of_mem_set (by simpa using h)
870
883
@@ -2395,7 +2408,7 @@ abbrev get?_eq_toList_get? := @get?_eq_get?_toList
2395
2408
@[deprecated eq_push_pop_back!_of_size_ne_zero (since := "2024-10-31")]
2396
2409
abbrev eq_push_pop_back_of_size_ne_zero := @eq_push_pop_back!_of_size_ne_zero
2397
2410
2398
- @[deprecated set!_is_setIfInBounds (since := "2024-11-24")] abbrev set_is_setIfInBounds := @set!_is_setIfInBounds
2411
+ @[deprecated set!_is_setIfInBounds (since := "2024-11-24")] abbrev set_is_setIfInBounds := @set!_eq_setIfInBounds
2399
2412
@[deprecated size_setIfInBounds (since := "2024-11-24")] abbrev size_setD := @size_setIfInBounds
2400
2413
@[deprecated getElem_setIfInBounds_eq (since := "2024-11-24")] abbrev getElem_setD_eq := @getElem_setIfInBounds_self
2401
2414
@[deprecated getElem?_setIfInBounds_eq (since := "2024-11-24")] abbrev get?_setD_eq := @getElem?_setIfInBounds_self
0 commit comments