internlm/Lean-Github huggingface dataset:
Theorem: Set.union_bind
Proof state before:
case a.mpr
α : Sort u_2
β : Sort u_1
γ : ?m.19374
f : α → Set β
s t : Set α
y : β
⊢ y ∈ (s.bind f).union (t.bind f) → y ∈ (s.union t).bind f
Tactic:
intro
| inl ⟨x, hs, h⟩ => refine ⟨x, inl hs, h⟩
| inr ⟨x, ht, h⟩ => refine ⟨x, inr ht, h⟩
Proof state after:
no goals
Theorem: Set.union_bind
Proof state before:
α : Sort u_2
β : Sort u_1
γ : ?m.19374
f : α → Set β
s t : Set α
y : β
x✝ : y ∈ (s.bind f).union (t.bind f)
x : α
hs : x ∈ s
h : y ∈ f x
⊢ y ∈ (s.union t).bind f
Tactic:
refine ⟨x, inl hs, h⟩
Proof state after:
no goals
Theorem: Set.union_bind
Proof state before:
α : Sort u_2
β : Sort u_1
γ : ?m.19374
f : α → Set β
s t : Set α
y : β
x✝ : y ∈ (s.bind f).union (t.bind f)
x : α
ht : x ∈ t
h : y ∈ f x
⊢ y ∈ (s.union t).bind f
Tactic:
refine ⟨x, inr ht, h⟩
Proof state after:
no goals
Theorem: Set.inter_idem
Proof state before:
α : Sort u_1
β : ?m.20066
γ : ?m.20069
s : Set α
⊢ s.inter s = s
Tactic:
apply Set.ext
Proof state after:
case a
α : Sort u_1
β : ?m.20066
γ : ?m.20069
s : Set α
⊢ ∀ (x : α), x ∈ s.inter s ↔ x ∈ s
Theorem: Set.inter_idem
Proof state before:
case a
α : Sort u_1
β : ?m.20066
γ : ?m.20069
s : Set α
⊢ ∀ (x : α), x ∈ s.inter s ↔ x ∈ s
Tactic:
intro x
Proof state after:
case a
α : Sort u_1
β : ?m.20066
γ : ?m.20069
s : Set α
x : α
⊢ x ∈ s.inter s ↔ x ∈ s
Theorem: Set.inter_idem
Proof state before:
case a
α : Sort u_1
β : ?m.20066
γ : ?m.20069
s : Set α
x : α
⊢ x ∈ s.inter s ↔ x ∈ s
Tactic:
constructor
Proof state after:
case a.mp
α : Sort u_1
β : ?m.20066
γ : ?m.20069
s : Set α
x : α
⊢ x ∈ s.inter s → x ∈ s

case a.mpr
α : Sort u_1
β : ?m.20066
γ : ?m.20069
s : Set α
x : α
⊢ x ∈ s → x ∈ s.inter s
Theorem: Set.inter_idem
Proof state before:
case a.mp
α : Sort u_1
β : ?m.20066
γ : ?m.20069
s : Set α
x : α
⊢ x ∈ s.inter s → x ∈ s
Tactic:
intro ⟨hs, _⟩
Proof state after:
case a.mp
α : Sort u_1
β : ?m.20066
γ : ?m.20069
s : Set α
x : α
hs right✝ : x ∈ s
⊢ x ∈ s
Theorem: Set.inter_idem
Proof state before:
case a.mp
α : Sort u_1
β : ?m.20066
γ : ?m.20069
s : Set α
x : α
hs right✝ : x ∈ s
⊢ x ∈ s
Tactic:
exact hs
Proof state after:
no goals
Theorem: Set.inter_idem
Proof state before:
case a.mpr
α : Sort u_1
β : ?m.20066
γ : ?m.20069
s : Set α
x : α
⊢ x ∈ s → x ∈ s.inter s
Tactic:
intro hs
Proof state after:
case a.mpr
α : Sort u_1
β : ?m.20066
γ : ?m.20069
s : Set α
x : α
hs : x ∈ s
⊢ x ∈ s.inter s
Theorem: Set.inter_idem
Proof state before:
case a.mpr
α : Sort u_1
β : ?m.20066
γ : ?m.20069
s : Set α
x : α
hs : x ∈ s
⊢ x ∈ s.inter s
Tactic:
exact ⟨hs, hs⟩
Proof state after:
no goals
Theorem: Set.inter_comm
Proof state before:
α : Sort u_1
β : ?m.20207
γ : ?m.20210
s t : Set α
⊢ s.inter t = t.inter s
Tactic:
apply Set.ext
Proof state after:
case a
α : Sort u_1
β : ?m.20207
γ : ?m.20210
s t : Set α
⊢ ∀ (x : α), x ∈ s.inter t ↔ x ∈ t.inter s
Theorem: Set.inter_comm
Proof state before:
case a
α : Sort u_1
β : ?m.20207
γ : ?m.20210
s t : Set α
⊢ ∀ (x : α), x ∈ s.inter t ↔ x ∈ t.inter s
Tactic:
intro x
Proof state after:
case a
α : Sort u_1
β : ?m.20207
γ : ?m.20210
s t : Set α
x : α
⊢ x ∈ s.inter t ↔ x ∈ t.inter s
Theorem: Set.inter_comm
Proof state before:
case a
α : Sort u_1
β : ?m.20207
γ : ?m.20210
s t : Set α
x : α
⊢ x ∈ s.inter t ↔ x ∈ t.inter s
Tactic:
constructor
Proof state after:
case a.mp
α : Sort u_1
β : ?m.20207
γ : ?m.20210
s t : Set α
x : α
⊢ x ∈ s.inter t → x ∈ t.inter s

