1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: BoxIntegral.Box.disjoint_splitCenterBox
File: Mathlib/Analysis/BoxIntegral/Box/SubboxInduction.lean

tactic: rw [disjoint_iff_inf_le]
state_before: ι : Type u_1
I✝ J I : Box ι
s t : Set ι
h : s ≠ t
⊢ Disjoint ↑(I.splitCenterBox s) ↑(I.splitCenterBox t)
state_after: ι : Type u_1
I✝ J I : Box ι
s t : Set ι
h : s ≠ t
⊢ ↑(I.splitCenterBox s) ⊓ ↑(I.splitCenterBox t) ≤ ⊥

tactic: rintro y ⟨hs, ht⟩
state_before: ι : Type u_1
I✝ J I : Box ι
s t : Set ι
h : s ≠ t
⊢ ↑(I.splitCenterBox s) ⊓ ↑(I.splitCenterBox t) ≤ ⊥
state_after: case intro
ι : Type u_1
I✝ J I : Box ι
s t : Set ι
h : s ≠ t
y : ι → ℝ
hs : y ∈ ↑(I.splitCenterBox s)
ht : y ∈ ↑(I.splitCenterBox t)
⊢ y ∈ ⊥

tactic: apply h
state_before: case intro
ι : Type u_1
I✝ J I : Box ι
s t : Set ι
h : s ≠ t
y : ι → ℝ
hs : y ∈ ↑(I.splitCenterBox s)
ht : y ∈ ↑(I.splitCenterBox t)
⊢ y ∈ ⊥
state_after: case intro
ι : Type u_1
I✝ J I : Box ι
s t : Set ι
h : s ≠ t
y : ι → ℝ
hs : y ∈ ↑(I.splitCenterBox s)
ht : y ∈ ↑(I.splitCenterBox t)
⊢ s = t

tactic: ext i
state_before: case intro
ι : Type u_1
I✝ J I : Box ι
s t : Set ι
h : s ≠ t
y : ι → ℝ
hs : y ∈ ↑(I.splitCenterBox s)
ht : y ∈ ↑(I.splitCenterBox t)
⊢ s = t
state_after: case intro.h
ι : Type u_1
I✝ J I : Box ι
s t : Set ι
h : s ≠ t
y : ι → ℝ
hs : y ∈ ↑(I.splitCenterBox s)
ht : y ∈ ↑(I.splitCenterBox t)
i : ι
⊢ i ∈ s ↔ i ∈ t

tactic: rw [mem_coe, mem_splitCenterBox] at hs ht
state_before: case intro.h
ι : Type u_1
I✝ J I : Box ι
s t : Set ι
h : s ≠ t
y : ι → ℝ
hs : y ∈ ↑(I.splitCenterBox s)
ht : y ∈ ↑(I.splitCenterBox t)
i : ι
⊢ i ∈ s ↔ i ∈ t
state_after: case intro.h
ι : Type u_1
I✝ J I : Box ι
s t : Set ι
h : s ≠ t
y : ι → ℝ
hs : y ∈ I ∧ ∀ (i : ι), (I.lower i + I.upper i) / 2 < y i ↔ i ∈ s
ht : y ∈ I ∧ ∀ (i : ι), (I.lower i + I.upper i) / 2 < y i ↔ i ∈ t
i : ι
⊢ i ∈ s ↔ i ∈ t

tactic: rw [← hs.2, ← ht.2]
state_before: case intro.h
ι : Type u_1
I✝ J I : Box ι
s t : Set ι
h : s ≠ t
y : ι → ℝ
hs : y ∈ I ∧ ∀ (i : ι), (I.lower i + I.upper i) / 2 < y i ↔ i ∈ s
ht : y ∈ I ∧ ∀ (i : ι), (I.lower i + I.upper i) / 2 < y i ↔ i ∈ t
i : ι
⊢ i ∈ s ↔ i ∈ t
state_after: no goals
Theorem: Metric.exists_lt_mem_ball_of_mem_ball
File: Mathlib/Topology/MetricSpace/Pseudo/Defs.lean

tactic: simp only [mem_ball] at h ⊢
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
x y z : α
δ ε ε₁ ε₂ : ℝ
s : Set α
h : x ∈ ball y ε
⊢ ∃ ε' < ε, x ∈ ball y ε'
state_after: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
x y z : α
δ ε ε₁ ε₂ : ℝ
s : Set α
h : dist x y < ε
⊢ ∃ ε' < ε, dist x y < ε'

