1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: SimpleGraph.ConnectedComponent.map_comp
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: refine C.ind ?_
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
C : G.ConnectedComponent
φ : G →g G'
ψ : G' →g G''
⊢ map ψ (map φ C) = map (ψ.comp φ) C
state_after: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
C : G.ConnectedComponent
φ : G →g G'
ψ : G' →g G''
⊢ ∀ (v : V), map ψ (map φ (G.connectedComponentMk v)) = map (ψ.comp φ) (G.connectedComponentMk v)

tactic: exact fun _ => rfl
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
C : G.ConnectedComponent
φ : G →g G'
ψ : G' →g G''
⊢ ∀ (v : V), map ψ (map φ (G.connectedComponentMk v)) = map (ψ.comp φ) (G.connectedComponentMk v)
state_after: no goals
Theorem: CategoryTheory.Preadditive.isSeparator_iff
File: Mathlib/CategoryTheory/Preadditive/Generator.lean

tactic: simpa only [Limits.comp_zero] using hf
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : Preadditive C
G : C
hG : IsSeparator G
X Y : C
f : X ⟶ Y
hf : ∀ (h : G ⟶ X), h ≫ f = 0
⊢ ∀ (h : G ⟶ X), h ≫ f = h ≫ 0
state_after: no goals

tactic: simpa only [Preadditive.comp_sub, sub_eq_zero] using hfg
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : Preadditive C
G : C
hG : ∀ ⦃X Y : C⦄ (f : X ⟶ Y), (∀ (h : G ⟶ X), h ≫ f = 0) → f = 0
X Y : C
f g : X ⟶ Y
hfg : ∀ (h : G ⟶ X), h ≫ f = h ≫ g
⊢ ∀ (h : G ⟶ X), h ≫ (f - g) = 0
state_after: no goals
Theorem: Finset.left_eq_union
File: Mathlib/Data/Finset/Basic.lean

tactic: rw [eq_comm, union_eq_left]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s s₁ s₂ t t₁ t₂ u v : Finset α
a b : α
⊢ s = s ∪ t ↔ t ⊆ s
state_after: no goals
Theorem: DenseRange.comp
File: Mathlib/Topology/Basic.lean

tactic: rw [DenseRange, range_comp]
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
f✝² : X → Y
s✝ : Set X
x : X
y : Y
α : Type u_4
ι : Type u_5
f✝¹ : α → X
g✝ : X → Y
f✝ : α → X
s : Set X
g : Y → Z
f : α → Y
hg : DenseRange g
hf : DenseRange f
cg : Continuous g
⊢ DenseRange (g ∘ f)
state_after: X : Type u_1
Y : Type u_2
Z : Type u_3
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
f✝² : X → Y
s✝ : Set X
x : X
y : Y
α : Type u_4
ι : Type u_5
f✝¹ : α → X
g✝ : X → Y
f✝ : α → X
s : Set X
g : Y → Z
f : α → Y
hg : DenseRange g
hf : DenseRange f
cg : Continuous g
⊢ Dense (g '' range f)

tactic: exact hg.dense_image cg hf
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
f✝² : X → Y
s✝ : Set X
x : X
y : Y
α : Type u_4
ι : Type u_5
f✝¹ : α → X
g✝ : X → Y
f✝ : α → X
s : Set X
g : Y → Z
f : α → Y
hg : DenseRange g
hf : DenseRange f
cg : Continuous g
⊢ Dense (g '' range f)
state_after: no goals
Theorem: NNReal.concaveOn_rpow
File: Mathlib/Analysis/Convex/SpecificFunctions/Pow.lean

tactic: rcases eq_or_lt_of_le hp₀ with (rfl | hp₀)
state_before: p : ℝ
hp₀ : 0 ≤ p
hp₁ : p ≤ 1
⊢ ConcaveOn ℝ≥0 univ fun x => x ^ p
state_after: case inl
hp₀ : 0 ≤ 0
hp₁ : 0 ≤ 1
⊢ ConcaveOn ℝ≥0 univ fun x => x ^ 0

case inr
p : ℝ
hp₀✝ : 0 ≤ p
hp₁ : p ≤ 1
hp₀ : 0 < p
⊢ ConcaveOn ℝ≥0 univ fun x => x ^ p

