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

tactic: induction p with
| nil => simp
| cons _ _ ih =>
  rw [map_cons, cons_isTrail_iff, ih, cons_isTrail_iff]
  apply and_congr_right'
  rw [← Sym2.map_pair_eq, edges_map, ← List.mem_map_of_injective (Sym2.map.injective hinj)]
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
f : G →g G'
f' : G' →g G''
u v u' v' : V
p : G.Walk u v
hinj : Injective ⇑f
⊢ (Walk.map f p).IsTrail ↔ p.IsTrail
state_after: no goals

tactic: simp
state_before: case nil
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
f : G →g G'
f' : G' →g G''
u v u' v' : V
p : G.Walk u v
hinj : Injective ⇑f
u✝ : V
⊢ (Walk.map f nil).IsTrail ↔ nil.IsTrail
state_after: no goals

tactic: rw [map_cons, cons_isTrail_iff, ih, cons_isTrail_iff]
state_before: case cons
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
f : G →g G'
f' : G' →g G''
u v u' v' : V
p : G.Walk u v
hinj : Injective ⇑f
u✝ v✝ w✝ : V
h✝ : G.Adj u✝ v✝
p✝ : G.Walk v✝ w✝
ih : (Walk.map f p✝).IsTrail ↔ p✝.IsTrail
⊢ (Walk.map f (cons h✝ p✝)).IsTrail ↔ (cons h✝ p✝).IsTrail
state_after: case cons
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
f : G →g G'
f' : G' →g G''
u v u' v' : V
p : G.Walk u v
hinj : Injective ⇑f
u✝ v✝ w✝ : V
h✝ : G.Adj u✝ v✝
p✝ : G.Walk v✝ w✝
ih : (Walk.map f p✝).IsTrail ↔ p✝.IsTrail
⊢ p✝.IsTrail ∧ s(f u✝, f v✝) ∉ (Walk.map f p✝).edges ↔ p✝.IsTrail ∧ s(u✝, v✝) ∉ p✝.edges

tactic: apply and_congr_right'
state_before: case cons
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
f : G →g G'
f' : G' →g G''
u v u' v' : V
p : G.Walk u v
hinj : Injective ⇑f
u✝ v✝ w✝ : V
h✝ : G.Adj u✝ v✝
p✝ : G.Walk v✝ w✝
ih : (Walk.map f p✝).IsTrail ↔ p✝.IsTrail
⊢ p✝.IsTrail ∧ s(f u✝, f v✝) ∉ (Walk.map f p✝).edges ↔ p✝.IsTrail ∧ s(u✝, v✝) ∉ p✝.edges
state_after: case cons.h
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
f : G →g G'
f' : G' →g G''
u v u' v' : V
p : G.Walk u v
hinj : Injective ⇑f
u✝ v✝ w✝ : V
h✝ : G.Adj u✝ v✝
p✝ : G.Walk v✝ w✝
ih : (Walk.map f p✝).IsTrail ↔ p✝.IsTrail
⊢ s(f u✝, f v✝) ∉ (Walk.map f p✝).edges ↔ s(u✝, v✝) ∉ p✝.edges

tactic: rw [← Sym2.map_pair_eq, edges_map, ← List.mem_map_of_injective (Sym2.map.injective hinj)]
state_before: case cons.h
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
f : G →g G'
f' : G' →g G''
u v u' v' : V
p : G.Walk u v
hinj : Injective ⇑f
u✝ v✝ w✝ : V
h✝ : G.Adj u✝ v✝
p✝ : G.Walk v✝ w✝
ih : (Walk.map f p✝).IsTrail ↔ p✝.IsTrail
⊢ s(f u✝, f v✝) ∉ (Walk.map f p✝).edges ↔ s(u✝, v✝) ∉ p✝.edges
state_after: no goals
Theorem: PowerBasis.exists_eq_aeval'
File: Mathlib/RingTheory/PowerBasis.lean

tactic: nontriviality S
state_before: R : Type u_1
S : Type u_2
T : Type u_3
inst✝⁷ : CommRing R
inst✝⁶ : Ring S
inst✝⁵ : Algebra R S
A : Type u_4
B : Type u_5
inst✝⁴ : CommRing A
inst✝³ : CommRing B
inst✝² : IsDomain B
inst✝¹ : Algebra A B
K : Type u_6
inst✝ : Field K
pb : PowerBasis R S
y : S
⊢ ∃ f, y = (aeval pb.gen) f
state_after: R : Type u_1
S : Type u_2
T : Type u_3
inst✝⁷ : CommRing R
inst✝⁶ : Ring S
inst✝⁵ : Algebra R S
A : Type u_4
B : Type u_5
inst✝⁴ : CommRing A
inst✝³ : CommRing B
inst✝² : IsDomain B
inst✝¹ : Algebra A B
K : Type u_6
inst✝ : Field K
pb : PowerBasis R S
y : S
a✝ : Nontrivial S
⊢ ∃ f, y = (aeval pb.gen) f

