File: Mathlib/Data/Set/Pairwise/Basic.lean

full_name: pairwise_on_bool
code: theorem pairwise_on_bool (hr : Symmetric r) {a b : α} :
    Pairwise (r on fun c => cond c a b) ↔ r a b 
goal: Pairwise (r on fun c => bif c then a else b) ↔ r a b

full_name: pairwise_disjoint_on_bool
code: theorem pairwise_disjoint_on_bool [SemilatticeInf α] [OrderBot α] {a b : α} :
    Pairwise (Disjoint on fun c => cond c a b) ↔ Disjoint a b 
goal: Pairwise (Disjoint on fun c => bif c then a else b) ↔ Disjoint a b

full_name: Symmetric.pairwise_on
code: theorem Symmetric.pairwise_on [LinearOrder ι] (hr : Symmetric r) (f : ι → α) :
    Pairwise (r on f) ↔ ∀ ⦃m n⦄, m < n → r (f m) (f n) 
goal: Pairwise (r on f) ↔ ∀ ⦃m n : ι⦄, m < n → r (f m) (f n)

full_name: pairwise_disjoint_on
code: theorem pairwise_disjoint_on [SemilatticeInf α] [OrderBot α] [LinearOrder ι] (f : ι → α) :
    Pairwise (Disjoint on f) ↔ ∀ ⦃m n⦄, m < n → Disjoint (f m) (f n) 
goal: Pairwise (Disjoint on f) ↔ ∀ ⦃m n : ι⦄, m < n → Disjoint (f m) (f n)

full_name: pairwise_disjoint_mono
code: theorem pairwise_disjoint_mono [SemilatticeInf α] [OrderBot α] (hs : Pairwise (Disjoint on f))
    (h : g ≤ f) : Pairwise (Disjoint on g) 
goal: Pairwise (Disjoint on g)

full_name: Set.Pairwise.mono
code: theorem Pairwise.mono (h : t ⊆ s) (hs : s.Pairwise r) : t.Pairwise r 
goal: t.Pairwise r

full_name: Set.Pairwise.mono'
code: theorem Pairwise.mono' (H : r ≤ p) (hr : s.Pairwise r) : s.Pairwise p 
goal: s.Pairwise p

full_name: Set.pairwise_top
code: theorem pairwise_top (s : Set α) : s.Pairwise ⊤ 
goal: s.Pairwise ⊤

full_name: Set.Subsingleton.pairwise
code: protected theorem Subsingleton.pairwise (h : s.Subsingleton) (r : α → α → Prop) : s.Pairwise r 
goal: s.Pairwise r

full_name: Set.pairwise_empty
code: @[simp]
theorem pairwise_empty (r : α → α → Prop) : (∅ : Set α).Pairwise r 
goal: ∅.Pairwise r

full_name: Set.pairwise_singleton
code: @[simp]
theorem pairwise_singleton (a : α) (r : α → α → Prop) : Set.Pairwise {a} r 
goal: {a}.Pairwise r

full_name: Set.pairwise_iff_of_refl
code: theorem pairwise_iff_of_refl [IsRefl α r] : s.Pairwise r ↔ ∀ ⦃a⦄, a ∈ s → ∀ ⦃b⦄, b ∈ s → r a b 
goal: s.Pairwise r ↔ ∀ ⦃a : α⦄, a ∈ s → ∀ ⦃b : α⦄, b ∈ s → r a b

full_name: Set.Nonempty.pairwise_iff_exists_forall
code: theorem Nonempty.pairwise_iff_exists_forall [IsEquiv α r] {s : Set ι} (hs : s.Nonempty) :
    s.Pairwise (r on f) ↔ ∃ z, ∀ x ∈ s, r (f x) z 
goal: s.Pairwise (r on f) ↔ ∃ z, ∀ x ∈ s, r (f x) z

full_name: Set.Nonempty.pairwise_eq_iff_exists_eq
code: /-- For a nonempty set `s`, a function `f` takes pairwise equal values on `s` if and only if
for some `z` in the codomain, `f` takes value `z` on all `x ∈ s`. See also
`Set.pairwise_eq_iff_exists_eq` for a version that assumes `[Nonempty ι]` instead of
`Set.Nonempty s`. -/
theorem Nonempty.pairwise_eq_iff_exists_eq {s : Set α} (hs : s.Nonempty) {f : α → ι} :
    (s.Pairwise fun x y => f x = f y) ↔ ∃ z, ∀ x ∈ s, f x = z 
