ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Set.forall_image2_iff
theorem forall_image2_iff {p : γ → Prop} :
    (∀ z ∈ image2 f s t, p z) ↔ ∀ x ∈ s, ∀ y ∈ t, p (f x y) 
Arguments: {α : Type u_1} {β : Type u_3} {γ : Type u_5} {f : α → β → γ} {s : Set α} {t : Set β} {p : γ → Prop}
Goal: (∀ z ∈ Set.image2 f s t, p z) ↔ ∀ x ∈ s, ∀ y ∈ t, p (f x y)
-- Set.image2_subset_iff
@[simp]
theorem image2_subset_iff {u : Set γ} : image2 f s t ⊆ u ↔ ∀ x ∈ s, ∀ y ∈ t, f x y ∈ u 
Arguments: {α : Type u_1} {β : Type u_3} {γ : Type u_5} {f : α → β → γ} {s : Set α} {t : Set β} {u : Set γ}
Goal: Set.image2 f s t ⊆ u ↔ ∀ x ∈ s, ∀ y ∈ t, f x y ∈ u
-- Set.image2_subset_iff_left
theorem image2_subset_iff_left : image2 f s t ⊆ u ↔ ∀ a ∈ s, (fun b => f a b) '' t ⊆ u 
Arguments: {α : Type u_1} {β : Type u_3} {γ : Type u_5} {f : α → β → γ} {s : Set α} {t : Set β} {u : Set γ}
Goal: Set.image2 f s t ⊆ u ↔ ∀ a ∈ s, (fun b => f a b) '' t ⊆ u
-- Set.image2_subset_iff_right
theorem image2_subset_iff_right : image2 f s t ⊆ u ↔ ∀ b ∈ t, (fun a => f a b) '' s ⊆ u 
Arguments: {α : Type u_1} {β : Type u_3} {γ : Type u_5} {f : α → β → γ} {s : Set α} {t : Set β} {u : Set γ}
Goal: Set.image2 f s t ⊆ u ↔ ∀ b ∈ t, (fun a => f a b) '' s ⊆ u
-- Set.image_prod
lemma image_prod : (fun x : α × β ↦ f x.1 x.2) '' s ×ˢ t = image2 f s t 
Arguments: {α : Type u_1} {β : Type u_3} {γ : Type u_5} (f : α → β → γ) {s : Set α} {t : Set β}
Goal: (fun x => f x.1 x.2) '' s ×ˢ t = Set.image2 f s t
-- Set.image_uncurry_prod
@[simp] lemma image_uncurry_prod (s : Set α) (t : Set β) : uncurry f '' s ×ˢ t = image2 f s t 
Arguments: {α : Type u_1} {β : Type u_3} {γ : Type u_5} (f : α → β → γ) (s : Set α) (t : Set β)
Goal: Function.uncurry f '' s ×ˢ t = Set.image2 f s t
-- Set.image2_mk_eq_prod
@[simp] lemma image2_mk_eq_prod : image2 Prod.mk s t = s ×ˢ t 
Arguments: {α : Type u_1} {β : Type u_3} {s : Set α} {t : Set β}
Goal: Set.image2 Prod.mk s t = s ×ˢ t
-- Set.image2_curry
lemma image2_curry (f : α × β → γ) (s : Set α) (t : Set β) :
    image2 (fun a b ↦ f (a, b)) s t = f '' s ×ˢ t 