tactic: rcases eq_or_lt_of_le hp₁ with (rfl | hp₁)
state_before: case inr
p : ℝ
hp₀✝ : 0 ≤ p
hp₁ : p ≤ 1
hp₀ : 0 < p
⊢ ConcaveOn ℝ≥0 univ fun x => x ^ p
state_after: case inr.inl
hp₀✝ : 0 ≤ 1
hp₁ : 1 ≤ 1
hp₀ : 0 < 1
⊢ ConcaveOn ℝ≥0 univ fun x => x ^ 1

case inr.inr
p : ℝ
hp₀✝ : 0 ≤ p
hp₁✝ : p ≤ 1
hp₀ : 0 < p
hp₁ : p < 1
⊢ ConcaveOn ℝ≥0 univ fun x => x ^ p

tactic: exact (strictConcaveOn_rpow hp₀ hp₁).concaveOn
state_before: case inr.inr
p : ℝ
hp₀✝ : 0 ≤ p
hp₁✝ : p ≤ 1
hp₀ : 0 < p
hp₁ : p < 1
⊢ ConcaveOn ℝ≥0 univ fun x => x ^ p
state_after: no goals

tactic: simpa only [rpow_zero] using concaveOn_const (c := 1) convex_univ
state_before: case inl
hp₀ : 0 ≤ 0
hp₁ : 0 ≤ 1
⊢ ConcaveOn ℝ≥0 univ fun x => x ^ 0
state_after: no goals

tactic: simpa only [rpow_one] using concaveOn_id convex_univ
state_before: case inr.inl
hp₀✝ : 0 ≤ 1
hp₁ : 1 ≤ 1
hp₀ : 0 < 1
⊢ ConcaveOn ℝ≥0 univ fun x => x ^ 1
state_after: no goals
Theorem: Set.image_mul_right_Ioo
File: Mathlib/Data/Set/Pointwise/Interval.lean

tactic: simp [h, division_def]
state_before: α : Type u_1
inst✝ : LinearOrderedField α
a✝ a b c : α
h : 0 < c
⊢ ⇑(Equiv.symm (Units.mk0 c ⋯).mulRight) ⁻¹' Ioo a b = Ioo (a * c) (b * c)
state_after: no goals
Theorem: Asymptotics.IsTheta.tendsto_zero_iff
File: Mathlib/Analysis/Asymptotics/Theta.lean

tactic: simp only [← isLittleO_one_iff ℝ, h.isLittleO_congr_left]
state_before: α : Type u_1
β : Type u_2
E : Type u_3
F : Type u_4
G : Type u_5
E' : Type u_6
F' : Type u_7
G' : Type u_8
E'' : Type u_9
F'' : Type u_10
G'' : Type u_11
R : Type u_12
R' : Type u_13
𝕜 : Type u_14
𝕜' : Type u_15
inst✝¹² : Norm E
inst✝¹¹ : Norm F
inst✝¹⁰ : Norm G
inst✝⁹ : SeminormedAddCommGroup E'
inst✝⁸ : SeminormedAddCommGroup F'
inst✝⁷ : SeminormedAddCommGroup G'
inst✝⁶ : NormedAddCommGroup E''
inst✝⁵ : NormedAddCommGroup F''
inst✝⁴ : NormedAddCommGroup G''
inst✝³ : SeminormedRing R
inst✝² : SeminormedRing R'
inst✝¹ : NormedField 𝕜
inst✝ : NormedField 𝕜'
c c' c₁ c₂ : ℝ
f : α → E
g : α → F
k : α → G
f' : α → E'
g' : α → F'
k' : α → G'
f'' : α → E''
g'' : α → F''
l l' : Filter α
h : f'' =Θ[l] g''
⊢ Tendsto f'' l (𝓝 0) ↔ Tendsto g'' l (𝓝 0)
state_after: no goals
Theorem: Matroid.Dep.dep_restriction
File: Mathlib/Data/Matroid/Restrict.lean

tactic: obtain ⟨R, -, rfl⟩ := hNM
state_before: α : Type u_1
M : Matroid α
R I J X Y : Set α
N : Matroid α
hX : M.Dep X
hNM : N ≤r M
hXE : autoParam (X ⊆ N.E) _auto✝
⊢ N.Dep X
state_after: case intro.intro
α : Type u_1
M : Matroid α
R✝ I J X Y : Set α
hX : M.Dep X
R : Set α
hXE : autoParam (X ⊆ (M ↾ R).E) _auto✝
⊢ (M ↾ R).Dep X

