1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: List.length_sym
File: Mathlib/Data/List/Sym.lean

tactic: rw [List.sym, Nat.multichoose]
state_before: α : Type u_1
xs✝ ys : List α
n✝ n : ℕ
xs x✝ : List α
⊢ (List.sym 0 x✝).length = x✝.length.multichoose 0
state_after: α : Type u_1
xs✝ ys : List α
n✝ n : ℕ
xs x✝ : List α
⊢ [Sym.nil].length = 1

tactic: rfl
state_before: α : Type u_1
xs✝ ys : List α
n✝ n : ℕ
xs x✝ : List α
⊢ [Sym.nil].length = 1
state_after: no goals

tactic: simp [List.sym]
state_before: α : Type u_1
xs✝ ys : List α
n✝¹ n✝ : ℕ
xs : List α
n : ℕ
⊢ (List.sym (n + 1) []).length = [].length.multichoose (n + 1)
state_after: no goals

tactic: rw [List.sym, length_append, length_map, length_cons]
state_before: α : Type u_1
xs✝¹ ys : List α
n✝¹ n✝ : ℕ
xs✝ : List α
n : ℕ
x : α
xs : List α
⊢ (List.sym (n + 1) (x :: xs)).length = (x :: xs).length.multichoose (n + 1)
state_after: α : Type u_1
xs✝¹ ys : List α
n✝¹ n✝ : ℕ
xs✝ : List α
n : ℕ
x : α
xs : List α
⊢ (List.sym n (x :: xs)).length + (List.sym (n + 1) xs).length = (xs.length + 1).multichoose (n + 1)

tactic: rw [@length_sym n (x :: xs), @length_sym (n + 1) xs]
state_before: α : Type u_1
xs✝¹ ys : List α
n✝¹ n✝ : ℕ
xs✝ : List α
n : ℕ
x : α
xs : List α
⊢ (List.sym n (x :: xs)).length + (List.sym (n + 1) xs).length = (xs.length + 1).multichoose (n + 1)
state_after: α : Type u_1
xs✝¹ ys : List α
n✝¹ n✝ : ℕ
xs✝ : List α
n : ℕ
x : α
xs : List α
⊢ (x :: xs).length.multichoose n + xs.length.multichoose (n + 1) = (xs.length + 1).multichoose (n + 1)

tactic: rw [Nat.multichoose_succ_succ, length_cons, add_comm]
state_before: α : Type u_1
xs✝¹ ys : List α
n✝¹ n✝ : ℕ
xs✝ : List α
n : ℕ
x : α
xs : List α
⊢ (x :: xs).length.multichoose n + xs.length.multichoose (n + 1) = (xs.length + 1).multichoose (n + 1)
state_after: no goals
Theorem: fourier_add'
File: Mathlib/Analysis/Fourier/AddCircle.lean

tactic: rw [← fourier_apply]
state_before: T : ℝ
m n : ℤ
x : AddCircle T
⊢ ↑((m + n) • x).toCircle = (fourier m) x * (fourier n) x
state_after: T : ℝ
m n : ℤ
x : AddCircle T
⊢ (fourier (m + n)) x = (fourier m) x * (fourier n) x

tactic: exact fourier_add
state_before: T : ℝ
m n : ℤ
x : AddCircle T
⊢ (fourier (m + n)) x = (fourier m) x * (fourier n) x
state_after: no goals
Theorem: Ordnode.splitMax_eq
File: Mathlib/Data/Ordmap/Ordset.lean

tactic: rw [splitMax', splitMax_eq ls ll lx lr, findMax', eraseMax]
state_before: α : Type u_1
x✝ : ℕ
l : Ordnode α
x : α
ls : ℕ
ll : Ordnode α
lx : α
lr : Ordnode α
⊢ l.splitMax' x (node ls ll lx lr) = ((node x✝ l x (node ls ll lx lr)).eraseMax, findMax' x (node ls ll lx lr))
state_after: no goals
Theorem: WeierstrassCurve.Projective.equation_iff
File: Mathlib/AlgebraicGeometry/EllipticCurve/Projective.lean

tactic: rw [Equation, eval_polynomial, sub_eq_zero]
state_before: R : Type u
inst✝ : CommRing R
W : Projective R
P : Fin 3 → R
⊢ W.Equation P ↔
    P 1 ^ 2 * P 2 + W.a₁ * P 0 * P 1 * P 2 + W.a₃ * P 1 * P 2 ^ 2 =
      P 0 ^ 3 + W.a₂ * P 0 ^ 2 * P 2 + W.a₄ * P 0 * P 2 ^ 2 + W.a₆ * P 2 ^ 3