case a.mpr
α : Sort u_1
β : ?m.20207
γ : ?m.20210
s t : Set α
x : α
⊢ x ∈ t.inter s → x ∈ s.inter t
Theorem: Set.inter_comm
Proof state before:
case a.mp
α : Sort u_1
β : ?m.20207
γ : ?m.20210
s t : Set α
x : α
⊢ x ∈ s.inter t → x ∈ t.inter s
Tactic:
intro ⟨hs, ht⟩
Proof state after:
case a.mp
α : Sort u_1
β : ?m.20207
γ : ?m.20210
s t : Set α
x : α
hs : x ∈ s
ht : x ∈ t
⊢ x ∈ t.inter s
Theorem: Set.inter_comm
Proof state before:
case a.mp
α : Sort u_1
β : ?m.20207
γ : ?m.20210
s t : Set α
x : α
hs : x ∈ s
ht : x ∈ t
⊢ x ∈ t.inter s
Tactic:
exact ⟨ht, hs⟩
Proof state after:
no goals
Theorem: Set.inter_comm
Proof state before:
case a.mpr
α : Sort u_1
β : ?m.20207
γ : ?m.20210
s t : Set α
x : α
⊢ x ∈ t.inter s → x ∈ s.inter t
Tactic:
intro ⟨ht, hs⟩
Proof state after:
case a.mpr
α : Sort u_1
β : ?m.20207
γ : ?m.20210
s t : Set α
x : α
ht : x ∈ t
hs : x ∈ s
⊢ x ∈ s.inter t
Theorem: Set.inter_comm
Proof state before:
case a.mpr
α : Sort u_1
β : ?m.20207
γ : ?m.20210
s t : Set α
x : α
ht : x ∈ t
hs : x ∈ s
⊢ x ∈ s.inter t
Tactic:
exact ⟨hs, ht⟩
Proof state after:
no goals
Theorem: Set.inter_assoc
Proof state before:
α : Sort u_1
β : ?m.20437
γ : ?m.20440
s t u : Set α
⊢ (s.inter t).inter u = s.inter (t.inter u)
Tactic:
apply Set.ext
Proof state after:
case a
α : Sort u_1
β : ?m.20437
γ : ?m.20440
s t u : Set α
⊢ ∀ (x : α), x ∈ (s.inter t).inter u ↔ x ∈ s.inter (t.inter u)
Theorem: Set.inter_assoc
Proof state before:
case a
α : Sort u_1
β : ?m.20437
γ : ?m.20440
s t u : Set α
⊢ ∀ (x : α), x ∈ (s.inter t).inter u ↔ x ∈ s.inter (t.inter u)
Tactic:
intro x
Proof state after:
case a
α : Sort u_1
β : ?m.20437
γ : ?m.20440
s t u : Set α
x : α
⊢ x ∈ (s.inter t).inter u ↔ x ∈ s.inter (t.inter u)
Theorem: Set.inter_assoc
Proof state before:
case a
α : Sort u_1
β : ?m.20437
γ : ?m.20440
s t u : Set α
x : α
⊢ x ∈ (s.inter t).inter u ↔ x ∈ s.inter (t.inter u)
Tactic:
constructor
Proof state after:
case a.mp
α : Sort u_1
β : ?m.20437
γ : ?m.20440
s t u : Set α
x : α
⊢ x ∈ (s.inter t).inter u → x ∈ s.inter (t.inter u)