goal: (s.Pairwise fun x y => f x = f y) ↔ ∃ z, ∀ x ∈ s, f x = z

full_name: Set.pairwise_iff_exists_forall
code: theorem pairwise_iff_exists_forall [Nonempty ι] (s : Set α) (f : α → ι) {r : ι → ι → Prop}
    [IsEquiv ι r] : s.Pairwise (r on f) ↔ ∃ z, ∀ x ∈ s, r (f x) z 
goal: s.Pairwise (r on f) ↔ ∃ z, ∀ x ∈ s, r (f x) z

full_name: Set.pairwise_eq_iff_exists_eq
code: /-- A function `f : α → ι` with nonempty codomain takes pairwise equal values on a set `s` if and
only if for some `z` in the codomain, `f` takes value `z` on all `x ∈ s`. See also
`Set.Nonempty.pairwise_eq_iff_exists_eq` for a version that assumes `Set.Nonempty s` instead of
`[Nonempty ι]`. -/
theorem pairwise_eq_iff_exists_eq [Nonempty ι] (s : Set α) (f : α → ι) :
    (s.Pairwise fun x y => f x = f y) ↔ ∃ z, ∀ x ∈ s, f x = z 
goal: (s.Pairwise fun x y => f x = f y) ↔ ∃ z, ∀ x ∈ s, f x = z

full_name: Set.pairwise_union
code: theorem pairwise_union :
    (s ∪ t).Pairwise r ↔
    s.Pairwise r ∧ t.Pairwise r ∧ ∀ a ∈ s, ∀ b ∈ t, a ≠ b → r a b ∧ r b a 
goal: (s ∪ t).Pairwise r ↔ s.Pairwise r ∧ t.Pairwise r ∧ ∀ a ∈ s, ∀ b ∈ t, a ≠ b → r a b ∧ r b a

full_name: Set.pairwise_union_of_symmetric
code: theorem pairwise_union_of_symmetric (hr : Symmetric r) :
    (s ∪ t).Pairwise r ↔ s.Pairwise r ∧ t.Pairwise r ∧ ∀ a ∈ s, ∀ b ∈ t, a ≠ b → r a b 
goal: (s ∪ t).Pairwise r ↔ s.Pairwise r ∧ t.Pairwise r ∧ ∀ a ∈ s, ∀ b ∈ t, a ≠ b → r a b

full_name: Set.pairwise_insert
code: theorem pairwise_insert :
    (insert a s).Pairwise r ↔ s.Pairwise r ∧ ∀ b ∈ s, a ≠ b → r a b ∧ r b a 
goal: (insert a s).Pairwise r ↔ s.Pairwise r ∧ ∀ b ∈ s, a ≠ b → r a b ∧ r b a

full_name: Set.pairwise_insert_of_not_mem
code: theorem pairwise_insert_of_not_mem (ha : a ∉ s) :
    (insert a s).Pairwise r ↔ s.Pairwise r ∧ ∀ b ∈ s, r a b ∧ r b a 
goal: (insert a s).Pairwise r ↔ s.Pairwise r ∧ ∀ b ∈ s, r a b ∧ r b a

full_name: Set.Pairwise.insert
code: protected theorem Pairwise.insert (hs : s.Pairwise r) (h : ∀ b ∈ s, a ≠ b → r a b ∧ r b a) :
    (insert a s).Pairwise r 
goal: (insert a s).Pairwise r

full_name: Set.Pairwise.insert_of_not_mem
code: theorem Pairwise.insert_of_not_mem (ha : a ∉ s) (hs : s.Pairwise r) (h : ∀ b ∈ s, r a b ∧ r b a) :
    (insert a s).Pairwise r 
goal: (insert a s).Pairwise r

full_name: Set.pairwise_insert_of_symmetric
code: theorem pairwise_insert_of_symmetric (hr : Symmetric r) :
    (insert a s).Pairwise r ↔ s.Pairwise r ∧ ∀ b ∈ s, a ≠ b → r a b 
goal: (insert a s).Pairwise r ↔ s.Pairwise r ∧ ∀ b ∈ s, a ≠ b → r a b