state_after: no goals
Theorem: CategoryTheory.ShortComplex.LeftHomologyMapData.cyclesMap_comm
File: Mathlib/Algebra/Homology/ShortComplex/LeftHomology.lean

tactic: simp only [γ.cyclesMap_eq, assoc, Iso.inv_hom_id, comp_id]
state_before: C : Type u_1
inst✝³ : Category.{u_2, u_1} C
inst✝² : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.LeftHomologyData
h₂ : S₂.LeftHomologyData
γ : LeftHomologyMapData φ h₁ h₂
inst✝¹ : S₁.HasLeftHomology
inst✝ : S₂.HasLeftHomology
⊢ cyclesMap φ ≫ h₂.cyclesIso.hom = h₁.cyclesIso.hom ≫ γ.φK
state_after: no goals
Theorem: LieAlgebra.rank_eq_natTrailingDegree
File: Mathlib/Algebra/Lie/Rank.lean

tactic: apply nilRank_eq_polyCharpoly_natTrailingDegree
state_before: R : Type u_1
A : Type u_2
L : Type u_3
M : Type u_4
ι : Type u_5
ιₘ : Type u_6
inst✝¹⁷ : CommRing R
inst✝¹⁶ : Nontrivial R
inst✝¹⁵ : CommRing A
inst✝¹⁴ : Algebra R A
inst✝¹³ : LieRing L
inst✝¹² : LieAlgebra R L
inst✝¹¹ : Module.Finite R L
inst✝¹⁰ : Module.Free R L
inst✝⁹ : AddCommGroup M
inst✝⁸ : Module R M
inst✝⁷ : LieRingModule L M
inst✝⁶ : LieModule R L M
inst✝⁵ : Module.Finite R M
inst✝⁴ : Module.Free R M
inst✝³ : Fintype ι
inst✝² : DecidableEq ι
inst✝¹ : Fintype ιₘ
inst✝ : DecidableEq ιₘ
b : Basis ι R L
bₘ : Basis ιₘ R M
x : L
⊢ rank R L = ((↑(ad R L)).polyCharpoly b).natTrailingDegree
state_after: no goals
Theorem: CategoryTheory.imageUnopOp_hom_comp_image_ι
File: Mathlib/CategoryTheory/Abelian/Opposite.lean

tactic: simp only [← cancel_epi (image.ι g.unop).op, ← Category.assoc, image_ι_op_comp_imageUnopOp_hom,
  ← op_comp, image.fac, Quiver.Hom.op_unop]
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Abelian C
X Y : C
f : X ⟶ Y
A B : Cᵒᵖ
g : A ⟶ B
⊢ (imageUnopOp g).hom ≫ image.ι g = (factorThruImage g.unop).op
state_after: no goals
Theorem: NNReal.summable_of_sum_range_le
File: Mathlib/Topology/Instances/ENNReal.lean

tactic: refine summable_iff_not_tendsto_nat_atTop.2 fun H => ?_
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f : ℕ → ℝ≥0
c : ℝ≥0
h : ∀ (n : ℕ), ∑ i ∈ Finset.range n, f i ≤ c
⊢ Summable f
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
f : ℕ → ℝ≥0
c : ℝ≥0
h : ∀ (n : ℕ), ∑ i ∈ Finset.range n, f i ≤ c
H : Tendsto (fun n => ∑ i ∈ Finset.range n, f i) atTop atTop
⊢ False

tactic: rcases exists_lt_of_tendsto_atTop H 0 c with ⟨n, -, hn⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f : ℕ → ℝ≥0
c : ℝ≥0
h : ∀ (n : ℕ), ∑ i ∈ Finset.range n, f i ≤ c
H : Tendsto (fun n => ∑ i ∈ Finset.range n, f i) atTop atTop
⊢ False
state_after: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
f : ℕ → ℝ≥0
c : ℝ≥0
h : ∀ (n : ℕ), ∑ i ∈ Finset.range n, f i ≤ c
H : Tendsto (fun n => ∑ i ∈ Finset.range n, f i) atTop atTop
n : ℕ
hn : c < ∑ i ∈ Finset.range n, f i
⊢ False