case a.mpr
α : Sort u_1
β : ?m.20437
γ : ?m.20440
s t u : Set α
x : α
⊢ x ∈ s.inter (t.inter u) → x ∈ (s.inter t).inter u
Theorem: Set.inter_assoc
Proof state before:
case a.mp
α : Sort u_1
β : ?m.20437
γ : ?m.20440
s t u : Set α
x : α
⊢ x ∈ (s.inter t).inter u → x ∈ s.inter (t.inter u)
Tactic:
intro ⟨⟨hs, ht⟩, hu⟩
Proof state after:
case a.mp
α : Sort u_1
β : ?m.20437
γ : ?m.20440
s t u : Set α
x : α
hs : x ∈ s
ht : x ∈ t
hu : x ∈ u
⊢ x ∈ s.inter (t.inter u)
Theorem: Set.inter_assoc
Proof state before:
case a.mp
α : Sort u_1
β : ?m.20437
γ : ?m.20440
s t u : Set α
x : α
hs : x ∈ s
ht : x ∈ t
hu : x ∈ u
⊢ x ∈ s.inter (t.inter u)
Tactic:
exact ⟨hs, ⟨ht, hu⟩⟩
Proof state after:
no goals
Theorem: Set.inter_assoc
Proof state before:
case a.mpr
α : Sort u_1
β : ?m.20437
γ : ?m.20440
s t u : Set α
x : α
⊢ x ∈ s.inter (t.inter u) → x ∈ (s.inter t).inter u
Tactic:
intro ⟨hs, ⟨ht, hu⟩⟩
Proof state after:
case a.mpr
α : Sort u_1
β : ?m.20437
γ : ?m.20440
s t u : Set α
x : α
hs : x ∈ s
ht : x ∈ t
hu : x ∈ u
⊢ x ∈ (s.inter t).inter u
Theorem: Set.inter_assoc
Proof state before:
case a.mpr
α : Sort u_1
β : ?m.20437
γ : ?m.20440
s t u : Set α
x : α
hs : x ∈ s
ht : x ∈ t
hu : x ∈ u
⊢ x ∈ (s.inter t).inter u
Tactic:
exact ⟨⟨hs, ht⟩, hu⟩
Proof state after:
no goals
Theorem: Set.union_distrib_left
Proof state before:
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
⊢ s.union (t.inter u) = (s.union t).inter (s.union u)
Tactic:
apply Set.ext
Proof state after:
case a
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
⊢ ∀ (x : α), x ∈ s.union (t.inter u) ↔ x ∈ (s.union t).inter (s.union u)
Theorem: Set.union_distrib_left
Proof state before:
case a
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
⊢ ∀ (x : α), x ∈ s.union (t.inter u) ↔ x ∈ (s.union t).inter (s.union u)
Tactic:
intro x
Proof state after:
case a
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
⊢ x ∈ s.union (t.inter u) ↔ x ∈ (s.union t).inter (s.union u)
Theorem: Set.union_distrib_left
Proof state before:
case a
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
⊢ x ∈ s.union (t.inter u) ↔ x ∈ (s.union t).inter (s.union u)
Tactic:
constructor
Proof state after:
case a.mp
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
⊢ x ∈ s.union (t.inter u) → x ∈ (s.union t).inter (s.union u)

