Skip to content

Commit 01b43e1

Browse files
committed
Golf using push _ \in _; not exhaustive
1 parent b0acaa9 commit 01b43e1

File tree

3 files changed

+41
-44
lines changed

3 files changed

+41
-44
lines changed

Carleson/DoublingMeasure.lean

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -543,11 +543,8 @@ variable [KernelProofData a K] {Q : SimpleFunc X (Θ X)}
543543
lemma measurable_Q₂ : Measurable fun p : X × X ↦ Q p.1 p.2 := fun s meass ↦ by
544544
have : (fun p : X × X ↦ (Q p.1) p.2) ⁻¹' s = ⋃ θ ∈ Q.range, (Q ⁻¹' {θ}) ×ˢ (θ ⁻¹' s) := by
545545
ext ⟨x, y⟩
546-
simp only [mem_preimage, SimpleFunc.mem_range, mem_range, iUnion_exists, iUnion_iUnion_eq',
547-
mem_iUnion, mem_prod, mem_singleton_iff]
548-
constructor <;> intro h
549-
· use x
550-
· obtain ⟨j, hj⟩ := h; exact congr($(hj.1) y).symm ▸ hj.2
546+
push _ ∈ _
547+
simp
551548
rw [this]
552549
exact Q.range.measurableSet_biUnion fun θ _ ↦
553550
(Q.measurableSet_fiber θ).prod (meass.preimage (map_continuous θ).measurable)

Carleson/GridStructure.lean

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -211,8 +211,8 @@ lemma isMin_iff {i : Grid X} : IsMin i ↔ s i = - S := by
211211
contrapose! h
212212
have : -(S : ℤ) ∈ Ico (-(S : ℤ)) (s i) := by simp [h]
213213
have := Grid_subset_biUnion (i := i) (-S) this c_mem_Grid
214-
simp only [defaultA, defaultD.eq_1, defaultκ.eq_1, mem_preimage, mem_singleton_iff, mem_iUnion,
215-
exists_prop] at this
214+
push _ ∈ _ at this
215+
216216
rcases this with ⟨j, (hj : s j = -(S : ℤ)), h'j⟩
217217
have sji : s j < s i := by simpa [hj] using h
218218
have : (j : Set X) ⊆ i := by
@@ -294,7 +294,7 @@ lemma exists_supercube (l : ℤ) (h : l ∈ Icc (s i) S) : ∃ j, s j = l ∧ i
294294
have ts := Grid_subset_biUnion (X := X) (i := topCube) l
295295
(by rw [s_topCube, mem_Ico]; omega)
296296
have := mem_of_mem_of_subset hx ((le_topCube (i := i)).1.trans ts)
297-
simp_rw [mem_preimage, mem_singleton_iff, mem_iUnion, exists_prop] at this
297+
push _ ∈ _ at this
298298
obtain ⟨j, (sj : s j = l), mj⟩ := this; use j, sj
299299
exact le_of_mem_of_mem (by lia) hx mj
300300

Carleson/TileExistence.lean

Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -127,14 +127,13 @@ lemma chain_property_set_has_bound (k : ℤ) :
127127
simpa using h
128128
have : (⋃ s ∈ c,s) ∪ (if k = S then ({o} : Set X) else ∅) = (⋃ s ∈ c,s) := by
129129
ext x
130-
rw [mem_union,mem_iUnion]
131130
constructor
132131
· rintro (l | r)
133132
· exact l
134133
simp only [mem_ite_empty_right, mem_singleton_iff] at r
135134
obtain ⟨z, hz⟩ := h
136135
rw [r.right]
137-
simp only [mem_iUnion, exists_prop]
136+
push _ ∈ _
138137
use z, hz
139138
specialize hc hz
140139
dsimp only [property_set] at hc
@@ -152,15 +151,15 @@ lemma chain_property_set_has_bound (k : ℤ) :
152151
exact hc.left
153152
constructor
154153
· intro x hx y hy
155-
simp only [mem_iUnion, exists_prop] at hx hy
154+
push _ ∈ _ at hx hy
156155
obtain ⟨sx, hsx, hsx'⟩ := hx
157156
obtain ⟨sy, hsy, hsy'⟩ := hy
158157
obtain hxy | hyx := hchain.total hsx hsy
159158
· exact (hc hsy).right.left (hxy hsx') hsy'
160159
· exact (hc hsx).right.left hsx' (hyx hsy')
161160
· obtain ⟨x,hx⟩ := h
162161
intro hk
163-
simp only [defaultA, mem_iUnion, exists_prop]
162+
push _ ∈ _
164163
exact ⟨x, hx, (hc hx).right.right hk⟩
165164
· exact fun s a ↦ subset_iUnion₂_of_subset s a fun ⦃a⦄ a ↦ a
166165

@@ -212,7 +211,7 @@ lemma cover_big_ball (k : ℤ) : ball o (4 * D ^ S - D ^ k) ⊆ ⋃ y ∈ Yk X k
212211
left
213212
exact o_mem_Yk_S
214213
obtain ⟨z,hz,hz'⟩ := this
215-
simp only [mem_iUnion, mem_ball, exists_prop]
214+
push _ ∈ _
216215
use z, hz
217216
rw [Set.not_disjoint_iff] at hz'
218217
obtain ⟨x,hx,hx'⟩ := hz'
@@ -337,9 +336,8 @@ lemma I3_subset_I2 {k : ℤ} (hk : -S ≤ k) (y : Yk X k) :
337336
I3 hk y ⊆ I2 hk y := by
338337
intro x hx
339338
rw [I3] at hx
340-
simp only [mem_union, mem_diff, mem_iUnion, exists_prop, not_or, not_exists,
341-
not_and] at hx
342-
obtain l|r := hx
339+
push _ ∈ _ at hx
340+
obtain l | r := hx
343341
· exact I1_subset_I2 hk y l
344342
· exact r.left
345343

@@ -405,7 +403,7 @@ mutual
405403
linarith
406404
rw [dif_neg hk_s, dif_neg hk_s]
407405
intro hx
408-
simp only [mem_preimage, mem_inter_iff, mem_iUnion, exists_prop] at hx
406+
push _ ∈ _ at hx
409407
obtain ⟨⟨z1, hz1, hz1'⟩, ⟨z2, hz2, hz2'⟩⟩ := hx
410408
have hz_eq : z1 = z2 := I3_prop_1 (I_induction_proof hk hk_s) ⟨hz1', hz2'⟩
411409
subst hz_eq
@@ -421,8 +419,8 @@ mutual
421419
have hx' := hx
422420
rw [I3,I3] at hx
423421
obtain ⟨hl,hr⟩ := hx'
424-
simp only [mem_inter_iff, mem_union, mem_diff, mem_iUnion, exists_prop, not_or,
425-
not_exists, not_and] at hx
422+
push _ ∈ _ at hx
423+
simp only [not_or, not_exists] at hx
426424
by_cases hx_mem_Xk : x ∈ Xk hk
427425
· rw [not_iff_false_intro hx_mem_Xk] at hx
428426
simp_rw [false_and,and_false,or_false] at hx
@@ -449,7 +447,7 @@ lemma I3_prop_3_2 {k : ℤ} (hk : -S ≤ k) (y : Yk X k) :
449447
revert this
450448
apply ball_subset_ball (by gcongr; norm_num)
451449
· rw [dif_neg hk_s] at this
452-
simp only [mem_preimage, mem_iUnion, exists_prop] at this
450+
push _ ∈ _ at this
453451
obtain ⟨y',hy',hyi3⟩ := this
454452
have : -S ≤ k - 1 := I_induction_proof hk hk_s
455453
have : x ∈ ball (y' : X) (4 * D ^ (k-1)) := I3_prop_3_2 _ y' hyi3
@@ -556,11 +554,12 @@ mutual
556554
have hx_notMem_i1 : ∀ y',x ∉ I1 hk y' := by
557555
simp only [Xk,mem_iUnion, not_exists] at hx_mem_Xk
558556
exact hx_mem_Xk
559-
simp only [mem_union, mem_diff, mem_iUnion, exists_prop, not_or, not_exists,
560-
not_and]
557+
push _ ∈ _
558+
simp only [not_or, not_exists]
561559
refine Or.inr ⟨hy_i2,hx_mem_Xk, fun y' hy' ↦ ?_⟩
562560
rw [I3]
563-
simp only [mem_union, mem_diff, mem_iUnion, exists_prop, not_or, not_exists, not_and]
561+
push _ ∈ _
562+
simp only [not_or, not_exists, not_and]
564563
exact ⟨hx_notMem_i1 y', fun hy_i2' _ _ ↦ hy_min y' hy_i2' hy'⟩
565564
termination_by (2 * (S + k)).toNat + 1
566565
end
@@ -653,10 +652,10 @@ lemma cover_by_cubes {l : ℤ} (hl : -S ≤ l) :
653652
intro hk1 y x hx
654653
have h : -S < k + 1 := by linarith
655654
have : x ∈ I2 hk1 y := I3_subset_I2 hk1 y hx
656-
rw [I2,dif_neg h.ne.symm] at this
657-
simp only [mem_preimage, mem_iUnion, exists_prop] at this
658-
obtain ⟨z,_,hz'⟩ := this
659-
specialize hind (I_induction_proof hk1 h.ne.symm) z hz'
655+
rw [I2, dif_neg h.ne'] at this
656+
push _ ∈ _ at this
657+
obtain ⟨z, _, hz'⟩ := this
658+
specialize hind (I_induction_proof hk1 h.ne') z hz'
660659
exact hind
661660

662661
lemma dyadic_property {l : ℤ} (hl : -S ≤ l) {k : ℤ} (hl_k : l ≤ k) :
@@ -687,13 +686,13 @@ lemma dyadic_property {l : ℤ} (hl : -S ≤ l) {k : ℤ} (hl_k : l ≤ k) :
687686
by_cases hx_mem_Xk : x ∈ Xk hk
688687
· have hx_i1: x ∈ I1 hk y := by
689688
rw [I3] at hxk
690-
simp only [mem_union, mem_diff, mem_iUnion, exists_prop, not_or, not_exists,
691-
not_and] at hxk
689+
push _ ∈ _ at hxk
690+
simp only [not_or, not_exists] at hxk
692691
rw [not_iff_false_intro hx_mem_Xk,false_and,and_false,or_false] at hxk
693692
exact hxk
694693
rw [I1] at hx_i1
695694
rw [dif_neg hk_not_neg_s] at hx_i1
696-
simp only [mem_preimage, mem_iUnion, exists_prop] at hx_i1
695+
push _ ∈ _ at hx_i1
697696
obtain ⟨u, hu, hu'⟩ := hx_i1
698697
have hxy'' : x ∈ I3 _ y'' := this hxl
699698
have : y'' = u := by
@@ -703,16 +702,16 @@ lemma dyadic_property {l : ℤ} (hl : -S ≤ l) {k : ℤ} (hl_k : l ≤ k) :
703702
apply Subset.trans _ (I1_subset_I3 _ _)
704703
rw [I1,dif_neg hk_not_neg_s]
705704
intro x' hx'
706-
simp only [mem_preimage, mem_iUnion, exists_prop]
705+
push _ ∈ _
707706
use y''
708707
· have hx_notMem_i1 (y_1 : Yk X k) : x ∉ I1 hk y_1 := by
709708
rw [Xk] at hx_mem_Xk
710709
simp only [mem_iUnion, not_exists] at hx_mem_Xk
711710
exact hx_mem_Xk y_1
712711
have hx_mem_i2_and : x ∈ I2 hk y ∧ ∀ u < y, x ∉ I3 hk u:= by
713712
rw [I3] at hxk
714-
simp only [mem_union, mem_diff, mem_iUnion, exists_prop, not_or, not_exists,
715-
not_and] at hxk
713+
push _ ∈ _ at hxk
714+
simp only [not_or, not_exists] at hxk
716715
rw [iff_false_intro (hx_notMem_i1 y), iff_true_intro hx_mem_Xk, false_or, true_and] at hxk
717716
exact hxk
718717
have hx_mem_i2 := hx_mem_i2_and.left
@@ -721,32 +720,33 @@ lemma dyadic_property {l : ℤ} (hl : -S ≤ l) {k : ℤ} (hl_k : l ≤ k) :
721720
intro u hu
722721
specialize hx_notMem_i3_u u hu
723722
rw [I3] at hx_notMem_i3_u
724-
simp only [mem_union, mem_diff, mem_iUnion, exists_prop, not_or, not_exists, not_and,
725-
not_forall, not_not] at hx_notMem_i3_u
723+
push _ ∈ _ at hx_notMem_i3_u
724+
-- xxx: can push_neg help here?
725+
simp only [not_or, not_exists, not_and, not_forall, not_not] at hx_notMem_i3_u
726726
rw [iff_true_intro (hx_notMem_i1 u),iff_true_intro hx_mem_Xk] at hx_notMem_i3_u
727727
rw [true_and,true_implies] at hx_notMem_i3_u
728728
intro h
729729
obtain ⟨v, hv, hv'⟩ := hx_notMem_i3_u h
730730
exact hx_mem_i2_and.right v (hv.trans hu) hv'
731731
rw [I2, dif_neg hk_not_neg_s] at hx_mem_i2
732-
simp only [mem_preimage, mem_iUnion, exists_prop] at hx_mem_i2
732+
push _ ∈ _ at hx_mem_i2
733733
obtain ⟨u, hu, hxu⟩ := hx_mem_i2
734734
obtain rfl : y'' = u := by
735735
apply I3_prop_1 (I_induction_proof hk hk_not_neg_s)
736736
use hy''
737737
have : I3 (I_induction_proof hk hk_not_neg_s) y'' ∩ Xk hk = ∅ := by
738738
ext x'
739-
simp only [mem_inter_iff, mem_empty_iff_false, iff_false, not_and]
739+
push _ ∈ _; simp only [iff_false, not_and]
740740
intro hx_i3' hx_xk'
741741
apply hx_mem_Xk
742742
rw [Xk] at hx_xk' ⊢
743743
simp only [mem_iUnion] at hx_xk' ⊢
744744
obtain ⟨u, hu⟩ := hx_xk'
745745
use u
746746
rw [I1,dif_neg hk_not_neg_s] at hu ⊢
747-
simp only [mem_preimage, mem_iUnion, exists_prop] at hu ⊢
747+
push _ ∈ _ at hu ⊢
748748
obtain ⟨u', hu', hu''⟩ := hu
749-
use u',hu'
749+
use u', hu'
750750
obtain rfl : u' = y'' := I3_prop_1 (I_induction_proof hk hk_not_neg_s) (And.intro hu'' hx_i3')
751751
exact hxu
752752
intro x' hx'
@@ -757,8 +757,8 @@ lemma dyadic_property {l : ℤ} (hl : -S ≤ l) {k : ℤ} (hl_k : l ≤ k) :
757757
rw [← this]
758758
exact mem_inter hx' hcontra
759759
exact this
760-
simp only [mem_union, mem_diff, mem_iUnion, exists_prop, not_or, not_exists,
761-
not_and,iff_true_intro hx_not_xk, true_and]
760+
push _ ∈ _
761+
simp only [exists_prop, not_or, not_exists, not_and, iff_true_intro hx_not_xk, true_and]
762762
right
763763
constructor
764764
· rw [I2, dif_neg hk_not_neg_s]
@@ -772,14 +772,14 @@ lemma dyadic_property {l : ℤ} (hl : -S ≤ l) {k : ℤ} (hl_k : l ≤ k) :
772772
simp only [mem_iUnion]
773773
use u
774774
rw [I3]
775-
simp only [mem_union, mem_diff, mem_iUnion, exists_prop, not_or, not_exists, not_and,
776-
not_forall]
775+
push _ ∈ _
776+
simp only [exists_prop, not_or, not_exists, not_and, not_forall]
777777
rw [iff_true_intro hx_not_xk, iff_true_intro hx_not_i1', true_and, true_implies]
778778
intro hx_i2'
779779
by_contra
780780
apply hx_notMem_i2_u u hu
781781
rw [I2, dif_neg hk_not_neg_s] at hx_i2' ⊢
782-
simp only [mem_preimage, mem_iUnion] at hx_i2' ⊢
782+
push _ ∈ _ at hx_i2' ⊢
783783
obtain ⟨z,hz,hz'⟩ := hx_i2'
784784
use z, hz
785785
suffices z = y'' by

0 commit comments

Comments
 (0)