1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: GeneralizedContinuedFraction.coe_of_s_get?_rat_eq
File: Mathlib/Algebra/ContinuedFractions/Computation/TerminatesIffRat.lean

tactic: simp only [of, IntFractPair.seq1, Stream'.Seq.map_get?, Stream'.Seq.get?_tail]
state_before: K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
v : K
q : ℚ
v_eq_q : v = ↑q
n : ℕ
⊢ Option.map (Pair.map Rat.cast) ((of q).s.get? n) = (of v).s.get? n
state_after: K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
v : K
q : ℚ
v_eq_q : v = ↑q
n : ℕ
⊢ Option.map (Pair.map Rat.cast)
      (Option.map (fun p => { a := 1, b := ↑p.b }) (Stream'.Seq.get? ⟨IntFractPair.stream q, ⋯⟩ (n + 1))) =
    Option.map (fun p => { a := 1, b := ↑p.b }) (Stream'.Seq.get? ⟨IntFractPair.stream v, ⋯⟩ (n + 1))

tactic: simp only [Stream'.Seq.get?]
state_before: K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
v : K
q : ℚ
v_eq_q : v = ↑q
n : ℕ
⊢ Option.map (Pair.map Rat.cast)
      (Option.map (fun p => { a := 1, b := ↑p.b }) (Stream'.Seq.get? ⟨IntFractPair.stream q, ⋯⟩ (n + 1))) =
    Option.map (fun p => { a := 1, b := ↑p.b }) (Stream'.Seq.get? ⟨IntFractPair.stream v, ⋯⟩ (n + 1))
state_after: K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
v : K
q : ℚ
v_eq_q : v = ↑q
n : ℕ
⊢ Option.map (Pair.map Rat.cast) (Option.map (fun p => { a := 1, b := ↑p.b }) (IntFractPair.stream q (n + 1))) =
    Option.map (fun p => { a := 1, b := ↑p.b }) (IntFractPair.stream v (n + 1))

tactic: rw [← IntFractPair.coe_stream'_rat_eq v_eq_q]
state_before: K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
v : K
q : ℚ
v_eq_q : v = ↑q
n : ℕ
⊢ Option.map (Pair.map Rat.cast) (Option.map (fun p => { a := 1, b := ↑p.b }) (IntFractPair.stream q (n + 1))) =
    Option.map (fun p => { a := 1, b := ↑p.b }) (IntFractPair.stream v (n + 1))
state_after: K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
v : K
q : ℚ
v_eq_q : v = ↑q
n : ℕ
⊢ Option.map (Pair.map Rat.cast) (Option.map (fun p => { a := 1, b := ↑p.b }) (IntFractPair.stream q (n + 1))) =
    Option.map (fun p => { a := 1, b := ↑p.b })
      (Stream'.map (Option.map (IntFractPair.mapFr Rat.cast)) (IntFractPair.stream q) (n + 1))

tactic: rcases succ_nth_stream_eq : IntFractPair.stream q (n + 1) with (_ | ⟨_, _⟩) <;>
  simp [Stream'.map, Stream'.get, succ_nth_stream_eq]
state_before: K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
v : K
q : ℚ
v_eq_q : v = ↑q
n : ℕ
⊢ Option.map (Pair.map Rat.cast) (Option.map (fun p => { a := 1, b := ↑p.b }) (IntFractPair.stream q (n + 1))) =
    Option.map (fun p => { a := 1, b := ↑p.b })
      (Stream'.map (Option.map (IntFractPair.mapFr Rat.cast)) (IntFractPair.stream q) (n + 1))
state_after: no goals
Theorem: CliffordAlgebra.toProd_comp_ofProd
File: Mathlib/LinearAlgebra/CliffordAlgebra/Prod.lean

tactic: ext m <;> dsimp
state_before: R : Type u_1
M₁ : Type u_2
M₂ : Type u_3
N : Type u_4
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M₁
inst✝⁴ : AddCommGroup M₂
inst✝³ : AddCommGroup N
inst✝² : Module R M₁
inst✝¹ : Module R M₂
inst✝ : Module R N
Q₁ : QuadraticForm R M₁
Q₂ : QuadraticForm R M₂
Qₙ : QuadraticForm R N
⊢ (toProd Q₁ Q₂).comp (ofProd Q₁ Q₂) = AlgHom.id R (CliffordAlgebra (Q₁.prod Q₂))
state_after: case a.hl.h
R : Type u_1
M₁ : Type u_2
M₂ : Type u_3
N : Type u_4
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M₁
inst✝⁴ : AddCommGroup M₂
inst✝³ : AddCommGroup N
inst✝² : Module R M₁
inst✝¹ : Module R M₂
inst✝ : Module R N
Q₁ : QuadraticForm R M₁
Q₂ : QuadraticForm R M₂
Qₙ : QuadraticForm R N
m : M₁
⊢ (toProd Q₁ Q₂) ((ofProd Q₁ Q₂) ((ι (Q₁.prod Q₂)) (m, 0))) = (ι (Q₁.prod Q₂)) (m, 0)

case a.hr.h
R : Type u_1
M₁ : Type u_2
M₂ : Type u_3
N : Type u_4
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M₁
inst✝⁴ : AddCommGroup M₂
inst✝³ : AddCommGroup N
inst✝² : Module R M₁
inst✝¹ : Module R M₂
inst✝ : Module R N
Q₁ : QuadraticForm R M₁
Q₂ : QuadraticForm R M₂
Qₙ : QuadraticForm R N
m : M₂
⊢ (toProd Q₁ Q₂) ((ofProd Q₁ Q₂) ((ι (Q₁.prod Q₂)) (0, m))) = (ι (Q₁.prod Q₂)) (0, m)

tactic: rw [ofProd_ι_mk, map_add, toProd_one_tmul_ι, toProd_ι_tmul_one, ← Prod.zero_eq_mk,
  LinearMap.map_zero, add_zero]
state_before: case a.hl.h
R : Type u_1
M₁ : Type u_2
M₂ : Type u_3
N : Type u_4
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M₁
inst✝⁴ : AddCommGroup M₂
inst✝³ : AddCommGroup N
inst✝² : Module R M₁
inst✝¹ : Module R M₂
inst✝ : Module R N
Q₁ : QuadraticForm R M₁
Q₂ : QuadraticForm R M₂
Qₙ : QuadraticForm R N
m : M₁
⊢ (toProd Q₁ Q₂) ((ofProd Q₁ Q₂) ((ι (Q₁.prod Q₂)) (m, 0))) = (ι (Q₁.prod Q₂)) (m, 0)
state_after: no goals

tactic: rw [ofProd_ι_mk, map_add, toProd_one_tmul_ι, toProd_ι_tmul_one, ← Prod.zero_eq_mk,
  LinearMap.map_zero, zero_add]
state_before: case a.hr.h
R : Type u_1
M₁ : Type u_2
M₂ : Type u_3
N : Type u_4
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M₁
inst✝⁴ : AddCommGroup M₂
inst✝³ : AddCommGroup N
inst✝² : Module R M₁
inst✝¹ : Module R M₂
inst✝ : Module R N
Q₁ : QuadraticForm R M₁
Q₂ : QuadraticForm R M₂
Qₙ : QuadraticForm R N
m : M₂
⊢ (toProd Q₁ Q₂) ((ofProd Q₁ Q₂) ((ι (Q₁.prod Q₂)) (0, m))) = (ι (Q₁.prod Q₂)) (0, m)
state_after: no goals
Theorem: CategoryTheory.transferNatTransSelf_symm_id
File: Mathlib/CategoryTheory/Adjunction/Mates.lean

tactic: rw [Equiv.symm_apply_eq]
state_before: C : Type u₁
D : Type u₂
inst✝¹ : Category.{v₁, u₁} C
inst✝ : Category.{v₂, u₂} D
L₁ L₂ L₃ : C ⥤ D
R₁ R₂ R₃ : D ⥤ C
adj₁ : L₁ ⊣ R₁
adj₂ : L₂ ⊣ R₂
adj₃ : L₃ ⊣ R₃
⊢ (transferNatTransSelf adj₁ adj₁).symm (𝟙 R₁) = 𝟙 L₁
state_after: C : Type u₁
D : Type u₂
inst✝¹ : Category.{v₁, u₁} C
inst✝ : Category.{v₂, u₂} D
L₁ L₂ L₃ : C ⥤ D
R₁ R₂ R₃ : D ⥤ C
adj₁ : L₁ ⊣ R₁
adj₂ : L₂ ⊣ R₂
adj₃ : L₃ ⊣ R₃
⊢ 𝟙 R₁ = (transferNatTransSelf adj₁ adj₁) (𝟙 L₁)

tactic: simp
state_before: C : Type u₁
D : Type u₂
inst✝¹ : Category.{v₁, u₁} C
inst✝ : Category.{v₂, u₂} D
L₁ L₂ L₃ : C ⥤ D
R₁ R₂ R₃ : D ⥤ C
adj₁ : L₁ ⊣ R₁
adj₂ : L₂ ⊣ R₂
adj₃ : L₃ ⊣ R₃
⊢ 𝟙 R₁ = (transferNatTransSelf adj₁ adj₁) (𝟙 L₁)
state_after: no goals
Theorem: LinearMap.disjoint_ker
File: Mathlib/Algebra/Module/Submodule/Ker.lean

tactic: simp [disjoint_def]
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₂
f : F
p : Submodule R M
⊢ Disjoint p (ker f) ↔ ∀ x ∈ p, f x = 0 → x = 0
state_after: no goals
Theorem: iInf_emptyset
File: Mathlib/Order/CompleteLattice.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
β₂ : Type u_3
γ : Type u_4
ι : Sort u_5
ι' : Sort u_6
κ : ι → Sort u_7
κ' : ι' → Sort u_8
inst✝ : CompleteLattice α
f✝ g s t : ι → α
a b : α
f : β → α
⊢ ⨅ x ∈ ∅, f x = ⊤
state_after: no goals
Theorem: Homotopy.nullHomotopicMap_f
File: Mathlib/Algebra/Homology/Homotopy.lean

tactic: dsimp only [nullHomotopicMap]
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f g : C ⟶ D
h k : D ⟶ E
i k₂ k₁ k₀ : ι
r₂₁ : c.Rel k₂ k₁
r₁₀ : c.Rel k₁ k₀
hom : (i j : ι) → C.X i ⟶ D.X j
⊢ (nullHomotopicMap hom).f k₁ = C.d k₁ k₀ ≫ hom k₀ k₁ + hom k₁ k₂ ≫ D.d k₂ k₁
state_after: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f g : C ⟶ D
h k : D ⟶ E
i k₂ k₁ k₀ : ι
r₂₁ : c.Rel k₂ k₁
r₁₀ : c.Rel k₁ k₀
hom : (i j : ι) → C.X i ⟶ D.X j
⊢ (dNext k₁) hom + (prevD k₁) hom = C.d k₁ k₀ ≫ hom k₀ k₁ + hom k₁ k₂ ≫ D.d k₂ k₁

tactic: rw [dNext_eq hom r₁₀, prevD_eq hom r₂₁]
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f g : C ⟶ D
h k : D ⟶ E
i k₂ k₁ k₀ : ι
r₂₁ : c.Rel k₂ k₁
r₁₀ : c.Rel k₁ k₀
hom : (i j : ι) → C.X i ⟶ D.X j
⊢ (dNext k₁) hom + (prevD k₁) hom = C.d k₁ k₀ ≫ hom k₀ k₁ + hom k₁ k₂ ≫ D.d k₂ k₁
state_after: no goals
Theorem: SimplexCategory.iso_eq_iso_refl
File: Mathlib/AlgebraicTopology/SimplexCategory.lean

tactic: have h : (Finset.univ : Finset (Fin (x.len + 1))).card = x.len + 1 := Finset.card_fin (x.len + 1)
state_before: x : SimplexCategory
e : x ≅ x
⊢ e = Iso.refl x
state_after: x : SimplexCategory
e : x ≅ x
h : Finset.univ.card = x.len + 1
⊢ e = Iso.refl x

tactic: have eq₁ := Finset.orderEmbOfFin_unique' h fun i => Finset.mem_univ ((orderIsoOfIso e) i)
state_before: x : SimplexCategory
e : x ≅ x
h : Finset.univ.card = x.len + 1
⊢ e = Iso.refl x
state_after: x : SimplexCategory
e : x ≅ x
h : Finset.univ.card = x.len + 1
eq₁ : RelIso.toRelEmbedding (orderIsoOfIso e) = Finset.univ.orderEmbOfFin h
⊢ e = Iso.refl x

tactic: have eq₂ :=
  Finset.orderEmbOfFin_unique' h fun i => Finset.mem_univ ((orderIsoOfIso (Iso.refl x)) i)
state_before: x : SimplexCategory
e : x ≅ x
h : Finset.univ.card = x.len + 1
eq₁ : RelIso.toRelEmbedding (orderIsoOfIso e) = Finset.univ.orderEmbOfFin h
⊢ e = Iso.refl x
state_after: x : SimplexCategory
e : x ≅ x
h : Finset.univ.card = x.len + 1
eq₁ : RelIso.toRelEmbedding (orderIsoOfIso e) = Finset.univ.orderEmbOfFin h
eq₂ : RelIso.toRelEmbedding (orderIsoOfIso (Iso.refl x)) = Finset.univ.orderEmbOfFin h
⊢ e = Iso.refl x

tactic: ext x
state_before: x : SimplexCategory
e : x ≅ x
h : Finset.univ.card = x.len + 1
eq₁ : RelIso.toRelEmbedding (orderIsoOfIso e) = Finset.univ.orderEmbOfFin h
eq₂ : RelIso.toRelEmbedding (orderIsoOfIso (Iso.refl x)) = Finset.univ.orderEmbOfFin h
⊢ e = Iso.refl x
state_after: case w.a.h.h.h
x✝ : SimplexCategory
e : x✝ ≅ x✝
h : Finset.univ.card = x✝.len + 1
eq₁ : RelIso.toRelEmbedding (orderIsoOfIso e) = Finset.univ.orderEmbOfFin h
eq₂ : RelIso.toRelEmbedding (orderIsoOfIso (Iso.refl x✝)) = Finset.univ.orderEmbOfFin h
x : Fin (x✝.len + 1)
⊢ ↑((Hom.toOrderHom e.hom) x) = ↑((Hom.toOrderHom (Iso.refl x✝).hom) x)

tactic: simp_all
state_before: case w.a.h.h.h
x✝ : SimplexCategory
e : x✝ ≅ x✝
h : Finset.univ.card = x✝.len + 1
x : Fin (x✝.len + 1)
eq₁ : (fun x_1 => x_1 x) (RelIso.toRelEmbedding (orderIsoOfIso e)) = (fun x_1 => x_1 x) (Finset.univ.orderEmbOfFin h)
eq₂ :
  (fun x_1 => x_1 x) (Finset.univ.orderEmbOfFin h) =
    (fun x_1 => x_1 x) (RelIso.toRelEmbedding (orderIsoOfIso (Iso.refl x✝)))
⊢ ↑((Hom.toOrderHom e.hom) x) = ↑((Hom.toOrderHom (Iso.refl x✝).hom) x)
state_after: no goals
Theorem: isOfFinOrder_iff_pow_eq_one
File: Mathlib/GroupTheory/OrderOfElement.lean

tactic: simp [IsOfFinOrder, mem_periodicPts, isPeriodicPt_mul_iff_pow_eq_one]
state_before: G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : Monoid G
a b x y : G
n m : ℕ
⊢ IsOfFinOrder x ↔ ∃ n, 0 < n ∧ x ^ n = 1
state_after: no goals
Theorem: Topology.isLawson_le_isScott
File: Mathlib/Topology/Order/LawsonTopology.lean

tactic: rw [@IsScott.topology_eq α _ S _, @IsLawson.topology_eq_lawson α _ L _]
state_before: α : Type u_1
β : Type u_2
inst✝² : Preorder α
L S : TopologicalSpace α
inst✝¹ : IsLawson α
inst✝ : IsScott α
⊢ L ≤ S
state_after: α : Type u_1
β : Type u_2
inst✝² : Preorder α
L S : TopologicalSpace α
inst✝¹ : IsLawson α
inst✝ : IsScott α
⊢ lawson α ≤ scott α

tactic: exact inf_le_right
state_before: α : Type u_1
β : Type u_2
inst✝² : Preorder α
L S : TopologicalSpace α
inst✝¹ : IsLawson α
inst✝ : IsScott α
⊢ lawson α ≤ scott α
state_after: no goals
Theorem: DirectSum.IsInternal.ofBijective_coeLinearMap_of_ne
File: Mathlib/Algebra/DirectSum/Module.lean

tactic: rw [← coeLinearMap_of, LinearEquiv.ofBijective_symm_apply_apply, of_eq_of_ne _ i j _ hij]
state_before: R : Type u
inst✝² : Semiring R
ι : Type v
dec_ι : DecidableEq ι
M : Type u_1
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
A : ι → Submodule R M
h : IsInternal A
i j : ι
hij : i ≠ j
x : ↥(A i)
⊢ ((LinearEquiv.ofBijective (coeLinearMap A) h).symm ↑x) j = 0
state_after: no goals
Theorem: Associates.le_singleton_iff
File: Mathlib/RingTheory/DedekindDomain/Ideal.lean

tactic: simp_rw [← Associates.dvd_eq_le, ← Associates.mk_pow, Associates.mk_dvd_mk,
  Ideal.dvd_span_singleton]
state_before: R : Type u_1
A : Type u_2
K : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Field K
inst✝² : IsDedekindDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
x : A
n : ℕ
I : Ideal A
⊢ Associates.mk I ^ n ≤ Associates.mk (span {x}) ↔ x ∈ I ^ n
state_after: no goals
Theorem: Algebra.TensorProduct.lift_comp_includeRight
File: Mathlib/RingTheory/TensorProduct/Basic.lean

tactic: simp
state_before: R : Type uR
S : Type uS
A : Type uA
B : Type uB
C : Type uC
D : Type uD
E : Type uE
F : Type uF
inst✝¹⁴ : CommSemiring R
inst✝¹³ : CommSemiring S
inst✝¹² : Algebra R S
inst✝¹¹ : Semiring A
inst✝¹⁰ : Algebra R A
inst✝⁹ : Algebra S A
inst✝⁸ : IsScalarTower R S A
inst✝⁷ : Semiring B
inst✝⁶ : Algebra R B
inst✝⁵ : Semiring C
inst✝⁴ : Algebra R C
inst✝³ : Algebra S C
inst✝² : Semiring D
inst✝¹ : Algebra R D
inst✝ : IsScalarTower R S C
f : A →ₐ[S] C
g : B →ₐ[R] C
hfg : ∀ (x : A) (y : B), Commute (f x) (g y)
⊢ ∀ (x : B), ((AlgHom.restrictScalars R (lift f g hfg)).comp includeRight) x = g x
state_after: no goals
Theorem: List.mem_of_formPerm_ne_self
File: Mathlib/GroupTheory/Perm/List.lean

tactic: suffices x ∈ { y | formPerm l y ≠ y } by
  rw [← mem_toFinset]
  exact support_formPerm_le' _ this
state_before: α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
l✝ : List α
x✝ : α
l : List α
x : α
h : l.formPerm x ≠ x
⊢ x ∈ l
state_after: α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
l✝ : List α
x✝ : α
l : List α
x : α
h : l.formPerm x ≠ x
⊢ x ∈ {y | l.formPerm y ≠ y}

tactic: simpa using h
state_before: α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
l✝ : List α
x✝ : α
l : List α
x : α
h : l.formPerm x ≠ x
⊢ x ∈ {y | l.formPerm y ≠ y}
state_after: no goals

tactic: rw [← mem_toFinset]
state_before: α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
l✝ : List α
x✝ : α
l : List α
x : α
h : l.formPerm x ≠ x
this : x ∈ {y | l.formPerm y ≠ y}
⊢ x ∈ l
state_after: α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
l✝ : List α
x✝ : α
l : List α
x : α
h : l.formPerm x ≠ x
this : x ∈ {y | l.formPerm y ≠ y}
⊢ x ∈ l.toFinset

tactic: exact support_formPerm_le' _ this
state_before: α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
l✝ : List α
x✝ : α
l : List α
x : α
h : l.formPerm x ≠ x
this : x ∈ {y | l.formPerm y ≠ y}
⊢ x ∈ l.toFinset
state_after: no goals
Theorem: cfcₙ_apply_pi
File: Mathlib/Topology/ContinuousFunction/NonUnitalFunctionalCalculus.lean

tactic: ext i
state_before: R : Type u_1
A : Type u_2
p : A → Prop
inst✝¹² : CommSemiring R
inst✝¹¹ : Nontrivial R
inst✝¹⁰ : StarRing R
inst✝⁹ : MetricSpace R
inst✝⁸ : TopologicalSemiring R
inst✝⁷ : ContinuousStar R
inst✝⁶ : NonUnitalRing A
inst✝⁵ : StarRing A
inst✝⁴ : TopologicalSpace A
inst✝³ : Module R A
inst✝² : IsScalarTower R A A
inst✝¹ : SMulCommClass R A A
inst✝ : NonUnitalContinuousFunctionalCalculus R p
f✝ g : R → R
a✝ : A
hf✝ : autoParam (ContinuousOn f✝ (σₙ R a✝)) _auto✝
hf0✝ : autoParam (f✝ 0 = 0) _auto✝
hg : autoParam (ContinuousOn g (σₙ R a✝)) _auto✝
hg0 : autoParam (g 0 = 0) _auto✝
ha✝ : autoParam (p a✝) _auto✝
ι : Type u_3
f : ι → R → R
a : A
ha : autoParam (p a) _auto✝
hf : autoParam (∀ (i : ι), ContinuousOn (f i) (σₙ R a)) _auto✝
hf0 : autoParam (∀ (i : ι), f i 0 = 0) _auto✝
⊢ (fun i => cfcₙ (f i) a) = fun i =>
    (cfcₙHom ha) { toFun := (σₙ R a).restrict (f i), continuous_toFun := ⋯, map_zero' := ⋯ }
state_after: case h
R : Type u_1
A : Type u_2
p : A → Prop
inst✝¹² : CommSemiring R
inst✝¹¹ : Nontrivial R
inst✝¹⁰ : StarRing R
inst✝⁹ : MetricSpace R
inst✝⁸ : TopologicalSemiring R
inst✝⁷ : ContinuousStar R
inst✝⁶ : NonUnitalRing A
inst✝⁵ : StarRing A
inst✝⁴ : TopologicalSpace A
inst✝³ : Module R A
inst✝² : IsScalarTower R A A
inst✝¹ : SMulCommClass R A A
inst✝ : NonUnitalContinuousFunctionalCalculus R p
f✝ g : R → R
a✝ : A
hf✝ : autoParam (ContinuousOn f✝ (σₙ R a✝)) _auto✝
hf0✝ : autoParam (f✝ 0 = 0) _auto✝
hg : autoParam (ContinuousOn g (σₙ R a✝)) _auto✝
hg0 : autoParam (g 0 = 0) _auto✝
ha✝ : autoParam (p a✝) _auto✝
ι : Type u_3
f : ι → R → R
a : A
ha : autoParam (p a) _auto✝
hf : autoParam (∀ (i : ι), ContinuousOn (f i) (σₙ R a)) _auto✝
hf0 : autoParam (∀ (i : ι), f i 0 = 0) _auto✝
i : ι
⊢ cfcₙ (f i) a = (cfcₙHom ha) { toFun := (σₙ R a).restrict (f i), continuous_toFun := ⋯, map_zero' := ⋯ }

tactic: simp only [cfcₙ_apply (f i) a (hf i) (hf0 i)]
state_before: case h
R : Type u_1
A : Type u_2
p : A → Prop
inst✝¹² : CommSemiring R
inst✝¹¹ : Nontrivial R
inst✝¹⁰ : StarRing R
inst✝⁹ : MetricSpace R
inst✝⁸ : TopologicalSemiring R
inst✝⁷ : ContinuousStar R
inst✝⁶ : NonUnitalRing A
inst✝⁵ : StarRing A
inst✝⁴ : TopologicalSpace A
inst✝³ : Module R A
inst✝² : IsScalarTower R A A
inst✝¹ : SMulCommClass R A A
inst✝ : NonUnitalContinuousFunctionalCalculus R p
f✝ g : R → R
a✝ : A
hf✝ : autoParam (ContinuousOn f✝ (σₙ R a✝)) _auto✝
hf0✝ : autoParam (f✝ 0 = 0) _auto✝
hg : autoParam (ContinuousOn g (σₙ R a✝)) _auto✝
hg0 : autoParam (g 0 = 0) _auto✝
ha✝ : autoParam (p a✝) _auto✝
ι : Type u_3
f : ι → R → R
a : A
ha : autoParam (p a) _auto✝
hf : autoParam (∀ (i : ι), ContinuousOn (f i) (σₙ R a)) _auto✝
hf0 : autoParam (∀ (i : ι), f i 0 = 0) _auto✝
i : ι
⊢ cfcₙ (f i) a = (cfcₙHom ha) { toFun := (σₙ R a).restrict (f i), continuous_toFun := ⋯, map_zero' := ⋯ }
state_after: no goals
Theorem: AddCommGroup.intCast_modEq_intCast
File: Mathlib/Algebra/ModEq.lean

tactic: simp_rw [ModEq, ← Int.cast_mul_eq_zsmul_cast]
state_before: α : Type u_1
inst✝¹ : AddCommGroupWithOne α
inst✝ : CharZero α
a b z : ℤ
⊢ ↑a ≡ ↑b [PMOD ↑z] ↔ a ≡ b [PMOD z]
state_after: α : Type u_1
inst✝¹ : AddCommGroupWithOne α
inst✝ : CharZero α
a b z : ℤ
⊢ (∃ z_1, ↑b - ↑a = ↑(z_1 * z)) ↔ ∃ z_1, b - a = z_1 • z

tactic: norm_cast
state_before: α : Type u_1
inst✝¹ : AddCommGroupWithOne α
inst✝ : CharZero α
a b z : ℤ
⊢ (∃ z_1, ↑b - ↑a = ↑(z_1 * z)) ↔ ∃ z_1, b - a = z_1 • z
state_after: no goals
Theorem: sameRay_iff_of_norm_eq
File: Mathlib/Analysis/NormedSpace/Ray.lean

tactic: obtain rfl | hy := eq_or_ne y 0
state_before: E : Type u_1
inst✝³ : SeminormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type u_2
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
x y : F
h : ‖x‖ = ‖y‖
⊢ SameRay ℝ x y ↔ x = y
state_after: case inl
E : Type u_1
inst✝³ : SeminormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type u_2
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
x : F
h : ‖x‖ = ‖0‖
⊢ SameRay ℝ x 0 ↔ x = 0

case inr
E : Type u_1
inst✝³ : SeminormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type u_2
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
x y : F
h : ‖x‖ = ‖y‖
hy : y ≠ 0
⊢ SameRay ℝ x y ↔ x = y

tactic: rw [norm_zero, norm_eq_zero] at h
state_before: case inl
E : Type u_1
inst✝³ : SeminormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type u_2
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
x : F
h : ‖x‖ = ‖0‖
⊢ SameRay ℝ x 0 ↔ x = 0
state_after: case inl
E : Type u_1
inst✝³ : SeminormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type u_2
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
x : F
h : x = 0
⊢ SameRay ℝ x 0 ↔ x = 0

tactic: exact iff_of_true (SameRay.zero_right _) h
state_before: case inl
E : Type u_1
inst✝³ : SeminormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type u_2
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
x : F
h : x = 0
⊢ SameRay ℝ x 0 ↔ x = 0
state_after: no goals

tactic: exact ⟨fun hxy => norm_injOn_ray_right hy hxy SameRay.rfl h, fun hxy => hxy ▸ SameRay.rfl⟩
state_before: case inr
E : Type u_1
inst✝³ : SeminormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type u_2
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
x y : F
h : ‖x‖ = ‖y‖
hy : y ≠ 0
⊢ SameRay ℝ x y ↔ x = y
state_after: no goals
Theorem: ZFSet.singleton_injective
File: Mathlib/SetTheory/ZFC/Basic.lean

tactic: let this := congr_arg sUnion H
state_before: x y : ZFSet
H : {x} = {y}
⊢ x = y
state_after: x y : ZFSet
H : {x} = {y}
this : ⋃₀ {x} = ⋃₀ {y} := congr_arg sUnion H
⊢ x = y

tactic: rwa [sUnion_singleton, sUnion_singleton] at this
state_before: x y : ZFSet
H : {x} = {y}
this : ⋃₀ {x} = ⋃₀ {y} := congr_arg sUnion H
⊢ x = y
state_after: no goals
Theorem: MeasureTheory.Measure.restrict_union₀
File: Mathlib/MeasureTheory/Measure/Restrict.lean

tactic: simp [← restrict_union_add_inter₀ s ht, restrict_zero_set h]
state_before: R : Type u_1
α : Type u_2
β : Type u_3
δ : Type u_4
γ : Type u_5
ι : Type u_6
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t : Set α
h : AEDisjoint μ s t
ht : NullMeasurableSet t μ
⊢ μ.restrict (s ∪ t) = μ.restrict s + μ.restrict t
state_after: no goals
Theorem: mul_eq_of_eq_mul_inv
File: Mathlib/Algebra/Group/Basic.lean

tactic: simp [h]
state_before: α : Type u_1
β : Type u_2
G : Type u_3
M : Type u_4
inst✝ : Group G
a b c d : G
n : ℤ
h : a = c * b⁻¹
⊢ a * b = c
state_after: no goals
Theorem: MeasureTheory.map_withDensity_abs_det_fderiv_eq_addHaar
File: Mathlib/MeasureTheory/Function/Jacobian.lean

tactic: apply Measure.ext fun t ht => ?_
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
hs : MeasurableSet s
hf' : ∀ x ∈ s, HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
h'f : Measurable f
⊢ Measure.map f ((μ.restrict s).withDensity fun x => ENNReal.ofReal |(f' x).det|) = μ.restrict (f '' s)
state_after: 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
hs : MeasurableSet s
hf' : ∀ x ∈ s, HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
h'f : Measurable f
t : Set E
ht : MeasurableSet t
⊢ (Measure.map f ((μ.restrict s).withDensity fun x => ENNReal.ofReal |(f' x).det|)) t = (μ.restrict (f '' s)) t

tactic: rw [map_apply h'f ht, withDensity_apply _ (h'f ht), Measure.restrict_apply ht,
  restrict_restrict (h'f ht),
  lintegral_abs_det_fderiv_eq_addHaar_image μ ((h'f ht).inter hs)
    (fun x hx => (hf' x hx.2).mono inter_subset_right) (hf.mono inter_subset_right),
  image_preimage_inter]
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
hs : MeasurableSet s
hf' : ∀ x ∈ s, HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
h'f : Measurable f
t : Set E
ht : MeasurableSet t
⊢ (Measure.map f ((μ.restrict s).withDensity fun x => ENNReal.ofReal |(f' x).det|)) t = (μ.restrict (f '' s)) t
state_after: no goals
Theorem: Bornology.isVonNBounded_union
File: Mathlib/Analysis/LocallyConvex/Bounded.lean

tactic: simp only [IsVonNBounded, absorbs_union, forall_and]
state_before: 𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝³ : SeminormedRing 𝕜
inst✝² : SMul 𝕜 E
inst✝¹ : Zero E
inst✝ : TopologicalSpace E
s t : Set E
⊢ IsVonNBounded 𝕜 (s ∪ t) ↔ IsVonNBounded 𝕜 s ∧ IsVonNBounded 𝕜 t
state_after: no goals
Theorem: List.take_sum_join
File: Mathlib/Algebra/BigOperators/Group/List.lean

tactic: simpa using take_sum_join' _ _
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
L : List (List α)
i : ℕ
⊢ take (take i (map length L)).sum L.join = (take i L).join
state_after: no goals