1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Multiset.toFinset_union
File: Mathlib/Data/Finset/Basic.lean

tactic: ext
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s✝ t✝ s t : Multiset α
⊢ (s ∪ t).toFinset = s.toFinset ∪ t.toFinset
state_after: case a
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s✝ t✝ s t : Multiset α
a✝ : α
⊢ a✝ ∈ (s ∪ t).toFinset ↔ a✝ ∈ s.toFinset ∪ t.toFinset

tactic: simp
state_before: case a
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s✝ t✝ s t : Multiset α
a✝ : α
⊢ a✝ ∈ (s ∪ t).toFinset ↔ a✝ ∈ s.toFinset ∪ t.toFinset
state_after: no goals
Theorem: DiscreteValuationRing.unit_mul_pow_congr_unit
File: Mathlib/RingTheory/DiscreteValuationRing/Basic.lean

tactic: obtain rfl : m = n := unit_mul_pow_congr_pow hirr hirr u v m n h
state_before: R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : DiscreteValuationRing R
ϖ : R
hirr : Irreducible ϖ
u v : Rˣ
m n : ℕ
h : ↑u * ϖ ^ m = ↑v * ϖ ^ n
⊢ u = v
state_after: R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : DiscreteValuationRing R
ϖ : R
hirr : Irreducible ϖ
u v : Rˣ
m : ℕ
h : ↑u * ϖ ^ m = ↑v * ϖ ^ m
⊢ u = v

tactic: rw [← sub_eq_zero] at h
state_before: R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : DiscreteValuationRing R
ϖ : R
hirr : Irreducible ϖ
u v : Rˣ
m : ℕ
h : ↑u * ϖ ^ m = ↑v * ϖ ^ m
⊢ u = v
state_after: R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : DiscreteValuationRing R
ϖ : R
hirr : Irreducible ϖ
u v : Rˣ
m : ℕ
h : ↑u * ϖ ^ m - ↑v * ϖ ^ m = 0
⊢ u = v

tactic: rw [← sub_mul, mul_eq_zero] at h
state_before: R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : DiscreteValuationRing R
ϖ : R
hirr : Irreducible ϖ
u v : Rˣ
m : ℕ
h : ↑u * ϖ ^ m - ↑v * ϖ ^ m = 0
⊢ u = v
state_after: R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : DiscreteValuationRing R
ϖ : R
hirr : Irreducible ϖ
u v : Rˣ
m : ℕ
h : ↑u - ↑v = 0 ∨ ϖ ^ m = 0
⊢ u = v

tactic: cases' h with h h
state_before: R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : DiscreteValuationRing R
ϖ : R
hirr : Irreducible ϖ
u v : Rˣ
m : ℕ
h : ↑u - ↑v = 0 ∨ ϖ ^ m = 0
⊢ u = v
state_after: case inl
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : DiscreteValuationRing R
ϖ : R
hirr : Irreducible ϖ
u v : Rˣ
m : ℕ
h : ↑u - ↑v = 0
⊢ u = v

case inr
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : DiscreteValuationRing R
ϖ : R
hirr : Irreducible ϖ
u v : Rˣ
m : ℕ
h : ϖ ^ m = 0
⊢ u = v

tactic: rw [sub_eq_zero] at h
state_before: case inl
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : DiscreteValuationRing R
ϖ : R
hirr : Irreducible ϖ
u v : Rˣ
m : ℕ
h : ↑u - ↑v = 0
⊢ u = v
state_after: case inl
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : DiscreteValuationRing R
ϖ : R
hirr : Irreducible ϖ
u v : Rˣ
m : ℕ
h : ↑u = ↑v
⊢ u = v

tactic: exact mod_cast h
state_before: case inl
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : DiscreteValuationRing R
ϖ : R
hirr : Irreducible ϖ
u v : Rˣ
m : ℕ
h : ↑u = ↑v
⊢ u = v
state_after: no goals

tactic: apply (hirr.ne_zero (pow_eq_zero h)).elim
state_before: case inr
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : DiscreteValuationRing R
ϖ : R
hirr : Irreducible ϖ
u v : Rˣ
m : ℕ
h : ϖ ^ m = 0
⊢ u = v
state_after: no goals
Theorem: Basis.equivFun_ofEquivFun
File: Mathlib/LinearAlgebra/Basis.lean