full_name: Set.pairwise_insert_of_symmetric_of_not_mem
code: theorem pairwise_insert_of_symmetric_of_not_mem (hr : Symmetric r) (ha : a ∉ s) :
    (insert a s).Pairwise r ↔ s.Pairwise r ∧ ∀ b ∈ s, r a b 
goal: (insert a s).Pairwise r ↔ s.Pairwise r ∧ ∀ b ∈ s, r a b

full_name: Set.Pairwise.insert_of_symmetric
code: theorem Pairwise.insert_of_symmetric (hs : s.Pairwise r) (hr : Symmetric r)
    (h : ∀ b ∈ s, a ≠ b → r a b) : (insert a s).Pairwise r 
goal: (insert a s).Pairwise r

full_name: Set.Pairwise.insert_of_symmetric_of_not_mem
code: theorem Pairwise.insert_of_symmetric_of_not_mem (hs : s.Pairwise r) (hr : Symmetric r) (ha : a ∉ s)
    (h : ∀ b ∈ s, r a b) : (insert a s).Pairwise r 
goal: (insert a s).Pairwise r

full_name: Set.pairwise_pair
code: theorem pairwise_pair : Set.Pairwise {a, b} r ↔ a ≠ b → r a b ∧ r b a 
goal: {a, b}.Pairwise r ↔ a ≠ b → r a b ∧ r b a

full_name: Set.pairwise_pair_of_symmetric
code: theorem pairwise_pair_of_symmetric (hr : Symmetric r) : Set.Pairwise {a, b} r ↔ a ≠ b → r a b 
goal: {a, b}.Pairwise r ↔ a ≠ b → r a b

full_name: Set.pairwise_univ
code: theorem pairwise_univ : (univ : Set α).Pairwise r ↔ Pairwise r 
goal: Set.univ.Pairwise r ↔ Pairwise r

full_name: Set.pairwise_bot_iff
code: @[simp]
theorem pairwise_bot_iff : s.Pairwise (⊥ : α → α → Prop) ↔ (s : Set α).Subsingleton 
goal: s.Pairwise ⊥ ↔ s.Subsingleton

full_name: Set.injOn_iff_pairwise_ne
code: /-- See also `Function.injective_iff_pairwise_ne` -/
lemma injOn_iff_pairwise_ne {s : Set ι} : InjOn f s ↔ s.Pairwise (f · ≠ f ·) 
goal: Set.InjOn f s ↔ s.Pairwise fun x x_1 => f x ≠ f x_1

full_name: Set.Pairwise.image
code: protected theorem Pairwise.image {s : Set ι} (h : s.Pairwise (r on f)) : (f '' s).Pairwise r 
goal: (f '' s).Pairwise r

full_name: Set.InjOn.pairwise_image
code: /-- See also `Set.Pairwise.image`. -/
theorem InjOn.pairwise_image {s : Set ι} (h : s.InjOn f) :
    (f '' s).Pairwise r ↔ s.Pairwise (r on f) 
goal: (f '' s).Pairwise r ↔ s.Pairwise (r on f)

full_name: Pairwise.range_pairwise
code: lemma _root_.Pairwise.range_pairwise (hr : Pairwise (r on f)) : (Set.range f).Pairwise r 
goal: (Set.range f).Pairwise r

full_name: pairwise_subtype_iff_pairwise_set
code: theorem pairwise_subtype_iff_pairwise_set (s : Set α) (r : α → α → Prop) :
    (Pairwise fun (x : s) (y : s) => r x y) ↔ s.Pairwise r 
goal: (Pairwise fun x y => r ↑x ↑y) ↔ s.Pairwise r

full_name: Set.PairwiseDisjoint
code: /-- A set is `PairwiseDisjoint` under `f`, if the images of any distinct two elements under `f`
are disjoint.

`s.Pairwise Disjoint` is (definitionally) the same as `s.PairwiseDisjoint id`. We prefer the latter
in order to allow dot notation on `Set.PairwiseDisjoint`, even though the former unfolds more
nicely. -/
def PairwiseDisjoint (s : Set ι) (f : ι → α) : Prop 
goal: Prop

full_name: Set.PairwiseDisjoint.subset
code: theorem PairwiseDisjoint.subset (ht : t.PairwiseDisjoint f) (h : s ⊆ t) : s.PairwiseDisjoint f 
goal: s.PairwiseDisjoint f

full_name: Set.PairwiseDisjoint.mono_on
code: theorem PairwiseDisjoint.mono_on (hs : s.PairwiseDisjoint f) (h : ∀ ⦃i⦄, i ∈ s → g i ≤ f i) :
    s.PairwiseDisjoint g 
