1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Set.Ici_mul_Ioi_subset'
File: Mathlib/Data/Set/Pointwise/Interval.lean

tactic: haveI := covariantClass_le_of_lt
state_before: α : Type u_1
inst✝³ : Mul α
inst✝² : PartialOrder α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
inst✝ : CovariantClass α α (Function.swap HMul.hMul) LT.lt
a b : α
⊢ Ici a * Ioi b ⊆ Ioi (a * b)
state_after: α : Type u_1
inst✝³ : Mul α
inst✝² : PartialOrder α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
inst✝ : CovariantClass α α (Function.swap HMul.hMul) LT.lt
a b : α
this :
  ∀ (M : Type ?u.12766) (N : Type ?u.12765) (μ : M → N → N) [inst : PartialOrder N]
    [inst_1 : CovariantClass M N μ fun x x_1 => x < x_1], CovariantClass M N μ fun x x_1 => x ≤ x_1
⊢ Ici a * Ioi b ⊆ Ioi (a * b)

tactic: rintro x ⟨y, hya, z, hzb, rfl⟩
state_before: α : Type u_1
inst✝³ : Mul α
inst✝² : PartialOrder α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
inst✝ : CovariantClass α α (Function.swap HMul.hMul) LT.lt
a b : α
this :
  ∀ (M : Type ?u.12766) (N : Type ?u.12765) (μ : M → N → N) [inst : PartialOrder N]
    [inst_1 : CovariantClass M N μ fun x x_1 => x < x_1], CovariantClass M N μ fun x x_1 => x ≤ x_1
⊢ Ici a * Ioi b ⊆ Ioi (a * b)
state_after: case intro.intro.intro.intro
α : Type u_1
inst✝³ : Mul α
inst✝² : PartialOrder α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
inst✝ : CovariantClass α α (Function.swap HMul.hMul) LT.lt
a b : α
this :
  ∀ (M : Type ?u.12766) (N : Type ?u.12765) (μ : M → N → N) [inst : PartialOrder N]
    [inst_1 : CovariantClass M N μ fun x x_1 => x < x_1], CovariantClass M N μ fun x x_1 => x ≤ x_1
y : α
hya : y ∈ Ici a
z : α
hzb : z ∈ Ioi b
⊢ (fun x x_1 => x * x_1) y z ∈ Ioi (a * b)

tactic: exact mul_lt_mul_of_le_of_lt hya hzb
state_before: case intro.intro.intro.intro
α : Type u_1
inst✝³ : Mul α
inst✝² : PartialOrder α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
inst✝ : CovariantClass α α (Function.swap HMul.hMul) LT.lt
a b : α
this :
  ∀ (M : Type ?u.12766) (N : Type ?u.12765) (μ : M → N → N) [inst : PartialOrder N]
    [inst_1 : CovariantClass M N μ fun x x_1 => x < x_1], CovariantClass M N μ fun x x_1 => x ≤ x_1
y : α
hya : y ∈ Ici a
z : α
hzb : z ∈ Ioi b
⊢ (fun x x_1 => x * x_1) y z ∈ Ioi (a * b)
state_after: no goals
Theorem: CategoryTheory.Functor.coreprW_app_hom
File: Mathlib/CategoryTheory/Yoneda.lean

tactic: simp only [coyoneda_obj_obj, unop_op, Iso.app_hom, coreprx, ← FunctorToTypes.naturality,
  coyoneda_obj_map, Category.id_comp]
state_before: C : Type u₁
inst✝ : Category.{v₁, u₁} C
F : C ⥤ Type v₁
hF : F.Corepresentable
X : C
f : F.coreprX ⟶ X
⊢ (F.coreprW.app X).hom f = F.map f F.coreprx
state_after: no goals
Theorem: AlgEquiv.arrowCongr_symm
File: Mathlib/Algebra/Algebra/Equiv.lean