tactic: ext j
state_before: ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
inst✝⁵ : Semiring R
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
inst✝² : AddCommMonoid M'
inst✝¹ : Module R M'
inst✝ : Finite ι
e : M ≃ₗ[R] ι → R
⊢ (ofEquivFun e).equivFun = e
state_after: case h.h
ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
inst✝⁵ : Semiring R
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
inst✝² : AddCommMonoid M'
inst✝¹ : Module R M'
inst✝ : Finite ι
e : M ≃ₗ[R] ι → R
j : M
x✝ : ι
⊢ (ofEquivFun e).equivFun j x✝ = e j x✝

tactic: simp_rw [Basis.equivFun_apply, Basis.ofEquivFun_repr_apply]
state_before: case h.h
ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
inst✝⁵ : Semiring R
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
inst✝² : AddCommMonoid M'
inst✝¹ : Module R M'
inst✝ : Finite ι
e : M ≃ₗ[R] ι → R
j : M
x✝ : ι
⊢ (ofEquivFun e).equivFun j x✝ = e j x✝
state_after: no goals
Theorem: pow_eq_pow_mod
File: Mathlib/Algebra/Group/Basic.lean

tactic: calc
  a ^ m = a ^ (m % n + n * (m / n)) := by rw [Nat.mod_add_div]
  _ = a ^ (m % n) := by simp [pow_add, pow_mul, ha]
state_before: α : Type u_1
β : Type u_2
G : Type u_3
M : Type u_4
inst✝ : Monoid M
a b c : M
m✝ n m : ℕ
ha : a ^ n = 1
⊢ a ^ m = a ^ (m % n)
state_after: no goals

tactic: rw [Nat.mod_add_div]
state_before: α : Type u_1
β : Type u_2
G : Type u_3
M : Type u_4
inst✝ : Monoid M
a b c : M
m✝ n m : ℕ
ha : a ^ n = 1
⊢ a ^ m = a ^ (m % n + n * (m / n))
state_after: no goals

tactic: simp [pow_add, pow_mul, ha]
state_before: α : Type u_1
β : Type u_2
G : Type u_3
M : Type u_4
inst✝ : Monoid M
a b c : M
m✝ n m : ℕ
ha : a ^ n = 1
⊢ a ^ (m % n + n * (m / n)) = a ^ (m % n)
state_after: no goals
Theorem: Fin.insertNth_apply_below
File: Mathlib/Data/Fin/Tuple/Basic.lean

tactic: rw [insertNth, succAboveCases, dif_neg h.ne, dif_pos h]
state_before: m n : ℕ
α : Fin (n + 1) → Type u
β : Type v
i j : Fin (n + 1)
h : j < i
x : α i
p : (k : Fin n) → α (i.succAbove k)
⊢ i.insertNth x p j = Eq.recOn ⋯ (p (j.castPred ⋯))
state_after: no goals
Theorem: Matrix.comp_equiv_symm_dotProduct
File: Mathlib/Data/Matrix/Basic.lean

tactic: simp only [Function.comp, Equiv.symm_apply_apply]
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝² : Fintype m
inst✝¹ : Fintype n
inst✝ : NonUnitalNonAssocSemiring α
u v w : m → α
x y : n → α
e : m ≃ n
x✝¹ : m
x✝ : x✝¹ ∈ Finset.univ
⊢ (u ∘ ⇑e.symm) (e x✝¹) * x (e x✝¹) = u x✝¹ * (x ∘ ⇑e) x✝¹
state_after: no goals
Theorem: PiNat.apply_eq_of_lt_firstDiff
File: Mathlib/Topology/MetricSpace/PiNat.lean

tactic: rw [firstDiff_def] at hn
state_before: E : ℕ → Type u_1
x y : (n : ℕ) → E n
n : ℕ
hn : n < firstDiff x y
⊢ x n = y n
state_after: E : ℕ → Type u_1
x y : (n : ℕ) → E n
n : ℕ
hn : n < if h : x ≠ y then Nat.find ⋯ else 0
⊢ x n = y n