case a.mpr
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
⊢ x ∈ (s.union t).inter (s.union u) → x ∈ s.union (t.inter u)
Theorem: Set.union_distrib_left
Proof state before:
case a.mp
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
⊢ x ∈ s.union (t.inter u) → x ∈ (s.union t).inter (s.union u)
Tactic:
open Or in intro
| inl hs => constructor; left; exact hs; left; exact hs
| inr ⟨ht,hu⟩ => constructor; right; exact ht; right; exact hu
Proof state after:
no goals
Theorem: Set.union_distrib_left
Proof state before:
case a.mp
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
⊢ x ∈ s.union (t.inter u) → x ∈ (s.union t).inter (s.union u)
Tactic:
intro
| inl hs => constructor; left; exact hs; left; exact hs
| inr ⟨ht,hu⟩ => constructor; right; exact ht; right; exact hu
Proof state after:
no goals
Theorem: Set.union_distrib_left
Proof state before:
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
x✝ : x ∈ s.union (t.inter u)
hs : x ∈ s
⊢ x ∈ (s.union t).inter (s.union u)
Tactic:
constructor
Proof state after:
case left
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
x✝ : x ∈ s.union (t.inter u)
hs : x ∈ s
⊢ x ∈ s.union t

case right
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
x✝ : x ∈ s.union (t.inter u)
hs : x ∈ s
⊢ x ∈ s.union u
Theorem: Set.union_distrib_left
Proof state before:
case left
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
x✝ : x ∈ s.union (t.inter u)
hs : x ∈ s
⊢ x ∈ s.union t

case right
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
x✝ : x ∈ s.union (t.inter u)
hs : x ∈ s
⊢ x ∈ s.union u
Tactic:
left
Proof state after:
case left.h
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
x✝ : x ∈ s.union (t.inter u)
hs : x ∈ s
⊢ x ∈ s

case right
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
x✝ : x ∈ s.union (t.inter u)
hs : x ∈ s
⊢ x ∈ s.union u
Theorem: Set.union_distrib_left
Proof state before:
case left.h
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
x✝ : x ∈ s.union (t.inter u)
hs : x ∈ s
⊢ x ∈ s

case right
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
x✝ : x ∈ s.union (t.inter u)
hs : x ∈ s
⊢ x ∈ s.union u
Tactic:
exact hs
Proof state after:
case right
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
x✝ : x ∈ s.union (t.inter u)
hs : x ∈ s
⊢ x ∈ s.union u
Theorem: Set.union_distrib_left
Proof state before:
case right
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
x✝ : x ∈ s.union (t.inter u)
hs : x ∈ s
⊢ x ∈ s.union u
Tactic:
left
Proof state after:
case right.h
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
x✝ : x ∈ s.union (t.inter u)
hs : x ∈ s
⊢ x ∈ s
Theorem: Set.union_distrib_left
Proof state before:
case right.h
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
x✝ : x ∈ s.union (t.inter u)
hs : x ∈ s
⊢ x ∈ s
Tactic:
exact hs
Proof state after:
no goals
Theorem: Set.union_distrib_left
Proof state before:
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
x✝ : x ∈ s.union (t.inter u)
ht : x ∈ t
hu : x ∈ u
⊢ x ∈ (s.union t).inter (s.union u)
Tactic:
constructor
Proof state after:
case left
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
x✝ : x ∈ s.union (t.inter u)
ht : x ∈ t
hu : x ∈ u
⊢ x ∈ s.union t

case right
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
x✝ : x ∈ s.union (t.inter u)
ht : x ∈ t
hu : x ∈ u
⊢ x ∈ s.union u
Theorem: Set.union_distrib_left
Proof state before:
case left
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
x✝ : x ∈ s.union (t.inter u)
ht : x ∈ t
hu : x ∈ u
⊢ x ∈ s.union t

case right
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
x✝ : x ∈ s.union (t.inter u)
ht : x ∈ t
hu : x ∈ u
⊢ x ∈ s.union u
Tactic:
right
Proof state after:
case left.h
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
x✝ : x ∈ s.union (t.inter u)
ht : x ∈ t
hu : x ∈ u
⊢ x ∈ t

case right
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
x✝ : x ∈ s.union (t.inter u)
ht : x ∈ t
hu : x ∈ u
⊢ x ∈ s.union u
Theorem: Set.union_distrib_left
Proof state before:
case left.h
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
x✝ : x ∈ s.union (t.inter u)
ht : x ∈ t
hu : x ∈ u
⊢ x ∈ t