tactic: exact lt_irrefl _ (hn.trans_le (h n))
state_before: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
f : ℕ → ℝ≥0
c : ℝ≥0
h : ∀ (n : ℕ), ∑ i ∈ Finset.range n, f i ≤ c
H : Tendsto (fun n => ∑ i ∈ Finset.range n, f i) atTop atTop
n : ℕ
hn : c < ∑ i ∈ Finset.range n, f i
⊢ False
state_after: no goals
Theorem: List.range'_eq_map_range
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

tactic: rw [range_eq_range', map_add_range']
state_before: s n : Nat
⊢ range' s n = map (fun x => s + x) (range n)
state_after: s n : Nat
⊢ range' s n = range' (s + 0) n

tactic: rfl
state_before: s n : Nat
⊢ range' s n = range' (s + 0) n
state_after: no goals
Theorem: cfc_comp_zpow
File: Mathlib/Topology/ContinuousFunction/FunctionalCalculus.lean

tactic: rw [cfc_comp' .., cfc_zpow a]
state_before: R : Type u_1
A : Type u_2
p : A → Prop
inst✝¹¹ : Semifield R
inst✝¹⁰ : StarRing R
inst✝⁹ : MetricSpace R
inst✝⁸ : TopologicalSemiring R
inst✝⁷ : ContinuousStar R
inst✝⁶ : HasContinuousInv₀ R
inst✝⁵ : TopologicalSpace A
inst✝⁴ : Ring A
inst✝³ : StarRing A
inst✝² : Algebra R A
inst✝¹ : ContinuousFunctionalCalculus R p
f✝ : R → R
a✝ : A
inst✝ : UniqueContinuousFunctionalCalculus R A
f : R → R
n : ℤ
a : Aˣ
hf : autoParam (ContinuousOn f ((fun x => x ^ n) '' spectrum R ↑a)) _auto✝
ha : autoParam (p ↑a) _auto✝
⊢ cfc (fun x => f (x ^ n)) ↑a = cfc f ↑(a ^ n)
state_after: no goals
Theorem: WithBot.mul_eq_bot_iff
File: Mathlib/Algebra/Order/Ring/WithTop.lean

tactic: rw [mul_def]
state_before: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : MulZeroClass α
a b : WithBot α
⊢ a * b = ⊥ ↔ a ≠ 0 ∧ b = ⊥ ∨ a = ⊥ ∧ b ≠ 0
state_after: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : MulZeroClass α
a b : WithBot α
⊢ (if a = 0 ∨ b = 0 then 0 else map₂ (fun x x_1 => x * x_1) a b) = ⊥ ↔ a ≠ 0 ∧ b = ⊥ ∨ a = ⊥ ∧ b ≠ 0

tactic: aesop
state_before: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : MulZeroClass α
a b : WithBot α
⊢ (if a = 0 ∨ b = 0 then 0 else map₂ (fun x x_1 => x * x_1) a b) = ⊥ ↔ a ≠ 0 ∧ b = ⊥ ∨ a = ⊥ ∧ b ≠ 0
state_after: no goals
Theorem: TensorProduct.finsuppLeft_apply_tmul_apply
File: Mathlib/LinearAlgebra/DirectSum/Finsupp.lean

tactic: rw [finsuppLeft_apply_tmul, Finsupp.sum_apply,
  Finsupp.sum_eq_single i (fun _ _ ↦ Finsupp.single_eq_of_ne) (by simp), Finsupp.single_eq_same]
state_before: R : Type u_1
inst✝⁵ : CommSemiring R
M : Type u_2
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
N : Type u_3
inst✝² : AddCommMonoid N
inst✝¹ : Module R N
ι : Type u_4
inst✝ : DecidableEq ι
p : ι →₀ M
n : N
i : ι
⊢ ((finsuppLeft R M N ι) (p ⊗ₜ[R] n)) i = p i ⊗ₜ[R] n
state_after: no goals

tactic: simp
state_before: R : Type u_1
inst✝⁵ : CommSemiring R
M : Type u_2
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
N : Type u_3
inst✝² : AddCommMonoid N
inst✝¹ : Module R N
ι : Type u_4
inst✝ : DecidableEq ι
p : ι →₀ M
n : N
i : ι
⊢ p i = 0 → (Finsupp.single i (0 ⊗ₜ[R] n)) i = 0
state_after: no goals
Theorem: Filter.EventuallyEq.eventuallyConst_iff
File: Mathlib/Order/Filter/EventuallyConst.lean

tactic: simp only [EventuallyConst, map_congr h]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
l : Filter α
f g : α → β
h : f =ᶠ[l] g
⊢ EventuallyConst f l ↔ EventuallyConst g l
state_after: no goals
Theorem: inv_mul_cancel_right
File: Mathlib/Algebra/Group/Defs.lean

tactic: rw [mul_assoc, mul_left_inv, mul_one]
state_before: G : Type u_1
inst✝ : Group G
a✝ b✝ c a b : G
⊢ a * b⁻¹ * b = a
state_after: no goals
Theorem: Real.rpow_intCast_mul
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: rw [rpow_mul hx, rpow_intCast]
state_before: x y z✝ : ℝ
n✝ : ℕ
hx : 0 ≤ x
n : ℤ
z : ℝ
⊢ x ^ (↑n * z) = (x ^ n) ^ z
state_after: no goals
Theorem: Submonoid.sup_eq_range
File: Mathlib/Algebra/Group/Submonoid/Membership.lean

tactic: rw [mrange_eq_map, ← mrange_inl_sup_mrange_inr, map_sup, map_mrange, coprod_comp_inl, map_mrange,
  coprod_comp_inr, range_subtype, range_subtype]
state_before: M : Type u_1
A : Type u_2
B : Type u_3
N : Type u_4
inst✝ : CommMonoid N
s t : Submonoid N
⊢ s ⊔ t = mrange (s.subtype.coprod t.subtype)
state_after: no goals
Theorem: Submonoid.mrange_inl_sup_mrange_inr
File: Mathlib/Algebra/Group/Submonoid/Operations.lean

tactic: simp only [mrange_inl, mrange_inr, prod_bot_sup_bot_prod, top_prod_top]
state_before: M : Type u_1
N : Type u_2
P : Type u_3
inst✝³ : MulOneClass M
inst✝² : MulOneClass N
inst✝¹ : MulOneClass P
S : Submonoid M
A : Type u_4
inst✝ : SetLike A M
hA : SubmonoidClass A M
S' : A
⊢ mrange (inl M N) ⊔ mrange (inr M N) = ⊤
state_after: no goals
Theorem: MeasurableEmbedding.withDensity_ofReal_comap_apply_eq_integral_abs_deriv_mul'
File: Mathlib/MeasureTheory/Function/Jacobian.lean

tactic: filter_upwards [hg] with x hx using fun _ ↦ hx
state_before: E : Type u_1
F : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s✝ : Set E
f✝ : E → E
f'✝ : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : μ.IsAddHaarMeasure
f : ℝ → ℝ
hf : MeasurableEmbedding f
s : Set ℝ
hs : MeasurableSet s
f' : ℝ → ℝ
hf' : ∀ (x : ℝ), HasDerivAt f (f' x) x
g : ℝ → ℝ
hg : 0 ≤ᶠ[ae volume] g
hg_int : Integrable g volume
⊢ ∀ᵐ (x : ℝ), x ∈ f '' s → 0 ≤ g x
state_after: no goals
Theorem: exists_pos_bound_of_bound
File: Mathlib/Analysis/Normed/Group/Hom.lean