goal: s.PairwiseDisjoint g

full_name: Set.PairwiseDisjoint.mono
code: theorem PairwiseDisjoint.mono (hs : s.PairwiseDisjoint f) (h : g ≤ f) : s.PairwiseDisjoint g 
goal: s.PairwiseDisjoint g

full_name: Set.pairwiseDisjoint_empty
code: @[simp]
theorem pairwiseDisjoint_empty : (∅ : Set ι).PairwiseDisjoint f 
goal: ∅.PairwiseDisjoint f

full_name: Set.pairwiseDisjoint_singleton
code: @[simp]
theorem pairwiseDisjoint_singleton (i : ι) (f : ι → α) : PairwiseDisjoint {i} f 
goal: {i}.PairwiseDisjoint f

full_name: Set.pairwiseDisjoint_insert
code: theorem pairwiseDisjoint_insert {i : ι} :
    (insert i s).PairwiseDisjoint f ↔
      s.PairwiseDisjoint f ∧ ∀ j ∈ s, i ≠ j → Disjoint (f i) (f j) 
goal: (insert i s).PairwiseDisjoint f ↔ s.PairwiseDisjoint f ∧ ∀ j ∈ s, i ≠ j → Disjoint (f i) (f j)

full_name: Set.pairwiseDisjoint_insert_of_not_mem
code: theorem pairwiseDisjoint_insert_of_not_mem {i : ι} (hi : i ∉ s) :
    (insert i s).PairwiseDisjoint f ↔ s.PairwiseDisjoint f ∧ ∀ j ∈ s, Disjoint (f i) (f j) 
goal: (insert i s).PairwiseDisjoint f ↔ s.PairwiseDisjoint f ∧ ∀ j ∈ s, Disjoint (f i) (f j)

full_name: Set.PairwiseDisjoint.insert
code: protected theorem PairwiseDisjoint.insert (hs : s.PairwiseDisjoint f) {i : ι}
    (h : ∀ j ∈ s, i ≠ j → Disjoint (f i) (f j)) : (insert i s).PairwiseDisjoint f 
goal: (insert i s).PairwiseDisjoint f

full_name: Set.PairwiseDisjoint.insert_of_not_mem
code: theorem PairwiseDisjoint.insert_of_not_mem (hs : s.PairwiseDisjoint f) {i : ι} (hi : i ∉ s)
    (h : ∀ j ∈ s, Disjoint (f i) (f j)) : (insert i s).PairwiseDisjoint f 
goal: (insert i s).PairwiseDisjoint f

full_name: Set.PairwiseDisjoint.image_of_le
code: theorem PairwiseDisjoint.image_of_le (hs : s.PairwiseDisjoint f) {g : ι → ι} (hg : f ∘ g ≤ f) :
    (g '' s).PairwiseDisjoint f 
goal: (g '' s).PairwiseDisjoint f

full_name: Set.InjOn.pairwiseDisjoint_image
code: theorem InjOn.pairwiseDisjoint_image {g : ι' → ι} {s : Set ι'} (h : s.InjOn g) :
    (g '' s).PairwiseDisjoint f ↔ s.PairwiseDisjoint (f ∘ g) 
goal: (g '' s).PairwiseDisjoint f ↔ s.PairwiseDisjoint (f ∘ g)

full_name: Set.PairwiseDisjoint.range
code: theorem PairwiseDisjoint.range (g : s → ι) (hg : ∀ i : s, f (g i) ≤ f i)
    (ht : s.PairwiseDisjoint f) : (range g).PairwiseDisjoint f 
goal: (Set.range g).PairwiseDisjoint f

full_name: Set.pairwiseDisjoint_union
code: theorem pairwiseDisjoint_union :
    (s ∪ t).PairwiseDisjoint f ↔
      s.PairwiseDisjoint f ∧
        t.PairwiseDisjoint f ∧ ∀ ⦃i⦄, i ∈ s → ∀ ⦃j⦄, j ∈ t → i ≠ j → Disjoint (f i) (f j) 
goal: (s ∪ t).PairwiseDisjoint f ↔
  s.PairwiseDisjoint f ∧ t.PairwiseDisjoint f ∧ ∀ ⦃i : ι⦄, i ∈ s → ∀ ⦃j : ι⦄, j ∈ t → i ≠ j → Disjoint (f i) (f j)

