@@ -483,7 +483,7 @@ lemma attachWith_map_subtypeVal {s : Sym2 α} {P : α → Prop} (h : ∀ a ∈ s
483483
484484/-! ### Diagonal -/
485485
486- variable {e : Sym2 α} {f : α → β}
486+ variable {z : Sym2 α} {f : α → β}
487487
488488/-- A type `α` is naturally included in the diagonal of `α × α`, and this function gives the image
489489of this diagonal in `Sym2 α`.
@@ -505,49 +505,51 @@ theorem mk_isDiag_iff {x y : α} : IsDiag s(x, y) ↔ x = y :=
505505theorem isDiag_iff_proj_eq (z : α × α) : IsDiag (Sym2.mk z) ↔ z.1 = z.2 :=
506506 Prod.recOn z fun _ _ => mk_isDiag_iff
507507
508- protected lemma IsDiag.map : e .IsDiag → (e .map f).IsDiag := Sym2.ind (fun _ _ ↦ congr_arg f) e
508+ protected lemma IsDiag.map : z .IsDiag → (z .map f).IsDiag := Sym2.ind (fun _ _ ↦ congr_arg f) z
509509
510- lemma isDiag_map (hf : Injective f) : (e .map f).IsDiag ↔ e .IsDiag :=
511- Sym2.ind (fun _ _ ↦ hf.eq_iff) e
510+ lemma isDiag_map (hf : Injective f) : (z .map f).IsDiag ↔ z .IsDiag :=
511+ Sym2.ind (fun _ _ ↦ hf.eq_iff) z
512512
513513@[simp]
514514theorem diag_isDiag (a : α) : IsDiag (diag a) :=
515515 Eq.refl a
516516
517- theorem isDiag_of_subsingleton [Subsingleton α] (z : Sym2 α) : z.IsDiag :=
518- z.ind Subsingleton.elim
517+ @ [ simp, nontriviality]
518+ lemma isDiag_of_subsingleton [Subsingleton α] (z : Sym2 α) : z.IsDiag := z.ind Subsingleton.elim
519519
520520/-- The set of all `Sym2 α` elements on the diagonal. -/
521- def diagSet : Set (Sym2 α) :=
522- Set.range diag
521+ def diagSet : Set (Sym2 α) := {z | z.IsDiag}
523522
524- @[simp]
525- theorem mem_diagSet_iff_isDiag (z : Sym2 α) : z ∈ diagSet ↔ z.IsDiag :=
526- ⟨fun ⟨_, h⟩ ↦ h ▸ rfl, z.ind fun a b (h : a = b) ↦ ⟨a, h ▸ rfl⟩⟩
523+ @[simp] lemma mem_diagSet : z ∈ diagSet ↔ z.IsDiag := .rfl
524+
525+ @ [deprecated mem_diagSet (since := "2025-12-10" )]
526+ theorem mem_diagSet_iff_isDiag (z : Sym2 α) : z ∈ diagSet ↔ z.IsDiag := .rfl
527+
528+ @[simp] lemma range_diag : .range (diag : α → Sym2 α) = diagSet := by
529+ ext ⟨a, b⟩; simp [diag, eq_comm]
527530
528531@ [deprecated (since := "2025-11-05" )] alias ⟨_, IsDiag.mem_range_diag⟩ := mem_diagSet_iff_isDiag
529532
530- @ [deprecated mem_diagSet_iff_isDiag (since := "2025-11-05" )]
531- theorem isDiag_iff_mem_range_diag (z : Sym2 α) : IsDiag z ↔ z ∈ Set.range (@diag α) :=
532- z.mem_diagSet_iff_isDiag.symm
533+ @ [deprecated range_diag (since := "2025-11-05" )]
534+ theorem isDiag_iff_mem_range_diag (z : Sym2 α) : IsDiag z ↔ z ∈ Set.range (@diag α) := by simp
533535
534- theorem mem_diagSet_iff_eq {a b : α} : s(a, b) ∈ diagSet ↔ a = b := by
535- simp
536+ @ [ deprecated mem_diagSet (since := "2025-11-05" )]
537+ theorem mem_diagSet_iff_eq {a b : α} : s(a, b) ∈ diagSet ↔ a = b := by simp
536538
537- theorem diagSet_eq_setOf_isDiag : diagSet = {z : Sym2 α | z.IsDiag} :=
538- Set.ext mem_diagSet_iff_isDiag
539+ theorem diagSet_eq_setOf_isDiag : diagSet = {z : Sym2 α | z.IsDiag} := rfl
539540
541+ set_option linter.deprecated false in
542+ @ [deprecated Set.compl_setOf (since := "2025-12-10" )]
540543theorem diagSet_compl_eq_setOf_not_isDiag : diagSetᶜ = {z : Sym2 α | ¬z.IsDiag} :=
541544 congrArg _ diagSet_eq_setOf_isDiag
542545
543- theorem diagSet_eq_univ_of_subsingleton [Subsingleton α] : @diagSet α = Set.univ :=
544- Set.ext fun z ↦ ⟨fun _ ↦ trivial, z.ind fun a b _ ↦ Subsingleton.elim a b ▸ ⟨_, rfl⟩⟩
546+ theorem diagSet_eq_univ_of_subsingleton [Subsingleton α] : @diagSet α = Set.univ := by ext; simp
545547
546548instance IsDiag.decidablePred (α : Type u) [DecidableEq α] : DecidablePred (@IsDiag α) :=
547549 fun z => z.recOnSubsingleton fun a => decidable_of_iff' _ (isDiag_iff_proj_eq a)
548550
549- instance diagSet_decidablePred (α : Type u) [DecidableEq α] : DecidablePred (· ∈ @diagSet α) :=
550- diagSet_eq_setOf_isDiag ▸ IsDiag.decidablePred _
551+ instance decidablePred_mem_diagSet (α : Type u) [DecidableEq α] : DecidablePred (· ∈ @diagSet α) :=
552+ IsDiag.decidablePred _
551553
552554theorem other_ne {a : α} {z : Sym2 α} (hd : ¬IsDiag z) (h : a ∈ z) : Mem.other h ≠ a := by
553555 contrapose! hd
@@ -600,20 +602,28 @@ theorem fromRel_ne : fromRel (fun (_ _ : α) z => z.symm : Symmetric Ne) = {z |
600602 ext z; exact z.ind (by simp)
601603
602604lemma diagSet_eq_fromRel_eq : diagSet = fromRel (α := α) eq_equivalence.symmetric := by
603- ext z
604- exact z.ind fun _ _ ↦ mem_diagSet_iff_eq
605+ ext ⟨a, b⟩; simp
605606
606607lemma diagSet_compl_eq_fromRel_ne : diagSetᶜ = fromRel (α := α) (r := Ne) (fun _ _ ↦ Ne.symm) := by
607- ext z
608- exact z.ind fun _ _ ↦ mem_diagSet_iff_eq.not
608+ ext ⟨a, b⟩; simp
609+
610+ @[simp] lemma diagSet_subset_fromRel (hr : Symmetric r) : diagSet ⊆ fromRel hr ↔ Reflexive r := by
611+ simp [Set.subset_def, Sym2.forall, Reflexive]
612+
613+ @[simp] lemma disjoint_diagSet_fromRel (hr : Symmetric r) :
614+ Disjoint diagSet (fromRel hr) ↔ Irreflexive r := by
615+ simp [Set.disjoint_left, Sym2.forall, Irreflexive]
616+
617+ @[simp] lemma fromRel_subset_compl_diagSet (hr : Symmetric r) :
618+ fromRel hr ⊆ diagSetᶜ ↔ Irreflexive r := by simp [Set.subset_compl_iff_disjoint_left]
609619
620+ @ [deprecated diagSet_subset_fromRel (since := "2025-12-10" )]
610621theorem reflexive_iff_diagSet_subset_fromRel (sym : Symmetric r) :
611- Reflexive r ↔ diagSet ⊆ fromRel sym :=
612- ⟨fun hr _ ⟨_, hd⟩ ↦ hd ▸ hr _, fun h _ ↦ h ⟨_, rfl⟩⟩
622+ Reflexive r ↔ diagSet ⊆ fromRel sym := by simp
613623
624+ @ [deprecated fromRel_subset_compl_diagSet (since := "2025-12-10" )]
614625theorem irreflexive_iff_fromRel_subset_diagSet_compl (sym : Symmetric r) :
615- Irreflexive r ↔ fromRel sym ⊆ diagSetᶜ :=
616- ⟨fun hr _ hz ⟨_, hd⟩ ↦ hr _ <| fromRel_prop.mp <| hd ▸ hz, fun h _ ha ↦ h ha ⟨_, rfl⟩⟩
626+ Irreflexive r ↔ fromRel sym ⊆ diagSetᶜ := by simp
617627
618628theorem fromRel_irreflexive {sym : Symmetric r} :
619629 Irreflexive r ↔ ∀ {z}, z ∈ fromRel sym → ¬IsDiag z :=
0 commit comments