tactic: obtain ⟨f, _, hf⟩ := exists_eq_aeval pb y
state_before: R : Type u_1
S : Type u_2
T : Type u_3
inst✝⁷ : CommRing R
inst✝⁶ : Ring S
inst✝⁵ : Algebra R S
A : Type u_4
B : Type u_5
inst✝⁴ : CommRing A
inst✝³ : CommRing B
inst✝² : IsDomain B
inst✝¹ : Algebra A B
K : Type u_6
inst✝ : Field K
pb : PowerBasis R S
y : S
a✝ : Nontrivial S
⊢ ∃ f, y = (aeval pb.gen) f
state_after: case intro.intro
R : Type u_1
S : Type u_2
T : Type u_3
inst✝⁷ : CommRing R
inst✝⁶ : Ring S
inst✝⁵ : Algebra R S
A : Type u_4
B : Type u_5
inst✝⁴ : CommRing A
inst✝³ : CommRing B
inst✝² : IsDomain B
inst✝¹ : Algebra A B
K : Type u_6
inst✝ : Field K
pb : PowerBasis R S
y : S
a✝ : Nontrivial S
f : R[X]
left✝ : f.natDegree < pb.dim
hf : y = (aeval pb.gen) f
⊢ ∃ f, y = (aeval pb.gen) f

tactic: exact ⟨f, hf⟩
state_before: case intro.intro
R : Type u_1
S : Type u_2
T : Type u_3
inst✝⁷ : CommRing R
inst✝⁶ : Ring S
inst✝⁵ : Algebra R S
A : Type u_4
B : Type u_5
inst✝⁴ : CommRing A
inst✝³ : CommRing B
inst✝² : IsDomain B
inst✝¹ : Algebra A B
K : Type u_6
inst✝ : Field K
pb : PowerBasis R S
y : S
a✝ : Nontrivial S
f : R[X]
left✝ : f.natDegree < pb.dim
hf : y = (aeval pb.gen) f
⊢ ∃ f, y = (aeval pb.gen) f
state_after: no goals
Theorem: Seminorm.uniformContinuous_of_continuousAt_zero
File: Mathlib/Analysis/Seminorm.lean

tactic: have hp : Filter.Tendsto p (𝓝 0) (𝓝 0) := map_zero p ▸ hp
state_before: R : Type u_1
R' : Type u_2
𝕜 : Type u_3
𝕜₂ : Type u_4
𝕜₃ : Type u_5
𝕝 : Type u_6
E : Type u_7
E₂ : Type u_8
E₃ : Type u_9
F : Type u_10
G : Type u_11
ι : Type u_12
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : SeminormedRing 𝕝
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : Module 𝕝 E
inst✝¹ : UniformSpace E
inst✝ : UniformAddGroup E
p : Seminorm 𝕝 E
hp : ContinuousAt (⇑p) 0
⊢ UniformContinuous ⇑p
state_after: R : Type u_1
R' : Type u_2
𝕜 : Type u_3
𝕜₂ : Type u_4
𝕜₃ : Type u_5
𝕝 : Type u_6
E : Type u_7
E₂ : Type u_8
E₃ : Type u_9
F : Type u_10
G : Type u_11
ι : Type u_12
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : SeminormedRing 𝕝
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : Module 𝕝 E
inst✝¹ : UniformSpace E
inst✝ : UniformAddGroup E
p : Seminorm 𝕝 E
hp✝ : ContinuousAt (⇑p) 0
hp : Tendsto (⇑p) (𝓝 0) (𝓝 0)
⊢ UniformContinuous ⇑p

tactic: rw [UniformContinuous, uniformity_eq_comap_nhds_zero_swapped,
  Metric.uniformity_eq_comap_nhds_zero, Filter.tendsto_comap_iff]