case right
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
x✝ : x ∈ s.union (t.inter u)
ht : x ∈ t
hu : x ∈ u
⊢ x ∈ s.union u
Tactic:
exact ht
Proof state after:
case right
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
x✝ : x ∈ s.union (t.inter u)
ht : x ∈ t
hu : x ∈ u
⊢ x ∈ s.union u
Theorem: Set.union_distrib_left
Proof state before:
case right
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
x✝ : x ∈ s.union (t.inter u)
ht : x ∈ t
hu : x ∈ u
⊢ x ∈ s.union u
Tactic:
right
Proof state after:
case right.h
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
x✝ : x ∈ s.union (t.inter u)
ht : x ∈ t
hu : x ∈ u
⊢ x ∈ u
Theorem: Set.union_distrib_left
Proof state before:
case right.h
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
x✝ : x ∈ s.union (t.inter u)
ht : x ∈ t
hu : x ∈ u
⊢ x ∈ u
Tactic:
exact hu
Proof state after:
no goals
Theorem: Set.union_distrib_left
Proof state before:
case a.mpr
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
⊢ x ∈ (s.union t).inter (s.union u) → x ∈ s.union (t.inter u)
Tactic:
open Or in intro
| ⟨inl hs, _⟩ => left; exact hs
| ⟨_, inl hs⟩ => left; exact hs
| ⟨inr ht, inr hu⟩ => right; constructor; exact ht; exact hu
Proof state after:
no goals
Theorem: Set.union_distrib_left
Proof state before:
case a.mpr
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
⊢ x ∈ (s.union t).inter (s.union u) → x ∈ s.union (t.inter u)
Tactic:
intro
| ⟨inl hs, _⟩ => left; exact hs
| ⟨_, inl hs⟩ => left; exact hs
| ⟨inr ht, inr hu⟩ => right; constructor; exact ht; exact hu
Proof state after:
no goals
Theorem: Set.union_distrib_left
Proof state before:
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
x✝ : x ∈ (s.union t).inter (s.union u)
hs : x ∈ s
right✝ : x ∈ s.union u
⊢ x ∈ s.union (t.inter u)
Tactic:
left
Proof state after:
case h
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
x✝ : x ∈ (s.union t).inter (s.union u)
hs : x ∈ s
right✝ : x ∈ s.union u
⊢ x ∈ s
Theorem: Set.union_distrib_left
Proof state before:
case h
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
x✝ : x ∈ (s.union t).inter (s.union u)
hs : x ∈ s
right✝ : x ∈ s.union u
⊢ x ∈ s
Tactic:
exact hs
Proof state after:
no goals
Theorem: Set.union_distrib_left
Proof state before:
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
x✝ : x ∈ (s.union t).inter (s.union u)
left✝ : x ∈ s.union t
hs : x ∈ s
⊢ x ∈ s.union (t.inter u)
Tactic:
left
Proof state after:
case h
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
x✝ : x ∈ (s.union t).inter (s.union u)
left✝ : x ∈ s.union t
hs : x ∈ s
⊢ x ∈ s
Theorem: Set.union_distrib_left
Proof state before:
case h
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
x✝ : x ∈ (s.union t).inter (s.union u)
left✝ : x ∈ s.union t
hs : x ∈ s
⊢ x ∈ s
Tactic:
exact hs
Proof state after:
no goals
Theorem: Set.union_distrib_left
Proof state before:
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
x✝ : x ∈ (s.union t).inter (s.union u)
ht : x ∈ t
hu : x ∈ u
⊢ x ∈ s.union (t.inter u)
Tactic:
right
Proof state after:
case h
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
x✝ : x ∈ (s.union t).inter (s.union u)
ht : x ∈ t
hu : x ∈ u
⊢ x ∈ t.inter u
Theorem: Set.union_distrib_left
Proof state before:
case h
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
x✝ : x ∈ (s.union t).inter (s.union u)
ht : x ∈ t
hu : x ∈ u
⊢ x ∈ t.inter u
Tactic:
constructor
Proof state after:
case h.left
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
x✝ : x ∈ (s.union t).inter (s.union u)
ht : x ∈ t
hu : x ∈ u
⊢ x ∈ t

case h.right
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
x✝ : x ∈ (s.union t).inter (s.union u)
ht : x ∈ t
hu : x ∈ u
⊢ x ∈ u
Theorem: Set.union_distrib_left
Proof state before:
case h.left
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
x✝ : x ∈ (s.union t).inter (s.union u)
ht : x ∈ t
hu : x ∈ u
⊢ x ∈ t