tactic: simpa [hX.not_indep]
state_before: case intro.intro
α : Type u_1
M : Matroid α
R✝ I J X Y : Set α
hX : M.Dep X
R : Set α
hXE : autoParam (X ⊆ (M ↾ R).E) _auto✝
⊢ (M ↾ R).Dep X
state_after: no goals
Theorem: continuousAt_const_cpow'
File: Mathlib/Analysis/SpecialFunctions/Pow/Continuity.lean

tactic: by_cases ha : a = 0
state_before: α : Type u_1
a b : ℂ
h : b ≠ 0
⊢ ContinuousAt (fun x => a ^ x) b
state_after: case pos
α : Type u_1
a b : ℂ
h : b ≠ 0
ha : a = 0
⊢ ContinuousAt (fun x => a ^ x) b

case neg
α : Type u_1
a b : ℂ
h : b ≠ 0
ha : ¬a = 0
⊢ ContinuousAt (fun x => a ^ x) b

tactic: rw [ha, continuousAt_congr (zero_cpow_eq_nhds h)]
state_before: case pos
α : Type u_1
a b : ℂ
h : b ≠ 0
ha : a = 0
⊢ ContinuousAt (fun x => a ^ x) b
state_after: case pos
α : Type u_1
a b : ℂ
h : b ≠ 0
ha : a = 0
⊢ ContinuousAt 0 b

tactic: exact continuousAt_const
state_before: case pos
α : Type u_1
a b : ℂ
h : b ≠ 0
ha : a = 0
⊢ ContinuousAt 0 b
state_after: no goals

tactic: exact continuousAt_const_cpow ha
state_before: case neg
α : Type u_1
a b : ℂ
h : b ≠ 0
ha : ¬a = 0
⊢ ContinuousAt (fun x => a ^ x) b
state_after: no goals
Theorem: Language.map_map
File: Mathlib/Computability/Language.lean

tactic: simp [map, image_image]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
l✝ m : Language α
a b x : List α
g : β → γ
f : α → β
l : Language α
⊢ (map g) ((map f) l) = (map (g ∘ f)) l
state_after: no goals
Theorem: Set.Iic_ciInf
File: Mathlib/Order/ConditionallyCompleteLattice/Basic.lean

tactic: apply Subset.antisymm
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝¹ : ConditionallyCompleteLattice α
s t : Set α
a b : α
inst✝ : Nonempty ι
f : ι → α
hf : BddBelow (range f)
⊢ Iic (⨅ i, f i) = ⋂ i, Iic (f i)
state_after: case h₁
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝¹ : ConditionallyCompleteLattice α
s t : Set α
a b : α
inst✝ : Nonempty ι
f : ι → α
hf : BddBelow (range f)
⊢ Iic (⨅ i, f i) ⊆ ⋂ i, Iic (f i)

case h₂
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝¹ : ConditionallyCompleteLattice α
s t : Set α
a b : α
inst✝ : Nonempty ι
f : ι → α
hf : BddBelow (range f)
⊢ ⋂ i, Iic (f i) ⊆ Iic (⨅ i, f i)

tactic: rintro x hx - ⟨i, rfl⟩
state_before: case h₁
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝¹ : ConditionallyCompleteLattice α
s t : Set α
a b : α
inst✝ : Nonempty ι
f : ι → α
hf : BddBelow (range f)
⊢ Iic (⨅ i, f i) ⊆ ⋂ i, Iic (f i)
state_after: case h₁.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝¹ : ConditionallyCompleteLattice α
s t : Set α
a b : α
inst✝ : Nonempty ι
f : ι → α
hf : BddBelow (range f)
x : α
hx : x ∈ Iic (⨅ i, f i)
i : ι
⊢ x ∈ (fun i => Iic (f i)) i

tactic: exact hx.trans (ciInf_le hf _)
state_before: case h₁.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝¹ : ConditionallyCompleteLattice α
s t : Set α
a b : α
inst✝ : Nonempty ι
f : ι → α
hf : BddBelow (range f)
x : α
hx : x ∈ Iic (⨅ i, f i)
i : ι
⊢ x ∈ (fun i => Iic (f i)) i
state_after: no goals

