ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: LinearMap.IsAlt.isRefl
File: Mathlib/LinearAlgebra/SesquilinearForm.lean

Proof steps:
state_before: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
R₃ : Type u_4
M : Type u_5
M₁ : Type u_6
M₂ : Type u_7
M₃ : Type u_8
Mₗ₁ : Type u_9
Mₗ₁' : Type u_10
Mₗ₂ : Type u_11
Mₗ₂' : Type u_12
K : Type u_13
K₁ : Type u_14
K₂ : Type u_15
V : Type u_16
V₁ : Type u_17
V₂ : Type u_18
n : Type u_19
inst✝⁵ : CommSemiring R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : CommSemiring R₁
inst✝¹ : AddCommMonoid M₁
inst✝ : Module R₁ M₁
I₁ I₂ I : R₁ →+* R
B : M₁ →ₛₗ[I₁] M₁ →ₛₗ[I₂] M
H : B.IsAlt
⊢ B.IsRefl
state_after: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
R₃ : Type u_4
M : Type u_5
M₁ : Type u_6
M₂ : Type u_7
M₃ : Type u_8
Mₗ₁ : Type u_9
Mₗ₁' : Type u_10
Mₗ₂ : Type u_11
Mₗ₂' : Type u_12
K : Type u_13
K₁ : Type u_14
K₂ : Type u_15
V : Type u_16
V₁ : Type u_17
V₂ : Type u_18
n : Type u_19
inst✝⁵ : CommSemiring R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : CommSemiring R₁
inst✝¹ : AddCommMonoid M₁
inst✝ : Module R₁ M₁
I₁ I₂ I : R₁ →+* R
B : M₁ →ₛₗ[I₁] M₁ →ₛₗ[I₂] M
H : B.IsAlt
x y : M₁
h : (B x) y = 0
⊢ (B y) x = 0
tactic: intro x y h
state_before: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
R₃ : Type u_4
M : Type u_5
M₁ : Type u_6
M₂ : Type u_7
M₃ : Type u_8
Mₗ₁ : Type u_9
Mₗ₁' : Type u_10
Mₗ₂ : Type u_11
Mₗ₂' : Type u_12
K : Type u_13
K₁ : Type u_14
K₂ : Type u_15
V : Type u_16
V₁ : Type u_17
V₂ : Type u_18
n : Type u_19
inst✝⁵ : CommSemiring R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : CommSemiring R₁
inst✝¹ : AddCommMonoid M₁
inst✝ : Module R₁ M₁
I₁ I₂ I : R₁ →+* R
B : M₁ →ₛₗ[I₁] M₁ →ₛₗ[I₂] M
H : B.IsAlt
x y : M₁
h : (B x) y = 0
⊢ (B y) x = 0
state_after: no goals
tactic: rw [← neg H, h, neg_zero]
Theorem: Finset.prod_erase_eq_div
File: Mathlib/Algebra/BigOperators/Group/Finset.lean

