Skip to main content
teorth/PFR
Source indexedlemma · leanprover/lean4:v4.33.0-rc1

wlog_notInCoset

PFR.WeakPFR · PFR/WeakPFR.lean:49 to 78

Source documentation

Without loss of generality, one can move (up to translation and embedding) any pair A, B of non-empty sets into a subgroup where they are not in a coset.

Exact Lean statement

lemma wlog_notInCoset (hA : A.Nonempty) (hB : B.Nonempty) :
    ∃ (G' : AddSubgroup G) (A' B' : Set (G' : Set G)),
    IsShift A A' ∧ IsShift B B' ∧ NotInCoset A' B'

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
lemma wlog_notInCoset (hA : A.Nonempty) (hB : B.Nonempty) :     (G' : AddSubgroup G) (A' B' : Set (G' : Set G)),    IsShift A A'  IsShift B B'  NotInCoset A' B' := by  obtain x, hx := hA  obtain y, hy := hB  set G' := AddSubgroup.closure ((A - A) ∪ (B - B)) with hG'  set A' : Set (G' : Set G) := (↑) ⁻¹' ((-x) +ᵥ A) with hA'  set B' : Set (G' : Set G) := (↑) ⁻¹' ((-y) +ᵥ B) with hB'  have hxA : -x +ᵥ A  range ((↑) : G'  G) := by    simp only [ singleton_add',  neg_singleton, neg_add_eq_sub, Subtype.range_coe_subtype]    exact (sub_subset_sub_left <| singleton_subset_iff.2 hx).trans <| (subset_union_left ..).trans      AddSubgroup.subset_closure  have hyB : -y +ᵥ B  range ((↑) : G'  G) := by    simp only [ singleton_add',  neg_singleton, neg_add_eq_sub, Subtype.range_coe_subtype]    exact (sub_subset_sub_left <| singleton_subset_iff.2 hy).trans <| (subset_union_right ..).trans      AddSubgroup.subset_closure  have hA : IsShift A A' := x, by rwa [hA', Set.image_preimage_eq_of_subset, vadd_neg_vadd]  have hB : IsShift B B' := y, by rwa [hB', Set.image_preimage_eq_of_subset, vadd_neg_vadd]  refine G', A', B', hA, hB, ?_  unfold NotInCoset  convert! AddSubgroup.closure_preimage_eq_top ((A - A) ∪ (B - B))  simp_rw [preimage_union, hA.sub_self_congr, hB.sub_self_congr]  rw [preimage_sub, preimage_sub]  · simp only [A', B', Subtype.image_preimage_coe]    simp only [SetLike.coe_sort_coe, AddSubgroup.coe_subtype, preimage_inter]    rw [Subtype.coe_preimage_self, Subtype.coe_preimage_self, Subtype.coe_preimage_self,      Subtype.coe_preimage_self]    simp only [univ_inter]    rfl  all_goals apply_rules [Subtype.coe_injective, (image_preimage_subset ..).trans, hxA, hyB]