tactic: rintro x hx
state_before: case h₂
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝¹ : ConditionallyCompleteLattice α
s t : Set α
a b : α
inst✝ : Nonempty ι
f : ι → α
hf : BddBelow (range f)
⊢ ⋂ i, Iic (f i) ⊆ Iic (⨅ i, f i)
state_after: case h₂
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝¹ : ConditionallyCompleteLattice α
s t : Set α
a b : α
inst✝ : Nonempty ι
f : ι → α
hf : BddBelow (range f)
x : α
hx : x ∈ ⋂ i, Iic (f i)
⊢ x ∈ Iic (⨅ i, f i)

tactic: apply le_ciInf
state_before: case h₂
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝¹ : ConditionallyCompleteLattice α
s t : Set α
a b : α
inst✝ : Nonempty ι
f : ι → α
hf : BddBelow (range f)
x : α
hx : x ∈ ⋂ i, Iic (f i)
⊢ x ∈ Iic (⨅ i, f i)
state_after: case h₂.H
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝¹ : ConditionallyCompleteLattice α
s t : Set α
a b : α
inst✝ : Nonempty ι
f : ι → α
hf : BddBelow (range f)
x : α
hx : x ∈ ⋂ i, Iic (f i)
⊢ ∀ (x_1 : ι), x ≤ f x_1

tactic: simpa using hx
state_before: case h₂.H
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝¹ : ConditionallyCompleteLattice α
s t : Set α
a b : α
inst✝ : Nonempty ι
f : ι → α
hf : BddBelow (range f)
x : α
hx : x ∈ ⋂ i, Iic (f i)
⊢ ∀ (x_1 : ι), x ≤ f x_1
state_after: no goals
Theorem: BoundedContinuousFunction.integral_add_const
File: Mathlib/MeasureTheory/Integral/BoundedContinuousFunction.lean

tactic: simp [integral_add (f.integrable _) (integrable_const c)]
state_before: X : Type u_1
inst✝³ : TopologicalSpace X
inst✝² : MeasurableSpace X
inst✝¹ : OpensMeasurableSpace X
μ : Measure X
inst✝ : IsFiniteMeasure μ
f : X →ᵇ ℝ
c : ℝ
⊢ ∫ (x : X), (f + const X c) x ∂μ = ∫ (x : X), f x ∂μ + (μ Set.univ).toReal • c
state_after: no goals
Theorem: Filter.lift_iInf_of_directed
File: Mathlib/Order/Filter/Lift.lean

tactic: simp only [mem_lift_sets hg, exists_imp, and_imp, mem_iInf_of_directed hf]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
f✝ f₁ f₂ : Filter α
g✝ g₁ g₂ : Set α → Filter β
inst✝ : Nonempty ι
f : ι → Filter α
g : Set α → Filter β
hf : Directed (fun x x_1 => x ≥ x_1) f
hg : Monotone g
s : Set β
⊢ s ∈ (iInf f).lift g → s ∈ ⨅ i, (f i).lift g
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
f✝ f₁ f₂ : Filter α
g✝ g₁ g₂ : Set α → Filter β
inst✝ : Nonempty ι
f : ι → Filter α
g : Set α → Filter β
hf : Directed (fun x x_1 => x ≥ x_1) f
hg : Monotone g
s : Set β
⊢ ∀ (x : Set α) (x_1 : ι), x ∈ f x_1 → s ∈ g x → s ∈ ⨅ i, (f i).lift g

tactic: exact fun t i ht hs => mem_iInf_of_mem i <| mem_lift ht hs
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
f✝ f₁ f₂ : Filter α
g✝ g₁ g₂ : Set α → Filter β
inst✝ : Nonempty ι
f : ι → Filter α
g : Set α → Filter β
hf : Directed (fun x x_1 => x ≥ x_1) f
hg : Monotone g
s : Set β
⊢ ∀ (x : Set α) (x_1 : ι), x ∈ f x_1 → s ∈ g x → s ∈ ⨅ i, (f i).lift g
state_after: no goals
Theorem: LucasLehmer.sZMod_eq_s
File: Mathlib/NumberTheory/LucasLehmer.lean