Proof steps:
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s s₁ s₂ : Finset α
a✝ : α
f g : α → β
inst✝¹ : CommGroup β
inst✝ : DecidableEq α
a : α
h : a ∈ s
⊢ ∏ x ∈ s.erase a, f x = (∏ x ∈ s, f x) / f a
state_after: no goals
tactic: rw [eq_div_iff_mul_eq', prod_erase_mul _ _ h]
Theorem: one_le_mul_mabs
File: Mathlib/Algebra/Order/Group/Unbundled/Abs.lean

Proof steps:
state_before: α : Type u_1
inst✝² : Group α
inst✝¹ : LinearOrder α
a✝¹ b✝ : α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a✝ b c a : α
⊢ 1 ≤ a * mabs a
state_after: α : Type u_1
inst✝² : Group α
inst✝¹ : LinearOrder α
a✝¹ b✝ : α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a✝ b c a : α
⊢ a * a⁻¹ ≤ a * mabs a
tactic: rw [← mul_right_inv a]
state_before: α : Type u_1
inst✝² : Group α
inst✝¹ : LinearOrder α
a✝¹ b✝ : α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a✝ b c a : α
⊢ a * a⁻¹ ≤ a * mabs a
state_after: no goals
tactic: exact mul_le_mul_left' (inv_le_mabs a) _
Theorem: List.rotate_zero
File: Mathlib/Data/List/Rotate.lean

Proof steps:
state_before: α : Type u
l : List α
⊢ l.rotate 0 = l
state_after: no goals
tactic: simp [rotate]
Theorem: CategoryTheory.Limits.diagonalObjPullbackFstIso_hom_fst_fst
File: Mathlib/CategoryTheory/Limits/Shapes/Diagonal.lean

Proof steps:
state_before: C : Type u_1
inst✝⁵ : Category.{u_2, u_1} C
X✝ Y✝ Z✝ : C
inst✝⁴ : HasPullbacks C
S T : C
f✝ : X✝ ⟶ T
g✝ : Y✝ ⟶ T
i : T ⟶ S
inst✝³ : HasPullback i i
inst✝² : HasPullback f✝ g✝
inst✝¹ : HasPullback (f✝ ≫ i) (g✝ ≫ i)
inst✝ : HasPullback (diagonal i) (map (f✝ ≫ i) (g✝ ≫ i) i i f✝ g✝ (𝟙 S) ⋯ ⋯)
X Y Z : C
f : X ⟶ Z
g : Y ⟶ Z
⊢ (diagonalObjPullbackFstIso f g).hom ≫ fst (snd g g ≫ g) f ≫ fst g g = fst (fst f g) (fst f g) ≫ snd f g
state_after: C : Type u_1
inst✝⁵ : Category.{u_2, u_1} C
X✝ Y✝ Z✝ : C
inst✝⁴ : HasPullbacks C
S T : C
f✝ : X✝ ⟶ T
g✝ : Y✝ ⟶ T
i : T ⟶ S
inst✝³ : HasPullback i i
inst✝² : HasPullback f✝ g✝
inst✝¹ : HasPullback (f✝ ≫ i) (g✝ ≫ i)
inst✝ : HasPullback (diagonal i) (map (f✝ ≫ i) (g✝ ≫ i) i i f✝ g✝ (𝟙 S) ⋯ ⋯)
X Y Z : C
f : X ⟶ Z
g : Y ⟶ Z
⊢ (pullbackRightPullbackFstIso f g (fst f g) ≪≫
          congrHom ⋯ ⋯ ≪≫ pullbackAssoc f g g g ≪≫ pullbackSymmetry f (fst g g ≫ g) ≪≫ congrHom ⋯ ⋯).hom ≫
      fst (snd g g ≫ g) f ≫ fst g g =
    fst (fst f g) (fst f g) ≫ snd f g
tactic: delta diagonalObjPullbackFstIso
state_before: C : Type u_1
inst✝⁵ : Category.{u_2, u_1} C
X✝ Y✝ Z✝ : C
inst✝⁴ : HasPullbacks C
S T : C
f✝ : X✝ ⟶ T
g✝ : Y✝ ⟶ T
i : T ⟶ S
inst✝³ : HasPullback i i
inst✝² : HasPullback f✝ g✝
inst✝¹ : HasPullback (f✝ ≫ i) (g✝ ≫ i)
inst✝ : HasPullback (diagonal i) (map (f✝ ≫ i) (g✝ ≫ i) i i f✝ g✝ (𝟙 S) ⋯ ⋯)
X Y Z : C
f : X ⟶ Z
g : Y ⟶ Z
⊢ (pullbackRightPullbackFstIso f g (fst f g) ≪≫
          congrHom ⋯ ⋯ ≪≫ pullbackAssoc f g g g ≪≫ pullbackSymmetry f (fst g g ≫ g) ≪≫ congrHom ⋯ ⋯).hom ≫
      fst (snd g g ≫ g) f ≫ fst g g =
    fst (fst f g) (fst f g) ≫ snd f g
state_after: no goals
tactic: simp
Theorem: TensorProduct.LieModule.lie_tmul_right
File: Mathlib/Algebra/Lie/TensorProduct.lean

Proof steps:
state_before: R : Type u
inst✝¹⁸ : CommRing R
L : Type v
M : Type w
N : Type w₁
P : Type w₂
Q : Type w₃
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
inst✝⁷ : AddCommGroup P
inst✝⁶ : Module R P
inst✝⁵ : LieRingModule L P
inst✝⁴ : LieModule R L P
inst✝³ : AddCommGroup Q
inst✝² : Module R Q
inst✝¹ : LieRingModule L Q
inst✝ : LieModule R L Q
x : L
m : M
n : N
⊢ (hasBracketAux x) (m ⊗ₜ[R] n) = ⁅x, m⁆ ⊗ₜ[R] n + m ⊗ₜ[R] ⁅x, n⁆
state_after: no goals
tactic: simp only [hasBracketAux, LinearMap.rTensor_tmul, toEnd_apply_apply,
      LinearMap.add_apply, LinearMap.lTensor_tmul]
Theorem: Ordering.orElse_eq_lt
File: Mathlib/Order/Compare.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
o₁ o₂ : Ordering
⊢ o₁.orElse o₂ = lt ↔ o₁ = lt ∨ o₁ = eq ∧ o₂ = lt
state_after: no goals
tactic: cases o₁ <;> cases o₂ <;> decide
Theorem: Submodule.smul_mem_span_smul'
File: Mathlib/Algebra/Algebra/Tower.lean

Proof steps:
state_before: R : Type u
S : Type v
A : Type w
B : Type u₁
M : Type v₁
inst✝⁶ : Semiring R
inst✝⁵ : Semiring S
inst✝⁴ : AddCommMonoid A
inst✝³ : Module R S
inst✝² : Module S A
inst✝¹ : Module R A
inst✝ : IsScalarTower R S A
s : Set S
hs : span R s = ⊤
t : Set A
k : S
x : A
hx : x ∈ span R (s • t)
⊢ k • x ∈ span R (s • t)
state_after: R : Type u
S : Type v
A : Type w
B : Type u₁
M : Type v₁
inst✝⁶ : Semiring R
inst✝⁵ : Semiring S
inst✝⁴ : AddCommMonoid A
inst✝³ : Module R S
inst✝² : Module S A
inst✝¹ : Module R A
inst✝ : IsScalarTower R S A
s : Set S
hs : span R s = ⊤
t : Set A
k : S
x : A
hx : x ∈ restrictScalars R (span S t)
⊢ k • x ∈ restrictScalars R (span S t)
tactic: rw [span_smul_of_span_eq_top hs] at hx ⊢
state_before: R : Type u
S : Type v
A : Type w
B : Type u₁
M : Type v₁
inst✝⁶ : Semiring R
inst✝⁵ : Semiring S
inst✝⁴ : AddCommMonoid A
inst✝³ : Module R S
inst✝² : Module S A
inst✝¹ : Module R A
inst✝ : IsScalarTower R S A
s : Set S
hs : span R s = ⊤
t : Set A
k : S
x : A
hx : x ∈ restrictScalars R (span S t)
⊢ k • x ∈ restrictScalars R (span S t)
state_after: no goals
tactic: exact (span S t).smul_mem k hx
Theorem: pow_card_eq_one
File: Mathlib/GroupTheory/OrderOfElement.lean

Proof steps:
state_before: G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝¹ : Group G
inst✝ : Fintype G
x : G
n : ℕ
⊢ x ^ card G = 1
state_after: no goals
tactic: rw [← Nat.card_eq_fintype_card, pow_card_eq_one']
Theorem: Set.preimage_subtype_coe_eq_compl
File: Mathlib/Data/Set/Image.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f : α → β
g : β → γ
s u v : Set α
hsuv : s ⊆ u ∪ v
H : s ∩ (u ∩ v) = ∅
⊢ Subtype.val ⁻¹' u = (Subtype.val ⁻¹' v)ᶜ
state_after: case h.mk
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f : α → β
g : β → γ
s u v : Set α
hsuv : s ⊆ u ∪ v
H : s ∩ (u ∩ v) = ∅
x : α
x_in_s : x ∈ s
⊢ ⟨x, x_in_s⟩ ∈ Subtype.val ⁻¹' u ↔ ⟨x, x_in_s⟩ ∈ (Subtype.val ⁻¹' v)ᶜ
tactic: ext ⟨x, x_in_s⟩
state_before: case h.mk
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f : α → β
g : β → γ
s u v : Set α
hsuv : s ⊆ u ∪ v
H : s ∩ (u ∩ v) = ∅
x : α
x_in_s : x ∈ s
⊢ ⟨x, x_in_s⟩ ∈ Subtype.val ⁻¹' u ↔ ⟨x, x_in_s⟩ ∈ (Subtype.val ⁻¹' v)ᶜ
state_after: case h.mk.mp
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f : α → β
g : β → γ
s u v : Set α
hsuv : s ⊆ u ∪ v
H : s ∩ (u ∩ v) = ∅
x : α
x_in_s : x ∈ s
⊢ ⟨x, x_in_s⟩ ∈ Subtype.val ⁻¹' u → ⟨x, x_in_s⟩ ∈ (Subtype.val ⁻¹' v)ᶜ

