1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: eq_one_iff_eq_one_of_mul_eq_one
File: Mathlib/Algebra/Group/Basic.lean

tactic: constructor <;> (rintro rfl; simpa using h)
state_before: α : Type u_1
β : Type u_2
G : Type u_3
M✝ : Type u_4
M : Type u
inst✝ : MulOneClass M
a b : M
h : a * b = 1
⊢ a = 1 ↔ b = 1
state_after: no goals

tactic: rintro rfl
state_before: case mpr
α : Type u_1
β : Type u_2
G : Type u_3
M✝ : Type u_4
M : Type u
inst✝ : MulOneClass M
a b : M
h : a * b = 1
⊢ b = 1 → a = 1
state_after: case mpr
α : Type u_1
β : Type u_2
G : Type u_3
M✝ : Type u_4
M : Type u
inst✝ : MulOneClass M
a : M
h : a * 1 = 1
⊢ a = 1

tactic: simpa using h
state_before: case mpr
α : Type u_1
β : Type u_2
G : Type u_3
M✝ : Type u_4
M : Type u
inst✝ : MulOneClass M
a : M
h : a * 1 = 1
⊢ a = 1
state_after: no goals
Theorem: Complex.Gammaℝ_one_sub_mul_Gammaℝ_one_add
File: Mathlib/Analysis/SpecialFunctions/Gamma/Deligne.lean

tactic: simp only [Gammaℝ_def]
state_before: s : ℂ
⊢ (1 - s).Gammaℝ * (1 + s).Gammaℝ =
    ↑π ^ ((s - 1) / 2) * ↑π ^ ((-1 - s) / 2) * (Gamma ((1 - s) / 2) * Gamma (1 - (1 - s) / 2))
state_after: s : ℂ
⊢ ↑π ^ (-(1 - s) / 2) * Gamma ((1 - s) / 2) * (↑π ^ (-(1 + s) / 2) * Gamma ((1 + s) / 2)) =
    ↑π ^ ((s - 1) / 2) * ↑π ^ ((-1 - s) / 2) * (Gamma ((1 - s) / 2) * Gamma (1 - (1 - s) / 2))

tactic: ring_nf
state_before: s : ℂ
⊢ ↑π ^ (-(1 - s) / 2) * Gamma ((1 - s) / 2) * (↑π ^ (-(1 + s) / 2) * Gamma ((1 + s) / 2)) =
    ↑π ^ ((s - 1) / 2) * ↑π ^ ((-1 - s) / 2) * (Gamma ((1 - s) / 2) * Gamma (1 - (1 - s) / 2))
state_after: no goals

tactic: rw [Complex.Gamma_mul_Gamma_one_sub, cpow_one]
state_before: s : ℂ
⊢ ↑π ^ ((s - 1) / 2) * ↑π ^ ((-1 - s) / 2) * (Gamma ((1 - s) / 2) * Gamma (1 - (1 - s) / 2)) =
    ↑π ^ ((s - 1) / 2) * ↑π ^ ((-1 - s) / 2) * ↑π ^ 1 / sin (↑π / 2 - ↑π * s / 2)
state_after: s : ℂ
⊢ ↑π ^ ((s - 1) / 2) * ↑π ^ ((-1 - s) / 2) * (↑π / sin (↑π * ((1 - s) / 2))) =
    ↑π ^ ((s - 1) / 2) * ↑π ^ ((-1 - s) / 2) * ↑π / sin (↑π / 2 - ↑π * s / 2)

tactic: ring_nf
state_before: s : ℂ
⊢ ↑π ^ ((s - 1) / 2) * ↑π ^ ((-1 - s) / 2) * (↑π / sin (↑π * ((1 - s) / 2))) =
    ↑π ^ ((s - 1) / 2) * ↑π ^ ((-1 - s) / 2) * ↑π / sin (↑π / 2 - ↑π * s / 2)
state_after: no goals

tactic: simp_rw [← cpow_add _ _ (ofReal_ne_zero.mpr pi_ne_zero),
  Complex.sin_pi_div_two_sub]
state_before: s : ℂ
⊢ ↑π ^ ((s - 1) / 2) * ↑π ^ ((-1 - s) / 2) * ↑π ^ 1 / sin (↑π / 2 - ↑π * s / 2) = (cos (↑π * s / 2))⁻¹
state_after: s : ℂ
⊢ ↑π ^ ((s - 1) / 2 + (-1 - s) / 2 + 1) / cos (↑π * s / 2) = (cos (↑π * s / 2))⁻¹