tactic: induction' i with i ih
state_before: p' i : ℕ
⊢ sZMod (p' + 2) i = ↑(s i)
state_after: case zero
p' : ℕ
⊢ sZMod (p' + 2) 0 = ↑(s 0)

case succ
p' i : ℕ
ih : sZMod (p' + 2) i = ↑(s i)
⊢ sZMod (p' + 2) (i + 1) = ↑(s (i + 1))

tactic: dsimp [s, sZMod]
state_before: case zero
p' : ℕ
⊢ sZMod (p' + 2) 0 = ↑(s 0)
state_after: case zero
p' : ℕ
⊢ 4 = ↑4

tactic: norm_num
state_before: case zero
p' : ℕ
⊢ 4 = ↑4
state_after: no goals

tactic: push_cast [s, sZMod, ih]
state_before: case succ
p' i : ℕ
ih : sZMod (p' + 2) i = ↑(s i)
⊢ sZMod (p' + 2) (i + 1) = ↑(s (i + 1))
state_after: case succ
p' i : ℕ
ih : sZMod (p' + 2) i = ↑(s i)
⊢ ↑(s i) ^ 2 - 2 = ↑(s i) ^ 2 - 2

tactic: rfl
state_before: case succ
p' i : ℕ
ih : sZMod (p' + 2) i = ↑(s i)
⊢ ↑(s i) ^ 2 - 2 = ↑(s i) ^ 2 - 2
state_after: no goals
Theorem: iUnion_Icc_add_intCast
File: Mathlib/Algebra/Order/ToIntervalMod.lean

tactic: simpa only [zsmul_one, Int.cast_add, Int.cast_one, ← add_assoc] using
  iUnion_Icc_add_zsmul zero_lt_one a
state_before: α : Type u_1
inst✝¹ : LinearOrderedRing α
inst✝ : Archimedean α
a : α
⊢ ⋃ n, Icc (a + ↑n) (a + ↑n + 1) = univ
state_after: no goals
Theorem: mul_inv_le_iff_le_mul'
File: Mathlib/Algebra/Order/Group/Defs.lean

tactic: rw [← inv_mul_le_iff_le_mul, mul_comm]
state_before: α : Type u
inst✝² : CommGroup α
inst✝¹ : LE α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b c d : α
⊢ a * b⁻¹ ≤ c ↔ a ≤ b * c
state_after: no goals
Theorem: sub_one_dvd_pow_sub_one
File: Mathlib/Algebra/GeomSum.lean

tactic: conv_rhs => rw [← one_pow n]
state_before: α : Type u
inst✝ : Ring α
x : α
n : ℕ
⊢ x - 1 ∣ x ^ n - 1
state_after: α : Type u
inst✝ : Ring α
x : α
n : ℕ
⊢ x - 1 ∣ x ^ n - 1 ^ n

tactic: exact (Commute.one_right x).sub_dvd_pow_sub_pow n
state_before: α : Type u
inst✝ : Ring α
x : α
n : ℕ
⊢ x - 1 ∣ x ^ n - 1 ^ n
state_after: no goals
Theorem: MeasurableSpace.exists_countablyGenerated_le_of_countablySeparated
File: Mathlib/MeasureTheory/MeasurableSpace/CountablyGenerated.lean

tactic: rcases h with ⟨b, bct, hbm, hb⟩
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
h : CountablySeparated α
⊢ ∃ m', CountablyGenerated α ∧ SeparatesPoints α ∧ m' ≤ m
state_after: case mk.mk.intro.intro.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
b : Set (Set α)
bct : b.Countable
hbm : ∀ s ∈ b, MeasurableSet s
hb : ∀ x ∈ univ, ∀ y ∈ univ, (∀ s ∈ b, x ∈ s ↔ y ∈ s) → x = y
⊢ ∃ m', CountablyGenerated α ∧ SeparatesPoints α ∧ m' ≤ m

tactic: refine ⟨generateFrom b, ?_, ?_, generateFrom_le hbm⟩
state_before: case mk.mk.intro.intro.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
b : Set (Set α)
bct : b.Countable
hbm : ∀ s ∈ b, MeasurableSet s
hb : ∀ x ∈ univ, ∀ y ∈ univ, (∀ s ∈ b, x ∈ s ↔ y ∈ s) → x = y
⊢ ∃ m', CountablyGenerated α ∧ SeparatesPoints α ∧ m' ≤ m
state_after: case mk.mk.intro.intro.intro.refine_1
α : Type u_1
β : Type u_2
m : MeasurableSpace α
b : Set (Set α)
bct : b.Countable
hbm : ∀ s ∈ b, MeasurableSet s
hb : ∀ x ∈ univ, ∀ y ∈ univ, (∀ s ∈ b, x ∈ s ↔ y ∈ s) → x = y
⊢ CountablyGenerated α

case mk.mk.intro.intro.intro.refine_2
α : Type u_1
β : Type u_2
m : MeasurableSpace α
b : Set (Set α)
bct : b.Countable
hbm : ∀ s ∈ b, MeasurableSet s
hb : ∀ x ∈ univ, ∀ y ∈ univ, (∀ s ∈ b, x ∈ s ↔ y ∈ s) → x = y
⊢ SeparatesPoints α

tactic: rw [@separatesPoints_iff]
state_before: case mk.mk.intro.intro.intro.refine_2
α : Type u_1
β : Type u_2
m : MeasurableSpace α
b : Set (Set α)
bct : b.Countable
hbm : ∀ s ∈ b, MeasurableSet s
hb : ∀ x ∈ univ, ∀ y ∈ univ, (∀ s ∈ b, x ∈ s ↔ y ∈ s) → x = y
⊢ SeparatesPoints α
state_after: case mk.mk.intro.intro.intro.refine_2
α : Type u_1
β : Type u_2
m : MeasurableSpace α
b : Set (Set α)
bct : b.Countable
hbm : ∀ s ∈ b, MeasurableSet s
hb : ∀ x ∈ univ, ∀ y ∈ univ, (∀ s ∈ b, x ∈ s ↔ y ∈ s) → x = y
⊢ ∀ (x y : α), (∀ (s : Set α), MeasurableSet s → (x ∈ s ↔ y ∈ s)) → x = y

tactic: exact fun x y hxy ↦ hb _ trivial _ trivial fun _ hs ↦ hxy _ $ measurableSet_generateFrom hs
state_before: case mk.mk.intro.intro.intro.refine_2
α : Type u_1
β : Type u_2
m : MeasurableSpace α
b : Set (Set α)
bct : b.Countable
hbm : ∀ s ∈ b, MeasurableSet s
hb : ∀ x ∈ univ, ∀ y ∈ univ, (∀ s ∈ b, x ∈ s ↔ y ∈ s) → x = y
⊢ ∀ (x y : α), (∀ (s : Set α), MeasurableSet s → (x ∈ s ↔ y ∈ s)) → x = y
state_after: no goals

tactic: use b
state_before: case mk.mk.intro.intro.intro.refine_1
α : Type u_1
β : Type u_2
m : MeasurableSpace α
b : Set (Set α)
bct : b.Countable
hbm : ∀ s ∈ b, MeasurableSet s
hb : ∀ x ∈ univ, ∀ y ∈ univ, (∀ s ∈ b, x ∈ s ↔ y ∈ s) → x = y
⊢ CountablyGenerated α
state_after: no goals
Theorem: Nat.Prime.dvd_iff_eq
File: Mathlib/Data/Nat/Prime.lean

tactic: refine ⟨?_, by rintro rfl; rfl⟩
state_before: n p a : ℕ
hp : Prime p
a1 : a ≠ 1
⊢ a ∣ p ↔ p = a
state_after: n p a : ℕ
hp : Prime p
a1 : a ≠ 1
⊢ a ∣ p → p = a

tactic: rintro ⟨j, rfl⟩
state_before: n p a : ℕ
hp : Prime p
a1 : a ≠ 1
⊢ a ∣ p → p = a
state_after: case intro
n a : ℕ
a1 : a ≠ 1
j : ℕ
hp : Prime (a * j)
⊢ a * j = a

tactic: rcases prime_mul_iff.mp hp with (⟨_, rfl⟩ | ⟨_, rfl⟩)
state_before: case intro
n a : ℕ
a1 : a ≠ 1
j : ℕ
hp : Prime (a * j)
⊢ a * j = a
state_after: case intro.inl.intro
n a : ℕ
a1 : a ≠ 1
left✝ : Prime a
hp : Prime (a * 1)
⊢ a * 1 = a

case intro.inr.intro
n j : ℕ
left✝ : Prime j
a1 : 1 ≠ 1
hp : Prime (1 * j)
⊢ 1 * j = 1

tactic: rintro rfl
state_before: n p a : ℕ
hp : Prime p
a1 : a ≠ 1
⊢ p = a → a ∣ p
state_after: n p : ℕ
hp : Prime p
a1 : p ≠ 1
⊢ p ∣ p

tactic: rfl
state_before: n p : ℕ
hp : Prime p
a1 : p ≠ 1
⊢ p ∣ p
state_after: no goals

tactic: exact mul_one _
state_before: case intro.inl.intro
n a : ℕ
a1 : a ≠ 1
left✝ : Prime a
hp : Prime (a * 1)
⊢ a * 1 = a
state_after: no goals

tactic: exact (a1 rfl).elim
state_before: case intro.inr.intro
n j : ℕ
left✝ : Prime j
a1 : 1 ≠ 1
hp : Prime (1 * j)
⊢ 1 * j = 1
state_after: no goals
Theorem: ofAdd_image_multiples_eq_powers_ofAdd
File: Mathlib/Algebra/Group/Submonoid/Membership.lean

tactic: symm
state_before: M : Type u_1
A : Type u_2
B : Type u_3
inst✝ : AddMonoid A
x : A
⊢ ⇑Multiplicative.ofAdd '' ↑(AddSubmonoid.multiples x) = ↑(Submonoid.powers (Multiplicative.ofAdd x))
state_after: M : Type u_1
A : Type u_2
B : Type u_3
inst✝ : AddMonoid A
x : A
⊢ ↑(Submonoid.powers (Multiplicative.ofAdd x)) = ⇑Multiplicative.ofAdd '' ↑(AddSubmonoid.multiples x)

tactic: rw [Equiv.eq_image_iff_symm_image_eq]
state_before: M : Type u_1
A : Type u_2
B : Type u_3
inst✝ : AddMonoid A
x : A
⊢ ↑(Submonoid.powers (Multiplicative.ofAdd x)) = ⇑Multiplicative.ofAdd '' ↑(AddSubmonoid.multiples x)
state_after: M : Type u_1
A : Type u_2
B : Type u_3
inst✝ : AddMonoid A
x : A
⊢ ⇑Multiplicative.ofAdd.symm '' ↑(Submonoid.powers (Multiplicative.ofAdd x)) = ↑(AddSubmonoid.multiples x)

tactic: exact ofMul_image_powers_eq_multiples_ofMul
state_before: M : Type u_1
A : Type u_2
B : Type u_3
inst✝ : AddMonoid A
x : A
⊢ ⇑Multiplicative.ofAdd.symm '' ↑(Submonoid.powers (Multiplicative.ofAdd x)) = ↑(AddSubmonoid.multiples x)
state_after: no goals
Theorem: Set.image_comp_eq
File: Mathlib/Data/Set/Image.lean

tactic: ext
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f : α → β
s t : Set α
g : β → γ
⊢ image (g ∘ f) = image g ∘ image f
state_after: case h.h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f : α → β
s t : Set α
g : β → γ
x✝¹ : Set α
x✝ : γ
⊢ x✝ ∈ g ∘ f '' x✝¹ ↔ x✝ ∈ (image g ∘ image f) x✝¹

tactic: simp
state_before: case h.h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f : α → β
s t : Set α
g : β → γ
x✝¹ : Set α
x✝ : γ
⊢ x✝ ∈ g ∘ f '' x✝¹ ↔ x✝ ∈ (image g ∘ image f) x✝¹
state_after: no goals
Theorem: NNRat.cast_commute
File: Mathlib/Data/Rat/Cast/Defs.lean

tactic: simpa only [cast_def] using (q.num.cast_commute a).div_left (q.den.cast_commute a)
state_before: F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
inst✝ : DivisionSemiring α
q✝ r q : ℚ≥0
a : α
⊢ Commute (↑q) a
state_after: no goals
Theorem: ENNReal.rpow_lt_rpow_of_exponent_gt
File: Mathlib/Analysis/SpecialFunctions/Pow/NNReal.lean

tactic: lift x to ℝ≥0 using ne_of_lt (lt_of_lt_of_le hx1 le_top)
state_before: x : ℝ≥0∞
y z : ℝ
hx0 : 0 < x
hx1 : x < 1
hyz : z < y
⊢ x ^ y < x ^ z
state_after: case intro
y z : ℝ
hyz : z < y
x : ℝ≥0
hx0 : 0 < ↑x
hx1 : ↑x < 1
⊢ ↑x ^ y < ↑x ^ z

tactic: simp only [coe_lt_one_iff, coe_pos] at hx0 hx1
state_before: case intro
y z : ℝ
hyz : z < y
x : ℝ≥0
hx0 : 0 < ↑x
hx1 : ↑x < 1
⊢ ↑x ^ y < ↑x ^ z
state_after: case intro
y z : ℝ
hyz : z < y
x : ℝ≥0
hx0 : 0 < x
hx1 : x < 1
⊢ ↑x ^ y < ↑x ^ z

tactic: simp [coe_rpow_of_ne_zero (ne_of_gt hx0), NNReal.rpow_lt_rpow_of_exponent_gt hx0 hx1 hyz]
state_before: case intro
y z : ℝ
hyz : z < y
x : ℝ≥0
hx0 : 0 < x
hx1 : x < 1
⊢ ↑x ^ y < ↑x ^ z
state_after: no goals
Theorem: Metric.mem_closedBall_self
File: Mathlib/Topology/MetricSpace/Pseudo/Defs.lean

tactic: rwa [mem_closedBall, dist_self]
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
x y z : α
δ ε ε₁ ε₂ : ℝ
s : Set α
h : 0 ≤ ε
⊢ x ∈ closedBall x ε
state_after: no goals
Theorem: Real.geom_mean_le_arith_mean2_weighted
File: Mathlib/Analysis/MeanInequalities.lean

tactic: assumption
state_before: ι : Type u
s : Finset ι
w₁ w₂ p₁ p₂ : ℝ
hw₁ : 0 ≤ w₁
hw₂ : 0 ≤ w₂
hp₁ : 0 ≤ p₁
hp₂ : 0 ≤ p₂
hw : w₁ + w₂ = 1
⊢ ↑(⟨w₁, hw₁⟩ + ⟨w₂, hw₂⟩) = ↑1
state_after: no goals
Theorem: xor_comm
File: Mathlib/Logic/Basic.lean

tactic: simp [Xor', and_comm, or_comm]
state_before: a✝ b✝ a b : Prop
⊢ Xor' a b = Xor' b a
state_after: no goals
Theorem: MeasureTheory.AEStronglyMeasurable.aestronglyMeasurable_uIoc_iff
File: Mathlib/MeasureTheory/Function/StronglyMeasurable/Basic.lean

tactic: rw [uIoc_eq_union, aestronglyMeasurable_union_iff]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
f✝ g : α → β
inst✝¹ : LinearOrder α
inst✝ : PseudoMetrizableSpace β
f : α → β
a b : α
⊢ AEStronglyMeasurable f (μ.restrict (Ι a b)) ↔
    AEStronglyMeasurable f (μ.restrict (Ioc a b)) ∧ AEStronglyMeasurable f (μ.restrict (Ioc b a))
state_after: no goals
Theorem: HurwitzZeta.hurwitzZetaEven_eq
File: Mathlib/NumberTheory/LSeries/HurwitzZeta.lean

tactic: simp only [hurwitzZeta, hurwitzZetaEven_neg, hurwitzZetaOdd_neg]
state_before: a : UnitAddCircle
s : ℂ
⊢ hurwitzZetaEven a s = (hurwitzZeta a s + hurwitzZeta (-a) s) / 2
state_after: a : UnitAddCircle
s : ℂ
⊢ hurwitzZetaEven a s = (hurwitzZetaEven a s + hurwitzZetaOdd a s + (hurwitzZetaEven a s + -hurwitzZetaOdd a s)) / 2

tactic: ring_nf
state_before: a : UnitAddCircle
s : ℂ
⊢ hurwitzZetaEven a s = (hurwitzZetaEven a s + hurwitzZetaOdd a s + (hurwitzZetaEven a s + -hurwitzZetaOdd a s)) / 2
state_after: no goals