tactic: split_ifs at hn with h
state_before: E : ℕ → Type u_1
x y : (n : ℕ) → E n
n : ℕ
hn : n < if h : x ≠ y then Nat.find ⋯ else 0
⊢ x n = y n
state_after: case pos
E : ℕ → Type u_1
x y : (n : ℕ) → E n
n : ℕ
h : x ≠ y
hn : n < Nat.find ⋯
⊢ x n = y n

case neg
E : ℕ → Type u_1
x y : (n : ℕ) → E n
n : ℕ
h : ¬x ≠ y
hn : n < 0
⊢ x n = y n

tactic: convert Nat.find_min (ne_iff.1 h) hn
state_before: case pos
E : ℕ → Type u_1
x y : (n : ℕ) → E n
n : ℕ
h : x ≠ y
hn : n < Nat.find ⋯
⊢ x n = y n
state_after: case a
E : ℕ → Type u_1
x y : (n : ℕ) → E n
n : ℕ
h : x ≠ y
hn : n < Nat.find ⋯
⊢ x n = y n ↔ ¬x n ≠ y n

tactic: simp
state_before: case a
E : ℕ → Type u_1
x y : (n : ℕ) → E n
n : ℕ
h : x ≠ y
hn : n < Nat.find ⋯
⊢ x n = y n ↔ ¬x n ≠ y n
state_after: no goals