case h.right
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
x✝ : x ∈ (s.union t).inter (s.union u)
ht : x ∈ t
hu : x ∈ u
⊢ x ∈ u
Tactic:
exact ht
Proof state after:
case h.right
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
x✝ : x ∈ (s.union t).inter (s.union u)
ht : x ∈ t
hu : x ∈ u
⊢ x ∈ u
Theorem: Set.union_distrib_left
Proof state before:
case h.right
α : Sort u_1
β : ?m.20770
γ : ?m.20773
s t u : Set α
x : α
x✝ : x ∈ (s.union t).inter (s.union u)
ht : x ∈ t
hu : x ∈ u
⊢ x ∈ u
Tactic:
exact hu
Proof state after:
no goals
Theorem: Set.union_distrib_right
Proof state before:
α : Sort u_1
β : ?m.21318
γ : ?m.21321
s t u : Set α
⊢ (s.inter t).union u = (s.union u).inter (t.union u)
Tactic:
apply Set.ext
Proof state after:
case a
α : Sort u_1
β : ?m.21318
γ : ?m.21321
s t u : Set α
⊢ ∀ (x : α), x ∈ (s.inter t).union u ↔ x ∈ (s.union u).inter (t.union u)
Theorem: Set.union_distrib_right
Proof state before:
case a
α : Sort u_1
β : ?m.21318
γ : ?m.21321
s t u : Set α
⊢ ∀ (x : α), x ∈ (s.inter t).union u ↔ x ∈ (s.union u).inter (t.union u)
Tactic:
intro x
Proof state after:
case a
α : Sort u_1
β : ?m.21318
γ : ?m.21321
s t u : Set α
x : α
⊢ x ∈ (s.inter t).union u ↔ x ∈ (s.union u).inter (t.union u)
Theorem: Set.union_distrib_right
Proof state before:
case a
α : Sort u_1
β : ?m.21318
γ : ?m.21321
s t u : Set α
x : α
⊢ x ∈ (s.inter t).union u ↔ x ∈ (s.union u).inter (t.union u)
Tactic:
constructor
Proof state after:
case a.mp
α : Sort u_1
β : ?m.21318
γ : ?m.21321
s t u : Set α
x : α
⊢ x ∈ (s.inter t).union u → x ∈ (s.union u).inter (t.union u)

case a.mpr
α : Sort u_1
β : ?m.21318
γ : ?m.21321
s t u : Set α
x : α
⊢ x ∈ (s.union u).inter (t.union u) → x ∈ (s.inter t).union u
Theorem: Set.union_distrib_right
Proof state before:
case a.mp
α : Sort u_1
β : ?m.21318
γ : ?m.21321
s t u : Set α
x : α
⊢ x ∈ (s.inter t).union u → x ∈ (s.union u).inter (t.union u)
Tactic:
open Or in intro
| inl ⟨hs,ht⟩ => constructor; left; exact hs; left; exact ht
| inr hu => constructor; right; exact hu; right; exact hu
Proof state after:
no goals
Theorem: Set.union_distrib_right
Proof state before:
case a.mp
α : Sort u_1
β : ?m.21318
γ : ?m.21321
s t u : Set α
x : α
⊢ x ∈ (s.inter t).union u → x ∈ (s.union u).inter (t.union u)
Tactic:
intro
| inl ⟨hs,ht⟩ => constructor; left; exact hs; left; exact ht
| inr hu => constructor; right; exact hu; right; exact hu
Proof state after:
no goals
Theorem: Set.union_distrib_right
Proof state before:
α : Sort u_1
β : ?m.21318
γ : ?m.21321
s t u : Set α
x : α
x✝ : x ∈ (s.inter t).union u
hs : x ∈ s
ht : x ∈ t
⊢ x ∈ (s.union u).inter (t.union u)
Tactic:
constructor
Proof state after:
case left
α : Sort u_1
β : ?m.21318
γ : ?m.21321
s t u : Set α
x : α
x✝ : x ∈ (s.inter t).union u
hs : x ∈ s
ht : x ∈ t
⊢ x ∈ s.union u

case right
α : Sort u_1
β : ?m.21318
γ : ?m.21321
s t u : Set α
x : α
x✝ : x ∈ (s.inter t).union u
hs : x ∈ s
ht : x ∈ t
⊢ x ∈ t.union u
Theorem: Set.union_distrib_right
Proof state before:
case left
α : Sort u_1
β : ?m.21318
γ : ?m.21321
s t u : Set α
x : α
x✝ : x ∈ (s.inter t).union u
hs : x ∈ s
ht : x ∈ t
⊢ x ∈ s.union u