full_name: Set.PairwiseDisjoint.union
code: theorem PairwiseDisjoint.union (hs : s.PairwiseDisjoint f) (ht : t.PairwiseDisjoint f)
    (h : ∀ ⦃i⦄, i ∈ s → ∀ ⦃j⦄, j ∈ t → i ≠ j → Disjoint (f i) (f j)) : (s ∪ t).PairwiseDisjoint f 
goal: (s ∪ t).PairwiseDisjoint f

full_name: Set.PairwiseDisjoint.elim
code: theorem PairwiseDisjoint.elim (hs : s.PairwiseDisjoint f) {i j : ι} (hi : i ∈ s) (hj : j ∈ s)
    (h : ¬Disjoint (f i) (f j)) : i = j 
goal: i = j

full_name: Set.PairwiseDisjoint.eq_or_disjoint
code: lemma PairwiseDisjoint.eq_or_disjoint
    (h : s.PairwiseDisjoint f) {i j : ι} (hi : i ∈ s) (hj : j ∈ s) :
    i = j ∨ Disjoint (f i) (f j) 
goal: i = j ∨ Disjoint (f i) (f j)

full_name: Set.pairwiseDisjoint_range_iff
code: lemma pairwiseDisjoint_range_iff {α β : Type*} {f : α → (Set β)} :
    (Set.range f).PairwiseDisjoint id ↔ ∀ x y, f x = f y ∨ Disjoint (f x) (f y) 
goal: (Set.range f).PairwiseDisjoint id ↔ ∀ (x y : α), f x = f y ∨ Disjoint (f x) (f y)

full_name: Pairwise.pairwiseDisjoint
code: /-- If the range of `f` is pairwise disjoint, then the image of any set `s` under `f` is as well. -/
lemma _root_.Pairwise.pairwiseDisjoint (h : Pairwise (Disjoint on f)) (s : Set ι) :
    s.PairwiseDisjoint f 
goal: s.PairwiseDisjoint f

full_name: Set.PairwiseDisjoint.elim'
code: theorem PairwiseDisjoint.elim' (hs : s.PairwiseDisjoint f) {i j : ι} (hi : i ∈ s) (hj : j ∈ s)
    (h : f i ⊓ f j ≠ ⊥) : i = j 
goal: i = j

full_name: Set.PairwiseDisjoint.eq_of_le
code: theorem PairwiseDisjoint.eq_of_le (hs : s.PairwiseDisjoint f) {i j : ι} (hi : i ∈ s) (hj : j ∈ s)
    (hf : f i ≠ ⊥) (hij : f i ≤ f j) : i = j 
goal: i = j

full_name: Set.pairwiseDisjoint_range_singleton
code: theorem pairwiseDisjoint_range_singleton :
    (range (singleton : ι → Set ι)).PairwiseDisjoint id 
goal: (Set.range singleton).PairwiseDisjoint id

full_name: Set.pairwiseDisjoint_fiber
code: theorem pairwiseDisjoint_fiber (f : ι → α) (s : Set α) : s.PairwiseDisjoint fun a => f ⁻¹' {a} 
goal: s.PairwiseDisjoint fun a => f ⁻¹' {a}

full_name: Set.PairwiseDisjoint.elim_set
code: theorem PairwiseDisjoint.elim_set {s : Set ι} {f : ι → Set α} (hs : s.PairwiseDisjoint f) {i j : ι}
    (hi : i ∈ s) (hj : j ∈ s) (a : α) (hai : a ∈ f i) (haj : a ∈ f j) : i = j 
goal: i = j