tactic: ext
state_before: R : Type uR
A₁ : Type uA₁
A₂ : Type uA₂
A₃ : Type uA₃
A₁' : Type uA₁'
A₂' : Type uA₂'
A₃' : Type uA₃'
inst✝¹² : CommSemiring R
inst✝¹¹ : Semiring A₁
inst✝¹⁰ : Semiring A₂
inst✝⁹ : Semiring A₃
inst✝⁸ : Semiring A₁'
inst✝⁷ : Semiring A₂'
inst✝⁶ : Semiring A₃'
inst✝⁵ : Algebra R A₁
inst✝⁴ : Algebra R A₂
inst✝³ : Algebra R A₃
inst✝² : Algebra R A₁'
inst✝¹ : Algebra R A₂'
inst✝ : Algebra R A₃'
e : A₁ ≃ₐ[R] A₂
e₁ : A₁ ≃ₐ[R] A₁'
e₂ : A₂ ≃ₐ[R] A₂'
⊢ (e₁.arrowCongr e₂).symm = e₁.symm.arrowCongr e₂.symm
state_after: case H.H
R : Type uR
A₁ : Type uA₁
A₂ : Type uA₂
A₃ : Type uA₃
A₁' : Type uA₁'
A₂' : Type uA₂'
A₃' : Type uA₃'
inst✝¹² : CommSemiring R
inst✝¹¹ : Semiring A₁
inst✝¹⁰ : Semiring A₂
inst✝⁹ : Semiring A₃
inst✝⁸ : Semiring A₁'
inst✝⁷ : Semiring A₂'
inst✝⁶ : Semiring A₃'
inst✝⁵ : Algebra R A₁
inst✝⁴ : Algebra R A₂
inst✝³ : Algebra R A₃
inst✝² : Algebra R A₁'
inst✝¹ : Algebra R A₂'
inst✝ : Algebra R A₃'
e : A₁ ≃ₐ[R] A₂
e₁ : A₁ ≃ₐ[R] A₁'
e₂ : A₂ ≃ₐ[R] A₂'
x✝¹ : A₁' →ₐ[R] A₂'
x✝ : A₁
⊢ ((e₁.arrowCongr e₂).symm x✝¹) x✝ = ((e₁.symm.arrowCongr e₂.symm) x✝¹) x✝

tactic: rfl
state_before: case H.H
R : Type uR
A₁ : Type uA₁
A₂ : Type uA₂
A₃ : Type uA₃
A₁' : Type uA₁'
A₂' : Type uA₂'
A₃' : Type uA₃'
inst✝¹² : CommSemiring R
inst✝¹¹ : Semiring A₁
inst✝¹⁰ : Semiring A₂
inst✝⁹ : Semiring A₃
inst✝⁸ : Semiring A₁'
inst✝⁷ : Semiring A₂'
inst✝⁶ : Semiring A₃'
inst✝⁵ : Algebra R A₁
inst✝⁴ : Algebra R A₂
inst✝³ : Algebra R A₃
inst✝² : Algebra R A₁'
inst✝¹ : Algebra R A₂'
inst✝ : Algebra R A₃'
e : A₁ ≃ₐ[R] A₂
e₁ : A₁ ≃ₐ[R] A₁'
e₂ : A₂ ≃ₐ[R] A₂'
x✝¹ : A₁' →ₐ[R] A₂'
x✝ : A₁
⊢ ((e₁.arrowCongr e₂).symm x✝¹) x✝ = ((e₁.symm.arrowCongr e₂.symm) x✝¹) x✝
state_after: no goals
Theorem: IsOpen.ite
File: Mathlib/Topology/ContinuousOn.lean

tactic: simpa [hx] using ext_iff.1 ht x
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝⁴ : TopologicalSpace α
ι : Type u_5
π : ι → Type u_6
inst✝³ : (i : ι) → TopologicalSpace (π i)
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
s s' t : Set α
hs : IsOpen s
hs' : IsOpen s'
ht : s ∩ frontier t = s' ∩ frontier t
x : α
hx : x ∈ frontier t
⊢ x ∈ s ↔ x ∈ s'
state_after: no goals
Theorem: MeasureTheory.integrable_comp_div_left
File: Mathlib/MeasureTheory/Group/Integral.lean

tactic: refine ⟨fun h => ?_, fun h => h.comp_div_left g⟩
state_before: 𝕜 : Type u_1
M : Type u_2
α : Type u_3
G : Type u_4
E : Type u_5
F : Type u_6
inst✝⁹ : MeasurableSpace G
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : CompleteSpace E
inst✝⁵ : NormedAddCommGroup F
μ : Measure G
f✝ : G → E
g✝ : G
inst✝⁴ : Group G
inst✝³ : MeasurableMul G
inst✝² : MeasurableInv G
f : G → F
inst✝¹ : μ.IsInvInvariant
inst✝ : μ.IsMulLeftInvariant
g : G
⊢ Integrable (fun t => f (g / t)) μ ↔ Integrable f μ
state_after: 𝕜 : Type u_1
M : Type u_2
α : Type u_3
G : Type u_4
E : Type u_5
F : Type u_6
inst✝⁹ : MeasurableSpace G
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : CompleteSpace E
inst✝⁵ : NormedAddCommGroup F
μ : Measure G
f✝ : G → E
g✝ : G
inst✝⁴ : Group G
inst✝³ : MeasurableMul G
inst✝² : MeasurableInv G
f : G → F
inst✝¹ : μ.IsInvInvariant
inst✝ : μ.IsMulLeftInvariant
g : G
h : Integrable (fun t => f (g / t)) μ
⊢ Integrable f μ