case right
α : Sort u_1
β : ?m.21318
γ : ?m.21321
s t u : Set α
x : α
x✝ : x ∈ (s.inter t).union u
hs : x ∈ s
ht : x ∈ t
⊢ x ∈ t.union u
Tactic:
left
Proof state after:
case left.h
α : Sort u_1
β : ?m.21318
γ : ?m.21321
s t u : Set α
x : α
x✝ : x ∈ (s.inter t).union u
hs : x ∈ s
ht : x ∈ t
⊢ x ∈ s

case right
α : Sort u_1
β : ?m.21318
γ : ?m.21321
s t u : Set α
x : α
x✝ : x ∈ (s.inter t).union u
hs : x ∈ s
ht : x ∈ t
⊢ x ∈ t.union u
Theorem: Set.union_distrib_right
Proof state before:
case left.h
α : Sort u_1
β : ?m.21318
γ : ?m.21321
s t u : Set α
x : α
x✝ : x ∈ (s.inter t).union u
hs : x ∈ s
ht : x ∈ t
⊢ x ∈ s

case right
α : Sort u_1
β : ?m.21318
γ : ?m.21321
s t u : Set α
x : α
x✝ : x ∈ (s.inter t).union u
hs : x ∈ s
ht : x ∈ t
⊢ x ∈ t.union u
Tactic:
exact hs
Proof state after:
case right
α : Sort u_1
β : ?m.21318
γ : ?m.21321
s t u : Set α
x : α
x✝ : x ∈ (s.inter t).union u
hs : x ∈ s
ht : x ∈ t
⊢ x ∈ t.union u
Theorem: Set.union_distrib_right
Proof state before:
case right
α : Sort u_1
β : ?m.21318
γ : ?m.21321
s t u : Set α
x : α
x✝ : x ∈ (s.inter t).union u
hs : x ∈ s
ht : x ∈ t
⊢ x ∈ t.union u
Tactic:
left
Proof state after:
case right.h
α : Sort u_1
β : ?m.21318
γ : ?m.21321
s t u : Set α
x : α
x✝ : x ∈ (s.inter t).union u
hs : x ∈ s
ht : x ∈ t
⊢ x ∈ t
Theorem: Set.union_distrib_right
Proof state before:
case right.h
α : Sort u_1
β : ?m.21318
γ : ?m.21321
s t u : Set α
x : α
x✝ : x ∈ (s.inter t).union u
hs : x ∈ s
ht : x ∈ t
⊢ x ∈ t
Tactic:
exact ht
Proof state after:
no goals
Theorem: Set.union_distrib_right
Proof state before:
α : Sort u_1
β : ?m.21318
γ : ?m.21321
s t u : Set α
x : α
x✝ : x ∈ (s.inter t).union u
hu : x ∈ u
⊢ x ∈ (s.union u).inter (t.union u)
Tactic:
constructor
Proof state after:
case left
α : Sort u_1
β : ?m.21318
γ : ?m.21321
s t u : Set α
x : α
x✝ : x ∈ (s.inter t).union u
hu : x ∈ u
⊢ x ∈ s.union u

case right
α : Sort u_1
β : ?m.21318
γ : ?m.21321
s t u : Set α
x : α
x✝ : x ∈ (s.inter t).union u
hu : x ∈ u
⊢ x ∈ t.union u
Theorem: Set.union_distrib_right
Proof state before:
case left
α : Sort u_1
β : ?m.21318
γ : ?m.21321
s t u : Set α
x : α
x✝ : x ∈ (s.inter t).union u
hu : x ∈ u
⊢ x ∈ s.union u

case right
α : Sort u_1
β : ?m.21318
γ : ?m.21321
s t u : Set α
x : α
x✝ : x ∈ (s.inter t).union u
hu : x ∈ u
⊢ x ∈ t.union u
Tactic:
right
Proof state after:
case left.h
α : Sort u_1
β : ?m.21318
γ : ?m.21321
s t u : Set α
x : α
x✝ : x ∈ (s.inter t).union u
hu : x ∈ u
⊢ x ∈ u