state_before: R : Type u_1
R' : Type u_2
𝕜 : Type u_3
𝕜₂ : Type u_4
𝕜₃ : Type u_5
𝕝 : Type u_6
E : Type u_7
E₂ : Type u_8
E₃ : Type u_9
F : Type u_10
G : Type u_11
ι : Type u_12
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : SeminormedRing 𝕝
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : Module 𝕝 E
inst✝¹ : UniformSpace E
inst✝ : UniformAddGroup E
p : Seminorm 𝕝 E
hp✝ : ContinuousAt (⇑p) 0
hp : Tendsto (⇑p) (𝓝 0) (𝓝 0)
⊢ UniformContinuous ⇑p
state_after: R : Type u_1
R' : Type u_2
𝕜 : Type u_3
𝕜₂ : Type u_4
𝕜₃ : Type u_5
𝕝 : Type u_6
E : Type u_7
E₂ : Type u_8
E₃ : Type u_9
F : Type u_10
G : Type u_11
ι : Type u_12
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : SeminormedRing 𝕝
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : Module 𝕝 E
inst✝¹ : UniformSpace E
inst✝ : UniformAddGroup E
p : Seminorm 𝕝 E
hp✝ : ContinuousAt (⇑p) 0
hp : Tendsto (⇑p) (𝓝 0) (𝓝 0)
⊢ Tendsto ((fun p => dist p.1 p.2) ∘ fun x => (p x.1, p x.2)) (comap (fun x => x.1 - x.2) (𝓝 0)) (𝓝 0)

tactic: exact
  tendsto_of_tendsto_of_tendsto_of_le_of_le tendsto_const_nhds (hp.comp Filter.tendsto_comap)
    (fun xy => dist_nonneg) fun xy => p.norm_sub_map_le_sub _ _
state_before: R : Type u_1
R' : Type u_2
𝕜 : Type u_3
𝕜₂ : Type u_4
𝕜₃ : Type u_5
𝕝 : Type u_6
E : Type u_7
E₂ : Type u_8
E₃ : Type u_9
F : Type u_10
G : Type u_11
ι : Type u_12
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : SeminormedRing 𝕝
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : Module 𝕝 E
inst✝¹ : UniformSpace E
inst✝ : UniformAddGroup E
p : Seminorm 𝕝 E
hp✝ : ContinuousAt (⇑p) 0
hp : Tendsto (⇑p) (𝓝 0) (𝓝 0)
⊢ Tendsto ((fun p => dist p.1 p.2) ∘ fun x => (p x.1, p x.2)) (comap (fun x => x.1 - x.2) (𝓝 0)) (𝓝 0)
state_after: no goals
Theorem: Sum.naturality
File: Mathlib/Control/Traversable/Instances.lean

tactic: cases x <;> simp! [Sum.traverse, functor_norm, ApplicativeTransformation.preserves_map,
  ApplicativeTransformation.preserves_seq, ApplicativeTransformation.preserves_pure]
state_before: σ : Type u
F G : Type u → Type u
inst✝³ : Applicative F
inst✝² : Applicative G
inst✝¹ : LawfulApplicative F
inst✝ : LawfulApplicative G
η : ApplicativeTransformation F G
α : Type u_1
β : Type u
f : α → F β
x : σ ⊕ α
⊢ (fun {α} => η.app α) (Sum.traverse f x) = Sum.traverse ((fun {α} => η.app α) ∘ f) x
state_after: no goals
Theorem: Complex.zero_cpow_eq_iff
File: Mathlib/Analysis/SpecialFunctions/Pow/Complex.lean

tactic: constructor
state_before: x a : ℂ
⊢ 0 ^ x = a ↔ x ≠ 0 ∧ a = 0 ∨ x = 0 ∧ a = 1
state_after: case mp
x a : ℂ
⊢ 0 ^ x = a → x ≠ 0 ∧ a = 0 ∨ x = 0 ∧ a = 1

case mpr
x a : ℂ
⊢ x ≠ 0 ∧ a = 0 ∨ x = 0 ∧ a = 1 → 0 ^ x = a

tactic: intro hyp
state_before: case mp
x a : ℂ
⊢ 0 ^ x = a → x ≠ 0 ∧ a = 0 ∨ x = 0 ∧ a = 1
state_after: case mp
x a : ℂ
hyp : 0 ^ x = a
⊢ x ≠ 0 ∧ a = 0 ∨ x = 0 ∧ a = 1

tactic: simp only [cpow_def, eq_self_iff_true, if_true] at hyp
state_before: case mp
x a : ℂ
hyp : 0 ^ x = a
⊢ x ≠ 0 ∧ a = 0 ∨ x = 0 ∧ a = 1
state_after: case mp
x a : ℂ
hyp : (if x = 0 then 1 else 0) = a
⊢ x ≠ 0 ∧ a = 0 ∨ x = 0 ∧ a = 1