tactic: exact ⟨(dist x y + ε) / 2, by linarith, by linarith⟩
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
x y z : α
δ ε ε₁ ε₂ : ℝ
s : Set α
h : dist x y < ε
⊢ ∃ ε' < ε, dist x y < ε'
state_after: no goals

tactic: linarith
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
x y z : α
δ ε ε₁ ε₂ : ℝ
s : Set α
h : dist x y < ε
⊢ (dist x y + ε) / 2 < ε
state_after: no goals

tactic: linarith
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
x y z : α
δ ε ε₁ ε₂ : ℝ
s : Set α
h : dist x y < ε
⊢ dist x y < (dist x y + ε) / 2
state_after: no goals
Theorem: Complex.ofReal_sin_ofReal_re
File: Mathlib/Data/Complex/Exponential.lean

tactic: rw [← sin_conj, conj_ofReal]
state_before: x✝ y : ℂ
x : ℝ
⊢ (starRingEnd ℂ) (sin ↑x) = sin ↑x
state_after: no goals
Theorem: Ordinal.nfpFamily_lt_ord
File: Mathlib/SetTheory/Cardinal/Cofinality.lean

tactic: rwa [(#ι).lift_id]
state_before: α : Type u_1
r : α → α → Prop
ι : Type u
f : ι → Ordinal.{u} → Ordinal.{u}
c : Ordinal.{u}
hc : ℵ₀ < c.cof
hc' : #ι < c.cof
hf : ∀ (i : ι), ∀ b < c, f i b < c
a : Ordinal.{u}
⊢ Cardinal.lift.{u, u} #ι < c.cof
state_after: no goals
Theorem: NNRat.smul_one_eq_cast
File: Mathlib/Algebra/Field/Defs.lean

tactic: rw [NNRat.smul_def, mul_one]
state_before: α : Type u_1
β : Type u_2
K : Type u_3
inst✝ : DivisionSemiring α
q : ℚ≥0
⊢ q • 1 = ↑q
state_after: no goals
Theorem: one_le_pow_of_one_le
File: Mathlib/Algebra/Order/Ring/Basic.lean

tactic: rw [pow_zero]
state_before: α : Type u_1
M : Type u_2
R : Type u_3
inst✝ : OrderedSemiring R
a b x y : R
n m : ℕ
H : 1 ≤ a
⊢ 1 ≤ a ^ 0
state_after: no goals

tactic: rw [pow_succ']
state_before: α : Type u_1
M : Type u_2
R : Type u_3
inst✝ : OrderedSemiring R
a b x y : R
n✝ m : ℕ
H : 1 ≤ a
n : ℕ
⊢ 1 ≤ a ^ (n + 1)
state_after: α : Type u_1
M : Type u_2
R : Type u_3
inst✝ : OrderedSemiring R
a b x y : R
n✝ m : ℕ
H : 1 ≤ a
n : ℕ
⊢ 1 ≤ a * a ^ n

tactic: simpa only [mul_one] using
  mul_le_mul H (one_le_pow_of_one_le H n) zero_le_one (le_trans zero_le_one H)
state_before: α : Type u_1
M : Type u_2
R : Type u_3
inst✝ : OrderedSemiring R
a b x y : R
n✝ m : ℕ
H : 1 ≤ a
n : ℕ
⊢ 1 ≤ a * a ^ n
state_after: no goals
Theorem: padicValNat.div'
File: Mathlib/NumberTheory/Padics/PadicVal.lean

tactic: rw [padicValNat.div_of_dvd dvd, eq_zero_of_not_dvd (hp.out.coprime_iff_not_dvd.mp cpm),
  Nat.sub_zero]
state_before: p a b✝ : ℕ
hp : Fact (Nat.Prime p)
m : ℕ
cpm : p.Coprime m
b : ℕ
dvd : m ∣ b
⊢ padicValNat p (b / m) = padicValNat p b
state_after: no goals
Theorem: Finset.pow_mem_pow
File: Mathlib/Data/Finset/Pointwise.lean

tactic: rw [pow_zero]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝² : DecidableEq α
inst✝¹ : DecidableEq β
inst✝ : Monoid α
s t : Finset α
a : α
m n : ℕ
ha : a ∈ s
⊢ a ^ 0 ∈ s ^ 0
state_after: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝² : DecidableEq α
inst✝¹ : DecidableEq β
inst✝ : Monoid α
s t : Finset α
a : α
m n : ℕ
ha : a ∈ s
⊢ 1 ∈ s ^ 0

tactic: exact one_mem_one
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝² : DecidableEq α
inst✝¹ : DecidableEq β
inst✝ : Monoid α
s t : Finset α
a : α
m n : ℕ
ha : a ∈ s
⊢ 1 ∈ s ^ 0
state_after: no goals

tactic: rw [pow_succ]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝² : DecidableEq α
inst✝¹ : DecidableEq β
inst✝ : Monoid α
s t : Finset α
a : α
m n✝ : ℕ
ha : a ∈ s
n : ℕ
⊢ a ^ (n + 1) ∈ s ^ (n + 1)
state_after: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝² : DecidableEq α
inst✝¹ : DecidableEq β
inst✝ : Monoid α
s t : Finset α
a : α
m n✝ : ℕ
ha : a ∈ s
n : ℕ
⊢ a ^ n * a ∈ s ^ (n + 1)

tactic: exact mul_mem_mul (pow_mem_pow ha n) ha
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝² : DecidableEq α
inst✝¹ : DecidableEq β
inst✝ : Monoid α
s t : Finset α
a : α
m n✝ : ℕ
ha : a ∈ s
n : ℕ
⊢ a ^ n * a ∈ s ^ (n + 1)
state_after: no goals
Theorem: SimpleGraph.Subgraph.edgeSet_sInf
File: Mathlib/Combinatorics/SimpleGraph/Subgraph.lean

tactic: ext e
state_before: ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G₁ G₂ : G.Subgraph
a b : V
s : Set G.Subgraph
⊢ (sInf s).edgeSet = (⋂ G' ∈ s, G'.edgeSet) ∩ G.edgeSet
state_after: case h
ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G₁ G₂ : G.Subgraph
a b : V
s : Set G.Subgraph
e : Sym2 V
⊢ e ∈ (sInf s).edgeSet ↔ e ∈ (⋂ G' ∈ s, G'.edgeSet) ∩ G.edgeSet

tactic: induction e
state_before: case h
ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G₁ G₂ : G.Subgraph
a b : V
s : Set G.Subgraph
e : Sym2 V
⊢ e ∈ (sInf s).edgeSet ↔ e ∈ (⋂ G' ∈ s, G'.edgeSet) ∩ G.edgeSet
state_after: case h.h
ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G₁ G₂ : G.Subgraph
a b : V
s : Set G.Subgraph
x✝ y✝ : V
⊢ s(x✝, y✝) ∈ (sInf s).edgeSet ↔ s(x✝, y✝) ∈ (⋂ G' ∈ s, G'.edgeSet) ∩ G.edgeSet

tactic: simp
state_before: case h.h
ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G₁ G₂ : G.Subgraph
a b : V
s : Set G.Subgraph
x✝ y✝ : V
⊢ s(x✝, y✝) ∈ (sInf s).edgeSet ↔ s(x✝, y✝) ∈ (⋂ G' ∈ s, G'.edgeSet) ∩ G.edgeSet
state_after: no goals
Theorem: Order.le_succ_iterate
File: Mathlib/Order/SuccPred/Basic.lean

tactic: conv_lhs => rw [(by simp only [Function.iterate_id, id] : x = id^[k] x)]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : Preorder α
inst✝ : SuccOrder α
a b : α
k : ℕ
x : α
⊢ x ≤ succ^[k] x
state_after: α : Type u_1
β : Type u_2
inst✝¹ : Preorder α
inst✝ : SuccOrder α
a b : α
k : ℕ
x : α
⊢ id^[k] x ≤ succ^[k] x

tactic: exact Monotone.le_iterate_of_le succ_mono le_succ k x
state_before: α : Type u_1
β : Type u_2
inst✝¹ : Preorder α
inst✝ : SuccOrder α
a b : α
k : ℕ
x : α
⊢ id^[k] x ≤ succ^[k] x
state_after: no goals

tactic: simp only [Function.iterate_id, id]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : Preorder α
inst✝ : SuccOrder α
a b : α
k : ℕ
x : α
⊢ x = id^[k] x
state_after: no goals
Theorem: Unitization.algHom_ext''
File: Mathlib/Algebra/Algebra/Unitization.lean

tactic: simp only [AlgHomClass.commutes]
state_before: S : Type u_1
R : Type u_2
A : Type u_3
inst✝¹⁴ : CommSemiring S
inst✝¹³ : CommSemiring R
inst✝¹² : NonUnitalSemiring A
inst✝¹¹ : Module R A
inst✝¹⁰ : SMulCommClass R A A
inst✝⁹ : IsScalarTower R A A
B : Type u_4
inst✝⁸ : Semiring B
inst✝⁷ : Algebra S B
inst✝⁶ : Algebra S R
inst✝⁵ : DistribMulAction S A
inst✝⁴ : IsScalarTower S R A
C : Type u_5
inst✝³ : Semiring C
inst✝² : Algebra R C
F : Type u_6
inst✝¹ : FunLike F (Unitization R A) C
inst✝ : AlgHomClass F R (Unitization R A) C
φ ψ : F
h : ∀ (a : A), φ ↑a = ψ ↑a
r : R
⊢ φ ((algebraMap R (Unitization R A)) r) = ψ ((algebraMap R (Unitization R A)) r)
state_after: no goals
Theorem: Matrix.transpose_neg
File: Mathlib/Data/Matrix/Basic.lean

tactic: ext
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝ : Neg α
M : Matrix m n α
⊢ (-M)ᵀ = -Mᵀ
state_after: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝ : Neg α
M : Matrix m n α
i✝ : n
j✝ : m
⊢ (-M)ᵀ i✝ j✝ = (-Mᵀ) i✝ j✝

tactic: rfl
state_before: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝ : Neg α
M : Matrix m n α
i✝ : n
j✝ : m
⊢ (-M)ᵀ i✝ j✝ = (-Mᵀ) i✝ j✝
state_after: no goals
Theorem: Metric.dist_le_diam_of_mem'
File: Mathlib/Topology/MetricSpace/Bounded.lean

tactic: rw [diam, dist_edist]
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
s : Set α
x y z : α
h : EMetric.diam s ≠ ⊤
hx : x ∈ s
hy : y ∈ s
⊢ dist x y ≤ diam s
state_after: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
s : Set α
x y z : α
h : EMetric.diam s ≠ ⊤
hx : x ∈ s
hy : y ∈ s
⊢ (edist x y).toReal ≤ (EMetric.diam s).toReal

tactic: rw [ENNReal.toReal_le_toReal (edist_ne_top _ _) h]
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
s : Set α
x y z : α
h : EMetric.diam s ≠ ⊤
hx : x ∈ s
hy : y ∈ s
⊢ (edist x y).toReal ≤ (EMetric.diam s).toReal
state_after: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
s : Set α
x y z : α
h : EMetric.diam s ≠ ⊤
hx : x ∈ s
hy : y ∈ s
⊢ edist x y ≤ EMetric.diam s

tactic: exact EMetric.edist_le_diam_of_mem hx hy
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
s : Set α
x y z : α
h : EMetric.diam s ≠ ⊤
hx : x ∈ s
hy : y ∈ s
⊢ edist x y ≤ EMetric.diam s
state_after: no goals
Theorem: HahnSeries.C_ne_zero
File: Mathlib/RingTheory/HahnSeries/Multiplication.lean

tactic: contrapose! h
state_before: Γ : Type u_1
Γ' : Type u_2
R : Type u_3
inst✝¹ : OrderedCancelAddCommMonoid Γ
inst✝ : NonAssocSemiring R
r : R
h : r ≠ 0
⊢ C r ≠ 0
state_after: Γ : Type u_1
Γ' : Type u_2
R : Type u_3
inst✝¹ : OrderedCancelAddCommMonoid Γ
inst✝ : NonAssocSemiring R
r : R
h : C r = 0
⊢ r = 0

tactic: rw [← C_zero] at h
state_before: Γ : Type u_1
Γ' : Type u_2
R : Type u_3
inst✝¹ : OrderedCancelAddCommMonoid Γ
inst✝ : NonAssocSemiring R
r : R
h : C r = 0
⊢ r = 0
state_after: Γ : Type u_1
Γ' : Type u_2
R : Type u_3
inst✝¹ : OrderedCancelAddCommMonoid Γ
inst✝ : NonAssocSemiring R
r : R
h : C r = C 0
⊢ r = 0

tactic: exact C_injective h
state_before: Γ : Type u_1
Γ' : Type u_2
R : Type u_3
inst✝¹ : OrderedCancelAddCommMonoid Γ
inst✝ : NonAssocSemiring R
r : R
h : C r = C 0
⊢ r = 0
state_after: no goals
Theorem: LipschitzWith.norm_div_le_of_le
File: Mathlib/Analysis/Normed/Group/Uniform.lean

tactic: gcongr
state_before: 𝓕 : Type u_1
α : Type u_2
E : Type u_3
F : Type u_4
inst✝² : SeminormedGroup E
inst✝¹ : SeminormedGroup F
s : Set E
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
inst✝ : FunLike 𝓕 E F
f : E → F
C : ℝ≥0
h : LipschitzWith C f
hr : ‖a / b‖ ≤ r
⊢ ↑C * ‖a / b‖ ≤ ↑C * r
state_after: no goals
Theorem: CategoryTheory.OverPresheafAux.OverArrows.map_val
File: Mathlib/CategoryTheory/Comma/Presheaf.lean

tactic: rw [← yonedaEquiv.injective.eq_iff, yonedaEquiv_comp, yonedaEquiv_yoneda_map]
state_before: C : Type u
inst✝ : Category.{v, u} C
A : Cᵒᵖ ⥤ Type v
Y : C
η : yoneda.obj Y ⟶ A
X : C
s : yoneda.obj X ⟶ A
p : OverArrows η s
⊢ yoneda.map p.val ≫ η = s
state_after: C : Type u
inst✝ : Category.{v, u} C
A : Cᵒᵖ ⥤ Type v
Y : C
η : yoneda.obj Y ⟶ A
X : C
s : yoneda.obj X ⟶ A
p : OverArrows η s
⊢ η.app { unop := { unop := X }.unop } p.val = yonedaEquiv s

tactic: simp only [unop_op, p.app_val]
state_before: C : Type u
inst✝ : Category.{v, u} C
A : Cᵒᵖ ⥤ Type v
Y : C
η : yoneda.obj Y ⟶ A
X : C
s : yoneda.obj X ⟶ A
p : OverArrows η s
⊢ η.app { unop := { unop := X }.unop } p.val = yonedaEquiv s
state_after: no goals
Theorem: Filter.nhds_top
File: Mathlib/Topology/Filter.lean

tactic: simp [nhds_eq]
state_before: ι : Sort u_1
α : Type u_2
β : Type u_3
X : Type u_4
Y : Type u_5
⊢ 𝓝 ⊤ = ⊤
state_after: no goals
Theorem: Fintype.prod_add
File: Mathlib/Algebra/BigOperators/Ring.lean

tactic: simpa [compl_eq_univ_sdiff] using Finset.prod_add f g univ
state_before: ι✝ : Type u_1
α✝ : Type u_2
β : Type u_3
γ : Type u_4
κ✝ : ι✝ → Type u_5
s s₁ s₂ : Finset ι✝
i : ι✝
a : α✝
f✝ g✝ : ι✝ → α✝
ι : Type u_6
κ : Type u_7
α : Type u_8
inst✝³ : DecidableEq ι
inst✝² : Fintype ι
inst✝¹ : Fintype κ
inst✝ : CommSemiring α
f g : ι → α
⊢ ∏ a : ι, (f a + g a) = ∑ t : Finset ι, (∏ a ∈ t, f a) * ∏ a ∈ tᶜ, g a
state_after: no goals
Theorem: Nat.odd_mul_odd
File: Mathlib/Data/Nat/ModEq.lean

tactic: simpa [Nat.ModEq] using @ModEq.mul 2 n 1 m 1
state_before: m✝ n✝ a b c d n m : ℕ
⊢ n % 2 = 1 → m % 2 = 1 → n * m % 2 = 1
state_after: no goals
Theorem: CategoryTheory.GrothendieckTopology.plusMap_zero
File: Mathlib/CategoryTheory/Sites/Plus.lean

tactic: ext : 2
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
J : GrothendieckTopology C
D : Type w
inst✝³ : Category.{max v u, w} D
inst✝² : ∀ (P : Cᵒᵖ ⥤ D) (X : C) (S : J.Cover X), HasMultiequalizer (S.index P)
P✝ : Cᵒᵖ ⥤ D
inst✝¹ : ∀ (X : C), HasColimitsOfShape (J.Cover X)ᵒᵖ D
inst✝ : Preadditive D
P Q : Cᵒᵖ ⥤ D
⊢ J.plusMap 0 = 0
state_after: case w.h
C : Type u
inst✝⁴ : Category.{v, u} C
J : GrothendieckTopology C
D : Type w
inst✝³ : Category.{max v u, w} D
inst✝² : ∀ (P : Cᵒᵖ ⥤ D) (X : C) (S : J.Cover X), HasMultiequalizer (S.index P)
P✝ : Cᵒᵖ ⥤ D
inst✝¹ : ∀ (X : C), HasColimitsOfShape (J.Cover X)ᵒᵖ D
inst✝ : Preadditive D
P Q : Cᵒᵖ ⥤ D
x✝ : Cᵒᵖ
⊢ (J.plusMap 0).app x✝ = NatTrans.app 0 x✝

tactic: refine colimit.hom_ext (fun S => ?_)
state_before: case w.h
C : Type u
inst✝⁴ : Category.{v, u} C
J : GrothendieckTopology C
D : Type w
inst✝³ : Category.{max v u, w} D
inst✝² : ∀ (P : Cᵒᵖ ⥤ D) (X : C) (S : J.Cover X), HasMultiequalizer (S.index P)
P✝ : Cᵒᵖ ⥤ D
inst✝¹ : ∀ (X : C), HasColimitsOfShape (J.Cover X)ᵒᵖ D
inst✝ : Preadditive D
P Q : Cᵒᵖ ⥤ D
x✝ : Cᵒᵖ
⊢ (J.plusMap 0).app x✝ = NatTrans.app 0 x✝
state_after: case w.h
C : Type u
inst✝⁴ : Category.{v, u} C
J : GrothendieckTopology C
D : Type w
inst✝³ : Category.{max v u, w} D
inst✝² : ∀ (P : Cᵒᵖ ⥤ D) (X : C) (S : J.Cover X), HasMultiequalizer (S.index P)
P✝ : Cᵒᵖ ⥤ D
inst✝¹ : ∀ (X : C), HasColimitsOfShape (J.Cover X)ᵒᵖ D
inst✝ : Preadditive D
P Q : Cᵒᵖ ⥤ D
x✝ : Cᵒᵖ
S : (J.Cover x✝.unop)ᵒᵖ
⊢ colimit.ι (J.diagram P x✝.unop) S ≫ (J.plusMap 0).app x✝ = colimit.ι (J.diagram P x✝.unop) S ≫ NatTrans.app 0 x✝

tactic: erw [comp_zero, colimit.ι_map, J.diagramNatTrans_zero, zero_comp]
state_before: case w.h
C : Type u
inst✝⁴ : Category.{v, u} C
J : GrothendieckTopology C
D : Type w
inst✝³ : Category.{max v u, w} D
inst✝² : ∀ (P : Cᵒᵖ ⥤ D) (X : C) (S : J.Cover X), HasMultiequalizer (S.index P)
P✝ : Cᵒᵖ ⥤ D
inst✝¹ : ∀ (X : C), HasColimitsOfShape (J.Cover X)ᵒᵖ D
inst✝ : Preadditive D
P Q : Cᵒᵖ ⥤ D
x✝ : Cᵒᵖ
S : (J.Cover x✝.unop)ᵒᵖ
⊢ colimit.ι (J.diagram P x✝.unop) S ≫ (J.plusMap 0).app x✝ = colimit.ι (J.diagram P x✝.unop) S ≫ NatTrans.app 0 x✝
state_after: no goals
Theorem: UniqueMul.mt
File: Mathlib/Algebra/Group/UniqueProds.lean

tactic: contrapose! k
state_before: G : Type u_1
H : Type u_2
inst✝¹ : Mul G
inst✝ : Mul H
A B : Finset G
a0 b0 : G
h : UniqueMul A B a0 b0
x✝¹ x✝ : G
ha : x✝¹ ∈ A
hb : x✝ ∈ B
k : x✝¹ ≠ a0 ∨ x✝ ≠ b0
⊢ x✝¹ * x✝ ≠ a0 * b0
state_after: G : Type u_1
H : Type u_2
inst✝¹ : Mul G
inst✝ : Mul H
A B : Finset G
a0 b0 : G
h : UniqueMul A B a0 b0
x✝¹ x✝ : G
ha : x✝¹ ∈ A
hb : x✝ ∈ B
k : x✝¹ * x✝ = a0 * b0
⊢ x✝¹ = a0 ∧ x✝ = b0

tactic: exact h ha hb k
state_before: G : Type u_1
H : Type u_2
inst✝¹ : Mul G
inst✝ : Mul H
A B : Finset G
a0 b0 : G
h : UniqueMul A B a0 b0
x✝¹ x✝ : G
ha : x✝¹ ∈ A
hb : x✝ ∈ B
k : x✝¹ * x✝ = a0 * b0
⊢ x✝¹ = a0 ∧ x✝ = b0
state_after: no goals
Theorem: List.indexOf_get
File: Mathlib/Data/List/Basic.lean

tactic: simp
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
inst✝ : DecidableEq α
a : α
l : List α
h : indexOf a l < l.length
⊢ l.get ⟨indexOf a l, h⟩ = a
state_after: no goals
Theorem: Order.Ideal.lt_sup_principal_of_not_mem
File: Mathlib/Order/Ideal.lean

tactic: simpa only [left_eq_sup, principal_le_iff] using h
state_before: P : Type u_1
inst✝¹ : SemilatticeSup P
inst✝ : IsDirected P fun x x_1 => x ≥ x_1
x : P
I J K s t : Ideal P
hx : x ∉ I
h : I = I ⊔ principal x
⊢ x ∈ I
state_after: no goals
Theorem: MvPolynomial.comp_aeval
File: Mathlib/Algebra/MvPolynomial/Basic.lean

tactic: ext i
state_before: R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝⁵ : CommSemiring R
inst✝⁴ : CommSemiring S₁
p q : MvPolynomial σ R
inst✝³ : Algebra R S₁
inst✝² : CommSemiring S₂
f : σ → S₁
B : Type u_2
inst✝¹ : CommSemiring B
inst✝ : Algebra R B
φ : S₁ →ₐ[R] B
⊢ φ.comp (aeval f) = aeval fun i => φ (f i)
state_after: case hf
R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝⁵ : CommSemiring R
inst✝⁴ : CommSemiring S₁
p q : MvPolynomial σ R
inst✝³ : Algebra R S₁
inst✝² : CommSemiring S₂
f : σ → S₁
B : Type u_2
inst✝¹ : CommSemiring B
inst✝ : Algebra R B
φ : S₁ →ₐ[R] B
i : σ
⊢ (φ.comp (aeval f)) (X i) = (aeval fun i => φ (f i)) (X i)

tactic: simp
state_before: case hf
R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝⁵ : CommSemiring R
inst✝⁴ : CommSemiring S₁
p q : MvPolynomial σ R
inst✝³ : Algebra R S₁
inst✝² : CommSemiring S₂
f : σ → S₁
B : Type u_2
inst✝¹ : CommSemiring B
inst✝ : Algebra R B
φ : S₁ →ₐ[R] B
i : σ
⊢ (φ.comp (aeval f)) (X i) = (aeval fun i => φ (f i)) (X i)
state_after: no goals
Theorem: ConjClasses.mem_carrier_iff_mk_eq
File: Mathlib/Algebra/Group/Conj.lean

tactic: revert b
state_before: α : Type u
β : Type v
inst✝ : Monoid α
a : α
b : ConjClasses α
⊢ a ∈ b.carrier ↔ ConjClasses.mk a = b
state_after: α : Type u
β : Type v
inst✝ : Monoid α
a : α
⊢ ∀ {b : ConjClasses α}, a ∈ b.carrier ↔ ConjClasses.mk a = b

tactic: rw [forall_isConj]
state_before: α : Type u
β : Type v
inst✝ : Monoid α
a : α
⊢ ∀ {b : ConjClasses α}, a ∈ b.carrier ↔ ConjClasses.mk a = b
state_after: α : Type u
β : Type v
inst✝ : Monoid α
a : α
⊢ ∀ (a_1 : α), a ∈ (ConjClasses.mk a_1).carrier ↔ ConjClasses.mk a = ConjClasses.mk a_1

tactic: intro b
state_before: α : Type u
β : Type v
inst✝ : Monoid α
a : α
⊢ ∀ (a_1 : α), a ∈ (ConjClasses.mk a_1).carrier ↔ ConjClasses.mk a = ConjClasses.mk a_1
state_after: α : Type u
β : Type v
inst✝ : Monoid α
a b : α
⊢ a ∈ (ConjClasses.mk b).carrier ↔ ConjClasses.mk a = ConjClasses.mk b

tactic: rw [carrier, eq_comm, mk_eq_mk_iff_isConj, ← quotient_mk_eq_mk, Quotient.lift_mk]
state_before: α : Type u
β : Type v
inst✝ : Monoid α
a b : α
⊢ a ∈ (ConjClasses.mk b).carrier ↔ ConjClasses.mk a = ConjClasses.mk b
state_after: α : Type u
β : Type v
inst✝ : Monoid α
a b : α
⊢ a ∈ conjugatesOf b ↔ IsConj b a

tactic: rfl
state_before: α : Type u
β : Type v
inst✝ : Monoid α
a b : α
⊢ a ∈ conjugatesOf b ↔ IsConj b a
state_after: no goals
Theorem: List.rdropWhile_prefix
File: Mathlib/Data/List/DropRight.lean

tactic: rw [← reverse_suffix, rdropWhile, reverse_reverse]
state_before: α : Type u_1
p : α → Bool
l : List α
n : ℕ
⊢ rdropWhile p l <+: l
state_after: α : Type u_1
p : α → Bool
l : List α
n : ℕ
⊢ dropWhile p l.reverse <:+ l.reverse

tactic: exact dropWhile_suffix _
state_before: α : Type u_1
p : α → Bool
l : List α
n : ℕ
⊢ dropWhile p l.reverse <:+ l.reverse
state_after: no goals
Theorem: NonUnitalAlgebra.sInf_toSubmodule
File: Mathlib/Algebra/Algebra/NonUnitalSubalgebra.lean

tactic: simp
state_before: F : Type u_1
R : Type u
A : Type v
B : Type w
inst✝¹⁰ : CommSemiring R
inst✝⁹ : NonUnitalNonAssocSemiring A
inst✝⁸ : Module R A
inst✝⁷ : IsScalarTower R A A
inst✝⁶ : SMulCommClass R A A
inst✝⁵ : NonUnitalNonAssocSemiring B
inst✝⁴ : Module R B
inst✝³ : IsScalarTower R B B
inst✝² : SMulCommClass R B B
inst✝¹ : FunLike F A B
inst✝ : NonUnitalAlgHomClass F R A B
S : Set (NonUnitalSubalgebra R A)
⊢ ↑(sInf S).toSubmodule = ↑(sInf (NonUnitalSubalgebra.toSubmodule '' S))
state_after: no goals
Theorem: List.reduceOption_get?_iff
File: Mathlib/Data/List/ReduceOption.lean

tactic: rw [← mem_iff_get?, ← mem_iff_get?, reduceOption_mem_iff]
state_before: α : Type u_1
β : Type u_2
l : List (Option α)
x : α
⊢ (∃ i, l.get? i = some (some x)) ↔ ∃ i, l.reduceOption.get? i = some x
state_after: no goals
Theorem: Matrix.J_det_mul_J_det
File: Mathlib/LinearAlgebra/SymplecticGroup.lean

tactic: rw [← det_mul, J_squared, ← one_smul R (-1 : Matrix _ _ R), smul_neg, ← neg_smul, det_smul,
  Fintype.card_sum, det_one, mul_one]
state_before: l : Type u_1
R : Type u_2
inst✝² : DecidableEq l
inst✝¹ : CommRing R
inst✝ : Fintype l
⊢ (J l R).det * (J l R).det = 1
state_after: l : Type u_1
R : Type u_2
inst✝² : DecidableEq l
inst✝¹ : CommRing R
inst✝ : Fintype l
⊢ (-1) ^ (Fintype.card l + Fintype.card l) = 1

tactic: apply Even.neg_one_pow
state_before: l : Type u_1
R : Type u_2
inst✝² : DecidableEq l
inst✝¹ : CommRing R
inst✝ : Fintype l
⊢ (-1) ^ (Fintype.card l + Fintype.card l) = 1
state_after: case h
l : Type u_1
R : Type u_2
inst✝² : DecidableEq l
inst✝¹ : CommRing R
inst✝ : Fintype l
⊢ Even (Fintype.card l + Fintype.card l)

tactic: exact even_add_self _
state_before: case h
l : Type u_1
R : Type u_2
inst✝² : DecidableEq l
inst✝¹ : CommRing R
inst✝ : Fintype l
⊢ Even (Fintype.card l + Fintype.card l)
state_after: no goals
Theorem: Fin.succ_castPred_eq_add_one
File: Mathlib/Data/Fin/Basic.lean

tactic: cases' a using lastCases with a
state_before: n m : ℕ
a : Fin (n + 1)
ha : a ≠ last n
⊢ (a.castPred ha).succ = a + 1
state_after: case last
n m : ℕ
ha : last n ≠ last n
⊢ ((last n).castPred ha).succ = last n + 1

case cast
n m : ℕ
a : Fin n
ha : a.castSucc ≠ last n
⊢ (a.castSucc.castPred ha).succ = a.castSucc + 1

tactic: exact (ha rfl).elim
state_before: case last
n m : ℕ
ha : last n ≠ last n
⊢ ((last n).castPred ha).succ = last n + 1
state_after: no goals

tactic: rw [castPred_castSucc, coeSucc_eq_succ]
state_before: case cast
n m : ℕ
a : Fin n
ha : a.castSucc ≠ last n
⊢ (a.castSucc.castPred ha).succ = a.castSucc + 1
state_after: no goals