Arguments: {α : Type u_1} {β : Type u_3} {γ : Type u_5} (f : α × β → γ) (s : Set α) (t : Set β)
Goal: Set.image2 (fun a b => f (a, b)) s t = f '' s ×ˢ t
-- Set.image2_swap
theorem image2_swap (s : Set α) (t : Set β) : image2 f s t = image2 (fun a b => f b a) t s 
Arguments: {α : Type u_1} {β : Type u_3} {γ : Type u_5} (f : α → β → γ) (s : Set α) (t : Set β)
Goal: Set.image2 f s t = Set.image2 (fun a b => f b a) t s
-- Set.image2_union_left
theorem image2_union_left : image2 f (s ∪ s') t = image2 f s t ∪ image2 f s' t 
Arguments: {α : Type u_1} {β : Type u_3} {γ : Type u_5} {f : α → β → γ} {s s' : Set α} {t : Set β}
Goal: Set.image2 f (s ∪ s') t = Set.image2 f s t ∪ Set.image2 f s' t
-- Set.image2_union_right
theorem image2_union_right : image2 f s (t ∪ t') = image2 f s t ∪ image2 f s t' 
Arguments: {α : Type u_1} {β : Type u_3} {γ : Type u_5} {f : α → β → γ} {s : Set α} {t t' : Set β}
Goal: Set.image2 f s (t ∪ t') = Set.image2 f s t ∪ Set.image2 f s t'
-- Set.image2_inter_left
lemma image2_inter_left (hf : Injective2 f) :
    image2 f (s ∩ s') t = image2 f s t ∩ image2 f s' t 
Arguments: {α : Type u_1} {β : Type u_3} {γ : Type u_5} {f : α → β → γ} {s s' : Set α} {t : Set β} (hf : Function.Injective2 f)
Goal: Set.image2 f (s ∩ s') t = Set.image2 f s t ∩ Set.image2 f s' t
-- Set.image2_inter_right
lemma image2_inter_right (hf : Injective2 f) :
    image2 f s (t ∩ t') = image2 f s t ∩ image2 f s t' 
Arguments: {α : Type u_1} {β : Type u_3} {γ : Type u_5} {f : α → β → γ} {s : Set α} {t t' : Set β} (hf : Function.Injective2 f)
Goal: Set.image2 f s (t ∩ t') = Set.image2 f s t ∩ Set.image2 f s t'
-- Set.image2_empty_left
@[simp]
theorem image2_empty_left : image2 f ∅ t = ∅ 
Arguments: {α : Type u_1} {β : Type u_3} {γ : Type u_5} {f : α → β → γ} {t : Set β}
Goal: Set.image2 f ∅ t = ∅
-- Set.image2_empty_right
@[simp]
theorem image2_empty_right : image2 f s ∅ = ∅ 
Arguments: {α : Type u_1} {β : Type u_3} {γ : Type u_5} {f : α → β → γ} {s : Set α}
Goal: Set.image2 f s ∅ = ∅
-- Set.Nonempty.image2
theorem Nonempty.image2 : s.Nonempty → t.Nonempty → (image2 f s t).Nonempty 
Arguments: {α : Type u_1} {β : Type u_3} {γ : Type u_5} {f : α → β → γ} {s : Set α} {t : Set β}
Goal: s.Nonempty → t.Nonempty → (Set.image2 f s t).Nonempty
-- Set.image2_nonempty_iff
@[simp]
theorem image2_nonempty_iff : (image2 f s t).Nonempty ↔ s.Nonempty ∧ t.Nonempty 
Arguments: {α : Type u_1} {β : Type u_3} {γ : Type u_5} {f : α → β → γ} {s : Set α} {t : Set β}
Goal: (Set.image2 f s t).Nonempty ↔ s.Nonempty ∧ t.Nonempty
-- Set.Nonempty.of_image2_left
theorem Nonempty.of_image2_left (h : (Set.image2 f s t).Nonempty) : s.Nonempty 
Arguments: {α : Type u_1} {β : Type u_3} {γ : Type u_5} {f : α → β → γ} {s : Set α} {t : Set β} (h : (Set.image2 f s t).Nonempty)
Goal: s.Nonempty
-- Set.Nonempty.of_image2_right
theorem Nonempty.of_image2_right (h : (Set.image2 f s t).Nonempty) : t.Nonempty 
Arguments: {α : Type u_1} {β : Type u_3} {γ : Type u_5} {f : α → β → γ} {s : Set α} {t : Set β} (h : (Set.image2 f s t).Nonempty)
Goal: t.Nonempty
-- Set.image2_eq_empty_iff
@[simp]
theorem image2_eq_empty_iff : image2 f s t = ∅ ↔ s = ∅ ∨ t = ∅ 
Arguments: {α : Type u_1} {β : Type u_3} {γ : Type u_5} {f : α → β → γ} {s : Set α} {t : Set β}
Goal: Set.image2 f s t = ∅ ↔ s = ∅ ∨ t = ∅
-- Set.Subsingleton.image2
theorem Subsingleton.image2 (hs : s.Subsingleton) (ht : t.Subsingleton) (f : α → β → γ) :
    (image2 f s t).Subsingleton 
Arguments: {α : Type u_1} {β : Type u_3} {γ : Type u_5} {s : Set α} {t : Set β} (hs : s.Subsingleton) (ht : t.Subsingleton) (f : α → β → γ)
Goal: (Set.image2 f s t).Subsingleton
-- Set.image2_inter_subset_left
theorem image2_inter_subset_left : image2 f (s ∩ s') t ⊆ image2 f s t ∩ image2 f s' t 
Arguments: {α : Type u_1} {β : Type u_3} {γ : Type u_5} {f : α → β → γ} {s s' : Set α} {t : Set β}
Goal: Set.image2 f (s ∩ s') t ⊆ Set.image2 f s t ∩ Set.image2 f s' t
-- Set.image2_inter_subset_right
theorem image2_inter_subset_right : image2 f s (t ∩ t') ⊆ image2 f s t ∩ image2 f s t' 
Arguments: {α : Type u_1} {β : Type u_3} {γ : Type u_5} {f : α → β → γ} {s : Set α} {t t' : Set β}
Goal: Set.image2 f s (t ∩ t') ⊆ Set.image2 f s t ∩ Set.image2 f s t'
-- Set.image2_singleton_left
@[simp]
theorem image2_singleton_left : image2 f {a} t = f a '' t 
Arguments: {α : Type u_1} {β : Type u_3} {γ : Type u_5} {f : α → β → γ} {t : Set β} {a : α}
Goal: Set.image2 f {a} t = f a '' t
-- Set.image2_singleton_right
@[simp]
theorem image2_singleton_right : image2 f s {b} = (fun a => f a b) '' s 
Arguments: {α : Type u_1} {β : Type u_3} {γ : Type u_5} {f : α → β → γ} {s : Set α} {b : β}
Goal: Set.image2 f s {b} = (fun a => f a b) '' s
-- Set.image2_singleton
theorem image2_singleton : image2 f {a} {b} = {f a b} 
Arguments: {α : Type u_1} {β : Type u_3} {γ : Type u_5} {f : α → β → γ} {a : α} {b : β}
Goal: Set.image2 f {a} {b} = {f a b}
-- Set.image2_insert_left
@[simp]
theorem image2_insert_left : image2 f (insert a s) t = (fun b => f a b) '' t ∪ image2 f s t 
Arguments: {α : Type u_1} {β : Type u_3} {γ : Type u_5} {f : α → β → γ} {s : Set α} {t : Set β} {a : α}
Goal: Set.image2 f (insert a s) t = (fun b => f a b) '' t ∪ Set.image2 f s t
-- Set.image2_insert_right
@[simp]
theorem image2_insert_right : image2 f s (insert b t) = (fun a => f a b) '' s ∪ image2 f s t 
Arguments: {α : Type u_1} {β : Type u_3} {γ : Type u_5} {f : α → β → γ} {s : Set α} {t : Set β} {b : β}
Goal: Set.image2 f s (insert b t) = (fun a => f a b) '' s ∪ Set.image2 f s t
-- Set.image2_congr
@[congr]
theorem image2_congr (h : ∀ a ∈ s, ∀ b ∈ t, f a b = f' a b) : image2 f s t = image2 f' s t 
Arguments: {α : Type u_1} {β : Type u_3} {γ : Type u_5} {f f' : α → β → γ} {s : Set α} {t : Set β} (h : ∀ a ∈ s, ∀ b ∈ t, f a b = f' a b)
Goal: Set.image2 f s t = Set.image2 f' s t
-- Set.image2_congr'
theorem image2_congr' (h : ∀ a b, f a b = f' a b) : image2 f s t = image2 f' s t 
Arguments: {α : Type u_1} {β : Type u_3} {γ : Type u_5} {f f' : α → β → γ} {s : Set α} {t : Set β} (h : ∀ (a : α) (b : β), f a b = f' a b)
Goal: Set.image2 f s t = Set.image2 f' s t
-- Set.image_image2
theorem image_image2 (f : α → β → γ) (g : γ → δ) :
    g '' image2 f s t = image2 (fun a b => g (f a b)) s t 
Arguments: {α : Type u_1} {β : Type u_3} {γ : Type u_5} {δ : Type u_7} {s : Set α} {t : Set β} (f : α → β → γ) (g : γ → δ)
Goal: g '' Set.image2 f s t = Set.image2 (fun a b => g (f a b)) s t
-- Set.image2_image_left
theorem image2_image_left (f : γ → β → δ) (g : α → γ) :
    image2 f (g '' s) t = image2 (fun a b => f (g a) b) s t 
Arguments: {α : Type u_1} {β : Type u_3} {γ : Type u_5} {δ : Type u_7} {s : Set α} {t : Set β} (f : γ → β → δ) (g : α → γ)
Goal: Set.image2 f (g '' s) t = Set.image2 (fun a b => f (g a) b) s t
-- Set.image2_image_right
theorem image2_image_right (f : α → γ → δ) (g : β → γ) :
    image2 f s (g '' t) = image2 (fun a b => f a (g b)) s t 
Arguments: {α : Type u_1} {β : Type u_3} {γ : Type u_5} {δ : Type u_7} {s : Set α} {t : Set β} (f : α → γ → δ) (g : β → γ)
Goal: Set.image2 f s (g '' t) = Set.image2 (fun a b => f a (g b)) s t
-- Set.image2_left
@[simp]
theorem image2_left (h : t.Nonempty) : image2 (fun x _ => x) s t = s 
Arguments: {α : Type u_1} {β : Type u_3} {s : Set α} {t : Set β} (h : t.Nonempty)
Goal: Set.image2 (fun x x_1 => x) s t = s
-- Set.image2_right
@[simp]
theorem image2_right (h : s.Nonempty) : image2 (fun _ y => y) s t = t 
Arguments: {α : Type u_1} {β : Type u_3} {s : Set α} {t : Set β} (h : s.Nonempty)
Goal: Set.image2 (fun x y => y) s t = t
-- Set.image2_range
lemma image2_range (f : α' → β' → γ) (g : α → α') (h : β → β') :
    image2 f (range g) (range h) = range fun x : α × β ↦ f (g x.1) (h x.2) 
Arguments: {α : Type u_1} {α' : Type u_2} {β : Type u_3} {β' : Type u_4} {γ : Type u_5} (f : α' → β' → γ) (g : α → α') (h : β → β')
Goal: Set.image2 f (Set.range g) (Set.range h) = Set.range fun x => f (g x.1) (h x.2)
-- Set.image2_assoc
theorem image2_assoc {f : δ → γ → ε} {g : α → β → δ} {f' : α → ε' → ε} {g' : β → γ → ε'}
    (h_assoc : ∀ a b c, f (g a b) c = f' a (g' b c)) :
    image2 f (image2 g s t) u = image2 f' s (image2 g' t u) 
Arguments: {α : Type u_1} {β : Type u_3} {γ : Type u_5} {δ : Type u_7} {ε : Type u_9} {ε' : Type u_10} {s : Set α} {t : Set β} {u : Set γ} {f : δ → γ → ε} {g : α → β → δ} {f' : α → ε' → ε} {g' : β → γ → ε'} (h_assoc : ∀ (a : α) (b : β) (c : γ), f (g a b) c = f' a (g' b c))
Goal: Set.image2 f (Set.image2 g s t) u = Set.image2 f' s (Set.image2 g' t u)
-- Set.image2_comm
theorem image2_comm {g : β → α → γ} (h_comm : ∀ a b, f a b = g b a) : image2 f s t = image2 g t s 
Arguments: {α : Type u_1} {β : Type u_3} {γ : Type u_5} {f : α → β → γ} {s : Set α} {t : Set β} {g : β → α → γ} (h_comm : ∀ (a : α) (b : β), f a b = g b a)
Goal: Set.image2 f s t = Set.image2 g t s
-- Set.image2_left_comm
theorem image2_left_comm {f : α → δ → ε} {g : β → γ → δ} {f' : α → γ → δ'} {g' : β → δ' → ε}
    (h_left_comm : ∀ a b c, f a (g b c) = g' b (f' a c)) :
    image2 f s (image2 g t u) = image2 g' t (image2 f' s u) 
Arguments: {α : Type u_1} {β : Type u_3} {γ : Type u_5} {δ : Type u_7} {δ' : Type u_8} {ε : Type u_9} {s : Set α} {t : Set β} {u : Set γ} {f : α → δ → ε} {g : β → γ → δ} {f' : α → γ → δ'} {g' : β → δ' → ε} (h_left_comm : ∀ (a : α) (b : β) (c : γ), f a (g b c) = g' b (f' a c))
Goal: Set.image2 f s (Set.image2 g t u) = Set.image2 g' t (Set.image2 f' s u)
-- Set.image2_right_comm
theorem image2_right_comm {f : δ → γ → ε} {g : α → β → δ} {f' : α → γ → δ'} {g' : δ' → β → ε}
    (h_right_comm : ∀ a b c, f (g a b) c = g' (f' a c) b) :
    image2 f (image2 g s t) u = image2 g' (image2 f' s u) t 
Arguments: {α : Type u_1} {β : Type u_3} {γ : Type u_5} {δ : Type u_7} {δ' : Type u_8} {ε : Type u_9} {s : Set α} {t : Set β} {u : Set γ} {f : δ → γ → ε} {g : α → β → δ} {f' : α → γ → δ'} {g' : δ' → β → ε} (h_right_comm : ∀ (a : α) (b : β) (c : γ), f (g a b) c = g' (f' a c) b)
Goal: Set.image2 f (Set.image2 g s t) u = Set.image2 g' (Set.image2 f' s u) t
-- Set.image2_image2_image2_comm
theorem image2_image2_image2_comm {f : ε → ζ → ν} {g : α → β → ε} {h : γ → δ → ζ} {f' : ε' → ζ' → ν}
    {g' : α → γ → ε'} {h' : β → δ → ζ'}
    (h_comm : ∀ a b c d, f (g a b) (h c d) = f' (g' a c) (h' b d)) :
    image2 f (image2 g s t) (image2 h u v) = image2 f' (image2 g' s u) (image2 h' t v) 
Arguments: {α : Type u_1} {β : Type u_3} {γ : Type u_5} {δ : Type u_7} {ε : Type u_9} {ε' : Type u_10} {ζ : Type u_11} {ζ' : Type u_12} {ν : Type u_13} {s : Set α} {t : Set β} {u : Set γ} {v : Set δ} {f : ε → ζ → ν} {g : α → β → ε} {h : γ → δ → ζ} {f' : ε' → ζ' → ν} {g' : α → γ → ε'} {h' : β → δ → ζ'} (h_comm : ∀ (a : α) (b : β) (c : γ) (d : δ), f (g a b) (h c d) = f' (g' a c) (h' b d))
Goal: Set.image2 f (Set.image2 g s t) (Set.image2 h u v) = Set.image2 f' (Set.image2 g' s u) (Set.image2 h' t v)
-- Set.image_image2_distrib
theorem image_image2_distrib {g : γ → δ} {f' : α' → β' → δ} {g₁ : α → α'} {g₂ : β → β'}
    (h_distrib : ∀ a b, g (f a b) = f' (g₁ a) (g₂ b)) :
    (image2 f s t).image g = image2 f' (s.image g₁) (t.image g₂) 
Arguments: {α : Type u_1} {α' : Type u_2} {β : Type u_3} {β' : Type u_4} {γ : Type u_5} {δ : Type u_7} {f : α → β → γ} {s : Set α} {t : Set β} {g : γ → δ} {f' : α' → β' → δ} {g₁ : α → α'} {g₂ : β → β'} (h_distrib : ∀ (a : α) (b : β), g (f a b) = f' (g₁ a) (g₂ b))
Goal: g '' Set.image2 f s t = Set.image2 f' (g₁ '' s) (g₂ '' t)
-- Set.image_image2_distrib_left
theorem image_image2_distrib_left {g : γ → δ} {f' : α' → β → δ} {g' : α → α'}
    (h_distrib : ∀ a b, g (f a b) = f' (g' a) b) :
    (image2 f s t).image g = image2 f' (s.image g') t 
Arguments: {α : Type u_1} {α' : Type u_2} {β : Type u_3} {γ : Type u_5} {δ : Type u_7} {f : α → β → γ} {s : Set α} {t : Set β} {g : γ → δ} {f' : α' → β → δ} {g' : α → α'} (h_distrib : ∀ (a : α) (b : β), g (f a b) = f' (g' a) b)
Goal: g '' Set.image2 f s t = Set.image2 f' (g' '' s) t
-- Set.image_image2_distrib_right
theorem image_image2_distrib_right {g : γ → δ} {f' : α → β' → δ} {g' : β → β'}
    (h_distrib : ∀ a b, g (f a b) = f' a (g' b)) :
    (image2 f s t).image g = image2 f' s (t.image g') 
Arguments: {α : Type u_1} {β : Type u_3} {β' : Type u_4} {γ : Type u_5} {δ : Type u_7} {f : α → β → γ} {s : Set α} {t : Set β} {g : γ → δ} {f' : α → β' → δ} {g' : β → β'} (h_distrib : ∀ (a : α) (b : β), g (f a b) = f' a (g' b))
Goal: g '' Set.image2 f s t = Set.image2 f' s (g' '' t)
-- Set.image2_image_left_comm
theorem image2_image_left_comm {f : α' → β → γ} {g : α → α'} {f' : α → β → δ} {g' : δ → γ}
    (h_left_comm : ∀ a b, f (g a) b = g' (f' a b)) :
    image2 f (s.image g) t = (image2 f' s t).image g' 
Arguments: {α : Type u_1} {α' : Type u_2} {β : Type u_3} {γ : Type u_5} {δ : Type u_7} {s : Set α} {t : Set β} {f : α' → β → γ} {g : α → α'} {f' : α → β → δ} {g' : δ → γ} (h_left_comm : ∀ (a : α) (b : β), f (g a) b = g' (f' a b))
Goal: Set.image2 f (g '' s) t = g' '' Set.image2 f' s t
-- Set.image_image2_right_comm
theorem image_image2_right_comm {f : α → β' → γ} {g : β → β'} {f' : α → β → δ} {g' : δ → γ}
    (h_right_comm : ∀ a b, f a (g b) = g' (f' a b)) :
    image2 f s (t.image g) = (image2 f' s t).image g' 
Arguments: {α : Type u_1} {β : Type u_3} {β' : Type u_4} {γ : Type u_5} {δ : Type u_7} {s : Set α} {t : Set β} {f : α → β' → γ} {g : β → β'} {f' : α → β → δ} {g' : δ → γ} (h_right_comm : ∀ (a : α) (b : β), f a (g b) = g' (f' a b))
Goal: Set.image2 f s (g '' t) = g' '' Set.image2 f' s t
-- Set.image2_distrib_subset_left
theorem image2_distrib_subset_left {f : α → δ → ε} {g : β → γ → δ} {f₁ : α → β → β'}
    {f₂ : α → γ → γ'} {g' : β' → γ' → ε} (h_distrib : ∀ a b c, f a (g b c) = g' (f₁ a b) (f₂ a c)) :
    image2 f s (image2 g t u) ⊆ image2 g' (image2 f₁ s t) (image2 f₂ s u) 
Arguments: {α : Type u_1} {β : Type u_3} {β' : Type u_4} {γ : Type u_5} {γ' : Type u_6} {δ : Type u_7} {ε : Type u_9} {s : Set α} {t : Set β} {u : Set γ} {f : α → δ → ε} {g : β → γ → δ} {f₁ : α → β → β'} {f₂ : α → γ → γ'} {g' : β' → γ' → ε} (h_distrib : ∀ (a : α) (b : β) (c : γ), f a (g b c) = g' (f₁ a b) (f₂ a c))
Goal: Set.image2 f s (Set.image2 g t u) ⊆ Set.image2 g' (Set.image2 f₁ s t) (Set.image2 f₂ s u)
-- Set.image2_distrib_subset_right
theorem image2_distrib_subset_right {f : δ → γ → ε} {g : α → β → δ} {f₁ : α → γ → α'}
    {f₂ : β → γ → β'} {g' : α' → β' → ε} (h_distrib : ∀ a b c, f (g a b) c = g' (f₁ a c) (f₂ b c)) :
    image2 f (image2 g s t) u ⊆ image2 g' (image2 f₁ s u) (image2 f₂ t u) 
Arguments: {α : Type u_1} {α' : Type u_2} {β : Type u_3} {β' : Type u_4} {γ : Type u_5} {δ : Type u_7} {ε : Type u_9} {s : Set α} {t : Set β} {u : Set γ} {f : δ → γ → ε} {g : α → β → δ} {f₁ : α → γ → α'} {f₂ : β → γ → β'} {g' : α' → β' → ε} (h_distrib : ∀ (a : α) (b : β) (c : γ), f (g a b) c = g' (f₁ a c) (f₂ b c))
Goal: Set.image2 f (Set.image2 g s t) u ⊆ Set.image2 g' (Set.image2 f₁ s u) (Set.image2 f₂ t u)
-- Set.image_image2_antidistrib
theorem image_image2_antidistrib {g : γ → δ} {f' : β' → α' → δ} {g₁ : β → β'} {g₂ : α → α'}
    (h_antidistrib : ∀ a b, g (f a b) = f' (g₁ b) (g₂ a)) :
    (image2 f s t).image g = image2 f' (t.image g₁) (s.image g₂) 
Arguments: {α : Type u_1} {α' : Type u_2} {β : Type u_3} {β' : Type u_4} {γ : Type u_5} {δ : Type u_7} {f : α → β → γ} {s : Set α} {t : Set β} {g : γ → δ} {f' : β' → α' → δ} {g₁ : β → β'} {g₂ : α → α'} (h_antidistrib : ∀ (a : α) (b : β), g (f a b) = f' (g₁ b) (g₂ a))
Goal: g '' Set.image2 f s t = Set.image2 f' (g₁ '' t) (g₂ '' s)
-- Set.image_image2_antidistrib_left
theorem image_image2_antidistrib_left {g : γ → δ} {f' : β' → α → δ} {g' : β → β'}
    (h_antidistrib : ∀ a b, g (f a b) = f' (g' b) a) :
    (image2 f s t).image g = image2 f' (t.image g') s 
Arguments: {α : Type u_1} {β : Type u_3} {β' : Type u_4} {γ : Type u_5} {δ : Type u_7} {f : α → β → γ} {s : Set α} {t : Set β} {g : γ → δ} {f' : β' → α → δ} {g' : β → β'} (h_antidistrib : ∀ (a : α) (b : β), g (f a b) = f' (g' b) a)
Goal: g '' Set.image2 f s t = Set.image2 f' (g' '' t) s
-- Set.image_image2_antidistrib_right
theorem image_image2_antidistrib_right {g : γ → δ} {f' : β → α' → δ} {g' : α → α'}
    (h_antidistrib : ∀ a b, g (f a b) = f' b (g' a)) :
    (image2 f s t).image g = image2 f' t (s.image g') 
Arguments: {α : Type u_1} {α' : Type u_2} {β : Type u_3} {γ : Type u_5} {δ : Type u_7} {f : α → β → γ} {s : Set α} {t : Set β} {g : γ → δ} {f' : β → α' → δ} {g' : α → α'} (h_antidistrib : ∀ (a : α) (b : β), g (f a b) = f' b (g' a))
Goal: g '' Set.image2 f s t = Set.image2 f' t (g' '' s)
-- Set.image2_image_left_anticomm
theorem image2_image_left_anticomm {f : α' → β → γ} {g : α → α'} {f' : β → α → δ} {g' : δ → γ}
    (h_left_anticomm : ∀ a b, f (g a) b = g' (f' b a)) :
    image2 f (s.image g) t = (image2 f' t s).image g' 
Arguments: {α : Type u_1} {α' : Type u_2} {β : Type u_3} {γ : Type u_5} {δ : Type u_7} {s : Set α} {t : Set β} {f : α' → β → γ} {g : α → α'} {f' : β → α → δ} {g' : δ → γ} (h_left_anticomm : ∀ (a : α) (b : β), f (g a) b = g' (f' b a))
Goal: Set.image2 f (g '' s) t = g' '' Set.image2 f' t s
-- Set.image_image2_right_anticomm
theorem image_image2_right_anticomm {f : α → β' → γ} {g : β → β'} {f' : β → α → δ} {g' : δ → γ}
    (h_right_anticomm : ∀ a b, f a (g b) = g' (f' b a)) :
    image2 f s (t.image g) = (image2 f' t s).image g' 
Arguments: {α : Type u_1} {β : Type u_3} {β' : Type u_4} {γ : Type u_5} {δ : Type u_7} {s : Set α} {t : Set β} {f : α → β' → γ} {g : β → β'} {f' : β → α → δ} {g' : δ → γ} (h_right_anticomm : ∀ (a : α) (b : β), f a (g b) = g' (f' b a))
Goal: Set.image2 f s (g '' t) = g' '' Set.image2 f' t s
-- Set.image2_left_identity
lemma image2_left_identity {f : α → β → β} {a : α} (h : ∀ b, f a b = b) (t : Set β) :
    image2 f {a} t = t 
Arguments: {α : Type u_1} {β : Type u_3} {f : α → β → β} {a : α} (h : ∀ (b : β), f a b = b) (t : Set β)
Goal: Set.image2 f {a} t = t
-- Set.image2_right_identity
lemma image2_right_identity {f : α → β → α} {b : β} (h : ∀ a, f a b = a) (s : Set α) :
    image2 f s {b} = s 
Arguments: {α : Type u_1} {β : Type u_3} {f : α → β → α} {b : β} (h : ∀ (a : α), f a b = a) (s : Set α)
Goal: Set.image2 f s {b} = s
-- Set.image2_inter_union_subset_union
theorem image2_inter_union_subset_union :
    image2 f (s ∩ s') (t ∪ t') ⊆ image2 f s t ∪ image2 f s' t' 
Arguments: {α : Type u_1} {β : Type u_3} {γ : Type u_5} {f : α → β → γ} {s s' : Set α} {t t' : Set β}
Goal: Set.image2 f (s ∩ s') (t ∪ t') ⊆ Set.image2 f s t ∪ Set.image2 f s' t'
-- Set.image2_union_inter_subset_union
theorem image2_union_inter_subset_union :
    image2 f (s ∪ s') (t ∩ t') ⊆ image2 f s t ∪ image2 f s' t' 
Arguments: {α : Type u_1} {β : Type u_3} {γ : Type u_5} {f : α → β → γ} {s s' : Set α} {t t' : Set β}
Goal: Set.image2 f (s ∪ s') (t ∩ t') ⊆ Set.image2 f s t ∪ Set.image2 f s' t'
-- Set.image2_inter_union_subset
theorem image2_inter_union_subset {f : α → α → β} {s t : Set α} (hf : ∀ a b, f a b = f b a) :
    image2 f (s ∩ t) (s ∪ t) ⊆ image2 f s t 
Arguments: {α : Type u_1} {β : Type u_3} {f : α → α → β} {s t : Set α} (hf : ∀ (a b : α), f a b = f b a)
Goal: Set.image2 f (s ∩ t) (s ∪ t) ⊆ Set.image2 f s t
-- Set.image2_union_inter_subset
theorem image2_union_inter_subset {f : α → α → β} {s t : Set α} (hf : ∀ a b, f a b = f b a) :
    image2 f (s ∪ t) (s ∩ t) ⊆ image2 f s t 
Arguments: {α : Type u_1} {β : Type u_3} {f : α → α → β} {s t : Set α} (hf : ∀ (a b : α), f a b = f b a)
Goal: Set.image2 f (s ∪ t) (s ∩ t) ⊆ Set.image2 f s t
-- Set.mem_iff_boolIndicator
theorem mem_iff_boolIndicator (x : α) : x ∈ s ↔ s.boolIndicator x = true 
Arguments: {α : Type u_1} (s : Set α) (x : α)
Goal: x ∈ s ↔ s.boolIndicator x = true
-- Set.not_mem_iff_boolIndicator
theorem not_mem_iff_boolIndicator (x : α) : x ∉ s ↔ s.boolIndicator x = false 
Arguments: {α : Type u_1} (s : Set α) (x : α)
Goal: x ∉ s ↔ s.boolIndicator x = false
-- Set.preimage_boolIndicator_true
theorem preimage_boolIndicator_true : s.boolIndicator ⁻¹' {true} = s 
Arguments: {α : Type u_1} (s : Set α)
Goal: s.boolIndicator ⁻¹' {true} = s
-- Set.preimage_boolIndicator_false
theorem preimage_boolIndicator_false : s.boolIndicator ⁻¹' {false} = sᶜ 
Arguments: {α : Type u_1} (s : Set α)
Goal: s.boolIndicator ⁻¹' {false} = sᶜ
-- Set.preimage_boolIndicator_eq_union
theorem preimage_boolIndicator_eq_union (t : Set Bool) :
    s.boolIndicator ⁻¹' t = (if true ∈ t then s else ∅) ∪ if false ∈ t then sᶜ else ∅ 
Arguments: {α : Type u_1} (s : Set α) (t : Set Bool)
Goal: s.boolIndicator ⁻¹' t = (if true ∈ t then s else ∅) ∪ if false ∈ t then sᶜ else ∅
-- Set.preimage_boolIndicator
theorem preimage_boolIndicator (t : Set Bool) :
    s.boolIndicator ⁻¹' t = univ ∨
      s.boolIndicator ⁻¹' t = s ∨ s.boolIndicator ⁻¹' t = sᶜ ∨ s.boolIndicator ⁻¹' t = ∅ 
Arguments: {α : Type u_1} (s : Set α) (t : Set Bool)
Goal: s.boolIndicator ⁻¹' t = Set.univ ∨ s.boolIndicator ⁻¹' t = s ∨ s.boolIndicator ⁻¹' t = sᶜ ∨ s.boolIndicator ⁻¹' t = ∅
-- Set.bind_def
@[simp]
theorem bind_def : s >>= f = ⋃ i ∈ s, f i 
Arguments: {α β : Type u} {s : Set α} {f : α → Set β}
Goal: s >>= f = ⋃ i ∈ s, f i
-- Set.fmap_eq_image
@[simp]
theorem fmap_eq_image (f : α → β) : f <$> s = f '' s 
Arguments: {α β : Type u} {s : Set α} (f : α → β)
Goal: f <$> s = f '' s
-- Set.seq_eq_set_seq
@[simp]
theorem seq_eq_set_seq (s : Set (α → β)) (t : Set α) : s <*> t = s.seq t 
Arguments: {α β : Type u} (s : Set (α → β)) (t : Set α)
Goal: (Seq.seq s fun x => t) = s.seq t
-- Set.pure_def
@[simp]
theorem pure_def (a : α) : (pure a : Set α) = {a} 
Arguments: {α : Type u} (a : α)
Goal: pure a = {a}
-- Set.image2_def
theorem image2_def {α β γ : Type u} (f : α → β → γ) (s : Set α) (t : Set β) :
    image2 f s t = f <$> s <*> t 
Arguments: {α β γ : Type u} (f : α → β → γ) (s : Set α) (t : Set β)
Goal: Set.image2 f s t = Seq.seq (f <$> s) fun x => t
-- Set.mem_coe_of_mem
theorem mem_coe_of_mem {a : α} (ha : a ∈ β) (ha' : ⟨a, ha⟩ ∈ γ) : a ∈ (γ : Set α) 
Arguments: {α : Type u} {β : Set α} {γ : Set ↑β} {a : α} (ha : a ∈ β) (ha' : ⟨a, ha⟩ ∈ γ)
Goal: a ∈ do
  let a ← γ
  pure ↑a
-- Set.coe_subset
theorem coe_subset : (γ : Set α) ⊆ β 
Arguments: {α : Type u} {β : Set α} {γ : Set ↑β}
Goal: (do
    let a ← γ
    pure ↑a) ⊆
  β
-- Set.mem_of_mem_coe
theorem mem_of_mem_coe {a : α} (ha : a ∈ (γ : Set α)) : ⟨a, coe_subset ha⟩ ∈ γ 
Arguments: {α : Type u} {β : Set α} {γ : Set ↑β} {a : α} (ha :
  a ∈ do
    let a ← γ
    pure ↑a)
Goal: ⟨a, ⋯⟩ ∈ γ