tactic: gcongr
state_before: V : Type u_1
W : Type u_2
inst✝¹ : SeminormedAddCommGroup V
inst✝ : SeminormedAddCommGroup W
f : V → W
M : ℝ
h : ∀ (x : V), ‖f x‖ ≤ M * ‖x‖
x : V
⊢ M * ‖x‖ ≤ max M 1 * ‖x‖
state_after: case h
V : Type u_1
W : Type u_2
inst✝¹ : SeminormedAddCommGroup V
inst✝ : SeminormedAddCommGroup W
f : V → W
M : ℝ
h : ∀ (x : V), ‖f x‖ ≤ M * ‖x‖
x : V
⊢ M ≤ max M 1

tactic: apply le_max_left
state_before: case h
V : Type u_1
W : Type u_2
inst✝¹ : SeminormedAddCommGroup V
inst✝ : SeminormedAddCommGroup W
f : V → W
M : ℝ
h : ∀ (x : V), ‖f x‖ ≤ M * ‖x‖
x : V
⊢ M ≤ max M 1
state_after: no goals
Theorem: Sylow.normal_of_normalizer_normal
File: Mathlib/GroupTheory/Sylow.lean

tactic: rw [← normalizer_eq_top, ← normalizer_sup_eq_top' P le_normalizer, sup_idem]
state_before: G : Type u
α : Type v
β : Type w
inst✝² : Group G
p : ℕ
inst✝¹ : Fact (Nat.Prime p)
inst✝ : Finite (Sylow p G)
P : Sylow p G
hn : (↑P).normalizer.Normal
⊢ (↑P).Normal
state_after: no goals
Theorem: List.id_traverse
File: Mathlib/Control/Traversable/Instances.lean

tactic: induction xs <;> simp! [*, List.traverse, functor_norm]
state_before: F G : Type u → Type u
inst✝³ : Applicative F
inst✝² : Applicative G
inst✝¹ : LawfulApplicative F
inst✝ : LawfulApplicative G
α : Type u_1
xs : List α
⊢ List.traverse pure xs = xs
state_after: case cons
F G : Type u → Type u
inst✝³ : Applicative F
inst✝² : Applicative G
inst✝¹ : LawfulApplicative F
inst✝ : LawfulApplicative G
α : Type u_1
head✝ : α
tail✝ : List α
tail_ih✝ : List.traverse pure tail✝ = tail✝
⊢ (Seq.seq (cons head✝) fun x => tail✝) = head✝ :: tail✝

tactic: rfl
state_before: case cons
F G : Type u → Type u
inst✝³ : Applicative F
inst✝² : Applicative G
inst✝¹ : LawfulApplicative F
inst✝ : LawfulApplicative G
α : Type u_1
head✝ : α
tail✝ : List α
tail_ih✝ : List.traverse pure tail✝ = tail✝
⊢ (Seq.seq (cons head✝) fun x => tail✝) = head✝ :: tail✝
state_after: no goals
Theorem: Real.sin_arcsin'
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Inverse.lean

tactic: simpa [arcsin, IccExtend_of_mem _ _ hx, -OrderIso.apply_symm_apply] using
  Subtype.ext_iff.1 (sinOrderIso.apply_symm_apply ⟨x, hx⟩)
state_before: x✝ y x : ℝ
hx : x ∈ Icc (-1) 1
⊢ sin (arcsin x) = x
state_after: no goals
Theorem: SzemerediRegularity.Positivity.m_pos
File: Mathlib/Combinatorics/SimpleGraph/Regularity/Bound.lean

tactic: norm_num
state_before: α : Type u_1
inst✝² : DecidableEq α
inst✝¹ : Fintype α
P : Finpartition univ
u : Finset α
ε : ℝ
inst✝ : Nonempty α
hPα : P.parts.card * 16 ^ P.parts.card ≤ Fintype.card α
⊢ 4 ≤ 16
state_after: no goals
Theorem: EMetric.mem_closedBall_comm
File: Mathlib/Topology/EMetricSpace/Basic.lean

tactic: rw [mem_closedBall', mem_closedBall]
state_before: α : Type u
β : Type v
X : Type u_1
inst✝ : PseudoEMetricSpace α
x y z : α
ε ε₁ ε₂ : ℝ≥0∞
s t : Set α
⊢ x ∈ closedBall y ε ↔ y ∈ closedBall x ε
state_after: no goals
Theorem: QPF.comp_map
File: Mathlib/Data/QPF/Univariate/Basic.lean

tactic: rw [← abs_repr x]
state_before: F : Type u → Type u
q : QPF F
α β γ : Type u
f : α → β
g : β → γ
x : F α
⊢ (g ∘ f) <$> x = g <$> f <$> x
state_after: F : Type u → Type u
q : QPF F
α β γ : Type u
f : α → β
g : β → γ
x : F α
⊢ (g ∘ f) <$> abs (repr x) = g <$> f <$> abs (repr x)

tactic: cases' repr x with a f
state_before: F : Type u → Type u
q : QPF F
α β γ : Type u
f : α → β
g : β → γ
x : F α
⊢ (g ∘ f) <$> abs (repr x) = g <$> f <$> abs (repr x)
state_after: case mk
F : Type u → Type u
q : QPF F
α β γ : Type u
f✝ : α → β
g : β → γ
x : F α
a : (P F).A
f : (P F).B a → α
⊢ (g ∘ f✝) <$> abs ⟨a, f⟩ = g <$> f✝ <$> abs ⟨a, f⟩

tactic: rw [← abs_map, ← abs_map, ← abs_map]
state_before: case mk
F : Type u → Type u
q : QPF F
α β γ : Type u
f✝ : α → β
g : β → γ
x : F α
a : (P F).A
f : (P F).B a → α
⊢ (g ∘ f✝) <$> abs ⟨a, f⟩ = g <$> f✝ <$> abs ⟨a, f⟩
state_after: case mk
F : Type u → Type u
q : QPF F
α β γ : Type u
f✝ : α → β
g : β → γ
x : F α
a : (P F).A
f : (P F).B a → α
⊢ abs ((P F).map (g ∘ f✝) ⟨a, f⟩) = abs ((P F).map g ((P F).map f✝ ⟨a, f⟩))

tactic: rfl
state_before: case mk
F : Type u → Type u
q : QPF F
α β γ : Type u
f✝ : α → β
g : β → γ
x : F α
a : (P F).A
f : (P F).B a → α
⊢ abs ((P F).map (g ∘ f✝) ⟨a, f⟩) = abs ((P F).map g ((P F).map f✝ ⟨a, f⟩))
state_after: no goals
Theorem: PartENat.lt_add_one
File: Mathlib/Data/Nat/PartENat.lean

tactic: rw [PartENat.lt_add_iff_pos_right hx]
state_before: x : PartENat
hx : x ≠ ⊤
⊢ x < x + 1
state_after: x : PartENat
hx : x ≠ ⊤
⊢ 0 < 1

tactic: norm_cast
state_before: x : PartENat
hx : x ≠ ⊤
⊢ 0 < 1
state_after: no goals
Theorem: AlgebraicTopology.DoldKan.PInfty_idem
File: Mathlib/AlgebraicTopology/DoldKan/PInfty.lean

tactic: ext n
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
⊢ PInfty ≫ PInfty = PInfty
state_after: case h
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
n : ℕ
⊢ (PInfty ≫ PInfty).f n = PInfty.f n

tactic: exact PInfty_f_idem n
state_before: case h
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
n : ℕ
⊢ (PInfty ≫ PInfty).f n = PInfty.f n
state_after: no goals
Theorem: Matroid.freeOn_base_iff
File: Mathlib/Data/Matroid/Constructions.lean

tactic: simp only [freeOn, loopyOn_ground, dual_base_iff', loopyOn_base_iff, diff_eq_empty,
  ← subset_antisymm_iff, eq_comm (a := E)]
state_before: α : Type u_1
M : Matroid α
E B I X R J : Set α
⊢ (freeOn E).Base B ↔ B = E
state_after: no goals
Theorem: Matrix.pow_eq_aeval_mod_charpoly
File: Mathlib/LinearAlgebra/Matrix/Charpoly/Coeff.lean

tactic: rw [← aeval_eq_aeval_mod_charpoly, map_pow, aeval_X]
state_before: R : Type u
inst✝⁴ : CommRing R
n G : Type v
inst✝³ : DecidableEq n
inst✝² : Fintype n
α β : Type v
inst✝¹ : DecidableEq α
M✝ : Matrix n n R
p : ℕ
inst✝ : Fact (Nat.Prime p)
M : Matrix n n R
k : ℕ
⊢ M ^ k = (aeval M) (X ^ k %ₘ M.charpoly)
state_after: no goals
Theorem: mul_left_eq_iff_eq_invOf_mul
File: Mathlib/Algebra/Group/Invertible/Defs.lean

tactic: rw [← mul_left_inj_of_invertible (c := ⅟c), invOf_mul_self_assoc]
state_before: α : Type u
inst✝¹ : Monoid α
a b c : α
inst✝ : Invertible c
⊢ c * a = b ↔ a = ⅟c * b
state_after: no goals
Theorem: Real.arccos_eq_arcsin
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Inverse.lean

tactic: norm_num
state_before: x✝ y x : ℝ
h : 0 ≤ x
⊢ 0 ≤ 2
state_after: no goals
Theorem: LinearMap.associated_det_comp_equiv
File: Mathlib/LinearAlgebra/Determinant.lean

tactic: refine LinearMap.associated_det_of_eq_comp (e.trans e'.symm) _ _ ?_
state_before: R : Type u_1
inst✝⁸ : CommRing R
M : Type u_2
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
M' : Type u_3
inst✝⁵ : AddCommGroup M'
inst✝⁴ : Module R M'
ι : Type u_4
inst✝³ : DecidableEq ι
inst✝² : Fintype ι
e✝ : Basis ι R M
N : Type u_5
inst✝¹ : AddCommGroup N
inst✝ : Module R N
f : N →ₗ[R] M
e e' : M ≃ₗ[R] N
⊢ Associated (LinearMap.det (f ∘ₗ ↑e)) (LinearMap.det (f ∘ₗ ↑e'))
state_after: R : Type u_1
inst✝⁸ : CommRing R
M : Type u_2
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
M' : Type u_3
inst✝⁵ : AddCommGroup M'
inst✝⁴ : Module R M'
ι : Type u_4
inst✝³ : DecidableEq ι
inst✝² : Fintype ι
e✝ : Basis ι R M
N : Type u_5
inst✝¹ : AddCommGroup N
inst✝ : Module R N
f : N →ₗ[R] M
e e' : M ≃ₗ[R] N
⊢ ∀ (x : M), (f ∘ₗ ↑e) x = (f ∘ₗ ↑e') ((e ≪≫ₗ e'.symm) x)

tactic: intro x
state_before: R : Type u_1
inst✝⁸ : CommRing R
M : Type u_2
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
M' : Type u_3
inst✝⁵ : AddCommGroup M'
inst✝⁴ : Module R M'
ι : Type u_4
inst✝³ : DecidableEq ι
inst✝² : Fintype ι
e✝ : Basis ι R M
N : Type u_5
inst✝¹ : AddCommGroup N
inst✝ : Module R N
f : N →ₗ[R] M
e e' : M ≃ₗ[R] N
⊢ ∀ (x : M), (f ∘ₗ ↑e) x = (f ∘ₗ ↑e') ((e ≪≫ₗ e'.symm) x)
state_after: R : Type u_1
inst✝⁸ : CommRing R
M : Type u_2
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
M' : Type u_3
inst✝⁵ : AddCommGroup M'
inst✝⁴ : Module R M'
ι : Type u_4
inst✝³ : DecidableEq ι
inst✝² : Fintype ι
e✝ : Basis ι R M
N : Type u_5
inst✝¹ : AddCommGroup N
inst✝ : Module R N
f : N →ₗ[R] M
e e' : M ≃ₗ[R] N
x : M
⊢ (f ∘ₗ ↑e) x = (f ∘ₗ ↑e') ((e ≪≫ₗ e'.symm) x)

tactic: simp only [LinearMap.comp_apply, LinearEquiv.coe_coe, LinearEquiv.trans_apply,
  LinearEquiv.apply_symm_apply]
state_before: R : Type u_1
inst✝⁸ : CommRing R
M : Type u_2
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
M' : Type u_3
inst✝⁵ : AddCommGroup M'
inst✝⁴ : Module R M'
ι : Type u_4
inst✝³ : DecidableEq ι
inst✝² : Fintype ι
e✝ : Basis ι R M
N : Type u_5
inst✝¹ : AddCommGroup N
inst✝ : Module R N
f : N →ₗ[R] M
e e' : M ≃ₗ[R] N
x : M
⊢ (f ∘ₗ ↑e) x = (f ∘ₗ ↑e') ((e ≪≫ₗ e'.symm) x)
state_after: no goals
Theorem: CategoryTheory.FunctorToTypes.prodMk_fst
File: Mathlib/CategoryTheory/Limits/Shapes/FunctorToTypes.lean

tactic: simp only [prodMk, binaryProductIso_inv_comp_fst_apply]
state_before: C : Type u
inst✝ : Category.{v, u} C
F G : C ⥤ Type w
a : C
x : F.obj a
y : G.obj a
⊢ Limits.prod.fst.app a (prodMk x y) = x
state_after: no goals
Theorem: div_lt_div''
File: Mathlib/Algebra/Order/Group/Defs.lean

tactic: rw [div_eq_mul_inv, div_eq_mul_inv, mul_comm b, mul_inv_lt_inv_mul_iff, mul_comm]
state_before: α : Type u
inst✝² : CommGroup α
inst✝¹ : Preorder α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
a b c d : α
hab : a < b
hcd : c < d
⊢ a / d < b / c
state_after: α : Type u
inst✝² : CommGroup α
inst✝¹ : Preorder α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
a b c d : α
hab : a < b
hcd : c < d
⊢ a * c < b * d

tactic: exact mul_lt_mul_of_lt_of_lt hab hcd
state_before: α : Type u
inst✝² : CommGroup α
inst✝¹ : Preorder α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
a b c d : α
hab : a < b
hcd : c < d
⊢ a * c < b * d
state_after: no goals
Theorem: Complex.dist_self_conj
File: Mathlib/Analysis/Complex/Basic.lean

tactic: rw [dist_comm, dist_conj_self]
state_before: z✝ : ℂ
E : Type u_1
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace ℂ E
z : ℂ
⊢ dist z ((starRingEnd ℂ) z) = 2 * |z.im|
state_after: no goals
Theorem: vsub_vadd_eq_vsub_sub
File: Mathlib/Algebra/AddTorsor.lean

tactic: rw [← add_right_inj (p₂ -ᵥ p₁ : G), vsub_add_vsub_cancel, ← neg_vsub_eq_vsub_rev, vadd_vsub, ←
  add_sub_assoc, ← neg_vsub_eq_vsub_rev, neg_add_self, zero_sub]
state_before: G : Type u_1
P : Type u_2
inst✝ : AddGroup G
T : AddTorsor G P
p₁ p₂ : P
g : G
⊢ p₁ -ᵥ (g +ᵥ p₂) = p₁ -ᵥ p₂ - g
state_after: no goals
Theorem: ContinuousLinearMap.norm_fst
File: Mathlib/Analysis/NormedSpace/OperatorNorm/Prod.lean

tactic: refine le_antisymm (norm_fst_le ..) ?_
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace 𝕜 E
inst✝² : SeminormedAddCommGroup F
inst✝¹ : NormedSpace 𝕜 F
inst✝ : Nontrivial E
⊢ ‖fst 𝕜 E F‖ = 1
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace 𝕜 E
inst✝² : SeminormedAddCommGroup F
inst✝¹ : NormedSpace 𝕜 F
inst✝ : Nontrivial E
⊢ 1 ≤ ‖fst 𝕜 E F‖

tactic: let ⟨e, he⟩ := exists_ne (0 : E)
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace 𝕜 E
inst✝² : SeminormedAddCommGroup F
inst✝¹ : NormedSpace 𝕜 F
inst✝ : Nontrivial E
⊢ 1 ≤ ‖fst 𝕜 E F‖
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace 𝕜 E
inst✝² : SeminormedAddCommGroup F
inst✝¹ : NormedSpace 𝕜 F
inst✝ : Nontrivial E
e : E
he : e ≠ 0
⊢ 1 ≤ ‖fst 𝕜 E F‖

tactic: have : ‖e‖ ≤ _ * max ‖e‖ ‖(0 : F)‖ := (fst 𝕜 E F).le_opNorm (e, 0)
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace 𝕜 E
inst✝² : SeminormedAddCommGroup F
inst✝¹ : NormedSpace 𝕜 F
inst✝ : Nontrivial E
e : E
he : e ≠ 0
⊢ 1 ≤ ‖fst 𝕜 E F‖
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace 𝕜 E
inst✝² : SeminormedAddCommGroup F
inst✝¹ : NormedSpace 𝕜 F
inst✝ : Nontrivial E
e : E
he : e ≠ 0
this : ‖e‖ ≤ ‖fst 𝕜 E F‖ * max ‖e‖ ‖0‖
⊢ 1 ≤ ‖fst 𝕜 E F‖

tactic: rw [norm_zero, max_eq_left (norm_nonneg e)] at this
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace 𝕜 E
inst✝² : SeminormedAddCommGroup F
inst✝¹ : NormedSpace 𝕜 F
inst✝ : Nontrivial E
e : E
he : e ≠ 0
this : ‖e‖ ≤ ‖fst 𝕜 E F‖ * max ‖e‖ ‖0‖
⊢ 1 ≤ ‖fst 𝕜 E F‖
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace 𝕜 E
inst✝² : SeminormedAddCommGroup F
inst✝¹ : NormedSpace 𝕜 F
inst✝ : Nontrivial E
e : E
he : e ≠ 0
this : ‖e‖ ≤ ‖fst 𝕜 E F‖ * ‖e‖
⊢ 1 ≤ ‖fst 𝕜 E F‖

tactic: rwa [← mul_le_mul_iff_of_pos_right (norm_pos_iff.mpr he), one_mul]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace 𝕜 E
inst✝² : SeminormedAddCommGroup F
inst✝¹ : NormedSpace 𝕜 F
inst✝ : Nontrivial E
e : E
he : e ≠ 0
this : ‖e‖ ≤ ‖fst 𝕜 E F‖ * ‖e‖
⊢ 1 ≤ ‖fst 𝕜 E F‖
state_after: no goals