tactic: ring_nf
state_before: s : ℂ
⊢ ↑π ^ ((s - 1) / 2 + (-1 - s) / 2 + 1) / cos (↑π * s / 2) = (cos (↑π * s / 2))⁻¹
state_after: s : ℂ
⊢ ↑π ^ 0 * (cos (s * ↑π * (1 / 2)))⁻¹ = (cos (s * ↑π * (1 / 2)))⁻¹

tactic: rw [cpow_zero, one_mul]
state_before: s : ℂ
⊢ ↑π ^ 0 * (cos (s * ↑π * (1 / 2)))⁻¹ = (cos (s * ↑π * (1 / 2)))⁻¹
state_after: no goals
Theorem: isLUB_Ico
File: Mathlib/Order/Bounds/Basic.lean

tactic: simpa only [dual_Ioc] using isGLB_Ioc hab.dual
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝³ : Preorder α
inst✝² : Preorder β
s t : Set α
a✝ b✝ : α
inst✝¹ : SemilatticeInf γ
inst✝ : DenselyOrdered γ
a b : γ
hab : a < b
⊢ IsLUB (Ico a b) b
state_after: no goals
Theorem: CoxeterSystem.IsReflection.isLeftInversion_mul_right_iff
File: Mathlib/GroupTheory/Coxeter/Inversion.lean

tactic: rw [← isRightInversion_inv_iff, ← isRightInversion_inv_iff, mul_inv_rev, ht.inv,
  ht.isRightInversion_mul_left_iff]
state_before: B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
t : W
ht : cs.IsReflection t
w : W
⊢ cs.IsLeftInversion (t * w) t ↔ ¬cs.IsLeftInversion w t
state_after: no goals
Theorem: lp.hasSum_norm
File: Mathlib/Analysis/NormedSpace/lpSpace.lean