tactic: convert h.comp_inv.comp_mul_left g⁻¹
state_before: 𝕜 : Type u_1
M : Type u_2
α : Type u_3
G : Type u_4
E : Type u_5
F : Type u_6
inst✝⁹ : MeasurableSpace G
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : CompleteSpace E
inst✝⁵ : NormedAddCommGroup F
μ : Measure G
f✝ : G → E
g✝ : G
inst✝⁴ : Group G
inst✝³ : MeasurableMul G
inst✝² : MeasurableInv G
f : G → F
inst✝¹ : μ.IsInvInvariant
inst✝ : μ.IsMulLeftInvariant
g : G
h : Integrable (fun t => f (g / t)) μ
⊢ Integrable f μ
state_after: case h.e'_5.h.h.e'_1
𝕜 : Type u_1
M : Type u_2
α : Type u_3
G : Type u_4
E : Type u_5
F : Type u_6
inst✝⁹ : MeasurableSpace G
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : CompleteSpace E
inst✝⁵ : NormedAddCommGroup F
μ : Measure G
f✝ : G → E
g✝ : G
inst✝⁴ : Group G
inst✝³ : MeasurableMul G
inst✝² : MeasurableInv G
f : G → F
inst✝¹ : μ.IsInvInvariant
inst✝ : μ.IsMulLeftInvariant
g : G
h : Integrable (fun t => f (g / t)) μ
x✝ : G
⊢ x✝ = g / (g⁻¹ * x✝)⁻¹

tactic: simp_rw [div_inv_eq_mul, mul_inv_cancel_left]
state_before: case h.e'_5.h.h.e'_1
𝕜 : Type u_1
M : Type u_2
α : Type u_3
G : Type u_4
E : Type u_5
F : Type u_6
inst✝⁹ : MeasurableSpace G
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : CompleteSpace E
inst✝⁵ : NormedAddCommGroup F
μ : Measure G
f✝ : G → E
g✝ : G
inst✝⁴ : Group G
inst✝³ : MeasurableMul G
inst✝² : MeasurableInv G
f : G → F
inst✝¹ : μ.IsInvInvariant
inst✝ : μ.IsMulLeftInvariant
g : G
h : Integrable (fun t => f (g / t)) μ
x✝ : G
⊢ x✝ = g / (g⁻¹ * x✝)⁻¹
state_after: no goals
Theorem: ENNReal.rpow_pos_of_nonneg
File: Mathlib/Analysis/SpecialFunctions/Pow/NNReal.lean

tactic: by_cases hp_zero : p = 0
state_before: p : ℝ
x : ℝ≥0∞
hx_pos : 0 < x
hp_nonneg : 0 ≤ p
⊢ 0 < x ^ p
state_after: case pos
p : ℝ
x : ℝ≥0∞
hx_pos : 0 < x
hp_nonneg : 0 ≤ p
hp_zero : p = 0
⊢ 0 < x ^ p

case neg
p : ℝ
x : ℝ≥0∞
hx_pos : 0 < x
hp_nonneg : 0 ≤ p
hp_zero : ¬p = 0
⊢ 0 < x ^ p

tactic: simp [hp_zero, zero_lt_one]
state_before: case pos
p : ℝ
x : ℝ≥0∞
hx_pos : 0 < x
hp_nonneg : 0 ≤ p
hp_zero : p = 0
⊢ 0 < x ^ p
state_after: no goals

tactic: rw [← Ne] at hp_zero
state_before: case neg
p : ℝ
x : ℝ≥0∞
hx_pos : 0 < x
hp_nonneg : 0 ≤ p
hp_zero : ¬p = 0
⊢ 0 < x ^ p
state_after: case neg
p : ℝ
x : ℝ≥0∞
hx_pos : 0 < x
hp_nonneg : 0 ≤ p
hp_zero : p ≠ 0
⊢ 0 < x ^ p

tactic: have hp_pos := lt_of_le_of_ne hp_nonneg hp_zero.symm
state_before: case neg
p : ℝ
x : ℝ≥0∞
hx_pos : 0 < x
hp_nonneg : 0 ≤ p
hp_zero : p ≠ 0
⊢ 0 < x ^ p
state_after: case neg
p : ℝ
x : ℝ≥0∞
hx_pos : 0 < x
hp_nonneg : 0 ≤ p
hp_zero : p ≠ 0
hp_pos : 0 < p
⊢ 0 < x ^ p