tactic: by_cases h : x = 0
state_before: case mp
x a : ℂ
hyp : (if x = 0 then 1 else 0) = a
⊢ x ≠ 0 ∧ a = 0 ∨ x = 0 ∧ a = 1
state_after: case pos
x a : ℂ
hyp : (if x = 0 then 1 else 0) = a
h : x = 0
⊢ x ≠ 0 ∧ a = 0 ∨ x = 0 ∧ a = 1

case neg
x a : ℂ
hyp : (if x = 0 then 1 else 0) = a
h : ¬x = 0
⊢ x ≠ 0 ∧ a = 0 ∨ x = 0 ∧ a = 1

tactic: subst h
state_before: case pos
x a : ℂ
hyp : (if x = 0 then 1 else 0) = a
h : x = 0
⊢ x ≠ 0 ∧ a = 0 ∨ x = 0 ∧ a = 1
state_after: case pos
a : ℂ
hyp : (if 0 = 0 then 1 else 0) = a
⊢ 0 ≠ 0 ∧ a = 0 ∨ 0 = 0 ∧ a = 1

tactic: simp only [if_true, eq_self_iff_true] at hyp
state_before: case pos
a : ℂ
hyp : (if 0 = 0 then 1 else 0) = a
⊢ 0 ≠ 0 ∧ a = 0 ∨ 0 = 0 ∧ a = 1
state_after: case pos
a : ℂ
hyp : 1 = a
⊢ 0 ≠ 0 ∧ a = 0 ∨ 0 = 0 ∧ a = 1

tactic: right
state_before: case pos
a : ℂ
hyp : 1 = a
⊢ 0 ≠ 0 ∧ a = 0 ∨ 0 = 0 ∧ a = 1
state_after: case pos.h
a : ℂ
hyp : 1 = a
⊢ 0 = 0 ∧ a = 1

tactic: exact ⟨rfl, hyp.symm⟩
state_before: case pos.h
a : ℂ
hyp : 1 = a
⊢ 0 = 0 ∧ a = 1
state_after: no goals

tactic: rw [if_neg h] at hyp
state_before: case neg
x a : ℂ
hyp : (if x = 0 then 1 else 0) = a
h : ¬x = 0
⊢ x ≠ 0 ∧ a = 0 ∨ x = 0 ∧ a = 1
state_after: case neg
x a : ℂ
hyp : 0 = a
h : ¬x = 0
⊢ x ≠ 0 ∧ a = 0 ∨ x = 0 ∧ a = 1

tactic: left
state_before: case neg
x a : ℂ
hyp : 0 = a
h : ¬x = 0
⊢ x ≠ 0 ∧ a = 0 ∨ x = 0 ∧ a = 1
state_after: case neg.h
x a : ℂ
hyp : 0 = a
h : ¬x = 0
⊢ x ≠ 0 ∧ a = 0

tactic: exact ⟨h, hyp.symm⟩
state_before: case neg.h
x a : ℂ
hyp : 0 = a
h : ¬x = 0
⊢ x ≠ 0 ∧ a = 0
state_after: no goals

tactic: rintro (⟨h, rfl⟩ | ⟨rfl, rfl⟩)
state_before: case mpr
x a : ℂ
⊢ x ≠ 0 ∧ a = 0 ∨ x = 0 ∧ a = 1 → 0 ^ x = a
state_after: case mpr.inl.intro
x : ℂ
h : x ≠ 0
⊢ 0 ^ x = 0

case mpr.inr.intro

⊢ 0 ^ 0 = 1

tactic: exact zero_cpow h
state_before: case mpr.inl.intro
x : ℂ
h : x ≠ 0
⊢ 0 ^ x = 0
state_after: no goals

tactic: exact cpow_zero _
state_before: case mpr.inr.intro

⊢ 0 ^ 0 = 1
state_after: no goals
Theorem: IsSelfAdjoint.conj_adjoint
File: Mathlib/Analysis/InnerProductSpace/Adjoint.lean