full_name: Set.PairwiseDisjoint.prod
code: theorem PairwiseDisjoint.prod {f : ι → Set α} {g : ι' → Set β} (hs : s.PairwiseDisjoint f)
    (ht : t.PairwiseDisjoint g) :
    (s ×ˢ t : Set (ι × ι')).PairwiseDisjoint fun i => f i.1 ×ˢ g i.2 
goal: (s ×ˢ t).PairwiseDisjoint fun i => f i.1 ×ˢ g i.2

full_name: Set.pairwiseDisjoint_pi
code: theorem pairwiseDisjoint_pi {ι' α : ι → Type*} {s : ∀ i, Set (ι' i)} {f : ∀ i, ι' i → Set (α i)}
    (hs : ∀ i, (s i).PairwiseDisjoint (f i)) :
    ((univ : Set ι).pi s).PairwiseDisjoint fun I => (univ : Set ι).pi fun i => f _ (I i) 
goal: (Set.univ.pi s).PairwiseDisjoint fun I => Set.univ.pi fun i => f i (I i)

full_name: Set.pairwiseDisjoint_image_right_iff
code: /-- The partial images of a binary function `f` whose partial evaluations are injective are pairwise
disjoint iff `f` is injective . -/
theorem pairwiseDisjoint_image_right_iff {f : α → β → γ} {s : Set α} {t : Set β}
    (hf : ∀ a ∈ s, Injective (f a)) :
    (s.PairwiseDisjoint fun a => f a '' t) ↔ (s ×ˢ t).InjOn fun p => f p.1 p.2 
goal: (s.PairwiseDisjoint fun a => f a '' t) ↔ Set.InjOn (fun p => f p.1 p.2) (s ×ˢ t)

full_name: Set.pairwiseDisjoint_image_left_iff
code: /-- The partial images of a binary function `f` whose partial evaluations are injective are pairwise
disjoint iff `f` is injective . -/
theorem pairwiseDisjoint_image_left_iff {f : α → β → γ} {s : Set α} {t : Set β}
    (hf : ∀ b ∈ t, Injective fun a => f a b) :
    (t.PairwiseDisjoint fun b => (fun a => f a b) '' s) ↔ (s ×ˢ t).InjOn fun p => f p.1 p.2 
goal: (t.PairwiseDisjoint fun b => (fun a => f a b) '' s) ↔ Set.InjOn (fun p => f p.1 p.2) (s ×ˢ t)

full_name: Set.exists_ne_mem_inter_of_not_pairwiseDisjoint
code: lemma exists_ne_mem_inter_of_not_pairwiseDisjoint
    {f : ι → Set α} (h : ¬ s.PairwiseDisjoint f) :
    ∃ i ∈ s, ∃ j ∈ s, i ≠ j ∧ ∃ x : α, x ∈ f i ∩ f j 
goal: ∃ i ∈ s, ∃ j ∈ s, i ≠ j ∧ ∃ x, x ∈ f i ∩ f j

full_name: Set.exists_lt_mem_inter_of_not_pairwiseDisjoint
code: lemma exists_lt_mem_inter_of_not_pairwiseDisjoint [LinearOrder ι]
    {f : ι → Set α} (h : ¬ s.PairwiseDisjoint f) :
    ∃ i ∈ s, ∃ j ∈ s, i < j ∧ ∃ x, x ∈ f i ∩ f j 
goal: ∃ i ∈ s, ∃ j ∈ s, i < j ∧ ∃ x, x ∈ f i ∩ f j

full_name: exists_ne_mem_inter_of_not_pairwise_disjoint
code: lemma exists_ne_mem_inter_of_not_pairwise_disjoint
    {f : ι → Set α} (h : ¬ Pairwise (Disjoint on f)) :
    ∃ i j : ι, i ≠ j ∧ ∃ x, x ∈ f i ∩ f j 
goal: ∃ i j, i ≠ j ∧ ∃ x, x ∈ f i ∩ f j

full_name: exists_lt_mem_inter_of_not_pairwise_disjoint
code: lemma exists_lt_mem_inter_of_not_pairwise_disjoint [LinearOrder ι]
    {f : ι → Set α} (h : ¬ Pairwise (Disjoint on f)) :
    ∃ i j : ι, i < j ∧ ∃ x, x ∈ f i ∩ f j 
goal: ∃ i j, i < j ∧ ∃ x, x ∈ f i ∩ f j

full_name: pairwise_disjoint_fiber
code: theorem pairwise_disjoint_fiber (f : ι → α) : Pairwise (Disjoint on fun a : α => f ⁻¹' {a}) 
goal: Pairwise (Disjoint on fun a => f ⁻¹' {a})

full_name: subsingleton_setOf_mem_iff_pairwise_disjoint
code: lemma subsingleton_setOf_mem_iff_pairwise_disjoint {f : ι → Set α} :
    (∀ a, {i | a ∈ f i}.Subsingleton) ↔ Pairwise (Disjoint on f) 
goal: (∀ (a : α), {i | a ∈ f i}.Subsingleton) ↔ Pairwise (Disjoint on f)