tactic: rw [← zero_rpow_of_pos hp_pos]
state_before: case neg
p : ℝ
x : ℝ≥0∞
hx_pos : 0 < x
hp_nonneg : 0 ≤ p
hp_zero : p ≠ 0
hp_pos : 0 < p
⊢ 0 < x ^ p
state_after: case neg
p : ℝ
x : ℝ≥0∞
hx_pos : 0 < x
hp_nonneg : 0 ≤ p
hp_zero : p ≠ 0
hp_pos : 0 < p
⊢ 0 ^ p < x ^ p

tactic: exact rpow_lt_rpow hx_pos hp_pos
state_before: case neg
p : ℝ
x : ℝ≥0∞
hx_pos : 0 < x
hp_nonneg : 0 ≤ p
hp_zero : p ≠ 0
hp_pos : 0 < p
⊢ 0 ^ p < x ^ p
state_after: no goals
Theorem: ContinuousLinearEquiv.comp_contDiff_iff
File: Mathlib/Analysis/Calculus/ContDiff/Basic.lean

tactic: simp only [← contDiffOn_univ, e.comp_contDiffOn_iff]
state_before: 𝕜 : Type u_1
inst✝¹⁰ : NontriviallyNormedField 𝕜
D : Type uD
inst✝⁹ : NormedAddCommGroup D
inst✝⁸ : NormedSpace 𝕜 D
E : Type uE
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type uF
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type uG
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
X : Type u_2
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s s₁ t u : Set E
f f₁ : E → F
g : F → G
x x₀ : E
c : F
b : E × F → G
m n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
e : F ≃L[𝕜] G
⊢ ContDiff 𝕜 n (⇑e ∘ f) ↔ ContDiff 𝕜 n f
state_after: no goals
Theorem: List.foldl_eq_of_comm'
File: Mathlib/Data/List/Basic.lean

