1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: HomologicalComplex.XIsoOfEq_inv_comp_d
File: Mathlib/Algebra/Homology/HomologicalComplex.lean

tactic: subst h
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : HasZeroMorphisms V
c : ComplexShape ι
K : HomologicalComplex V c
p₂ p₁ : ι
h : p₂ = p₁
p₃ : ι
⊢ (K.XIsoOfEq h).inv ≫ K.d p₂ p₃ = K.d p₁ p₃
state_after: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : HasZeroMorphisms V
c : ComplexShape ι
K : HomologicalComplex V c
p₂ p₃ : ι
⊢ (K.XIsoOfEq ⋯).inv ≫ K.d p₂ p₃ = K.d p₂ p₃

tactic: simp
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : HasZeroMorphisms V
c : ComplexShape ι
K : HomologicalComplex V c
p₂ p₃ : ι
⊢ (K.XIsoOfEq ⋯).inv ≫ K.d p₂ p₃ = K.d p₂ p₃
state_after: no goals
Theorem: tprod_dite_right
File: Mathlib/Topology/Algebra/InfiniteSum/Basic.lean

tactic: by_cases hP : P <;> simp [hP]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝² : CommMonoid α
inst✝¹ : TopologicalSpace α
f g : β → α
a a₁ a₂ : α
P : Prop
inst✝ : Decidable P
x : β → ¬P → α
⊢ (∏' (b : β), if h : P then 1 else x b h) = if h : P then 1 else ∏' (b : β), x b h
state_after: no goals
Theorem: add_eq_zero'
File: Mathlib/Algebra/Ring/BooleanRing.lean

tactic: rw [neg_eq]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : BooleanRing α
a b : α
⊢ a = -b ↔ a = b
state_after: no goals
Theorem: linearDependent_comp_subtype'
File: Mathlib/LinearAlgebra/LinearIndependent.lean

tactic: simp [linearIndependent_comp_subtype, and_left_comm]
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
s : Set ι
⊢ ¬LinearIndependent (ι := ↑s) R (v ∘ Subtype.val) ↔
    ∃ f ∈ Finsupp.supported R R s, (Finsupp.total ι M R v) f = 0 ∧ f ≠ 0
state_after: no goals
Theorem: Matroid.empty_base_iff
File: Mathlib/Data/Matroid/Constructions.lean

tactic: simp only [base_iff_maximal_indep, empty_indep, empty_subset, eq_comm (a := ∅), true_implies,
  true_and, eq_iff_indep_iff_indep_forall, loopyOn_ground, loopyOn_indep_iff]
state_before: α : Type u_1
M : Matroid α
E B I X R J : Set α
⊢ M.Base ∅ ↔ M = loopyOn M.E
state_after: α : Type u_1
M : Matroid α
E B I X R J : Set α
⊢ (∀ (I : Set α), M.Indep I → I = ∅) ↔ ∀ I ⊆ M.E, M.Indep I ↔ I = ∅

tactic: exact ⟨fun h I _ ↦ ⟨h I, by rintro rfl; simp⟩, fun h I hI ↦ (h I hI.subset_ground).1 hI⟩
state_before: α : Type u_1
M : Matroid α
E B I X R J : Set α
⊢ (∀ (I : Set α), M.Indep I → I = ∅) ↔ ∀ I ⊆ M.E, M.Indep I ↔ I = ∅
state_after: no goals

tactic: rintro rfl
state_before: α : Type u_1
M : Matroid α
E B I✝ X R J : Set α
h : ∀ (I : Set α), M.Indep I → I = ∅
I : Set α
x✝ : I ⊆ M.E
⊢ I = ∅ → M.Indep I
state_after: α : Type u_1
M : Matroid α
E B I X R J : Set α
h : ∀ (I : Set α), M.Indep I → I = ∅
x✝ : ∅ ⊆ M.E
⊢ M.Indep ∅

tactic: simp
state_before: α : Type u_1
M : Matroid α
E B I X R J : Set α
h : ∀ (I : Set α), M.Indep I → I = ∅
x✝ : ∅ ⊆ M.E
⊢ M.Indep ∅
state_after: no goals
Theorem: SemiconjBy.conj_iff
File: Mathlib/Algebra/Group/Semiconj/Defs.lean

tactic: unfold SemiconjBy
state_before: S : Type u_1
M : Type u_2
G : Type u_3
inst✝ : Group G
a✝ x✝ y✝ a x y b : G
⊢ SemiconjBy (b * a * b⁻¹) (b * x * b⁻¹) (b * y * b⁻¹) ↔ SemiconjBy a x y
state_after: S : Type u_1
M : Type u_2
G : Type u_3
inst✝ : Group G
a✝ x✝ y✝ a x y b : G
⊢ b * a * b⁻¹ * (b * x * b⁻¹) = b * y * b⁻¹ * (b * a * b⁻¹) ↔ a * x = y * a

tactic: simp only [← mul_assoc, inv_mul_cancel_right]
state_before: S : Type u_1
M : Type u_2
G : Type u_3
inst✝ : Group G
a✝ x✝ y✝ a x y b : G
⊢ b * a * b⁻¹ * (b * x * b⁻¹) = b * y * b⁻¹ * (b * a * b⁻¹) ↔ a * x = y * a
state_after: S : Type u_1
M : Type u_2
G : Type u_3
inst✝ : Group G
a✝ x✝ y✝ a x y b : G
⊢ b * a * x * b⁻¹ = b * y * a * b⁻¹ ↔ a * x = y * a

tactic: repeat rw [mul_assoc]
state_before: S : Type u_1
M : Type u_2
G : Type u_3
inst✝ : Group G
a✝ x✝ y✝ a x y b : G
⊢ b * a * x * b⁻¹ = b * y * a * b⁻¹ ↔ a * x = y * a
state_after: S : Type u_1
M : Type u_2
G : Type u_3
inst✝ : Group G
a✝ x✝ y✝ a x y b : G
⊢ b * (a * (x * b⁻¹)) = b * (y * (a * b⁻¹)) ↔ a * x = y * a

tactic: rw [mul_left_cancel_iff, ← mul_assoc, ← mul_assoc, mul_right_cancel_iff]
state_before: S : Type u_1
M : Type u_2
G : Type u_3
inst✝ : Group G
a✝ x✝ y✝ a x y b : G
⊢ b * (a * (x * b⁻¹)) = b * (y * (a * b⁻¹)) ↔ a * x = y * a
state_after: no goals

tactic: rw [mul_assoc]
state_before: S : Type u_1
M : Type u_2
G : Type u_3
inst✝ : Group G
a✝ x✝ y✝ a x y b : G
⊢ b * (a * (x * b⁻¹)) = b * y * (a * b⁻¹) ↔ a * x = y * a
state_after: S : Type u_1
M : Type u_2
G : Type u_3
inst✝ : Group G
a✝ x✝ y✝ a x y b : G
⊢ b * (a * (x * b⁻¹)) = b * (y * (a * b⁻¹)) ↔ a * x = y * a
Theorem: Equiv.Set.image_symm_preimage
File: Mathlib/Logic/Equiv/Set.lean

tactic: ext ⟨b, a, has, rfl⟩
state_before: α✝ : Sort u
β✝ : Sort v
γ : Sort w
α : Type u_1
β : Type u_2
f : α → β
hf : Injective f
u s : Set α
⊢ (fun x => ↑((Set.image f s hf).symm x)) ⁻¹' u = Subtype.val ⁻¹' (f '' u)
state_after: case h.mk.intro.intro
α✝ : Sort u
β✝ : Sort v
γ : Sort w
α : Type u_1
β : Type u_2
f : α → β
hf : Injective f
u s : Set α
a : α
has : a ∈ s
⊢ ⟨f a, ⋯⟩ ∈ (fun x => ↑((Set.image f s hf).symm x)) ⁻¹' u ↔ ⟨f a, ⋯⟩ ∈ Subtype.val ⁻¹' (f '' u)

tactic: simp [hf.eq_iff]
state_before: case h.mk.intro.intro
α✝ : Sort u
β✝ : Sort v
γ : Sort w
α : Type u_1
β : Type u_2
f : α → β
hf : Injective f
u s : Set α
a : α
has : a ∈ s
⊢ ⟨f a, ⋯⟩ ∈ (fun x => ↑((Set.image f s hf).symm x)) ⁻¹' u ↔ ⟨f a, ⋯⟩ ∈ Subtype.val ⁻¹' (f '' u)
state_after: no goals
Theorem: AlgebraicTopology.DoldKan.P_is_eventually_constant
File: Mathlib/AlgebraicTopology/DoldKan/PInfty.lean

tactic: rcases n with (_|n)
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
q n : ℕ
hqn : n ≤ q
⊢ (P (q + 1)).f n = (P q).f n
state_after: case zero
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
q : ℕ
hqn : 0 ≤ q
⊢ (P (q + 1)).f 0 = (P q).f 0

case succ
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
q n : ℕ
hqn : n + 1 ≤ q
⊢ (P (q + 1)).f (n + 1) = (P q).f (n + 1)

tactic: simp only [Nat.zero_eq, P_f_0_eq]
state_before: case zero
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
q : ℕ
hqn : 0 ≤ q
⊢ (P (q + 1)).f 0 = (P q).f 0
state_after: no goals

tactic: simp only [P_succ, add_right_eq_self, comp_add, HomologicalComplex.comp_f,
  HomologicalComplex.add_f_apply, comp_id]
state_before: case succ
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
q n : ℕ
hqn : n + 1 ≤ q
⊢ (P (q + 1)).f (n + 1) = (P q).f (n + 1)
state_after: case succ
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
q n : ℕ
hqn : n + 1 ≤ q
⊢ (P q).f (n + 1) ≫ (Hσ q).f (n + 1) = 0

tactic: exact (HigherFacesVanish.of_P q n).comp_Hσ_eq_zero (Nat.succ_le_iff.mp hqn)
state_before: case succ
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
q n : ℕ
hqn : n + 1 ≤ q
⊢ (P q).f (n + 1) ≫ (Hσ q).f (n + 1) = 0
state_after: no goals
Theorem: TypeVec.toSubtype_of_subtype
File: Mathlib/Data/TypeVec.lean

tactic: ext i x
state_before: n : ℕ
α : TypeVec.{u_1} n
p : α ⟹ repeat n Prop
⊢ toSubtype p ⊚ ofSubtype p = id
state_after: case a.h
n : ℕ
α : TypeVec.{u_1} n
p : α ⟹ repeat n Prop
i : Fin2 n
x : Subtype_ p i
⊢ (toSubtype p ⊚ ofSubtype p) i x = id i x

tactic: induction i <;> dsimp only [id, toSubtype, comp, ofSubtype] at *
state_before: case a.h
n : ℕ
α : TypeVec.{u_1} n
p : α ⟹ repeat n Prop
i : Fin2 n
x : Subtype_ p i
⊢ (toSubtype p ⊚ ofSubtype p) i x = id i x
state_after: case a.h.fs
n n✝ : ℕ
a✝ : Fin2 n✝
a_ih✝ : ∀ {α : TypeVec.{u_1} n✝} (p : α ⟹ repeat n✝ Prop) (x : Subtype_ p a✝), toSubtype p a✝ (ofSubtype p a✝ x) = x
α : TypeVec.{u_1} (n✝ + 1)
p : α ⟹ repeat (n✝ + 1) Prop
x : Subtype_ p a✝.fs
⊢ toSubtype (dropFun p) a✝ (ofSubtype (dropFun p) a✝ x) = x

tactic: simp [*]
state_before: case a.h.fs
n n✝ : ℕ
a✝ : Fin2 n✝
a_ih✝ : ∀ {α : TypeVec.{u_1} n✝} (p : α ⟹ repeat n✝ Prop) (x : Subtype_ p a✝), toSubtype p a✝ (ofSubtype p a✝ x) = x
α : TypeVec.{u_1} (n✝ + 1)
p : α ⟹ repeat (n✝ + 1) Prop
x : Subtype_ p a✝.fs
⊢ toSubtype (dropFun p) a✝ (ofSubtype (dropFun p) a✝ x) = x
state_after: no goals
Theorem: SimpleGraph.le_chromaticNumber_iff_forall_surjective
File: Mathlib/Combinatorics/SimpleGraph/Coloring.lean

tactic: simp [← card_le_chromaticNumber_iff_forall_surjective]
state_before: V : Type u
G : SimpleGraph V
n : ℕ
α : Type u_1
β : Type u_2
C : G.Coloring α
⊢ ↑n ≤ G.chromaticNumber ↔ ∀ (C : G.Coloring (Fin n)), Surjective ⇑C
state_after: no goals
Theorem: Nat.card_preimage_of_injOn
File: Mathlib/SetTheory/Cardinal/Finite.lean

tactic: rw [← Nat.card_image_of_injOn hf, image_preimage_eq_iff.2 hsf]
state_before: α : Type u_1
β : Type u_2
s✝ t : Set α
f : α → β
s : Set β
hf : InjOn f (f ⁻¹' s)
hsf : s ⊆ range f
⊢ Nat.card ↑(f ⁻¹' s) = Nat.card ↑s
state_after: no goals
Theorem: Batteries.RBNode.reverse_setRed
File: .lake/packages/batteries/Batteries/Data/RBMap/WF.lean

tactic: unfold setRed
state_before: α : Type u_1
t : RBNode α
⊢ t.setRed.reverse = t.reverse.setRed
state_after: α : Type u_1
t : RBNode α
⊢ (match t with
      | node c a v b => node red a v b
      | nil => nil).reverse =
    match t.reverse with
    | node c a v b => node red a v b
    | nil => nil

tactic: split <;> simp
state_before: α : Type u_1
t : RBNode α
⊢ (match t with
      | node c a v b => node red a v b
      | nil => nil).reverse =
    match t.reverse with
    | node c a v b => node red a v b
    | nil => nil
state_after: no goals
Theorem: Profinite.NobelingProof.GoodProducts.linearIndependent_iff_union_smaller
File: Mathlib/Topology/Category/Profinite/Nobeling.lean

tactic: rw [GoodProducts.linearIndependent_iff_range, ← range_equiv_factorization C ho hsC]
state_before: I : Type u
inst✝¹ : LinearOrder I
inst✝ : IsWellOrder I fun x x_1 => x < x_1
C : Set (I → Bool)
o✝ : Ordinal.{u}
ho✝ : o✝.IsLimit
hsC✝ : contained C o✝
o : Ordinal.{u}
ho : o.IsLimit
hsC : contained C o
⊢ LinearIndependent ℤ (eval C) ↔ LinearIndependent ℤ fun (p : ↑(⋃ e, smaller C ↑e)) => ↑p
state_after: I : Type u
inst✝¹ : LinearOrder I
inst✝ : IsWellOrder I fun x x_1 => x < x_1
C : Set (I → Bool)
o✝ : Ordinal.{u}
ho✝ : o✝.IsLimit
hsC✝ : contained C o✝
o : Ordinal.{u}
ho : o.IsLimit
hsC : contained C o
⊢ LinearIndependent (ι := ↑(range C)) ℤ ((fun p => ↑p) ∘ (range_equiv C ho hsC).toFun) ↔
    LinearIndependent ℤ fun (p : ↑(⋃ e, smaller C ↑e)) => ↑p

tactic: exact linearIndependent_equiv (range_equiv C ho hsC)
state_before: I : Type u
inst✝¹ : LinearOrder I
inst✝ : IsWellOrder I fun x x_1 => x < x_1
C : Set (I → Bool)
o✝ : Ordinal.{u}
ho✝ : o✝.IsLimit
hsC✝ : contained C o✝
o : Ordinal.{u}
ho : o.IsLimit
hsC : contained C o
⊢ LinearIndependent (ι := ↑(range C)) ℤ ((fun p => ↑p) ∘ (range_equiv C ho hsC).toFun) ↔
    LinearIndependent ℤ fun (p : ↑(⋃ e, smaller C ↑e)) => ↑p
state_after: no goals
Theorem: TopologicalSpace.IsSeparable.image
File: Mathlib/Topology/Bases.lean

tactic: rcases hs with ⟨c, c_count, hc⟩
state_before: α : Type u
β✝ : Type u_1
t : TopologicalSpace α
B : Set (Set α)
s✝ : Set α
β : Type u_2
inst✝ : TopologicalSpace β
s : Set α
hs : IsSeparable s
f : α → β
hf : Continuous f
⊢ IsSeparable (f '' s)
state_after: case intro.intro
α : Type u
β✝ : Type u_1
t : TopologicalSpace α
B : Set (Set α)
s✝ : Set α
β : Type u_2
inst✝ : TopologicalSpace β
s : Set α
f : α → β
hf : Continuous f
c : Set α
c_count : c.Countable
hc : s ⊆ closure c
⊢ IsSeparable (f '' s)

tactic: refine ⟨f '' c, c_count.image _, ?_⟩
state_before: case intro.intro
α : Type u
β✝ : Type u_1
t : TopologicalSpace α
B : Set (Set α)
s✝ : Set α
β : Type u_2
inst✝ : TopologicalSpace β
s : Set α
f : α → β
hf : Continuous f
c : Set α
c_count : c.Countable
hc : s ⊆ closure c
⊢ IsSeparable (f '' s)
state_after: case intro.intro
α : Type u
β✝ : Type u_1
t : TopologicalSpace α
B : Set (Set α)
s✝ : Set α
β : Type u_2
inst✝ : TopologicalSpace β
s : Set α
f : α → β
hf : Continuous f
c : Set α
c_count : c.Countable
hc : s ⊆ closure c
⊢ f '' s ⊆ closure (f '' c)

tactic: rw [image_subset_iff]
state_before: case intro.intro
α : Type u
β✝ : Type u_1
t : TopologicalSpace α
B : Set (Set α)
s✝ : Set α
β : Type u_2
inst✝ : TopologicalSpace β
s : Set α
f : α → β
hf : Continuous f
c : Set α
c_count : c.Countable
hc : s ⊆ closure c
⊢ f '' s ⊆ closure (f '' c)
state_after: case intro.intro
α : Type u
β✝ : Type u_1
t : TopologicalSpace α
B : Set (Set α)
s✝ : Set α
β : Type u_2
inst✝ : TopologicalSpace β
s : Set α
f : α → β
hf : Continuous f
c : Set α
c_count : c.Countable
hc : s ⊆ closure c
⊢ s ⊆ f ⁻¹' closure (f '' c)

tactic: exact hc.trans (closure_subset_preimage_closure_image hf)
state_before: case intro.intro
α : Type u
β✝ : Type u_1
t : TopologicalSpace α
B : Set (Set α)
s✝ : Set α
β : Type u_2
inst✝ : TopologicalSpace β
s : Set α
f : α → β
hf : Continuous f
c : Set α
c_count : c.Countable
hc : s ⊆ closure c
⊢ s ⊆ f ⁻¹' closure (f '' c)
state_after: no goals
Theorem: Stream'.WSeq.tail_think
File: Mathlib/Data/Seq/WSeq.lean

tactic: simp [tail]
state_before: α : Type u
β : Type v
γ : Type w
s : WSeq α
⊢ s.think.tail = s.tail.think
state_after: no goals
Theorem: DirectSum.linearEquivFunOnFintype_symm_coe
File: Mathlib/Algebra/DirectSum/Module.lean

tactic: simp [linearEquivFunOnFintype]
state_before: R : Type u
inst✝⁵ : Semiring R
ι : Type v
dec_ι : DecidableEq ι
M : ι → Type w
inst✝⁴ : (i : ι) → AddCommMonoid (M i)
inst✝³ : (i : ι) → Module R (M i)
N : Type u₁
inst✝² : AddCommMonoid N
inst✝¹ : Module R N
φ : (i : ι) → M i →ₗ[R] N
ψ ψ' : (⨁ (i : ι), M i) →ₗ[R] N
inst✝ : Fintype ι
f : ⨁ (i : ι), M i
⊢ (linearEquivFunOnFintype R ι M).symm ⇑f = f
state_after: no goals
Theorem: nhds_basis_zero_abs_sub_lt
File: Mathlib/Topology/Order/LeftRightNhds.lean

tactic: simpa using nhds_basis_abs_sub_lt (0 : α)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrderedAddCommGroup α
inst✝¹ : OrderTopology α
l : Filter β
f g : β → α
inst✝ : NoMaxOrder α
⊢ (𝓝 0).HasBasis (fun ε => 0 < ε) fun ε => {b | |b| < ε}
state_after: no goals
Theorem: Filter.coprod_neBot_iff
File: Mathlib/Order/Filter/Prod.lean

tactic: simp [Filter.coprod]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
f : Filter α
g : Filter β
⊢ (f.coprod g).NeBot ↔ f.NeBot ∧ Nonempty β ∨ Nonempty α ∧ g.NeBot
state_after: no goals
Theorem: FdRep.char_conj
File: Mathlib/RepresentationTheory/Character.lean

tactic: rw [char_mul_comm, inv_mul_cancel_left]
state_before: k : Type u
inst✝¹ : Field k
G : Type u
inst✝ : Group G
V : FdRep k G
g h : G
⊢ V.character (h * g * h⁻¹) = V.character g
state_after: no goals
Theorem: LieHom.range_eq_top
File: Mathlib/Algebra/Lie/Submodule.lean

tactic: rw [← LieSubalgebra.coe_to_submodule_eq_iff, range_coeSubmodule, LieSubalgebra.top_coe_submodule]
state_before: R : Type u
L : Type v
L' : Type w₂
M : Type w
M' : Type w₁
inst✝¹² : CommRing R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra R L
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 M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
f : L →ₗ⁅R⁆ L'
I : LieIdeal R L
J : LieIdeal R L'
⊢ f.range = ⊤ ↔ Function.Surjective ⇑f
state_after: R : Type u
L : Type v
L' : Type w₂
M : Type w
M' : Type w₁
inst✝¹² : CommRing R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra R L
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 M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
f : L →ₗ⁅R⁆ L'
I : LieIdeal R L
J : LieIdeal R L'
⊢ LinearMap.range ↑f = ⊤ ↔ Function.Surjective ⇑f

tactic: exact LinearMap.range_eq_top
state_before: R : Type u
L : Type v
L' : Type w₂
M : Type w
M' : Type w₁
inst✝¹² : CommRing R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra R L
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 M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
f : L →ₗ⁅R⁆ L'
I : LieIdeal R L
J : LieIdeal R L'
⊢ LinearMap.range ↑f = ⊤ ↔ Function.Surjective ⇑f
state_after: no goals
Theorem: Finset.erase_sdiff_distrib
File: Mathlib/Data/Finset/Basic.lean

tactic: simp_rw [erase_eq, sdiff_sdiff, sup_sdiff_eq_sup le_rfl, sup_comm]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s✝ t✝ u v : Finset α
a✝ b : α
s t : Finset α
a : α
⊢ (s \ t).erase a = s.erase a \ t.erase a
state_after: no goals
Theorem: Real.arctan_inv_of_neg
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Arctan.lean

tactic: have := arctan_inv_of_pos (neg_pos.mpr h)
state_before: x : ℝ
h : x < 0
⊢ arctan x⁻¹ = -(π / 2) - arctan x
state_after: x : ℝ
h : x < 0
this : arctan (-x)⁻¹ = π / 2 - arctan (-x)
⊢ arctan x⁻¹ = -(π / 2) - arctan x

tactic: rwa [inv_neg, arctan_neg, neg_eq_iff_eq_neg, neg_sub', arctan_neg, neg_neg] at this
state_before: x : ℝ
h : x < 0
this : arctan (-x)⁻¹ = π / 2 - arctan (-x)
⊢ arctan x⁻¹ = -(π / 2) - arctan x
state_after: no goals
Theorem: Set.isWF_univ_iff
File: Mathlib/Order/WellFoundedSet.lean

tactic: simp [IsWF, wellFoundedOn_iff]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
π : ι → Type u_5
inst✝ : LT α
s t : Set α
⊢ univ.IsWF ↔ WellFounded fun x x_1 => x < x_1
state_after: no goals
Theorem: Real.toNNReal_le_toNNReal_iff
File: Mathlib/Data/NNReal/Basic.lean

tactic: simp [← NNReal.coe_le_coe, hp]
state_before: r p : ℝ
hp : 0 ≤ p
⊢ r.toNNReal ≤ p.toNNReal ↔ r ≤ p
state_after: no goals
Theorem: Set.Finite.toFinset_setOf
File: Mathlib/Data/Set/Finite.lean

tactic: ext
state_before: α : Type u
β : Type v
ι : Sort w
γ : Type x
s t : Set α
a : α
hs : s.Finite
ht : t.Finite
inst✝¹ : Fintype α
p : α → Prop
inst✝ : DecidablePred p
h : {x | p x}.Finite
⊢ h.toFinset = Finset.filter p Finset.univ
state_after: case a
α : Type u
β : Type v
ι : Sort w
γ : Type x
s t : Set α
a : α
hs : s.Finite
ht : t.Finite
inst✝¹ : Fintype α
p : α → Prop
inst✝ : DecidablePred p
h : {x | p x}.Finite
a✝ : α
⊢ a✝ ∈ h.toFinset ↔ a✝ ∈ Finset.filter p Finset.univ

tactic: simp [Set.toFinset_setOf _]
state_before: case a
α : Type u
β : Type v
ι : Sort w
γ : Type x
s t : Set α
a : α
hs : s.Finite
ht : t.Finite
inst✝¹ : Fintype α
p : α → Prop
inst✝ : DecidablePred p
h : {x | p x}.Finite
a✝ : α
⊢ a✝ ∈ h.toFinset ↔ a✝ ∈ Finset.filter p Finset.univ
state_after: no goals
Theorem: MvPolynomial.isRegular_X
File: Mathlib/Algebra/MvPolynomial/Basic.lean

tactic: suffices IsLeftRegular (X n : MvPolynomial σ R) from
  ⟨this, this.right_of_commute <| Commute.all _⟩
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
⊢ IsRegular (X n)
state_after: 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
⊢ IsLeftRegular (X n)

tactic: intro P Q (hPQ : (X n) * P = (X n) * Q)
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
⊢ IsLeftRegular (X n)
state_after: 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 P Q : MvPolynomial σ R
hPQ : X n * P = X n * Q
⊢ P = Q

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 P Q : MvPolynomial σ R
hPQ : X n * P = X n * Q
⊢ P = Q
state_after: case a
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 P Q : MvPolynomial σ R
hPQ : X n * P = X n * Q
i : σ →₀ ℕ
⊢ coeff i P = coeff i Q

tactic: rw [← coeff_X_mul i n P, hPQ, coeff_X_mul i n Q]
state_before: case a
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 P Q : MvPolynomial σ R
hPQ : X n * P = X n * Q
i : σ →₀ ℕ
⊢ coeff i P = coeff i Q
state_after: no goals
Theorem: CategoryTheory.unop_inv
File: Mathlib/CategoryTheory/Opposites.lean

tactic: apply IsIso.eq_inv_of_hom_inv_id
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X Y : Cᵒᵖ
f : X ⟶ Y
inst✝ : IsIso f
⊢ (inv f).unop = inv f.unop
state_after: case hom_inv_id
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X Y : Cᵒᵖ
f : X ⟶ Y
inst✝ : IsIso f
⊢ f.unop ≫ (inv f).unop = 𝟙 Y.unop

tactic: rw [← unop_comp, IsIso.inv_hom_id, unop_id]
state_before: case hom_inv_id
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X Y : Cᵒᵖ
f : X ⟶ Y
inst✝ : IsIso f
⊢ f.unop ≫ (inv f).unop = 𝟙 Y.unop
state_after: no goals
Theorem: CauSeq.Completion.inv_zero
File: Mathlib/Algebra/Order/CauSeq/Completion.lean

tactic: rw [dif_pos] <;> [rfl; exact zero_limZero]
state_before: α : Type u_1
inst✝² : LinearOrderedField α
β : Type u_2
inst✝¹ : DivisionRing β
abv : β → α
inst✝ : IsAbsoluteValue abv
⊢ (if h : (const abv 0).LimZero then 0 else (const abv 0).inv h) = const abv 0
state_after: no goals
Theorem: dist_le_of_le_geometric_two_of_tendsto
File: Mathlib/Analysis/SpecificLimits/Basic.lean

tactic: convert dist_le_tsum_of_dist_le_of_tendsto _ hu₂ (summable_geometric_two' C) ha n
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : PseudoMetricSpace α
r C : ℝ
hr : r < 1
f : ℕ → α
hu : ∀ (n : ℕ), dist (f n) (f (n + 1)) ≤ C * r ^ n
hu₂ : ∀ (n : ℕ), dist (f n) (f (n + 1)) ≤ C / 2 / 2 ^ n
a : α
ha : Tendsto f atTop (𝓝 a)
n : ℕ
⊢ dist (f n) a ≤ C / 2 ^ n
state_after: case h.e'_4
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : PseudoMetricSpace α
r C : ℝ
hr : r < 1
f : ℕ → α
hu : ∀ (n : ℕ), dist (f n) (f (n + 1)) ≤ C * r ^ n
hu₂ : ∀ (n : ℕ), dist (f n) (f (n + 1)) ≤ C / 2 / 2 ^ n
a : α
ha : Tendsto f atTop (𝓝 a)
n : ℕ
⊢ C / 2 ^ n = ∑' (m : ℕ), C / 2 / 2 ^ (n + m)

tactic: simp only [add_comm n, pow_add, ← div_div]
state_before: case h.e'_4
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : PseudoMetricSpace α
r C : ℝ
hr : r < 1
f : ℕ → α
hu : ∀ (n : ℕ), dist (f n) (f (n + 1)) ≤ C * r ^ n
hu₂ : ∀ (n : ℕ), dist (f n) (f (n + 1)) ≤ C / 2 / 2 ^ n
a : α
ha : Tendsto f atTop (𝓝 a)
n : ℕ
⊢ C / 2 ^ n = ∑' (m : ℕ), C / 2 / 2 ^ (n + m)
state_after: case h.e'_4
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : PseudoMetricSpace α
r C : ℝ
hr : r < 1
f : ℕ → α
hu : ∀ (n : ℕ), dist (f n) (f (n + 1)) ≤ C * r ^ n
hu₂ : ∀ (n : ℕ), dist (f n) (f (n + 1)) ≤ C / 2 / 2 ^ n
a : α
ha : Tendsto f atTop (𝓝 a)
n : ℕ
⊢ C / 2 ^ n = ∑' (m : ℕ), C / 2 / 2 ^ m / 2 ^ n

tactic: symm
state_before: case h.e'_4
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : PseudoMetricSpace α
r C : ℝ
hr : r < 1
f : ℕ → α
hu : ∀ (n : ℕ), dist (f n) (f (n + 1)) ≤ C * r ^ n
hu₂ : ∀ (n : ℕ), dist (f n) (f (n + 1)) ≤ C / 2 / 2 ^ n
a : α
ha : Tendsto f atTop (𝓝 a)
n : ℕ
⊢ C / 2 ^ n = ∑' (m : ℕ), C / 2 / 2 ^ m / 2 ^ n
state_after: case h.e'_4
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : PseudoMetricSpace α
r C : ℝ
hr : r < 1
f : ℕ → α
hu : ∀ (n : ℕ), dist (f n) (f (n + 1)) ≤ C * r ^ n
hu₂ : ∀ (n : ℕ), dist (f n) (f (n + 1)) ≤ C / 2 / 2 ^ n
a : α
ha : Tendsto f atTop (𝓝 a)
n : ℕ
⊢ ∑' (m : ℕ), C / 2 / 2 ^ m / 2 ^ n = C / 2 ^ n

tactic: exact ((hasSum_geometric_two' C).div_const _).tsum_eq
state_before: case h.e'_4
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : PseudoMetricSpace α
r C : ℝ
hr : r < 1
f : ℕ → α
hu : ∀ (n : ℕ), dist (f n) (f (n + 1)) ≤ C * r ^ n
hu₂ : ∀ (n : ℕ), dist (f n) (f (n + 1)) ≤ C / 2 / 2 ^ n
a : α
ha : Tendsto f atTop (𝓝 a)
n : ℕ
⊢ ∑' (m : ℕ), C / 2 / 2 ^ m / 2 ^ n = C / 2 ^ n
state_after: no goals