tactic: rw [norm_rpow_eq_tsum hp]
state_before: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝ : (i : α) → NormedAddCommGroup (E i)
hp : 0 < p.toReal
f : ↥(lp E p)
⊢ HasSum (fun i => ‖↑f i‖ ^ p.toReal) (‖f‖ ^ p.toReal)
state_after: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝ : (i : α) → NormedAddCommGroup (E i)
hp : 0 < p.toReal
f : ↥(lp E p)
⊢ HasSum (fun i => ‖↑f i‖ ^ p.toReal) (∑' (i : α), ‖↑f i‖ ^ p.toReal)

tactic: exact ((lp.memℓp f).summable hp).hasSum
state_before: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝ : (i : α) → NormedAddCommGroup (E i)
hp : 0 < p.toReal
f : ↥(lp E p)
⊢ HasSum (fun i => ‖↑f i‖ ^ p.toReal) (∑' (i : α), ‖↑f i‖ ^ p.toReal)
state_after: no goals
Theorem: CategoryTheory.Iso.symm_symm_eq
File: Mathlib/CategoryTheory/Iso.lean

tactic: cases α
state_before: C : Type u
inst✝ : Category.{v, u} C
X✝ Y✝ Z X Y : C
α : X ≅ Y
⊢ α.symm.symm = α
state_after: case mk
C : Type u
inst✝ : Category.{v, u} C
X✝ Y✝ Z X Y : C
hom✝ : X ⟶ Y
inv✝ : Y ⟶ X
hom_inv_id✝ : hom✝ ≫ inv✝ = 𝟙 X
inv_hom_id✝ : inv✝ ≫ hom✝ = 𝟙 Y
⊢ { hom := hom✝, inv := inv✝, hom_inv_id := hom_inv_id✝, inv_hom_id := inv_hom_id✝ }.symm.symm =
    { hom := hom✝, inv := inv✝, hom_inv_id := hom_inv_id✝, inv_hom_id := inv_hom_id✝ }

tactic: rfl
state_before: case mk
C : Type u
inst✝ : Category.{v, u} C
X✝ Y✝ Z X Y : C
hom✝ : X ⟶ Y
inv✝ : Y ⟶ X
hom_inv_id✝ : hom✝ ≫ inv✝ = 𝟙 X
inv_hom_id✝ : inv✝ ≫ hom✝ = 𝟙 Y
⊢ { hom := hom✝, inv := inv✝, hom_inv_id := hom_inv_id✝, inv_hom_id := inv_hom_id✝ }.symm.symm =
    { hom := hom✝, inv := inv✝, hom_inv_id := hom_inv_id✝, inv_hom_id := inv_hom_id✝ }
state_after: no goals
Theorem: ENNReal.div_self_le_one
File: Mathlib/Data/ENNReal/Inv.lean

tactic: rw [one_mul]
state_before: a b c d : ℝ≥0∞
r p q : ℝ≥0
⊢ a ≤ 1 * a
state_after: no goals
Theorem: List.length_bind'
File: Mathlib/Data/List/Join.lean

tactic: rw [List.bind, length_join', map_map]
state_before: α : Type u_1
β : Type u_2
l : List α
f : α → List β
⊢ (l.bind f).length = Nat.sum (map (length ∘ f) l)
state_after: no goals
Theorem: Quiver.Path.toList_injective
File: Mathlib/Combinatorics/Quiver/Path.lean

tactic: cases h
state_before: V : Type u
inst✝¹ : Quiver V
a✝ b c✝ d : V
inst✝ : ∀ (a b : V), Subsingleton (a ⟶ b)
a c : V
p : Path a c
f : c ⟶ a
h : nil.toList = (p.cons f).toList
⊢ nil = p.cons f
state_after: no goals

tactic: cases h
state_before: V : Type u
inst✝¹ : Quiver V
a✝ b c✝ d : V
inst✝ : ∀ (a b : V), Subsingleton (a ⟶ b)
a c : V
p : Path a c
f : c ⟶ a
h : (p.cons f).toList = nil.toList
⊢ p.cons f = nil
state_after: no goals

tactic: simp only [toList, List.cons.injEq] at h
state_before: V : Type u
inst✝¹ : Quiver V
a✝ b c✝ d : V
inst✝ : ∀ (a b : V), Subsingleton (a ⟶ b)
a x✝ c : V
p : Path a c
f : c ⟶ x✝
t : V
C : Path a t
D : t ⟶ x✝
h : (p.cons f).toList = (C.cons D).toList
⊢ p.cons f = C.cons D
state_after: V : Type u
inst✝¹ : Quiver V
a✝ b c✝ d : V
inst✝ : ∀ (a b : V), Subsingleton (a ⟶ b)
a x✝ c : V
p : Path a c
f : c ⟶ x✝
t : V
C : Path a t
D : t ⟶ x✝
h : c = t ∧ p.toList = C.toList
⊢ p.cons f = C.cons D

tactic: obtain ⟨rfl, hAC⟩ := h
state_before: V : Type u
inst✝¹ : Quiver V
a✝ b c✝ d : V
inst✝ : ∀ (a b : V), Subsingleton (a ⟶ b)
a x✝ c : V
p : Path a c
f : c ⟶ x✝
t : V
C : Path a t
D : t ⟶ x✝
h : c = t ∧ p.toList = C.toList
⊢ p.cons f = C.cons D
state_after: case intro
V : Type u
inst✝¹ : Quiver V
a✝ b c✝ d : V
inst✝ : ∀ (a b : V), Subsingleton (a ⟶ b)
a x✝ c : V
p : Path a c
f : c ⟶ x✝
C : Path a c
D : c ⟶ x✝
hAC : p.toList = C.toList
⊢ p.cons f = C.cons D

tactic: simp [toList_injective _ _ hAC, eq_iff_true_of_subsingleton]
state_before: case intro
V : Type u
inst✝¹ : Quiver V
a✝ b c✝ d : V
inst✝ : ∀ (a b : V), Subsingleton (a ⟶ b)
a x✝ c : V
p : Path a c
f : c ⟶ x✝
C : Path a c
D : c ⟶ x✝
hAC : p.toList = C.toList
⊢ p.cons f = C.cons D
state_after: no goals
Theorem: sub_lie
File: Mathlib/Algebra/Lie/Basic.lean

tactic: simp [sub_eq_add_neg]
state_before: R : Type u
L : Type v
M : Type w
N : Type w₁
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup N
inst✝² : Module R N
inst✝¹ : LieRingModule L N
inst✝ : LieModule R L N
t : R
x y z : L
m n : M
⊢ ⁅x - y, m⁆ = ⁅x, m⁆ - ⁅y, m⁆
state_after: no goals
Theorem: SimpleGraph.CliqueFreeOn.of_succ
File: Mathlib/Combinatorics/SimpleGraph/Clique.lean

tactic: classical
refine fun t hts ht => hs ?_ (ht.insert fun b hb => (hts hb).2)
push_cast
exact Set.insert_subset_iff.2 ⟨ha, hts.trans Set.inter_subset_left⟩
state_before: α : Type u_1
β : Type u_2
G H : SimpleGraph α
s s₁ s₂ : Set α
t : Finset α
a b : α
m n : ℕ
hs : G.CliqueFreeOn s (n + 1)
ha : a ∈ s
⊢ G.CliqueFreeOn (s ∩ G.neighborSet a) n
state_after: no goals

tactic: refine fun t hts ht => hs ?_ (ht.insert fun b hb => (hts hb).2)
state_before: α : Type u_1
β : Type u_2
G H : SimpleGraph α
s s₁ s₂ : Set α
t : Finset α
a b : α
m n : ℕ
hs : G.CliqueFreeOn s (n + 1)
ha : a ∈ s
⊢ G.CliqueFreeOn (s ∩ G.neighborSet a) n
state_after: α : Type u_1
β : Type u_2
G H : SimpleGraph α
s s₁ s₂ : Set α
t✝ : Finset α
a b : α
m n : ℕ
hs : G.CliqueFreeOn s (n + 1)
ha : a ∈ s
t : Finset α
hts : ↑t ⊆ s ∩ G.neighborSet a
ht : G.IsNClique n t
⊢ ↑(insert a t) ⊆ s

tactic: push_cast
state_before: α : Type u_1
β : Type u_2
G H : SimpleGraph α
s s₁ s₂ : Set α
t✝ : Finset α
a b : α
m n : ℕ
hs : G.CliqueFreeOn s (n + 1)
ha : a ∈ s
t : Finset α
hts : ↑t ⊆ s ∩ G.neighborSet a
ht : G.IsNClique n t
⊢ ↑(insert a t) ⊆ s
state_after: α : Type u_1
β : Type u_2
G H : SimpleGraph α
s s₁ s₂ : Set α
t✝ : Finset α
a b : α
m n : ℕ
hs : G.CliqueFreeOn s (n + 1)
ha : a ∈ s
t : Finset α
hts : ↑t ⊆ s ∩ G.neighborSet a
ht : G.IsNClique n t
⊢ insert a ↑t ⊆ s

tactic: exact Set.insert_subset_iff.2 ⟨ha, hts.trans Set.inter_subset_left⟩
state_before: α : Type u_1
β : Type u_2
G H : SimpleGraph α
s s₁ s₂ : Set α
t✝ : Finset α
a b : α
m n : ℕ
hs : G.CliqueFreeOn s (n + 1)
ha : a ∈ s
t : Finset α
hts : ↑t ⊆ s ∩ G.neighborSet a
ht : G.IsNClique n t
⊢ insert a ↑t ⊆ s
state_after: no goals
Theorem: not_countable_complex
File: Mathlib/Data/Complex/Cardinality.lean

tactic: rw [← le_aleph0_iff_set_countable, not_le, mk_univ_complex]
state_before: ⊢ ¬Set.univ.Countable
state_after: ⊢ ℵ₀ < 𝔠

tactic: apply cantor
state_before: ⊢ ℵ₀ < 𝔠
state_after: no goals
Theorem: Set.pi_subset_pi_iff
File: Mathlib/Data/Set/Prod.lean

tactic: refine
  ⟨fun h => or_iff_not_imp_right.2 ?_, fun h => h.elim pi_mono fun h' => h'.symm ▸ empty_subset _⟩
state_before: ι : Type u_1
α : ι → Type u_2
β : ι → Type u_3
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
i : ι
⊢ s.pi t₁ ⊆ s.pi t₂ ↔ (∀ i ∈ s, t₁ i ⊆ t₂ i) ∨ s.pi t₁ = ∅
state_after: ι : Type u_1
α : ι → Type u_2
β : ι → Type u_3
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
i : ι
h : s.pi t₁ ⊆ s.pi t₂
⊢ ¬s.pi t₁ = ∅ → ∀ i ∈ s, t₁ i ⊆ t₂ i

tactic: rw [← Ne, ← nonempty_iff_ne_empty]
state_before: ι : Type u_1
α : ι → Type u_2
β : ι → Type u_3
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
i : ι
h : s.pi t₁ ⊆ s.pi t₂
⊢ ¬s.pi t₁ = ∅ → ∀ i ∈ s, t₁ i ⊆ t₂ i
state_after: ι : Type u_1
α : ι → Type u_2
β : ι → Type u_3
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
i : ι
h : s.pi t₁ ⊆ s.pi t₂
⊢ (s.pi t₁).Nonempty → ∀ i ∈ s, t₁ i ⊆ t₂ i

tactic: intro hne i hi
state_before: ι : Type u_1
α : ι → Type u_2
β : ι → Type u_3
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
i : ι
h : s.pi t₁ ⊆ s.pi t₂
⊢ (s.pi t₁).Nonempty → ∀ i ∈ s, t₁ i ⊆ t₂ i
state_after: ι : Type u_1
α : ι → Type u_2
β : ι → Type u_3
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
i✝ : ι
h : s.pi t₁ ⊆ s.pi t₂
hne : (s.pi t₁).Nonempty
i : ι
hi : i ∈ s
⊢ t₁ i ⊆ t₂ i

tactic: simpa only [eval_image_pi hi hne, eval_image_pi hi (hne.mono h)] using
  image_subset (fun f : ∀ i, α i => f i) h
state_before: ι : Type u_1
α : ι → Type u_2
β : ι → Type u_3
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
i✝ : ι
h : s.pi t₁ ⊆ s.pi t₂
hne : (s.pi t₁).Nonempty
i : ι
hi : i ∈ s
⊢ t₁ i ⊆ t₂ i
state_after: no goals
Theorem: MeasureTheory.nndist_integral_add_measure_le_lintegral
File: Mathlib/MeasureTheory/Integral/Bochner.lean

tactic: rw [integral_add_measure h₁ h₂, nndist_comm, nndist_eq_nnnorm, add_sub_cancel_left]
state_before: α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace ℝ E
hE : CompleteSpace E
inst✝⁹ : NontriviallyNormedField 𝕜
inst✝⁸ : NormedSpace 𝕜 E
inst✝⁷ : SMulCommClass ℝ 𝕜 E
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace ℝ F
inst✝⁴ : CompleteSpace F
G : Type u_5
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace ℝ G
f✝ g : α → E
m : MeasurableSpace α
μ : Measure α
X : Type u_6
inst✝¹ : TopologicalSpace X
inst✝ : FirstCountableTopology X
ν : Measure α
f : α → G
h₁ : Integrable f μ
h₂ : Integrable f ν
⊢ ↑(nndist (∫ (x : α), f x ∂μ) (∫ (x : α), f x ∂(μ + ν))) ≤ ∫⁻ (x : α), ↑‖f x‖₊ ∂ν
state_after: α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace ℝ E
hE : CompleteSpace E
inst✝⁹ : NontriviallyNormedField 𝕜
inst✝⁸ : NormedSpace 𝕜 E
inst✝⁷ : SMulCommClass ℝ 𝕜 E
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace ℝ F
inst✝⁴ : CompleteSpace F
G : Type u_5
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace ℝ G
f✝ g : α → E
m : MeasurableSpace α
μ : Measure α
X : Type u_6
inst✝¹ : TopologicalSpace X
inst✝ : FirstCountableTopology X
ν : Measure α
f : α → G
h₁ : Integrable f μ
h₂ : Integrable f ν
⊢ ↑‖∫ (x : α), f x ∂ν‖₊ ≤ ∫⁻ (x : α), ↑‖f x‖₊ ∂ν

tactic: exact ennnorm_integral_le_lintegral_ennnorm _
state_before: α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace ℝ E
hE : CompleteSpace E
inst✝⁹ : NontriviallyNormedField 𝕜
inst✝⁸ : NormedSpace 𝕜 E
inst✝⁷ : SMulCommClass ℝ 𝕜 E
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace ℝ F
inst✝⁴ : CompleteSpace F
G : Type u_5
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace ℝ G
f✝ g : α → E
m : MeasurableSpace α
μ : Measure α
X : Type u_6
inst✝¹ : TopologicalSpace X
inst✝ : FirstCountableTopology X
ν : Measure α
f : α → G
h₁ : Integrable f μ
h₂ : Integrable f ν
⊢ ↑‖∫ (x : α), f x ∂ν‖₊ ≤ ∫⁻ (x : α), ↑‖f x‖₊ ∂ν
state_after: no goals
Theorem: not_specializes_iff_exists_closed
File: Mathlib/Topology/Inseparable.lean

tactic: rw [specializes_iff_forall_closed]
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
ι : Type u_5
π : ι → Type u_6
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : (i : ι) → TopologicalSpace (π i)
x y z : X
s : Set X
f g : X → Y
⊢ ¬x ⤳ y ↔ ∃ S, IsClosed S ∧ x ∈ S ∧ y ∉ S
state_after: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
ι : Type u_5
π : ι → Type u_6
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : (i : ι) → TopologicalSpace (π i)
x y z : X
s : Set X
f g : X → Y
⊢ (¬∀ (s : Set X), IsClosed s → x ∈ s → y ∈ s) ↔ ∃ S, IsClosed S ∧ x ∈ S ∧ y ∉ S

tactic: push_neg
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
ι : Type u_5
π : ι → Type u_6
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : (i : ι) → TopologicalSpace (π i)
x y z : X
s : Set X
f g : X → Y
⊢ (¬∀ (s : Set X), IsClosed s → x ∈ s → y ∈ s) ↔ ∃ S, IsClosed S ∧ x ∈ S ∧ y ∉ S
state_after: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
ι : Type u_5
π : ι → Type u_6
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : (i : ι) → TopologicalSpace (π i)
x y z : X
s : Set X
f g : X → Y
⊢ (∃ s, IsClosed s ∧ x ∈ s ∧ y ∉ s) ↔ ∃ S, IsClosed S ∧ x ∈ S ∧ y ∉ S

tactic: rfl
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
ι : Type u_5
π : ι → Type u_6
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : (i : ι) → TopologicalSpace (π i)
x y z : X
s : Set X
f g : X → Y
⊢ (∃ s, IsClosed s ∧ x ∈ s ∧ y ∉ s) ↔ ∃ S, IsClosed S ∧ x ∈ S ∧ y ∉ S
state_after: no goals
Theorem: tendstoLocallyUniformlyOn_univ
File: Mathlib/Topology/UniformSpace/UniformConvergence.lean

tactic: simp [TendstoLocallyUniformlyOn, TendstoLocallyUniformly, nhdsWithin_univ]
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝¹ : UniformSpace β
F : ι → α → β
f : α → β
s s' : Set α
x : α
p : Filter ι
p' : Filter α
g : ι → α
inst✝ : TopologicalSpace α
⊢ TendstoLocallyUniformlyOn F f p univ ↔ TendstoLocallyUniformly F f p
state_after: no goals
Theorem: IsBezout.gcd_dvd_right
File: Mathlib/RingTheory/PrincipalIdealDomain.lean

tactic: simp
state_before: R : Type u
M : Type v
inst✝¹ : CommRing R
x y z : R
inst✝ : IsPrincipal (Ideal.span {x, y})
⊢ y ∈ {x, y}
state_after: no goals
Theorem: Nat.coprime_or_dvd_of_prime
File: Mathlib/Data/Nat/Prime.lean

tactic: rw [pp.dvd_iff_not_coprime]
state_before: n p : ℕ
pp : Prime p
i : ℕ
⊢ p.Coprime i ∨ p ∣ i
state_after: n p : ℕ
pp : Prime p
i : ℕ
⊢ p.Coprime i ∨ ¬p.Coprime i

tactic: apply em
state_before: n p : ℕ
pp : Prime p
i : ℕ
⊢ p.Coprime i ∨ ¬p.Coprime i
state_after: no goals
Theorem: SimpleGraph.Walk.cons_isTrail_iff
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: simp [isTrail_def, and_comm]
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v✝ w✝ x y u v w : V
h : G.Adj u v
p : G.Walk v w
⊢ (cons h p).IsTrail ↔ p.IsTrail ∧ s(u, v) ∉ p.edges
state_after: no goals
Theorem: continuousWithinAt_Icc_iff_Ici
File: Mathlib/Topology/Order/OrderClosed.lean

tactic: simp only [ContinuousWithinAt, nhdsWithin_Icc_eq_nhdsWithin_Ici h]
state_before: α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : ClosedIciTopology α
inst✝ : TopologicalSpace β
a b c : α
f : α → β
h : a < b
⊢ ContinuousWithinAt f (Icc a b) a ↔ ContinuousWithinAt f (Ici a) a
state_after: no goals
Theorem: Fin.cons_le_cons
File: Mathlib/Data/Fin/Tuple/Basic.lean

tactic: simp only [cons_succ, Pi.le_def]
state_before: m n : ℕ
α : Fin (n + 1) → Type u
x✝ : α 0
q : (i : Fin (n + 1)) → α i
p : (i : Fin n) → α i.succ
i : Fin n
y✝ : α i.succ
z : α 0
inst✝ : (i : Fin (n + 1)) → Preorder (α i)
x₀ y₀ : α 0
x y : (i : Fin n) → α i.succ
⊢ (∀ (i : Fin n), cons x₀ x i.succ ≤ cons y₀ y i.succ) ↔ x ≤ y
state_after: no goals
Theorem: AlgebraicGeometry.Scheme.comp_val_base_apply
File: Mathlib/AlgebraicGeometry/Scheme.lean

tactic: simp
state_before: X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
x : ↑↑X.toPresheafedSpace
⊢ (f ≫ g).val.base x = g.val.base (f.val.base x)
state_after: no goals
Theorem: Topology.IsLowerSet.isClosed_iff_isUpper
File: Mathlib/Topology/Order/UpperLowerSetTopology.lean

tactic: rw [← isOpen_compl_iff, isOpen_iff_isLowerSet, isUpperSet_compl.symm, compl_compl]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : Topology.IsLowerSet α
s : Set α
⊢ IsClosed s ↔ IsUpperSet s
state_after: no goals
Theorem: Down.mem_compression
File: Mathlib/Combinatorics/SetFamily/Compression/Down.lean

tactic: simp_rw [compression, mem_disjUnion, mem_filter, mem_image, and_comm (a := (¬ s ∈ 𝒜))]
state_before: α : Type u_1
inst✝ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s : Finset α
a : α
⊢ s ∈ 𝓓 a 𝒜 ↔ s ∈ 𝒜 ∧ s.erase a ∈ 𝒜 ∨ s ∉ 𝒜 ∧ insert a s ∈ 𝒜
state_after: α : Type u_1
inst✝ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s : Finset α
a : α
⊢ s ∈ 𝒜 ∧ s.erase a ∈ 𝒜 ∨ (∃ a_1 ∈ 𝒜, a_1.erase a = s) ∧ s ∉ 𝒜 ↔ s ∈ 𝒜 ∧ s.erase a ∈ 𝒜 ∨ insert a s ∈ 𝒜 ∧ s ∉ 𝒜

tactic: refine
  or_congr_right
    (and_congr_left fun hs =>
      ⟨?_, fun h => ⟨_, h, erase_insert <| insert_ne_self.1 <| ne_of_mem_of_not_mem h hs⟩⟩)
state_before: α : Type u_1
inst✝ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s : Finset α
a : α
⊢ s ∈ 𝒜 ∧ s.erase a ∈ 𝒜 ∨ (∃ a_1 ∈ 𝒜, a_1.erase a = s) ∧ s ∉ 𝒜 ↔ s ∈ 𝒜 ∧ s.erase a ∈ 𝒜 ∨ insert a s ∈ 𝒜 ∧ s ∉ 𝒜
state_after: α : Type u_1
inst✝ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s : Finset α
a : α
hs : s ∉ 𝒜
⊢ (∃ a_1 ∈ 𝒜, a_1.erase a = s) → insert a s ∈ 𝒜

tactic: rintro ⟨t, ht, rfl⟩
state_before: α : Type u_1
inst✝ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s : Finset α
a : α
hs : s ∉ 𝒜
⊢ (∃ a_1 ∈ 𝒜, a_1.erase a = s) → insert a s ∈ 𝒜
state_after: case intro.intro
α : Type u_1
inst✝ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
a : α
t : Finset α
ht : t ∈ 𝒜
hs : t.erase a ∉ 𝒜
⊢ insert a (t.erase a) ∈ 𝒜

tactic: rwa [insert_erase (erase_ne_self.1 (ne_of_mem_of_not_mem ht hs).symm)]
state_before: case intro.intro
α : Type u_1
inst✝ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
a : α
t : Finset α
ht : t ∈ 𝒜
hs : t.erase a ∉ 𝒜
⊢ insert a (t.erase a) ∈ 𝒜
state_after: no goals
Theorem: Function.Antiperiodic.sub_const
File: Mathlib/Algebra/Periodic.lean

tactic: simpa only [sub_eq_add_neg] using h.add_const (-a)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f g : α → β
c c₁ c₂ x : α
inst✝¹ : AddCommGroup α
inst✝ : Neg β
h : Antiperiodic f c
a : α
⊢ Antiperiodic (fun x => f (x - a)) c
state_after: no goals
Theorem: List.count_cons'
File: Mathlib/Data/List/Count.lean

tactic: simp only [count, beq_iff_eq, countP_cons, Nat.add_right_inj]
state_before: α : Type u_1
l✝ : List α
inst✝ : DecidableEq α
a b : α
l : List α
⊢ count a (b :: l) = count a l + if a = b then 1 else 0
state_after: α : Type u_1
l✝ : List α
inst✝ : DecidableEq α
a b : α
l : List α
⊢ (if b = a then 1 else 0) = if a = b then 1 else 0

tactic: simp only [eq_comm]
state_before: α : Type u_1
l✝ : List α
inst✝ : DecidableEq α
a b : α
l : List α
⊢ (if b = a then 1 else 0) = if a = b then 1 else 0
state_after: no goals
Theorem: IsLocalization.exist_integer_multiples_of_finite
File: Mathlib/RingTheory/Localization/Integer.lean

tactic: cases nonempty_fintype ι
state_before: R : Type u_1
inst✝⁵ : CommSemiring R
M : Submonoid R
S : Type u_2
inst✝⁴ : CommSemiring S
inst✝³ : Algebra R S
P : Type u_3
inst✝² : CommSemiring P
inst✝¹ : IsLocalization M S
ι : Type u_4
inst✝ : Finite ι
f : ι → S
⊢ ∃ b, ∀ (i : ι), IsInteger R (↑b • f i)
state_after: case intro
R : Type u_1
inst✝⁵ : CommSemiring R
M : Submonoid R
S : Type u_2
inst✝⁴ : CommSemiring S
inst✝³ : Algebra R S
P : Type u_3
inst✝² : CommSemiring P
inst✝¹ : IsLocalization M S
ι : Type u_4
inst✝ : Finite ι
f : ι → S
val✝ : Fintype ι
⊢ ∃ b, ∀ (i : ι), IsInteger R (↑b • f i)

tactic: obtain ⟨b, hb⟩ := exist_integer_multiples M Finset.univ f
state_before: case intro
R : Type u_1
inst✝⁵ : CommSemiring R
M : Submonoid R
S : Type u_2
inst✝⁴ : CommSemiring S
inst✝³ : Algebra R S
P : Type u_3
inst✝² : CommSemiring P
inst✝¹ : IsLocalization M S
ι : Type u_4
inst✝ : Finite ι
f : ι → S
val✝ : Fintype ι
⊢ ∃ b, ∀ (i : ι), IsInteger R (↑b • f i)
state_after: case intro.intro
R : Type u_1
inst✝⁵ : CommSemiring R
M : Submonoid R
S : Type u_2
inst✝⁴ : CommSemiring S
inst✝³ : Algebra R S
P : Type u_3
inst✝² : CommSemiring P
inst✝¹ : IsLocalization M S
ι : Type u_4
inst✝ : Finite ι
f : ι → S
val✝ : Fintype ι
b : ↥M
hb : ∀ i ∈ Finset.univ, IsInteger R (↑b • f i)
⊢ ∃ b, ∀ (i : ι), IsInteger R (↑b • f i)

tactic: exact ⟨b, fun i => hb i (Finset.mem_univ _)⟩
state_before: case intro.intro
R : Type u_1
inst✝⁵ : CommSemiring R
M : Submonoid R
S : Type u_2
inst✝⁴ : CommSemiring S
inst✝³ : Algebra R S
P : Type u_3
inst✝² : CommSemiring P
inst✝¹ : IsLocalization M S
ι : Type u_4
inst✝ : Finite ι
f : ι → S
val✝ : Fintype ι
b : ↥M
hb : ∀ i ∈ Finset.univ, IsInteger R (↑b • f i)
⊢ ∃ b, ∀ (i : ι), IsInteger R (↑b • f i)
state_after: no goals