tactic: rw [foldl, foldl, foldl, ← foldl_eq_of_comm' .., foldl, hf]
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
f : α → β → α
hf : ∀ (a : α) (b c : β), f (f a b) c = f (f a c) b
a : α
b c : β
l : List β
⊢ foldl f a (b :: c :: l) = f (foldl f a (c :: l)) b
state_after: no goals
Theorem: SimpleGraph.dart_edge_fiber_card
File: Mathlib/Combinatorics/SimpleGraph/DegreeSum.lean

tactic: induction' e with v w
state_before: V : Type u
G : SimpleGraph V
inst✝³ : Fintype V
inst✝² : DecidableRel G.Adj
inst✝¹ : Fintype (Sym2 V)
inst✝ : DecidableEq V
e : Sym2 V
h : e ∈ G.edgeSet
⊢ (filter (fun d => d.edge = e) univ).card = 2
state_after: case h
V : Type u
G : SimpleGraph V
inst✝³ : Fintype V
inst✝² : DecidableRel G.Adj
inst✝¹ : Fintype (Sym2 V)
inst✝ : DecidableEq V
v w : V
h : s(v, w) ∈ G.edgeSet
⊢ (filter (fun d => d.edge = s(v, w)) univ).card = 2

tactic: let d : G.Dart := ⟨(v, w), h⟩
state_before: case h
V : Type u
G : SimpleGraph V
inst✝³ : Fintype V
inst✝² : DecidableRel G.Adj
inst✝¹ : Fintype (Sym2 V)
inst✝ : DecidableEq V
v w : V
h : s(v, w) ∈ G.edgeSet
⊢ (filter (fun d => d.edge = s(v, w)) univ).card = 2
state_after: case h
V : Type u
G : SimpleGraph V
inst✝³ : Fintype V
inst✝² : DecidableRel G.Adj
inst✝¹ : Fintype (Sym2 V)
inst✝ : DecidableEq V
v w : V
h : s(v, w) ∈ G.edgeSet
d : G.Dart := { toProd := (v, w), adj := h }
⊢ (filter (fun d => d.edge = s(v, w)) univ).card = 2

tactic: convert congr_arg card d.edge_fiber
state_before: case h
V : Type u
G : SimpleGraph V
inst✝³ : Fintype V
inst✝² : DecidableRel G.Adj
inst✝¹ : Fintype (Sym2 V)
inst✝ : DecidableEq V
v w : V
h : s(v, w) ∈ G.edgeSet
d : G.Dart := { toProd := (v, w), adj := h }
⊢ (filter (fun d => d.edge = s(v, w)) univ).card = 2
state_after: case h.e'_3
V : Type u
G : SimpleGraph V
inst✝³ : Fintype V
inst✝² : DecidableRel G.Adj
inst✝¹ : Fintype (Sym2 V)
inst✝ : DecidableEq V
v w : V
h : s(v, w) ∈ G.edgeSet
d : G.Dart := { toProd := (v, w), adj := h }
⊢ 2 = {d, d.symm}.card

tactic: rw [card_insert_of_not_mem, card_singleton]
state_before: case h.e'_3
V : Type u
G : SimpleGraph V
inst✝³ : Fintype V
inst✝² : DecidableRel G.Adj
inst✝¹ : Fintype (Sym2 V)
inst✝ : DecidableEq V
v w : V
h : s(v, w) ∈ G.edgeSet
d : G.Dart := { toProd := (v, w), adj := h }
⊢ 2 = {d, d.symm}.card
state_after: case h.e'_3
V : Type u
G : SimpleGraph V
inst✝³ : Fintype V
inst✝² : DecidableRel G.Adj
inst✝¹ : Fintype (Sym2 V)
inst✝ : DecidableEq V
v w : V
h : s(v, w) ∈ G.edgeSet
d : G.Dart := { toProd := (v, w), adj := h }
⊢ d ∉ {d.symm}

tactic: rw [mem_singleton]
state_before: case h.e'_3
V : Type u
G : SimpleGraph V
inst✝³ : Fintype V
inst✝² : DecidableRel G.Adj
inst✝¹ : Fintype (Sym2 V)
inst✝ : DecidableEq V
v w : V
h : s(v, w) ∈ G.edgeSet
d : G.Dart := { toProd := (v, w), adj := h }
⊢ d ∉ {d.symm}
state_after: case h.e'_3
V : Type u
G : SimpleGraph V
inst✝³ : Fintype V
inst✝² : DecidableRel G.Adj
inst✝¹ : Fintype (Sym2 V)
inst✝ : DecidableEq V
v w : V
h : s(v, w) ∈ G.edgeSet
d : G.Dart := { toProd := (v, w), adj := h }
⊢ ¬d = d.symm

tactic: exact d.symm_ne.symm
state_before: case h.e'_3
V : Type u
G : SimpleGraph V
inst✝³ : Fintype V
inst✝² : DecidableRel G.Adj
inst✝¹ : Fintype (Sym2 V)
inst✝ : DecidableEq V
v w : V
h : s(v, w) ∈ G.edgeSet
d : G.Dart := { toProd := (v, w), adj := h }
⊢ ¬d = d.symm
state_after: no goals
Theorem: ZMod.subsingleton_iff
File: Mathlib/Data/ZMod/Basic.lean

tactic: constructor
state_before: n : ℕ
⊢ Subsingleton (ZMod n) ↔ n = 1
state_after: case mp
n : ℕ
⊢ Subsingleton (ZMod n) → n = 1

case mpr
n : ℕ
⊢ n = 1 → Subsingleton (ZMod n)

tactic: obtain (_ | _ | n) := n
state_before: case mp
n : ℕ
⊢ Subsingleton (ZMod n) → n = 1
state_after: case mp.zero

⊢ Subsingleton (ZMod 0) → 0 = 1

case mp.succ.zero

⊢ Subsingleton (ZMod (0 + 1)) → 0 + 1 = 1

case mp.succ.succ
n : ℕ
⊢ Subsingleton (ZMod (n + 1 + 1)) → n + 1 + 1 = 1

tactic: simpa [ZMod] using not_subsingleton _
state_before: case mp.zero

⊢ Subsingleton (ZMod 0) → 0 = 1
state_after: no goals

tactic: simp [ZMod]
state_before: case mp.succ.zero

⊢ Subsingleton (ZMod (0 + 1)) → 0 + 1 = 1
state_after: no goals

tactic: simpa [ZMod] using not_subsingleton _
state_before: case mp.succ.succ
n : ℕ
⊢ Subsingleton (ZMod (n + 1 + 1)) → n + 1 + 1 = 1
state_after: no goals

tactic: rintro rfl
state_before: case mpr
n : ℕ
⊢ n = 1 → Subsingleton (ZMod n)
state_after: case mpr

⊢ Subsingleton (ZMod 1)

tactic: infer_instance
state_before: case mpr

⊢ Subsingleton (ZMod 1)
state_after: no goals
Theorem: CategoryTheory.Limits.cokernel.desc_zero
File: Mathlib/CategoryTheory/Limits/Shapes/Kernels.lean

tactic: ext
state_before: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasZeroMorphisms C
X Y : C
f : X ⟶ Y
inst✝ : HasCokernel f
W : C
h : f ≫ 0 = 0
⊢ desc f 0 h = 0
state_after: case h
C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasZeroMorphisms C
X Y : C
f : X ⟶ Y
inst✝ : HasCokernel f
W : C
h : f ≫ 0 = 0
⊢ coequalizer.π f 0 ≫ desc f 0 h = coequalizer.π f 0 ≫ 0

tactic: simp
state_before: case h
C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasZeroMorphisms C
X Y : C
f : X ⟶ Y
inst✝ : HasCokernel f
W : C
h : f ≫ 0 = 0
⊢ coequalizer.π f 0 ≫ desc f 0 h = coequalizer.π f 0 ≫ 0
state_after: no goals
Theorem: CategoryTheory.GradedObject.CofanMapObjFun.inj_iso_hom
File: Mathlib/CategoryTheory/GradedObject.lean

tactic: apply IsColimit.comp_coconePointUniqueUpToIso_hom
state_before: I : Type u_1
J : Type u_2
K : Type u_3
C : Type u_4
inst✝⁴ : Category.{u_5, u_4} C
X Y Z : GradedObject I C
φ : X ⟶ Y
e : X ≅ Y
ψ : Y ⟶ Z
p : I → J
j : J
inst✝³ : X.HasMap p
inst✝² : Y.HasMap p
inst✝¹ : Z.HasMap p
c : X.CofanMapObjFun p j
hc : IsColimit c
inst✝ : X.HasMap p
i : I
hi : p i = j
⊢ Cofan.inj c ⟨i, hi⟩ ≫ (iso hc).hom = X.ιMapObj p i j hi
state_after: no goals
Theorem: AkraBazziRecurrence.eventually_asympBound_pos
File: Mathlib/Computability/AkraBazzi/AkraBazzi.lean

tactic: filter_upwards [eventually_gt_atTop 0] with n hn
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : Nonempty α
T : ℕ → ℝ
g : ℝ → ℝ
a b : α → ℝ
r : α → ℕ → ℕ
R : AkraBazziRecurrence T g a b r
⊢ ∀ᶠ (n : ℕ) in atTop, 0 < asympBound g a b n
state_after: case h
α : Type u_1
inst✝¹ : Fintype α
inst✝ : Nonempty α
T : ℕ → ℝ
g : ℝ → ℝ
a b : α → ℝ
r : α → ℕ → ℕ
R : AkraBazziRecurrence T g a b r
n : ℕ
hn : 0 < n
⊢ 0 < asympBound g a b n

tactic: exact R.asympBound_pos n hn
state_before: case h
α : Type u_1
inst✝¹ : Fintype α
inst✝ : Nonempty α
T : ℕ → ℝ
g : ℝ → ℝ
a b : α → ℝ
r : α → ℕ → ℕ
R : AkraBazziRecurrence T g a b r
n : ℕ
hn : 0 < n
⊢ 0 < asympBound g a b n
state_after: no goals
Theorem: Finset.mulETransformLeft.card
File: Mathlib/Combinatorics/Additive/ETransform.lean

tactic: rw [card_smul_finset, two_mul]
state_before: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Group α
e : α
x : Finset α × Finset α
⊢ x.1.card + (op e • x.1).card = 2 * x.1.card
state_after: no goals
Theorem: CategoryTheory.Functor.FullyFaithful.hasShift.map_zero_hom_app
File: Mathlib/CategoryTheory/Shift/Basic.lean

tactic: simp [zero]
state_before: C : Type u
A : Type u_1
inst✝³ : Category.{v, u} C
D : Type u_2
inst✝² : Category.{u_3, u_2} D
inst✝¹ : AddMonoid A
inst✝ : HasShift D A
F : C ⥤ D
hF : F.FullyFaithful
s : A → C ⥤ C
i : (i : A) → s i ⋙ F ≅ F ⋙ shiftFunctor D i
X : C
⊢ F.map ((zero hF s i).hom.app X) = (i 0).hom.app X ≫ (shiftFunctorZero D A).hom.app (F.obj X)
state_after: no goals
Theorem: finite_compl_fixedBy_closure_iff
File: Mathlib/GroupTheory/Perm/ClosureSwap.lean

tactic: refine closure_induction hg h (by simp) (fun g g' hg hg' ↦ (hg.union hg').subset ?_) (by simp)
state_before: G : Type u_1
α : Type u_2
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : DecidableEq α
S : Set G
h : ∀ g ∈ S, (fixedBy α g)ᶜ.Finite
g : G
hg : g ∈ closure S
⊢ (fixedBy α g)ᶜ.Finite
state_after: G : Type u_1
α : Type u_2
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : DecidableEq α
S : Set G
h : ∀ g ∈ S, (fixedBy α g)ᶜ.Finite
g✝ : G
hg✝ : g✝ ∈ closure S
g g' : G
hg : (fixedBy α g)ᶜ.Finite
hg' : (fixedBy α g')ᶜ.Finite
⊢ (fixedBy α (g * g'))ᶜ ⊆ (fixedBy α g)ᶜ ∪ (fixedBy α g')ᶜ

tactic: simp_rw [← compl_inter, compl_subset_compl, fixedBy_mul]
state_before: G : Type u_1
α : Type u_2
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : DecidableEq α
S : Set G
h : ∀ g ∈ S, (fixedBy α g)ᶜ.Finite
g✝ : G
hg✝ : g✝ ∈ closure S
g g' : G
hg : (fixedBy α g)ᶜ.Finite
hg' : (fixedBy α g')ᶜ.Finite
⊢ (fixedBy α (g * g'))ᶜ ⊆ (fixedBy α g)ᶜ ∪ (fixedBy α g')ᶜ
state_after: no goals

tactic: simp
state_before: G : Type u_1
α : Type u_2
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : DecidableEq α
S : Set G
h : ∀ g ∈ S, (fixedBy α g)ᶜ.Finite
g : G
hg : g ∈ closure S
⊢ (fixedBy α 1)ᶜ.Finite
state_after: no goals

tactic: simp
state_before: G : Type u_1
α : Type u_2
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : DecidableEq α
S : Set G
h : ∀ g ∈ S, (fixedBy α g)ᶜ.Finite
g : G
hg : g ∈ closure S
⊢ ∀ (x : G), (fixedBy α x)ᶜ.Finite → (fixedBy α x⁻¹)ᶜ.Finite
state_after: no goals
Theorem: Finpartition.mem_part
File: Mathlib/Order/Partition/Finpartition.lean

tactic: simp [part, ha, choose_property]
state_before: α : Type u_1
inst✝ : DecidableEq α
s t u : Finset α
P : Finpartition s
a : α
ha : a ∈ s
⊢ a ∈ P.part a
state_after: no goals
Theorem: Nat.bit0_div_two
File: Mathlib/Algebra/Ring/Parity.lean

tactic: rw [bit0_eq_two_mul, two_mul_div_two_of_even (even_bit0 n)]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
R : Type u_4
m n : ℕ
⊢ bit0 (bit0 n / 2) = bit0 n
state_after: no goals
Theorem: MeasureTheory.Lp.edist_dist
File: Mathlib/MeasureTheory/Function/LpSpace.lean

tactic: rw [edist_def, dist_def, ← snorm_congr_ae (coeFn_sub _ _),
  ENNReal.ofReal_toReal (snorm_ne_top (f - g))]
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f g : ↥(Lp E p μ)
⊢ edist f g = ENNReal.ofReal (dist f g)
state_after: no goals
Theorem: Rel.image_bot
File: Mathlib/Data/Rel.lean

tactic: rw [Set.eq_empty_iff_forall_not_mem]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Set α
⊢ ⊥.image s = ∅
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Set α
⊢ ∀ (x : β), x ∉ ⊥.image s

tactic: intro x h
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Set α
⊢ ∀ (x : β), x ∉ ⊥.image s
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Set α
x : β
h : x ∈ ⊥.image s
⊢ False

tactic: simp [mem_image, Bot.bot] at h
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Set α
x : β
h : x ∈ ⊥.image s
⊢ False
state_after: no goals
Theorem: UniformSpace.Completion.uniformity_dist'
File: Mathlib/Topology/MetricSpace/Completion.lean

tactic: ext s
state_before: α : Type u
β : Type v
inst✝ : PseudoMetricSpace α
⊢ 𝓤 (Completion α) = ⨅ ε, 𝓟 {p | dist p.1 p.2 < ↑ε}
state_after: case a
α : Type u
β : Type v
inst✝ : PseudoMetricSpace α
s : Set (Completion α × Completion α)
⊢ s ∈ 𝓤 (Completion α) ↔ s ∈ ⨅ ε, 𝓟 {p | dist p.1 p.2 < ↑ε}

tactic: rw [mem_iInf_of_directed]
state_before: case a
α : Type u
β : Type v
inst✝ : PseudoMetricSpace α
s : Set (Completion α × Completion α)
⊢ s ∈ 𝓤 (Completion α) ↔ s ∈ ⨅ ε, 𝓟 {p | dist p.1 p.2 < ↑ε}
state_after: case a
α : Type u
β : Type v
inst✝ : PseudoMetricSpace α
s : Set (Completion α × Completion α)
⊢ s ∈ 𝓤 (Completion α) ↔ ∃ i, s ∈ 𝓟 {p | dist p.1 p.2 < ↑i}

case a.h
α : Type u
β : Type v
inst✝ : PseudoMetricSpace α
s : Set (Completion α × Completion α)
⊢ Directed (fun x x_1 => x ≥ x_1) fun ε => 𝓟 {p | dist p.1 p.2 < ↑ε}

tactic: simp [Completion.mem_uniformity_dist, subset_def]
state_before: case a
α : Type u
β : Type v
inst✝ : PseudoMetricSpace α
s : Set (Completion α × Completion α)
⊢ s ∈ 𝓤 (Completion α) ↔ ∃ i, s ∈ 𝓟 {p | dist p.1 p.2 < ↑i}
state_after: no goals

tactic: rintro ⟨r, hr⟩ ⟨p, hp⟩
state_before: case a.h
α : Type u
β : Type v
inst✝ : PseudoMetricSpace α
s : Set (Completion α × Completion α)
⊢ Directed (fun x x_1 => x ≥ x_1) fun ε => 𝓟 {p | dist p.1 p.2 < ↑ε}
state_after: case a.h.mk.mk
α : Type u
β : Type v
inst✝ : PseudoMetricSpace α
s : Set (Completion α × Completion α)
r : ℝ
hr : 0 < r
p : ℝ
hp : 0 < p
⊢ ∃ z,
    (fun x x_1 => x ≥ x_1) ((fun ε => 𝓟 {p | dist p.1 p.2 < ↑ε}) ⟨r, hr⟩) ((fun ε => 𝓟 {p | dist p.1 p.2 < ↑ε}) z) ∧
      (fun x x_1 => x ≥ x_1) ((fun ε => 𝓟 {p | dist p.1 p.2 < ↑ε}) ⟨p, hp⟩) ((fun ε => 𝓟 {p | dist p.1 p.2 < ↑ε}) z)

tactic: use ⟨min r p, lt_min hr hp⟩
state_before: case a.h.mk.mk
α : Type u
β : Type v
inst✝ : PseudoMetricSpace α
s : Set (Completion α × Completion α)
r : ℝ
hr : 0 < r
p : ℝ
hp : 0 < p
⊢ ∃ z,
    (fun x x_1 => x ≥ x_1) ((fun ε => 𝓟 {p | dist p.1 p.2 < ↑ε}) ⟨r, hr⟩) ((fun ε => 𝓟 {p | dist p.1 p.2 < ↑ε}) z) ∧
      (fun x x_1 => x ≥ x_1) ((fun ε => 𝓟 {p | dist p.1 p.2 < ↑ε}) ⟨p, hp⟩) ((fun ε => 𝓟 {p | dist p.1 p.2 < ↑ε}) z)
state_after: case h
α : Type u
β : Type v
inst✝ : PseudoMetricSpace α
s : Set (Completion α × Completion α)
r : ℝ
hr : 0 < r
p : ℝ
hp : 0 < p
⊢ (fun x x_1 => x ≥ x_1) ((fun ε => 𝓟 {p | dist p.1 p.2 < ↑ε}) ⟨r, hr⟩)
      ((fun ε => 𝓟 {p | dist p.1 p.2 < ↑ε}) ⟨min r p, ⋯⟩) ∧
    (fun x x_1 => x ≥ x_1) ((fun ε => 𝓟 {p | dist p.1 p.2 < ↑ε}) ⟨p, hp⟩)
      ((fun ε => 𝓟 {p | dist p.1 p.2 < ↑ε}) ⟨min r p, ⋯⟩)

tactic: simp (config := { contextual := true }) [lt_min_iff]
state_before: case h
α : Type u
β : Type v
inst✝ : PseudoMetricSpace α
s : Set (Completion α × Completion α)
r : ℝ
hr : 0 < r
p : ℝ
hp : 0 < p
⊢ (fun x x_1 => x ≥ x_1) ((fun ε => 𝓟 {p | dist p.1 p.2 < ↑ε}) ⟨r, hr⟩)
      ((fun ε => 𝓟 {p | dist p.1 p.2 < ↑ε}) ⟨min r p, ⋯⟩) ∧
    (fun x x_1 => x ≥ x_1) ((fun ε => 𝓟 {p | dist p.1 p.2 < ↑ε}) ⟨p, hp⟩)
      ((fun ε => 𝓟 {p | dist p.1 p.2 < ↑ε}) ⟨min r p, ⋯⟩)
state_after: no goals