case right
α : Sort u_1
β : ?m.21318
γ : ?m.21321
s t u : Set α
x : α
x✝ : x ∈ (s.inter t).union u
hu : x ∈ u
⊢ x ∈ t.union u
Theorem: Set.union_distrib_right
Proof state before:
case left.h
α : Sort u_1
β : ?m.21318
γ : ?m.21321
s t u : Set α
x : α
x✝ : x ∈ (s.inter t).union u
hu : x ∈ u
⊢ x ∈ u

case right
α : Sort u_1
β : ?m.21318
γ : ?m.21321
s t u : Set α
x : α
x✝ : x ∈ (s.inter t).union u
hu : x ∈ u
⊢ x ∈ t.union u
Tactic:
exact hu
Proof state after:
case right
α : Sort u_1
β : ?m.21318
γ : ?m.21321
s t u : Set α
x : α
x✝ : x ∈ (s.inter t).union u
hu : x ∈ u
⊢ x ∈ t.union u
Theorem: Set.union_distrib_right
Proof state before:
case right
α : Sort u_1
β : ?m.21318
γ : ?m.21321
s t u : Set α
x : α
x✝ : x ∈ (s.inter t).union u
hu : x ∈ u
⊢ x ∈ t.union u
Tactic:
right
Proof state after:
case right.h
α : Sort u_1
β : ?m.21318
γ : ?m.21321
s t u : Set α
x : α
x✝ : x ∈ (s.inter t).union u
hu : x ∈ u
⊢ x ∈ u
Theorem: Set.union_distrib_right
Proof state before:
case right.h
α : Sort u_1
β : ?m.21318
γ : ?m.21321
s t u : Set α
x : α
x✝ : x ∈ (s.inter t).union u
hu : x ∈ u
⊢ x ∈ u
Tactic:
exact hu
Proof state after:
no goals
Theorem: Set.union_distrib_right
Proof state before:
case a.mpr
α : Sort u_1
β : ?m.21318
γ : ?m.21321
s t u : Set α
x : α
⊢ x ∈ (s.union u).inter (t.union u) → x ∈ (s.inter t).union u
Tactic:
open Or in intro
| ⟨inr hu, _⟩ => right; exact hu
| ⟨_, inr hu⟩ => right; exact hu
| ⟨inl hs, inl ht⟩ => left; constructor; exact hs; exact ht
Proof state after:
no goals
Theorem: Set.union_distrib_right
Proof state before:
case a.mpr
α : Sort u_1
β : ?m.21318
γ : ?m.21321
s t u : Set α
x : α
⊢ x ∈ (s.union u).inter (t.union u) → x ∈ (s.inter t).union u
Tactic:
intro
| ⟨inr hu, _⟩ => right; exact hu
| ⟨_, inr hu⟩ => right; exact hu
| ⟨inl hs, inl ht⟩ => left; constructor; exact hs; exact ht
Proof state after:
no goals
Theorem: Set.union_distrib_right
Proof state before:
α : Sort u_1
β : ?m.21318
γ : ?m.21321
s t u : Set α
x : α
x✝ : x ∈ (s.union u).inter (t.union u)
hu : x ∈ u
right✝ : x ∈ t.union u
⊢ x ∈ (s.inter t).union u
Tactic:
right
Proof state after:
case h
α : Sort u_1
β : ?m.21318
γ : ?m.21321
s t u : Set α
x : α
x✝ : x ∈ (s.union u).inter (t.union u)
hu : x ∈ u
right✝ : x ∈ t.union u
⊢ x ∈ u
Theorem: Set.union_distrib_right
Proof state before:
case h
α : Sort u_1
β : ?m.21318
γ : ?m.21321
s t u : Set α
x : α
x✝ : x ∈ (s.union u).inter (t.union u)
hu : x ∈ u
right✝ : x ∈ t.union u
⊢ x ∈ u
Tactic:
exact hu
Proof state after:
no goals
Theorem: Set.union_distrib_right
Proof state before:
α : Sort u_1
β : ?m.21318
γ : ?m.21321
s t u : Set α
x : α
x✝ : x ∈ (s.union u).inter (t.union u)
left✝ : x ∈ s.union u
hu : x ∈ u
⊢ x ∈ (s.inter t).union u
Tactic:
right
Proof state after:
case h
α : Sort u_1
β : ?m.21318
γ : ?m.21321
s t u : Set α
x : α
x✝ : x ∈ (s.union u).inter (t.union u)
left✝ : x ∈ s.union u
hu : x ∈ u
⊢ x ∈ u