tactic: exact (not_lt_zero' hn).elim
state_before: case neg
E : ℕ → Type u_1
x y : (n : ℕ) → E n
n : ℕ
h : ¬x ≠ y
hn : n < 0
⊢ x n = y n
state_after: no goals
Theorem: CategoryTheory.ComposableArrows.isComplex₁
File: Mathlib/Algebra/Homology/ExactSequence.lean

tactic: exfalso
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : HasZeroMorphisms C
n : ℕ
S✝ : ComposableArrows C n
S : ComposableArrows C 1
i : ℕ
hi : autoParam (i + 2 ≤ 1) _auto✝
⊢ S.map' i (i + 1) ⋯ ⋯ ≫ S.map' (i + 1) (i + 2) ⋯ hi = 0
state_after: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : HasZeroMorphisms C
n : ℕ
S✝ : ComposableArrows C n
S : ComposableArrows C 1
i : ℕ
hi : autoParam (i + 2 ≤ 1) _auto✝
⊢ False

tactic: omega
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : HasZeroMorphisms C
n : ℕ
S✝ : ComposableArrows C n
S : ComposableArrows C 1
i : ℕ
hi : autoParam (i + 2 ≤ 1) _auto✝
⊢ False
state_after: no goals
Theorem: csSup_mem_of_not_isSuccLimit
File: Mathlib/Order/SuccPred/CompleteLinearOrder.lean

tactic: obtain ⟨y, hy⟩ := not_forall_not.mp hlim
state_before: ι : Type u_1
α : Type u_2
inst✝¹ : ConditionallyCompleteLinearOrder α
inst✝ : Nonempty ι
f : ι → α
s : Set α
x : α
hne : s.Nonempty
hbdd : BddAbove s
hlim : ¬IsSuccLimit (sSup s)
⊢ sSup s ∈ s
state_after: case intro
ι : Type u_1
α : Type u_2
inst✝¹ : ConditionallyCompleteLinearOrder α
inst✝ : Nonempty ι
f : ι → α
s : Set α
x : α
hne : s.Nonempty
hbdd : BddAbove s
hlim : ¬IsSuccLimit (sSup s)
y : α
hy : y ⋖ sSup s
⊢ sSup s ∈ s

tactic: obtain ⟨i, his, hi⟩ := exists_lt_of_lt_csSup hne hy.lt
state_before: case intro
ι : Type u_1
α : Type u_2
inst✝¹ : ConditionallyCompleteLinearOrder α
inst✝ : Nonempty ι
f : ι → α
s : Set α
x : α
hne : s.Nonempty
hbdd : BddAbove s
hlim : ¬IsSuccLimit (sSup s)
y : α
hy : y ⋖ sSup s
⊢ sSup s ∈ s
state_after: case intro.intro.intro
ι : Type u_1
α : Type u_2
inst✝¹ : ConditionallyCompleteLinearOrder α
inst✝ : Nonempty ι
f : ι → α
s : Set α
x : α
hne : s.Nonempty
hbdd : BddAbove s
hlim : ¬IsSuccLimit (sSup s)
y : α
hy : y ⋖ sSup s
i : α
his : i ∈ s
hi : y < i
⊢ sSup s ∈ s

tactic: exact eq_of_le_of_not_lt (le_csSup hbdd his) (hy.2 hi) ▸ his
state_before: case intro.intro.intro
ι : Type u_1
α : Type u_2
inst✝¹ : ConditionallyCompleteLinearOrder α
inst✝ : Nonempty ι
f : ι → α
s : Set α
x : α
hne : s.Nonempty
hbdd : BddAbove s
hlim : ¬IsSuccLimit (sSup s)
y : α
hy : y ⋖ sSup s
i : α
his : i ∈ s
hi : y < i
⊢ sSup s ∈ s
state_after: no goals
Theorem: Dense.isSeparable_iff
File: Mathlib/Topology/Bases.lean

tactic: simp_rw [IsSeparable, separableSpace_iff, dense_iff_closure_eq, ← univ_subset_iff,
  ← hs.closure_eq, isClosed_closure.closure_subset_iff]
state_before: α : Type u
β : Type u_1
t : TopologicalSpace α
B : Set (Set α)
s : Set α
hs : Dense s
⊢ IsSeparable s ↔ SeparableSpace α
state_after: no goals
Theorem: CoalgebraCat.Hom.toCoalgHom_injective
File: Mathlib/Algebra/Category/CoalgebraCat/Basic.lean

tactic: congr
state_before: R : Type u
inst✝ : CommRing R
V W : CoalgebraCat R
x✝² x✝¹ : V.Hom W
f g : ↑V.toModuleCat →ₗc[R] ↑W.toModuleCat
x✝ : { toCoalgHom := f }.toCoalgHom = { toCoalgHom := g }.toCoalgHom
⊢ { toCoalgHom := f } = { toCoalgHom := g }
state_after: no goals
Theorem: Equiv.Perm.apply_zpow_apply_eq_iff
File: Mathlib/GroupTheory/Perm/Support.lean

tactic: rw [← mul_apply, Commute.self_zpow f, mul_apply, apply_eq_iff_eq]
state_before: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ g f : Perm α
n : ℤ
x : α
⊢ f ((f ^ n) x) = (f ^ n) x ↔ f x = x
state_after: no goals
Theorem: HomologicalComplex.homologyIsoSc'_inv_ι
File: Mathlib/Algebra/Homology/ShortComplex/HomologicalComplex.lean

tactic: apply ShortComplex.homologyι_naturality
state_before: C : Type u_1
inst✝³ : Category.{u_3, u_1} C
inst✝² : HasZeroMorphisms C
ι : Type u_2
c : ComplexShape ι
K : HomologicalComplex C c
i j k : ι
hi : c.prev j = i
hk : c.next j = k
inst✝¹ : K.HasHomology j
inst✝ : (K.sc' i j k).HasHomology
⊢ (K.homologyIsoSc' i j k hi hk).inv ≫ K.homologyι j = (K.sc' i j k).homologyι ≫ (K.opcyclesIsoSc' i j k hi hk).inv
state_after: no goals
Theorem: AddConstMapClass.map_const_add
File: Mathlib/Algebra/AddConstMap/Basic.lean

tactic: rw [add_comm, map_add_const]
state_before: F : Type u_1
G : Type u_2
H : Type u_3
inst✝³ : FunLike F G H
a : G
b : H
inst✝² : AddCommSemigroup G
inst✝¹ : Add H
inst✝ : AddConstMapClass F G H a b
f : F
x : G
⊢ f (a + x) = f x + b
state_after: no goals
Theorem: List.isRotated_singleton_iff
File: Mathlib/Data/List/Rotate.lean

tactic: simpa using hn
state_before: α : Type u
l l' : List α
x : α
x✝ : l ~r [x]
n : ℕ
hn : l.rotate n = [x]
⊢ l = [x]
state_after: no goals

tactic: rfl
state_before: α : Type u
l l' : List α
x : α
h : l = [x]
⊢ l ~r l
state_after: no goals
Theorem: MeasureTheory.NullMeasurableSet.toMeasurable_ae_eq
File: Mathlib/MeasureTheory/Measure/NullMeasurable.lean

tactic: rw [toMeasurable_def, dif_pos]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
m0 : MeasurableSpace α
μ : Measure α
s t : Set α
h : NullMeasurableSet s μ
⊢ toMeasurable μ s =ᶠ[ae μ] s
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
m0 : MeasurableSpace α
μ : Measure α
s t : Set α
h : NullMeasurableSet s μ
⊢ ?hc.choose =ᶠ[ae μ] s

case hc
ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
m0 : MeasurableSpace α
μ : Measure α
s t : Set α
h : NullMeasurableSet s μ
⊢ ∃ t ⊇ s, MeasurableSet t ∧ t =ᶠ[ae μ] s

tactic: exact (exists_measurable_superset_ae_eq h).choose_spec.2.2
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
m0 : MeasurableSpace α
μ : Measure α
s t : Set α
h : NullMeasurableSet s μ
⊢ ?hc.choose =ᶠ[ae μ] s

case hc
ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
m0 : MeasurableSpace α
μ : Measure α
s t : Set α
h : NullMeasurableSet s μ
⊢ ∃ t ⊇ s, MeasurableSet t ∧ t =ᶠ[ae μ] s
state_after: no goals
Theorem: inf_symmDiff_distrib_right
File: Mathlib/Order/SymmDiff.lean

tactic: simp_rw [inf_comm _ c, inf_symmDiff_distrib_left]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝ : GeneralizedBooleanAlgebra α
a b c d : α
⊢ a ∆ b ⊓ c = (a ⊓ c) ∆ (b ⊓ c)
state_after: no goals
Theorem: AlgebraicGeometry.ΓSpecIso_obj_hom
File: Mathlib/AlgebraicGeometry/GammaSpecAdjunction.lean

tactic: dsimp [-Scheme.SpecΓIdentity_hom_app]
state_before: X : Scheme
U : Opens ↑↑X.toPresheafedSpace
⊢ (Scheme.ΓSpecIso Γ(X, U)).hom =
    Scheme.Γ.map (Spec.map (X.presheaf.map (eqToHom ⋯).op)).op ≫
      Scheme.Hom.app (ΓSpec.adjunction.unit.app (X ∣_ᵤ U)) ⊤ ≫ X.presheaf.map (eqToHom ⋯).op
state_after: X : Scheme
U : Opens ↑↑X.toPresheafedSpace
⊢ (Scheme.ΓSpecIso Γ(X, U)).hom =
    Scheme.Hom.app (Spec.map (X.presheaf.map (eqToHom ⋯).op)) ⊤ ≫
      Scheme.Hom.app (ΓSpec.adjunction.unit.app (X ∣_ᵤ U)) ⊤ ≫ X.presheaf.map (eqToHom ⋯).op

tactic: rw [ΓSpec.adjunction_unit_app_app_top]
state_before: X : Scheme
U : Opens ↑↑X.toPresheafedSpace
⊢ (Scheme.ΓSpecIso Γ(X, U)).hom =
    Scheme.Hom.app (Spec.map (X.presheaf.map (eqToHom ⋯).op)) ⊤ ≫
      Scheme.Hom.app (ΓSpec.adjunction.unit.app (X ∣_ᵤ U)) ⊤ ≫ X.presheaf.map (eqToHom ⋯).op
state_after: X : Scheme
U : Opens ↑↑X.toPresheafedSpace
⊢ (Scheme.ΓSpecIso Γ(X, U)).hom =
    Scheme.Hom.app (Spec.map (X.presheaf.map (eqToHom ⋯).op)) ⊤ ≫
      (Scheme.ΓSpecIso Γ(X ∣_ᵤ U, ⊤)).hom ≫ X.presheaf.map (eqToHom ⋯).op

tactic: simp
state_before: X : Scheme
U : Opens ↑↑X.toPresheafedSpace
⊢ (Scheme.ΓSpecIso Γ(X, U)).hom =
    Scheme.Hom.app (Spec.map (X.presheaf.map (eqToHom ⋯).op)) ⊤ ≫
      (Scheme.ΓSpecIso Γ(X ∣_ᵤ U, ⊤)).hom ≫ X.presheaf.map (eqToHom ⋯).op
state_after: no goals
Theorem: CategoryTheory.Limits.limit.lift_extend
File: Mathlib/CategoryTheory/Limits/HasLimits.lean

tactic: aesop_cat
state_before: J : Type u₁
inst✝³ : Category.{v₁, u₁} J
K : Type u₂
inst✝² : Category.{v₂, u₂} K
C : Type u
inst✝¹ : Category.{v, u} C
F✝ F : J ⥤ C
inst✝ : HasLimit F
c : Cone F
X : C
f : X ⟶ c.pt
⊢ lift F (c.extend f) = f ≫ lift F c
state_after: no goals
Theorem: cfc_inv
File: Mathlib/Topology/ContinuousFunction/FunctionalCalculus.lean

tactic: rw [← val_inv_cfcUnits f a hf', ← val_cfcUnits f a hf', Ring.inverse_unit]
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
hf' : ∀ x ∈ spectrum R a, f x ≠ 0
hf : autoParam (ContinuousOn f (spectrum R a)) _auto✝
ha : autoParam (p a) _auto✝
⊢ cfc (fun x => (f x)⁻¹) a = Ring.inverse (cfc f a)
state_after: no goals
Theorem: ContDiffAt.prod_map'
File: Mathlib/Analysis/Calculus/ContDiff/Basic.lean

tactic: rcases p with ⟨⟩
state_before: 𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝¹³ : NormedAddCommGroup D
inst✝¹² : NormedSpace 𝕜 D
E : Type uE
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝⁷ : NormedAddCommGroup G
inst✝⁶ : NormedSpace 𝕜 G
X : Type u_2
inst✝⁵ : NormedAddCommGroup X
inst✝⁴ : NormedSpace 𝕜 X
s s₁ t u : Set E
f✝ f₁ : E → F
g✝ : F → G
x x₀ : E
c : F
b : E × F → G
m n : ℕ∞
p✝ : E → FormalMultilinearSeries 𝕜 E F
E' : Type u_3
inst✝³ : NormedAddCommGroup E'
inst✝² : NormedSpace 𝕜 E'
F' : Type u_4
inst✝¹ : NormedAddCommGroup F'
inst✝ : NormedSpace 𝕜 F'
f : E → F
g : E' → F'
p : E × E'
hf : ContDiffAt 𝕜 n f p.1
hg : ContDiffAt 𝕜 n g p.2
⊢ ContDiffAt 𝕜 n (Prod.map f g) p
state_after: case mk
𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝¹³ : NormedAddCommGroup D
inst✝¹² : NormedSpace 𝕜 D
E : Type uE
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝⁷ : NormedAddCommGroup G
inst✝⁶ : NormedSpace 𝕜 G
X : Type u_2
inst✝⁵ : NormedAddCommGroup X
inst✝⁴ : NormedSpace 𝕜 X
s s₁ t u : Set E
f✝ f₁ : E → F
g✝ : F → G
x x₀ : E
c : F
b : E × F → G
m n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
E' : Type u_3
inst✝³ : NormedAddCommGroup E'
inst✝² : NormedSpace 𝕜 E'
F' : Type u_4
inst✝¹ : NormedAddCommGroup F'
inst✝ : NormedSpace 𝕜 F'
f : E → F
g : E' → F'
fst✝ : E
snd✝ : E'
hf : ContDiffAt 𝕜 n f (fst✝, snd✝).1
hg : ContDiffAt 𝕜 n g (fst✝, snd✝).2
⊢ ContDiffAt 𝕜 n (Prod.map f g) (fst✝, snd✝)

tactic: exact ContDiffAt.prod_map hf hg
state_before: case mk
𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝¹³ : NormedAddCommGroup D
inst✝¹² : NormedSpace 𝕜 D
E : Type uE
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝⁷ : NormedAddCommGroup G
inst✝⁶ : NormedSpace 𝕜 G
X : Type u_2
inst✝⁵ : NormedAddCommGroup X
inst✝⁴ : NormedSpace 𝕜 X
s s₁ t u : Set E
f✝ f₁ : E → F
g✝ : F → G
x x₀ : E
c : F
b : E × F → G
m n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
E' : Type u_3
inst✝³ : NormedAddCommGroup E'
inst✝² : NormedSpace 𝕜 E'
F' : Type u_4
inst✝¹ : NormedAddCommGroup F'
inst✝ : NormedSpace 𝕜 F'
f : E → F
g : E' → F'
fst✝ : E
snd✝ : E'
hf : ContDiffAt 𝕜 n f (fst✝, snd✝).1
hg : ContDiffAt 𝕜 n g (fst✝, snd✝).2
⊢ ContDiffAt 𝕜 n (Prod.map f g) (fst✝, snd✝)
state_after: no goals
Theorem: exists_set_linearIndependent_of_lt_rank
File: Mathlib/LinearAlgebra/Dimension/Finite.lean

tactic: obtain ⟨⟨s, hs⟩, hs'⟩ := exists_lt_of_lt_ciSup' (hn.trans_eq (Module.rank_def R M))
state_before: R : Type u
M M₁ : Type v
M' : Type v'
ι : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M₁
inst✝ : StrongRankCondition R
n : Cardinal.{v}
hn : n < Module.rank R M
⊢ ∃ s, #↑s = n ∧ LinearIndependent (ι := { x // x ∈ s }) R Subtype.val
state_after: case intro.mk
R : Type u
M M₁ : Type v
M' : Type v'
ι : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M₁
inst✝ : StrongRankCondition R
n : Cardinal.{v}
hn : n < Module.rank R M
s : Set M
hs : LinearIndependent (ι := { x // x ∈ s }) R Subtype.val
hs' : n < #↑↑⟨s, hs⟩
⊢ ∃ s, #↑s = n ∧ LinearIndependent (ι := { x // x ∈ s }) R Subtype.val

tactic: obtain ⟨t, ht, ht'⟩ := le_mk_iff_exists_subset.mp hs'.le
state_before: case intro.mk
R : Type u
M M₁ : Type v
M' : Type v'
ι : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M₁
inst✝ : StrongRankCondition R
n : Cardinal.{v}
hn : n < Module.rank R M
s : Set M
hs : LinearIndependent (ι := { x // x ∈ s }) R Subtype.val
hs' : n < #↑↑⟨s, hs⟩
⊢ ∃ s, #↑s = n ∧ LinearIndependent (ι := { x // x ∈ s }) R Subtype.val
state_after: case intro.mk.intro.intro
R : Type u
M M₁ : Type v
M' : Type v'
ι : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M₁
inst✝ : StrongRankCondition R
n : Cardinal.{v}
hn : n < Module.rank R M
s : Set M
hs : LinearIndependent (ι := { x // x ∈ s }) R Subtype.val
hs' : n < #↑↑⟨s, hs⟩
t : Set M
ht : t ⊆ ↑⟨s, hs⟩
ht' : #↑t = n
⊢ ∃ s, #↑s = n ∧ LinearIndependent (ι := { x // x ∈ s }) R Subtype.val

tactic: exact ⟨t, ht', .mono ht hs⟩
state_before: case intro.mk.intro.intro
R : Type u
M M₁ : Type v
M' : Type v'
ι : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M₁
inst✝ : StrongRankCondition R
n : Cardinal.{v}
hn : n < Module.rank R M
s : Set M
hs : LinearIndependent (ι := { x // x ∈ s }) R Subtype.val
hs' : n < #↑↑⟨s, hs⟩
t : Set M
ht : t ⊆ ↑⟨s, hs⟩
ht' : #↑t = n
⊢ ∃ s, #↑s = n ∧ LinearIndependent (ι := { x // x ∈ s }) R Subtype.val
state_after: no goals
Theorem: Nat.pred_sub
File: Mathlib/Data/Nat/Defs.lean

tactic: rw [← Nat.sub_one, Nat.sub_sub, one_add, sub_succ]
state_before: a b c d m✝ n✝ k : ℕ
p q : ℕ → Prop
n m : ℕ
⊢ n.pred - m = (n - m).pred
state_after: no goals
Theorem: Multiset.Ico_add_Ico_eq_Ico
File: Mathlib/Order/Interval/Multiset.lean

tactic: rw [add_eq_union_iff_disjoint.2 (Ico_disjoint_Ico le_rfl), Ico, Ico, Ico, ← Finset.union_val,
  Finset.Ico_union_Ico_eq_Ico hab hbc]
state_before: α : Type u_1
inst✝¹ : LinearOrder α
inst✝ : LocallyFiniteOrder α
a✝ b✝ c✝ d a b c : α
hab : a ≤ b
hbc : b ≤ c
⊢ Ico a b + Ico b c = Ico a c
state_after: no goals
Theorem: Mathlib.Meta.NormNum.isRat_neg
File: Mathlib/Tactic/NormNum/Basic.lean

tactic: rw [← neg_mul, ← Int.cast_neg]
state_before: α : Type u_1
inst✝ : Ring α
num✝ : ℤ
denom✝ : ℕ
h : Invertible ↑denom✝
⊢ -(↑num✝ * ⅟↑denom✝) = ↑num✝.neg * ⅟↑denom✝
state_after: α : Type u_1
inst✝ : Ring α
num✝ : ℤ
denom✝ : ℕ
h : Invertible ↑denom✝
⊢ ↑(-num✝) * ⅟↑denom✝ = ↑num✝.neg * ⅟↑denom✝

tactic: rfl
state_before: α : Type u_1
inst✝ : Ring α
num✝ : ℤ
denom✝ : ℕ
h : Invertible ↑denom✝
⊢ ↑(-num✝) * ⅟↑denom✝ = ↑num✝.neg * ⅟↑denom✝
state_after: no goals
Theorem: CategoryTheory.Localization.homEquiv_eq
File: Mathlib/CategoryTheory/Localization/HomEquiv.lean

tactic: rw [homEquiv_apply, LocalizerMorphism.homMap_apply (LocalizerMorphism.id W) L₁ L₂ G e.symm,
  Iso.symm_hom, Iso.symm_inv]
state_before: C : Type u_1
C₁ : Type u_2
C₂ : Type u_3
C₃ : Type u_4
D₁ : Type u_5
D₂ : Type u_6
D₃ : Type u_7
inst✝⁹ : Category.{u_10, u_1} C
inst✝⁸ : Category.{?u.40446, u_2} C₁
inst✝⁷ : Category.{?u.40450, u_3} C₂
inst✝⁶ : Category.{?u.40454, u_4} C₃
inst✝⁵ : Category.{u_8, u_5} D₁
inst✝⁴ : Category.{u_9, u_6} D₂
inst✝³ : Category.{?u.40466, u_7} D₃
W : MorphismProperty C
L₁ : C ⥤ D₁
inst✝² : L₁.IsLocalization W
L₂ : C ⥤ D₂
inst✝¹ : L₂.IsLocalization W
L₃ : C ⥤ D₃
inst✝ : L₃.IsLocalization W
X Y Z : C
G : D₁ ⥤ D₂
e : L₁ ⋙ G ≅ L₂
f : L₁.obj X ⟶ L₁.obj Y
⊢ (homEquiv W L₁ L₂) f = e.inv.app X ≫ G.map f ≫ e.hom.app Y
state_after: no goals
Theorem: LinearMap.le_ker_iff_map
File: Mathlib/Algebra/Module/Submodule/Ker.lean

tactic: rw [ker, eq_bot_iff, map_le_iff_le_comap]
state_before: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
R₃ : Type u_4
K : Type u_5
M : Type u_6
M₁ : Type u_7
M₂ : Type u_8
M₃ : Type u_9
V : Type u_10
V₂ : Type u_11
inst✝¹³ : Semiring R
inst✝¹² : Semiring R₂
inst✝¹¹ : Semiring R₃
inst✝¹⁰ : AddCommMonoid M
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : AddCommMonoid M₃
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
inst✝⁷ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝⁶ : Module R M
inst✝⁵ : Module R₂ M₂
inst✝⁴ : Module R₃ M₃
σ₂₁ : R₂ →+* R
τ₁₂ : R →+* R₂
τ₂₃ : R₂ →+* R₃
τ₁₃ : R →+* R₃
inst✝³ : RingHomCompTriple τ₁₂ τ₂₃ τ₁₃
F : Type u_12
inst✝² : FunLike F M M₂
inst✝¹ : SemilinearMapClass F τ₁₂ M M₂
inst✝ : RingHomSurjective τ₁₂
f : F
p : Submodule R M
⊢ p ≤ ker f ↔ map f p = ⊥
state_after: no goals