case h.mk.mpr
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f : α → β
g : β → γ
s u v : Set α
hsuv : s ⊆ u ∪ v
H : s ∩ (u ∩ v) = ∅
x : α
x_in_s : x ∈ s
⊢ ⟨x, x_in_s⟩ ∈ (Subtype.val ⁻¹' v)ᶜ → ⟨x, x_in_s⟩ ∈ Subtype.val ⁻¹' u
tactic: constructor
Theorem: Set.Nontrivial.einfsep_ne_top
File: Mathlib/Topology/MetricSpace/Infsep.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝ : PseudoMetricSpace α
s : Set α
hs : s.Nontrivial
⊢ s.einfsep ≠ ⊤
state_after: α : Type u_1
β : Type u_2
inst✝ : PseudoMetricSpace α
s : Set α
hs : s.einfsep = ⊤
⊢ ¬s.Nontrivial
tactic: contrapose! hs
state_before: α : Type u_1
β : Type u_2
inst✝ : PseudoMetricSpace α
s : Set α
hs : s.einfsep = ⊤
⊢ ¬s.Nontrivial
state_after: α : Type u_1
β : Type u_2
inst✝ : PseudoMetricSpace α
s : Set α
hs : s.einfsep = ⊤
⊢ s.Subsingleton
tactic: rw [not_nontrivial_iff]
state_before: α : Type u_1
β : Type u_2
inst✝ : PseudoMetricSpace α
s : Set α
hs : s.einfsep = ⊤
⊢ s.Subsingleton
state_after: no goals
tactic: exact subsingleton_of_einfsep_eq_top hs
Theorem: List.Pairwise.and
File: .lake/packages/batteries/Batteries/Data/List/Pairwise.lean

Proof steps:
state_before: α✝ : Type u_1
R : α✝ → α✝ → Prop
l : List α✝
S : α✝ → α✝ → Prop
hR : Pairwise R l
hS : Pairwise S l
⊢ Pairwise (fun a b => R a b ∧ S a b) l
state_after: no goals
tactic: induction hR with
  | nil => simp only [Pairwise.nil]
  | cons R1 _ IH =>
    simp only [Pairwise.nil, pairwise_cons] at hS ⊢
    exact ⟨fun b bl => ⟨R1 b bl, hS.1 b bl⟩, IH hS.2⟩
Theorem: LinearMap.BilinForm.apply_dualBasis_left
File: Mathlib/LinearAlgebra/BilinearForm/Properties.lean

Proof steps:
state_before: R : Type u_1
M : Type u_2
inst✝¹⁷ : CommSemiring R
inst✝¹⁶ : AddCommMonoid M
inst✝¹⁵ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝¹⁴ : CommRing R₁
inst✝¹³ : AddCommGroup M₁
inst✝¹² : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝¹¹ : Field K
inst✝¹⁰ : AddCommGroup V
inst✝⁹ : Module K V
M'✝ : Type u_7
M'' : Type u_8
inst✝⁸ : AddCommMonoid M'✝
inst✝⁷ : AddCommMonoid M''
inst✝⁶ : Module R M'✝
inst✝⁵ : Module R M''
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M' : Type u_9
inst✝⁴ : AddCommMonoid M'
inst✝³ : Module R M'
inst✝² : FiniteDimensional K V
ι : Type u_10
inst✝¹ : DecidableEq ι
inst✝ : Finite ι
B : BilinForm K V
hB : B.Nondegenerate
b : Basis ι K V
i j : ι
⊢ (B ((B.dualBasis hB b) i)) (b j) = if j = i then 1 else 0
state_after: R : Type u_1
M : Type u_2
inst✝¹⁷ : CommSemiring R
inst✝¹⁶ : AddCommMonoid M
inst✝¹⁵ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝¹⁴ : CommRing R₁
inst✝¹³ : AddCommGroup M₁
inst✝¹² : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝¹¹ : Field K
inst✝¹⁰ : AddCommGroup V
inst✝⁹ : Module K V
M'✝ : Type u_7
M'' : Type u_8
inst✝⁸ : AddCommMonoid M'✝
inst✝⁷ : AddCommMonoid M''
inst✝⁶ : Module R M'✝
inst✝⁵ : Module R M''
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M' : Type u_9
inst✝⁴ : AddCommMonoid M'
inst✝³ : Module R M'
inst✝² : FiniteDimensional K V
ι : Type u_10
inst✝¹ : DecidableEq ι
inst✝ : Finite ι
B : BilinForm K V
hB : B.Nondegenerate
b : Basis ι K V
i j : ι
this : FiniteDimensional K V
⊢ (B ((B.dualBasis hB b) i)) (b j) = if j = i then 1 else 0
tactic: have := FiniteDimensional.of_fintype_basis b
state_before: R : Type u_1
M : Type u_2
inst✝¹⁷ : CommSemiring R
inst✝¹⁶ : AddCommMonoid M
inst✝¹⁵ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝¹⁴ : CommRing R₁
inst✝¹³ : AddCommGroup M₁
inst✝¹² : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝¹¹ : Field K
inst✝¹⁰ : AddCommGroup V
inst✝⁹ : Module K V
M'✝ : Type u_7
M'' : Type u_8
inst✝⁸ : AddCommMonoid M'✝
inst✝⁷ : AddCommMonoid M''
inst✝⁶ : Module R M'✝
inst✝⁵ : Module R M''
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M' : Type u_9
inst✝⁴ : AddCommMonoid M'
inst✝³ : Module R M'
inst✝² : FiniteDimensional K V
ι : Type u_10
inst✝¹ : DecidableEq ι
inst✝ : Finite ι
B : BilinForm K V
hB : B.Nondegenerate
b : Basis ι K V
i j : ι
this : FiniteDimensional K V
⊢ (B ((B.dualBasis hB b) i)) (b j) = if j = i then 1 else 0
state_after: no goals
tactic: rw [dualBasis, Basis.map_apply, Basis.coe_dualBasis, ← toDual_def hB,
    LinearEquiv.apply_symm_apply, Basis.coord_apply, Basis.repr_self, Finsupp.single_apply]
Theorem: ProbabilityTheory.cond_eq_inv_mul_cond_mul
File: Mathlib/Probability/ConditionalProbability.lean

Proof steps:
state_before: Ω : Type u_1
Ω' : Type u_2
α : Type u_3
m : MeasurableSpace Ω
m' : MeasurableSpace Ω'
μ : Measure Ω
s t : Set Ω
inst✝ : IsFiniteMeasure μ
hms : MeasurableSet s
hmt : MeasurableSet t
⊢ μ[|s] t = (μ s)⁻¹ * μ[|t] s * μ t
state_after: no goals
tactic: rw [mul_assoc, cond_mul_eq_inter μ hmt s, Set.inter_comm, cond_apply _ hms]
Theorem: Prod.lt_of_le_of_lt
File: Mathlib/Order/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝¹ : Preorder α
inst✝ : Preorder β
a a₁ a₂ : α
b b₁ b₂ : β
x y : α × β
h₁ : x.1 ≤ y.1
h₂ : x.2 < y.2
⊢ x < y
state_after: no goals
tactic: simp [lt_iff, *]
Theorem: Set.preimage_sub_preimage_subset
File: Mathlib/Data/Set/Pointwise/Basic.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝³ : Group α
inst✝² : DivisionMonoid β
inst✝¹ : FunLike F α β
inst✝ : MonoidHomClass F α β
m : F
s✝ t✝ : Set α
s t : Set β
⊢ ⇑m ⁻¹' s / ⇑m ⁻¹' t ⊆ ⇑m ⁻¹' (s / t)
state_after: case intro.intro.intro.intro
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝³ : Group α
inst✝² : DivisionMonoid β
inst✝¹ : FunLike F α β
inst✝ : MonoidHomClass F α β
m : F
s✝ t✝ : Set α
s t : Set β
w✝¹ : α
left✝¹ : w✝¹ ∈ ⇑m ⁻¹' s
w✝ : α
left✝ : w✝ ∈ ⇑m ⁻¹' t
⊢ (fun x x_1 => x / x_1) w✝¹ w✝ ∈ ⇑m ⁻¹' (s / t)
tactic: rintro _ ⟨_, _, _, _, rfl⟩
state_before: case intro.intro.intro.intro
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝³ : Group α
inst✝² : DivisionMonoid β
inst✝¹ : FunLike F α β
inst✝ : MonoidHomClass F α β
m : F
s✝ t✝ : Set α
s t : Set β
w✝¹ : α
left✝¹ : w✝¹ ∈ ⇑m ⁻¹' s
w✝ : α
left✝ : w✝ ∈ ⇑m ⁻¹' t
⊢ (fun x x_1 => x / x_1) w✝¹ w✝ ∈ ⇑m ⁻¹' (s / t)
state_after: no goals
tactic: exact ⟨_, ‹_›, _, ‹_›, (map_div m _ _).symm⟩
Theorem: CategoryTheory.monoidalOfHasFiniteProducts.associator_inv_snd
File: Mathlib/CategoryTheory/Monoidal/OfHasFiniteProducts.lean

Proof steps:
state_before: C : Type u
inst✝² : Category.{v, u} C
X✝ Y✝ : C
inst✝¹ : HasTerminal C
inst✝ : HasBinaryProducts C
X Y Z : C
⊢ (α_ X Y Z).inv ≫ prod.snd = prod.snd ≫ prod.snd
state_after: no goals
tactic: simp [associator_inv]
Theorem: Finsupp.unique_ext
File: Mathlib/Data/Finsupp/Defs.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝¹ : Zero M
inst✝ : Unique α
f g : α →₀ M
h : f default = g default
a : α
⊢ f a = g a
state_after: no goals
tactic: rwa [Unique.eq_default a]
Theorem: FirstOrder.Language.LEquiv.addEmptyConstants_toLHom
File: Mathlib/ModelTheory/LanguageMap.lean

Proof steps:
state_before: L : Language
L' : Language
M : Type w
inst✝ : L.Structure M
α : Type w'
ie : IsEmpty α
⊢ ((LHom.id L).sumElim (LHom.ofIsEmpty (constantsOn α) L)).comp (L.lhomWithConstants α) = LHom.id L
state_after: no goals
tactic: rw [lhomWithConstants, LHom.sumElim_comp_inl]
state_before: L : Language
L' : Language
M : Type w
inst✝ : L.Structure M
α : Type w'
ie : IsEmpty α
⊢ (L.lhomWithConstants α).comp ((LHom.id L).sumElim (LHom.ofIsEmpty (constantsOn α) L)) = LHom.id (L[[α]])
state_after: L : Language
L' : Language
M : Type w
inst✝ : L.Structure M
α : Type w'
ie : IsEmpty α
⊢ LHom.sumInl.sumElim (LHom.sumInl.comp (LHom.ofIsEmpty (constantsOn α) L)) = LHom.id (L[[α]])
tactic: simp only [LHom.comp_sumElim, lhomWithConstants, LHom.comp_id]
state_before: L : Language
L' : Language
M : Type w
inst✝ : L.Structure M
α : Type w'
ie : IsEmpty α
⊢ LHom.sumInl.sumElim (LHom.sumInl.comp (LHom.ofIsEmpty (constantsOn α) L)) = LHom.id (L[[α]])
state_after: no goals
tactic: exact _root_.trans (congr rfl (Subsingleton.elim _ _)) LHom.sumElim_inl_inr
Theorem: dvd_c_of_prime_of_dvd_a_of_dvd_b_of_FLT
File: Mathlib/NumberTheory/FLT/Basic.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : Semiring α
inst✝ : NoZeroDivisors α
m n✝ n : ℕ
p : ℤ
hp : Prime p
a b c : ℤ
hpa : p ∣ a
hpb : p ∣ b
HF : a ^ n + b ^ n + c ^ n = 0
⊢ p ∣ c
state_after: case inl
α : Type u_1
inst✝¹ : Semiring α
inst✝ : NoZeroDivisors α
m n : ℕ
p : ℤ
hp : Prime p
a b c : ℤ
hpa : p ∣ a
hpb : p ∣ b
HF : a ^ 0 + b ^ 0 + c ^ 0 = 0
⊢ p ∣ c

case inr
α : Type u_1
inst✝¹ : Semiring α
inst✝ : NoZeroDivisors α
m n✝ n : ℕ
p : ℤ
hp : Prime p
a b c : ℤ
hpa : p ∣ a
hpb : p ∣ b
HF : a ^ n + b ^ n + c ^ n = 0
hn : n ≠ 0
⊢ p ∣ c
tactic: rcases eq_or_ne n 0 with rfl | hn
state_before: case inr
α : Type u_1
inst✝¹ : Semiring α
inst✝ : NoZeroDivisors α
m n✝ n : ℕ
p : ℤ
hp : Prime p
a b c : ℤ
hpa : p ∣ a
hpb : p ∣ b
HF : a ^ n + b ^ n + c ^ n = 0
hn : n ≠ 0
⊢ p ∣ c
state_after: case inr
α : Type u_1
inst✝¹ : Semiring α
inst✝ : NoZeroDivisors α
m n✝ n : ℕ
p : ℤ
hp : Prime p
a b c : ℤ
hpa : p ∣ a
hpb : p ∣ b
HF : a ^ n + b ^ n + c ^ n = 0
hn : n ≠ 0
⊢ p ∣ -c ^ n
tactic: refine hp.dvd_of_dvd_pow (n := n) (dvd_neg.1 ?_)
state_before: case inr
α : Type u_1
inst✝¹ : Semiring α
inst✝ : NoZeroDivisors α
m n✝ n : ℕ
p : ℤ
hp : Prime p
a b c : ℤ
hpa : p ∣ a
hpb : p ∣ b
HF : a ^ n + b ^ n + c ^ n = 0
hn : n ≠ 0
⊢ p ∣ -c ^ n
state_after: case inr
α : Type u_1
inst✝¹ : Semiring α
inst✝ : NoZeroDivisors α
m n✝ n : ℕ
p : ℤ
hp : Prime p
a b c : ℤ
hpa : p ∣ a
hpb : p ∣ b
HF : a ^ n + b ^ n = -c ^ n
hn : n ≠ 0
⊢ p ∣ -c ^ n
tactic: rw [add_eq_zero_iff_eq_neg] at HF
state_before: case inr
α : Type u_1
inst✝¹ : Semiring α
inst✝ : NoZeroDivisors α
m n✝ n : ℕ
p : ℤ
hp : Prime p
a b c : ℤ
hpa : p ∣ a
hpb : p ∣ b
HF : a ^ n + b ^ n = -c ^ n
hn : n ≠ 0
⊢ p ∣ -c ^ n
state_after: no goals
tactic: exact HF.symm ▸ dvd_add (dvd_pow hpa hn) (dvd_pow hpb hn)
Theorem: Finset.sum_indicator_subset_of_eq_zero
File: Mathlib/Algebra/BigOperators/Group/Finset.lean

Proof steps:
state_before: ι : Type u_1
κ✝ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g✝ : α → β
inst✝¹ : CommMonoid β
κ : Type u_6
inst✝ : One α
f : ι → α
g : ι → α → β
s t : Finset ι
h : s ⊆ t
hg : ∀ (a : ι), g a 1 = 1
⊢ ∏ i ∈ t, g i ((↑s).mulIndicator f i) = ∏ i ∈ s, g i (f i)
state_after: no goals
tactic: calc
    _ = ∏ i ∈ s, g i (mulIndicator ↑s f i) := by rw [prod_subset h fun i _ hn ↦ by simp [hn, hg]]
    -- Porting note: This did not use to need the implicit argument
    _ = _ := prod_congr rfl fun i hi ↦ congr_arg _ <| mulIndicator_of_mem (α := ι) hi f
Theorem: Function.update_inf
File: Mathlib/Order/Lattice.lean

Proof steps:
state_before: α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : DecidableEq ι
inst✝ : (i : ι) → SemilatticeInf (π i)
f : (i : ι) → π i
i : ι
a b : π i
j : ι
⊢ update f i (a ⊓ b) j = (update f i a ⊓ update f i b) j
state_after: no goals
tactic: obtain rfl | hji := eq_or_ne j i <;> simp [update_noteq, *]
Theorem: LinearMap.ofIsCompl_add
File: Mathlib/LinearAlgebra/Projection.lean

Proof steps:
state_before: R : Type u_1
inst✝⁹ : Ring R
E : Type u_2
inst✝⁸ : AddCommGroup E
inst✝⁷ : Module R E
F : Type u_3
inst✝⁶ : AddCommGroup F
inst✝⁵ : Module R F
G : Type u_4
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
p q : Submodule R E
S : Type u_5
inst✝² : Semiring S
M : Type u_6
inst✝¹ : AddCommMonoid M
inst✝ : Module S M
m : Submodule S M
h : IsCompl p q
φ₁ φ₂ : ↥p →ₗ[R] F
ψ₁ ψ₂ : ↥q →ₗ[R] F
⊢ ∀ (u : ↥p), (φ₁ + φ₂) u = (ofIsCompl h φ₁ ψ₁ + ofIsCompl h φ₂ ψ₂) ↑u
state_after: no goals
tactic: simp
state_before: R : Type u_1
inst✝⁹ : Ring R
E : Type u_2
inst✝⁸ : AddCommGroup E
inst✝⁷ : Module R E
F : Type u_3
inst✝⁶ : AddCommGroup F
inst✝⁵ : Module R F
G : Type u_4
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
p q : Submodule R E
S : Type u_5
inst✝² : Semiring S
M : Type u_6
inst✝¹ : AddCommMonoid M
inst✝ : Module S M
m : Submodule S M
h : IsCompl p q
φ₁ φ₂ : ↥p →ₗ[R] F
ψ₁ ψ₂ : ↥q →ₗ[R] F
⊢ ∀ (u : ↥q), (ψ₁ + ψ₂) u = (ofIsCompl h φ₁ ψ₁ + ofIsCompl h φ₂ ψ₂) ↑u
state_after: no goals
tactic: simp
Theorem: thickening_closedBall
File: Mathlib/Analysis/NormedSpace/Pointwise.lean

Proof steps:
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : NormedSpace ℝ E
x✝ y z : E
δ ε : ℝ
hε : 0 < ε
hδ : 0 ≤ δ
x : E
⊢ thickening ε (Metric.closedBall x δ) = Metric.ball x (ε + δ)
state_after: no goals
tactic: rw [← cthickening_singleton _ hδ, thickening_cthickening hε hδ, thickening_singleton]
Theorem: AlgebraicGeometry.StructureSheaf.comap_comp
File: Mathlib/AlgebraicGeometry/StructureSheaf.lean

Proof steps:
state_before: R : Type u
inst✝² : CommRing R
S : Type u
inst✝¹ : CommRing S
P : Type u
inst✝ : CommRing P
f : R →+* S
g : S →+* P
U : Opens ↑(PrimeSpectrum.Top R)
V : Opens ↑(PrimeSpectrum.Top S)
W : Opens ↑(PrimeSpectrum.Top P)
hUV : ∀ p ∈ V, (PrimeSpectrum.comap f) p ∈ U
hVW : ∀ p ∈ W, (PrimeSpectrum.comap g) p ∈ V
s : ↑((structureSheaf R).val.obj (op U))
p : ↥(unop (op W))
⊢ ↑((comap (g.comp f) U W ⋯) s) p = ↑(((comap g V W hVW).comp (comap f U V hUV)) s) p
state_after: R : Type u
inst✝² : CommRing R
S : Type u
inst✝¹ : CommRing S
P : Type u
inst✝ : CommRing P
f : R →+* S
g : S →+* P
U : Opens ↑(PrimeSpectrum.Top R)
V : Opens ↑(PrimeSpectrum.Top S)
W : Opens ↑(PrimeSpectrum.Top P)
hUV : ∀ p ∈ V, (PrimeSpectrum.comap f) p ∈ U
hVW : ∀ p ∈ W, (PrimeSpectrum.comap g) p ∈ V
s : ↑((structureSheaf R).val.obj (op U))
p : ↥(unop (op W))
⊢ (Localization.localRingHom ((PrimeSpectrum.comap (g.comp f)) ↑p).asIdeal (↑p).asIdeal (g.comp f) ⋯)
      (↑s ⟨(PrimeSpectrum.comap (g.comp f)) ↑p, ⋯⟩) =
    ↑(((comap g V W hVW).comp (comap f U V hUV)) s) p
tactic: rw [comap_apply]
state_before: R : Type u
inst✝² : CommRing R
S : Type u
inst✝¹ : CommRing S
P : Type u
inst✝ : CommRing P
f : R →+* S
g : S →+* P
U : Opens ↑(PrimeSpectrum.Top R)
V : Opens ↑(PrimeSpectrum.Top S)
W : Opens ↑(PrimeSpectrum.Top P)
hUV : ∀ p ∈ V, (PrimeSpectrum.comap f) p ∈ U
hVW : ∀ p ∈ W, (PrimeSpectrum.comap g) p ∈ V
s : ↑((structureSheaf R).val.obj (op U))
p : ↥(unop (op W))
⊢ (Localization.localRingHom ((PrimeSpectrum.comap (g.comp f)) ↑p).asIdeal (↑p).asIdeal (g.comp f) ⋯)
      (↑s ⟨(PrimeSpectrum.comap (g.comp f)) ↑p, ⋯⟩) =
    ↑(((comap g V W hVW).comp (comap f U V hUV)) s) p
state_after: no goals
tactic: erw [Localization.localRingHom_comp _ (PrimeSpectrum.comap g p.1).asIdeal] <;>
        -- refl works here, because `PrimeSpectrum.comap (g.comp f) p` is defeq to
        -- `PrimeSpectrum.comap f (PrimeSpectrum.comap g p)`
        rfl
Theorem: HomologicalComplex.descOpcycles_comp
File: Mathlib/Algebra/Homology/ShortComplex/HomologicalComplex.lean

Proof steps:
state_before: C : Type u_1
inst✝² : Category.{?u.57383, u_1} C
inst✝¹ : HasZeroMorphisms C
ι : Type u_2
c : ComplexShape ι
K L M : HomologicalComplex C c
φ : K ⟶ L
ψ : L ⟶ M
i j✝ k✝ : ι
inst✝ : K.HasHomology i
A A' : C
k : K.X i ⟶ A
j : ι
hj : c.prev i = j
hk : K.d j i ≫ k = 0
α : A ⟶ A'
⊢ K.d j i ≫ k ≫ α = 0
state_after: no goals
tactic: rw [reassoc_of% hk, zero_comp]
state_before: C : Type u_1
inst✝² : Category.{u_3, u_1} C
inst✝¹ : HasZeroMorphisms C
ι : Type u_2
c : ComplexShape ι
K L M : HomologicalComplex C c
φ : K ⟶ L
ψ : L ⟶ M
i j✝ k✝ : ι
inst✝ : K.HasHomology i
A A' : C
k : K.X i ⟶ A
j : ι
hj : c.prev i = j
hk : K.d j i ≫ k = 0
α : A ⟶ A'
⊢ K.descOpcycles k j hj hk ≫ α = K.descOpcycles (k ≫ α) j hj ⋯
state_after: no goals
tactic: simp only [← cancel_epi (K.pOpcycles i), p_descOpcycles_assoc, p_descOpcycles]