tactic: rw [isSelfAdjoint_iff'] at hT ⊢
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁸ : RCLike 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : InnerProductSpace 𝕜 E
inst✝³ : InnerProductSpace 𝕜 F
inst✝² : InnerProductSpace 𝕜 G
inst✝¹ : CompleteSpace E
inst✝ : CompleteSpace F
T : E →L[𝕜] E
hT : IsSelfAdjoint T
S : E →L[𝕜] F
⊢ IsSelfAdjoint (S.comp (T.comp (adjoint S)))
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁸ : RCLike 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : InnerProductSpace 𝕜 E
inst✝³ : InnerProductSpace 𝕜 F
inst✝² : InnerProductSpace 𝕜 G
inst✝¹ : CompleteSpace E
inst✝ : CompleteSpace F
T : E →L[𝕜] E
hT : adjoint T = T
S : E →L[𝕜] F
⊢ adjoint (S.comp (T.comp (adjoint S))) = S.comp (T.comp (adjoint S))

tactic: simp only [hT, adjoint_comp, adjoint_adjoint]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁸ : RCLike 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : InnerProductSpace 𝕜 E
inst✝³ : InnerProductSpace 𝕜 F
inst✝² : InnerProductSpace 𝕜 G
inst✝¹ : CompleteSpace E
inst✝ : CompleteSpace F
T : E →L[𝕜] E
hT : adjoint T = T
S : E →L[𝕜] F
⊢ adjoint (S.comp (T.comp (adjoint S))) = S.comp (T.comp (adjoint S))
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁸ : RCLike 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : InnerProductSpace 𝕜 E
inst✝³ : InnerProductSpace 𝕜 F
inst✝² : InnerProductSpace 𝕜 G
inst✝¹ : CompleteSpace E
inst✝ : CompleteSpace F
T : E →L[𝕜] E
hT : adjoint T = T
S : E →L[𝕜] F
⊢ (S.comp T).comp (adjoint S) = S.comp (T.comp (adjoint S))

tactic: exact ContinuousLinearMap.comp_assoc _ _ _
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁸ : RCLike 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : InnerProductSpace 𝕜 E
inst✝³ : InnerProductSpace 𝕜 F
inst✝² : InnerProductSpace 𝕜 G
inst✝¹ : CompleteSpace E
inst✝ : CompleteSpace F
T : E →L[𝕜] E
hT : adjoint T = T
S : E →L[𝕜] F
⊢ (S.comp T).comp (adjoint S) = S.comp (T.comp (adjoint S))
state_after: no goals
Theorem: CategoryTheory.shiftFunctorComm_symm
File: Mathlib/CategoryTheory/Shift/Basic.lean

tactic: ext1
state_before: C : Type u
A : Type u_1
inst✝² : Category.{v, u} C
inst✝¹ : AddCommMonoid A
inst✝ : HasShift C A
i j : A
⊢ (shiftFunctorComm C i j).symm = shiftFunctorComm C j i
state_after: case w
C : Type u
A : Type u_1
inst✝² : Category.{v, u} C
inst✝¹ : AddCommMonoid A
inst✝ : HasShift C A
i j : A
⊢ (shiftFunctorComm C i j).symm.hom = (shiftFunctorComm C j i).hom

tactic: dsimp
state_before: case w
C : Type u
A : Type u_1
inst✝² : Category.{v, u} C
inst✝¹ : AddCommMonoid A
inst✝ : HasShift C A
i j : A
⊢ (shiftFunctorComm C i j).symm.hom = (shiftFunctorComm C j i).hom
state_after: case w
C : Type u
A : Type u_1
inst✝² : Category.{v, u} C
inst✝¹ : AddCommMonoid A
inst✝ : HasShift C A
i j : A
⊢ (shiftFunctorComm C i j).inv = (shiftFunctorComm C j i).hom

tactic: rw [shiftFunctorComm_eq C i j (i+j) rfl, shiftFunctorComm_eq C j i (i+j) (add_comm j i)]
state_before: case w
C : Type u
A : Type u_1
inst✝² : Category.{v, u} C
inst✝¹ : AddCommMonoid A
inst✝ : HasShift C A
i j : A
⊢ (shiftFunctorComm C i j).inv = (shiftFunctorComm C j i).hom
state_after: case w
C : Type u
A : Type u_1
inst✝² : Category.{v, u} C
inst✝¹ : AddCommMonoid A
inst✝ : HasShift C A
i j : A
⊢ ((shiftFunctorAdd' C i j (i + j) ⋯).symm ≪≫ shiftFunctorAdd' C j i (i + j) ⋯).inv =
    ((shiftFunctorAdd' C j i (i + j) ⋯).symm ≪≫ shiftFunctorAdd' C i j (i + j) ⋯).hom

tactic: rfl
state_before: case w
C : Type u
A : Type u_1
inst✝² : Category.{v, u} C
inst✝¹ : AddCommMonoid A
inst✝ : HasShift C A
i j : A
⊢ ((shiftFunctorAdd' C i j (i + j) ⋯).symm ≪≫ shiftFunctorAdd' C j i (i + j) ⋯).inv =
    ((shiftFunctorAdd' C j i (i + j) ⋯).symm ≪≫ shiftFunctorAdd' C i j (i + j) ⋯).hom
state_after: no goals
Theorem: Int.dvd_of_mul_dvd_mul_left
File: Mathlib/Data/Int/Defs.lean

tactic: obtain ⟨b, hb⟩ := h
state_before: a b c d m n : ℤ
ha : a ≠ 0
h : a * m ∣ a * n
⊢ m ∣ n
state_after: case intro
a b✝ c d m n : ℤ
ha : a ≠ 0
b : ℤ
hb : a * n = a * m * b
⊢ m ∣ n

tactic: rw [Int.mul_assoc, Int.mul_eq_mul_left_iff ha] at hb
state_before: case intro
a b✝ c d m n : ℤ
ha : a ≠ 0
b : ℤ
hb : a * n = a * m * b
⊢ m ∣ n
state_after: case intro
a b✝ c d m n : ℤ
ha : a ≠ 0
b : ℤ
hb : n = m * b
⊢ m ∣ n

tactic: exact ⟨_, hb⟩
state_before: case intro
a b✝ c d m n : ℤ
ha : a ≠ 0
b : ℤ
hb : n = m * b
⊢ m ∣ n
state_after: no goals
Theorem: Finsupp.support_sup
File: Mathlib/Data/Finsupp/Order.lean

tactic: ext
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : CanonicallyLinearOrderedAddCommMonoid α
inst✝ : DecidableEq ι
f g : ι →₀ α
⊢ (f ⊔ g).support = f.support ∪ g.support
state_after: case a
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : CanonicallyLinearOrderedAddCommMonoid α
inst✝ : DecidableEq ι
f g : ι →₀ α
a✝ : ι
⊢ a✝ ∈ (f ⊔ g).support ↔ a✝ ∈ f.support ∪ g.support

tactic: simp only [Finset.mem_union, mem_support_iff, sup_apply, Ne, ← bot_eq_zero]
state_before: case a
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : CanonicallyLinearOrderedAddCommMonoid α
inst✝ : DecidableEq ι
f g : ι →₀ α
a✝ : ι
⊢ a✝ ∈ (f ⊔ g).support ↔ a✝ ∈ f.support ∪ g.support
state_after: case a
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : CanonicallyLinearOrderedAddCommMonoid α
inst✝ : DecidableEq ι
f g : ι →₀ α
a✝ : ι
⊢ ¬f a✝ ⊔ g a✝ = ⊥ ↔ ¬f a✝ = ⊥ ∨ ¬g a✝ = ⊥

tactic: rw [_root_.sup_eq_bot_iff, not_and_or]
state_before: case a
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : CanonicallyLinearOrderedAddCommMonoid α
inst✝ : DecidableEq ι
f g : ι →₀ α
a✝ : ι
⊢ ¬f a✝ ⊔ g a✝ = ⊥ ↔ ¬f a✝ = ⊥ ∨ ¬g a✝ = ⊥
state_after: no goals
Theorem: Matrix.isHermitian_mul_mul_conjTranspose
File: Mathlib/LinearAlgebra/Matrix/Hermitian.lean

tactic: simp only [IsHermitian, conjTranspose_mul, conjTranspose_conjTranspose, hA.eq, Matrix.mul_assoc]
state_before: α : Type u_1
β : Type u_2
m : Type u_3
n : Type u_4
A✝ : Matrix n n α
inst✝⁴ : NonUnitalSemiring α
inst✝³ : StarRing α
inst✝² : NonUnitalSemiring β
inst✝¹ : StarRing β
inst✝ : Fintype m
A : Matrix m m α
B : Matrix n m α
hA : A.IsHermitian
⊢ (B * A * Bᴴ).IsHermitian
state_after: no goals
Theorem: Subgroup.closure_induction_right
File: Mathlib/Algebra/Group/Subgroup/Pointwise.lean

tactic: rwa [← op_closure] at hm
state_before: α : Type u_1
G : Type u_2
A : Type u_3
S : Type u_4
inst✝¹ : Group G
inst✝ : AddGroup A
s : Set G
p : (x : G) → x ∈ closure s → Prop
one : p 1 ⋯
mul_right : ∀ (x : G) (hx : x ∈ closure s) (y : G) (hy : y ∈ s), p x hx → p (x * y) ⋯
mul_right_inv : ∀ (x : G) (hx : x ∈ closure s) (y : G) (hy : y ∈ s), p x hx → p (x * y⁻¹) ⋯
x : G
h : x ∈ closure s
m : Gᵐᵒᵖ
hm : m ∈ closure (MulOpposite.unop ⁻¹' s)
⊢ MulOpposite.unop m ∈ closure s
state_after: no goals

tactic: rwa [← op_closure]
state_before: α : Type u_1
G : Type u_2
A : Type u_3
S : Type u_4
inst✝¹ : Group G
inst✝ : AddGroup A
s : Set G
p : (x : G) → x ∈ closure s → Prop
one : p 1 ⋯
mul_right : ∀ (x : G) (hx : x ∈ closure s) (y : G) (hy : y ∈ s), p x hx → p (x * y) ⋯
mul_right_inv : ∀ (x : G) (hx : x ∈ closure s) (y : G) (hy : y ∈ s), p x hx → p (x * y⁻¹) ⋯
x : G
h : x ∈ closure s
⊢ { unop' := x } ∈ closure (MulOpposite.unop ⁻¹' s)
state_after: no goals
Theorem: IsSepClosed.splits_codomain
File: Mathlib/FieldTheory/IsSepClosed.lean

tactic: convert IsSepClosed.splits_of_separable (p.map f) (Separable.map h)
state_before: k : Type u
inst✝² : Field k
K : Type v
inst✝¹ : Field K
inst✝ : IsSepClosed K
f : k →+* K
p : k[X]
h : p.Separable
⊢ Splits f p
state_after: case a
k : Type u
inst✝² : Field k
K : Type v
inst✝¹ : Field K
inst✝ : IsSepClosed K
f : k →+* K
p : k[X]
h : p.Separable
⊢ Splits f p ↔ Splits (RingHom.id K) (map f p)

tactic: simp [splits_map_iff]
state_before: case a
k : Type u
inst✝² : Field k
K : Type v
inst✝¹ : Field K
inst✝ : IsSepClosed K
f : k →+* K
p : k[X]
h : p.Separable
⊢ Splits f p ↔ Splits (RingHom.id K) (map f p)
state_after: no goals
Theorem: Complex.range_normSq
File: Mathlib/Data/Complex/Abs.lean

tactic: rw [normSq_ofReal, Real.mul_self_sqrt hx]
state_before: x : ℝ
hx : x ∈ Ici 0
⊢ normSq ↑√x = x
state_after: no goals
Theorem: CategoryTheory.FunctorToTypes.prod_ext'
File: Mathlib/CategoryTheory/Limits/Shapes/FunctorToTypes.lean

tactic: apply Equiv.injective (binaryProductEquiv F G a)
state_before: C : Type u
inst✝ : Category.{v, u} C
F G : C ⥤ Type w
a : C
z w : (F ⨯ G).obj a
h1 : Limits.prod.fst.app a z = Limits.prod.fst.app a w
h2 : Limits.prod.snd.app a z = Limits.prod.snd.app a w
⊢ z = w
state_after: case a
C : Type u
inst✝ : Category.{v, u} C
F G : C ⥤ Type w
a : C
z w : (F ⨯ G).obj a
h1 : Limits.prod.fst.app a z = Limits.prod.fst.app a w
h2 : Limits.prod.snd.app a z = Limits.prod.snd.app a w
⊢ (binaryProductEquiv F G a) z = (binaryProductEquiv F G a) w

tactic: aesop
state_before: case a
C : Type u
inst✝ : Category.{v, u} C
F G : C ⥤ Type w
a : C
z w : (F ⨯ G).obj a
h1 : Limits.prod.fst.app a z = Limits.prod.fst.app a w
h2 : Limits.prod.snd.app a z = Limits.prod.snd.app a w
⊢ (binaryProductEquiv F G a) z = (binaryProductEquiv F G a) w
state_after: no goals
Theorem: MeasureTheory.withDensity_sum
File: Mathlib/MeasureTheory/Measure/WithDensity.lean

tactic: ext1 s hs
state_before: α : Type u_1
m0 : MeasurableSpace α
μ✝ : Measure α
ι : Type u_2
m : MeasurableSpace α
μ : ι → Measure α
f : α → ℝ≥0∞
⊢ (sum μ).withDensity f = sum fun n => (μ n).withDensity f
state_after: case h
α : Type u_1
m0 : MeasurableSpace α
μ✝ : Measure α
ι : Type u_2
m : MeasurableSpace α
μ : ι → Measure α
f : α → ℝ≥0∞
s : Set α
hs : MeasurableSet s
⊢ ((sum μ).withDensity f) s = (sum fun n => (μ n).withDensity f) s

tactic: simp_rw [sum_apply _ hs, withDensity_apply f hs, restrict_sum μ hs, lintegral_sum_measure]
state_before: case h
α : Type u_1
m0 : MeasurableSpace α
μ✝ : Measure α
ι : Type u_2
m : MeasurableSpace α
μ : ι → Measure α
f : α → ℝ≥0∞
s : Set α
hs : MeasurableSet s
⊢ ((sum μ).withDensity f) s = (sum fun n => (μ n).withDensity f) s
state_after: no goals
Theorem: CategoryTheory.MorphismProperty.IsInvertedBy.of_comp
File: Mathlib/CategoryTheory/MorphismProperty/IsInvertedBy.lean

tactic: haveI := hF f hf
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
D : Type u'
inst✝³ : Category.{v', u'} D
C₁ : Type u_1
C₂ : Type u_2
C₃ : Type u_3
inst✝² : Category.{u_4, u_1} C₁
inst✝¹ : Category.{u_5, u_2} C₂
inst✝ : Category.{u_6, u_3} C₃
W : MorphismProperty C₁
F : C₁ ⥤ C₂
hF : W.IsInvertedBy F
G : C₂ ⥤ C₃
X Y : C₁
f : X ⟶ Y
hf : W f
⊢ IsIso ((F ⋙ G).map f)
state_after: C : Type u
inst✝⁴ : Category.{v, u} C
D : Type u'
inst✝³ : Category.{v', u'} D
C₁ : Type u_1
C₂ : Type u_2
C₃ : Type u_3
inst✝² : Category.{u_4, u_1} C₁
inst✝¹ : Category.{u_5, u_2} C₂
inst✝ : Category.{u_6, u_3} C₃
W : MorphismProperty C₁
F : C₁ ⥤ C₂
hF : W.IsInvertedBy F
G : C₂ ⥤ C₃
X Y : C₁
f : X ⟶ Y
hf : W f
this : IsIso (F.map f)
⊢ IsIso ((F ⋙ G).map f)

tactic: dsimp
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
D : Type u'
inst✝³ : Category.{v', u'} D
C₁ : Type u_1
C₂ : Type u_2
C₃ : Type u_3
inst✝² : Category.{u_4, u_1} C₁
inst✝¹ : Category.{u_5, u_2} C₂
inst✝ : Category.{u_6, u_3} C₃
W : MorphismProperty C₁
F : C₁ ⥤ C₂
hF : W.IsInvertedBy F
G : C₂ ⥤ C₃
X Y : C₁
f : X ⟶ Y
hf : W f
this : IsIso (F.map f)
⊢ IsIso ((F ⋙ G).map f)
state_after: C : Type u
inst✝⁴ : Category.{v, u} C
D : Type u'
inst✝³ : Category.{v', u'} D
C₁ : Type u_1
C₂ : Type u_2
C₃ : Type u_3
inst✝² : Category.{u_4, u_1} C₁
inst✝¹ : Category.{u_5, u_2} C₂
inst✝ : Category.{u_6, u_3} C₃
W : MorphismProperty C₁
F : C₁ ⥤ C₂
hF : W.IsInvertedBy F
G : C₂ ⥤ C₃
X Y : C₁
f : X ⟶ Y
hf : W f
this : IsIso (F.map f)
⊢ IsIso (G.map (F.map f))

tactic: infer_instance
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
D : Type u'
inst✝³ : Category.{v', u'} D
C₁ : Type u_1
C₂ : Type u_2
C₃ : Type u_3
inst✝² : Category.{u_4, u_1} C₁
inst✝¹ : Category.{u_5, u_2} C₂
inst✝ : Category.{u_6, u_3} C₃
W : MorphismProperty C₁
F : C₁ ⥤ C₂
hF : W.IsInvertedBy F
G : C₂ ⥤ C₃
X Y : C₁
f : X ⟶ Y
hf : W f
this : IsIso (F.map f)
⊢ IsIso (G.map (F.map f))
state_after: no goals
Theorem: gcd_mul_left
File: Mathlib/Algebra/GCDMonoid/Basic.lean

tactic: rintro rfl
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
a b c : α
⊢ a = 0 → gcd (a * b) (a * c) = normalize a * gcd b c
state_after: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
b c : α
⊢ gcd (0 * b) (0 * c) = normalize 0 * gcd b c

tactic: simp only [zero_mul, gcd_zero_left, normalize_zero]
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
b c : α
⊢ gcd (0 * b) (0 * c) = normalize 0 * gcd b c
state_after: no goals

tactic: simpa
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
a b c : α
ha : a ≠ 0
this : gcd (a * b) (a * c) = normalize (a * gcd b c)
⊢ gcd (a * b) (a * c) = normalize a * gcd b c
state_after: no goals