1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: CategoryTheory.Adjunction.Localization.ε_app
File: Mathlib/CategoryTheory/Localization/Adjunction.lean

tactic: letI : Lifting L₁ W₁ ((G ⋙ F) ⋙ L₁) (G' ⋙ F') :=
  Lifting.mk (CatCommSq.hComp G F L₁ L₂ L₁ G' F').iso'.symm
state_before: C₁ : Type u_1
C₂ : Type u_2
D₁ : Type u_3
D₂ : Type u_4
inst✝⁷ : Category.{u_6, u_1} C₁
inst✝⁶ : Category.{u_8, u_2} C₂
inst✝⁵ : Category.{u_5, u_3} D₁
inst✝⁴ : Category.{u_7, u_4} D₂
G : C₁ ⥤ C₂
F : C₂ ⥤ C₁
adj : G ⊣ F
L₁ : C₁ ⥤ D₁
W₁ : MorphismProperty C₁
inst✝³ : L₁.IsLocalization W₁
L₂ : C₂ ⥤ D₂
W₂ : MorphismProperty C₂
inst✝² : L₂.IsLocalization W₂
G' : D₁ ⥤ D₂
F' : D₂ ⥤ D₁
inst✝¹ : CatCommSq G L₁ L₂ G'
inst✝ : CatCommSq F L₂ L₁ F'
X₁ : C₁
⊢ (ε adj L₁ W₁ L₂ G' F').app (L₁.obj X₁) =
    L₁.map (adj.unit.app X₁) ≫
      (CatCommSq.iso F L₂ L₁ F').hom.app (G.obj X₁) ≫ F'.map ((CatCommSq.iso G L₁ L₂ G').hom.app X₁)
state_after: C₁ : Type u_1
C₂ : Type u_2
D₁ : Type u_3
D₂ : Type u_4
inst✝⁷ : Category.{u_6, u_1} C₁
inst✝⁶ : Category.{u_8, u_2} C₂
inst✝⁵ : Category.{u_5, u_3} D₁
inst✝⁴ : Category.{u_7, u_4} D₂
G : C₁ ⥤ C₂
F : C₂ ⥤ C₁
adj : G ⊣ F
L₁ : C₁ ⥤ D₁
W₁ : MorphismProperty C₁
inst✝³ : L₁.IsLocalization W₁
L₂ : C₂ ⥤ D₂
W₂ : MorphismProperty C₂
inst✝² : L₂.IsLocalization W₂
G' : D₁ ⥤ D₂
F' : D₂ ⥤ D₁
inst✝¹ : CatCommSq G L₁ L₂ G'
inst✝ : CatCommSq F L₂ L₁ F'
X₁ : C₁
this : Lifting L₁ W₁ ((G ⋙ F) ⋙ L₁) (G' ⋙ F') := { iso' := CatCommSq.iso'.symm }
⊢ (ε adj L₁ W₁ L₂ G' F').app (L₁.obj X₁) =
    L₁.map (adj.unit.app X₁) ≫
      (CatCommSq.iso F L₂ L₁ F').hom.app (G.obj X₁) ≫ F'.map ((CatCommSq.iso G L₁ L₂ G').hom.app X₁)

tactic: simp only [ε, liftNatTrans_app, Lifting.iso, Iso.symm,
  Functor.id_obj, Functor.comp_obj, Lifting.id_iso', Functor.rightUnitor_hom_app,
    whiskerRight_app, CatCommSq.hComp_iso'_hom_app, id_comp]
state_before: C₁ : Type u_1
C₂ : Type u_2
D₁ : Type u_3
D₂ : Type u_4
inst✝⁷ : Category.{u_6, u_1} C₁
inst✝⁶ : Category.{u_8, u_2} C₂
inst✝⁵ : Category.{u_5, u_3} D₁
inst✝⁴ : Category.{u_7, u_4} D₂
G : C₁ ⥤ C₂
F : C₂ ⥤ C₁
adj : G ⊣ F
L₁ : C₁ ⥤ D₁
W₁ : MorphismProperty C₁
inst✝³ : L₁.IsLocalization W₁
L₂ : C₂ ⥤ D₂
W₂ : MorphismProperty C₂
inst✝² : L₂.IsLocalization W₂
G' : D₁ ⥤ D₂
F' : D₂ ⥤ D₁
inst✝¹ : CatCommSq G L₁ L₂ G'
inst✝ : CatCommSq F L₂ L₁ F'
X₁ : C₁
this : Lifting L₁ W₁ ((G ⋙ F) ⋙ L₁) (G' ⋙ F') := { iso' := CatCommSq.iso'.symm }
⊢ (ε adj L₁ W₁ L₂ G' F').app (L₁.obj X₁) =
    L₁.map (adj.unit.app X₁) ≫
      (CatCommSq.iso F L₂ L₁ F').hom.app (G.obj X₁) ≫ F'.map ((CatCommSq.iso G L₁ L₂ G').hom.app X₁)
state_after: no goals
Theorem: WeierstrassCurve.Affine.map_addY
File: Mathlib/AlgebraicGeometry/EllipticCurve/Affine.lean

tactic: simp only [addY, map_negAddY, map_addX, map_negY]
state_before: R : Type u
inst✝¹ : CommRing R
W : Affine R
S : Type v
inst✝ : CommRing S
f : R →+* S
x₁ x₂ y₁ L : R
⊢ (map W f).toAffine.addY (f x₁) (f x₂) (f y₁) (f L) = f ((toAffine W).addY x₁ x₂ y₁ L)
state_after: no goals
Theorem: EReal.add_lt_add_left_coe
File: Mathlib/Data/Real/EReal.lean

tactic: simpa [add_comm] using add_lt_add_right_coe h z
state_before: x y : EReal
h : x < y
z : ℝ
⊢ ↑z + x < ↑z + y
state_after: no goals
Theorem: Real.pi_gt_314
File: Mathlib/Data/Real/Pi/Bounds.lean

tactic: pi_lower_bound [99 / 70, 874 / 473, 1940 / 989, 1447 / 727]
state_before: ⊢ 3.14 < π
state_after: no goals
Theorem: Primrec.vector_get
File: Mathlib/Computability/Primrec.lean

tactic: rw [Vector.get_eq_get, ← List.get?_eq_get]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
σ : Type u_4
inst✝³ : Primcodable α
inst✝² : Primcodable β
inst✝¹ : Primcodable γ
inst✝ : Primcodable σ
n : ℕ
a : Vector α n × Fin n
⊢ a.1.toList.get? ↑a.2 = some (a.1.get a.2)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
σ : Type u_4
inst✝³ : Primcodable α
inst✝² : Primcodable β
inst✝¹ : Primcodable γ
inst✝ : Primcodable σ
n : ℕ
a : Vector α n × Fin n
⊢ a.1.toList.get? ↑a.2 = a.1.toList.get? ↑(Fin.cast ⋯ a.2)

tactic: rfl
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
σ : Type u_4
inst✝³ : Primcodable α
inst✝² : Primcodable β
inst✝¹ : Primcodable γ
inst✝ : Primcodable σ
n : ℕ
a : Vector α n × Fin n
⊢ a.1.toList.get? ↑a.2 = a.1.toList.get? ↑(Fin.cast ⋯ a.2)
state_after: no goals
Theorem: PNat.XgcdType.qp_eq
File: Mathlib/Data/PNat/Xgcd.lean

tactic: by_cases hq : u.q = 0
state_before: u : XgcdType
hr : u.r = 0
⊢ u.q = u.qp + 1
state_after: case pos
u : XgcdType
hr : u.r = 0
hq : u.q = 0
⊢ u.q = u.qp + 1

case neg
u : XgcdType
hr : u.r = 0
hq : ¬u.q = 0
⊢ u.q = u.qp + 1

tactic: let h := u.rq_eq
state_before: case pos
u : XgcdType
hr : u.r = 0
hq : u.q = 0
⊢ u.q = u.qp + 1
state_after: case pos
u : XgcdType
hr : u.r = 0
hq : u.q = 0
h : u.r + (u.bp + 1) * u.q = u.ap + 1 := rq_eq u
⊢ u.q = u.qp + 1

tactic: rw [hr, hq, mul_zero, add_zero] at h
state_before: case pos
u : XgcdType
hr : u.r = 0
hq : u.q = 0
h : u.r + (u.bp + 1) * u.q = u.ap + 1 := rq_eq u
⊢ u.q = u.qp + 1
state_after: case pos
u : XgcdType
hr : u.r = 0
hq : u.q = 0
h : 0 = u.ap + 1
⊢ u.q = u.qp + 1

tactic: cases h
state_before: case pos
u : XgcdType
hr : u.r = 0
hq : u.q = 0
h : 0 = u.ap + 1
⊢ u.q = u.qp + 1
state_after: no goals

tactic: exact (Nat.succ_pred_eq_of_pos (Nat.pos_of_ne_zero hq)).symm
state_before: case neg
u : XgcdType
hr : u.r = 0
hq : ¬u.q = 0
⊢ u.q = u.qp + 1
state_after: no goals
Theorem: Cubic.d_of_eq
File: Mathlib/Algebra/CubicDiscriminant.lean

tactic: rw [← coeff_eq_d, h, coeff_eq_d]
state_before: R : Type u_1
S : Type u_2
F : Type u_3
K : Type u_4
P Q : Cubic R
a b c d a' b' c' d' : R
inst✝ : Semiring R
h : P.toPoly = Q.toPoly
⊢ P.d = Q.d
state_after: no goals
Theorem: Finsupp.mapRange.equiv_trans
File: Mathlib/Data/Finsupp/Basic.lean

tactic: rw [Equiv.trans_apply, hf, hf₂]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝² : Zero M
inst✝¹ : Zero N
inst✝ : Zero P
f : M ≃ N
hf : f 0 = 0
hf' : f.symm 0 = 0
f₂ : N ≃ P
hf₂ : f₂ 0 = 0
hf₂' : f₂.symm 0 = 0
⊢ (f.trans f₂) 0 = 0
state_after: no goals

tactic: rw [Equiv.symm_trans_apply, hf₂', hf']
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝² : Zero M
inst✝¹ : Zero N
inst✝ : Zero P
f : M ≃ N
hf : f 0 = 0
hf' : f.symm 0 = 0
f₂ : N ≃ P
hf₂ : f₂ 0 = 0
hf₂' : f₂.symm 0 = 0
⊢ (f.trans f₂).symm 0 = 0
state_after: no goals
Theorem: Class.sInter_apply
File: Mathlib/SetTheory/ZFC/Basic.lean

tactic: refine ⟨fun hxy z hxz => hxy _ ⟨z, rfl, hxz⟩, ?_⟩
state_before: x : Class
y : ZFSet
⊢ (⋂₀ x) y ↔ ∀ (z : ZFSet), x z → y ∈ z
state_after: x : Class
y : ZFSet
⊢ (∀ (z : ZFSet), x z → y ∈ z) → (⋂₀ x) y

tactic: rintro H - ⟨z, rfl, hxz⟩
state_before: x : Class
y : ZFSet
⊢ (∀ (z : ZFSet), x z → y ∈ z) → (⋂₀ x) y
state_after: case intro.intro
x : Class
y : ZFSet
H : ∀ (z : ZFSet), x z → y ∈ z
z : ZFSet
hxz : x z
⊢ y ∈ ↑z

tactic: exact H _ hxz
state_before: case intro.intro
x : Class
y : ZFSet
H : ∀ (z : ZFSet), x z → y ∈ z
z : ZFSet
hxz : x z
⊢ y ∈ ↑z
state_after: no goals
Theorem: Even.pow_pos_iff
File: Mathlib/Algebra/Order/Ring/Basic.lean

tactic: obtain ⟨k, rfl⟩ := hn
state_before: α : Type u_1
M : Type u_2
R : Type u_3
inst✝¹ : LinearOrderedSemiring R
a b : R
m n : ℕ
inst✝ : ExistsAddOfLE R
hn : Even n
h₀ : n ≠ 0
⊢ 0 < a ^ n ↔ a ≠ 0
state_after: case intro
α : Type u_1
M : Type u_2
R : Type u_3
inst✝¹ : LinearOrderedSemiring R
a b : R
m : ℕ
inst✝ : ExistsAddOfLE R
k : ℕ
h₀ : k + k ≠ 0
⊢ 0 < a ^ (k + k) ↔ a ≠ 0

tactic: rw [pow_add, mul_self_pos (α := R), pow_ne_zero_iff (by simpa using h₀)]
state_before: case intro
α : Type u_1
M : Type u_2
R : Type u_3
inst✝¹ : LinearOrderedSemiring R
a b : R
m : ℕ
inst✝ : ExistsAddOfLE R
k : ℕ
h₀ : k + k ≠ 0
⊢ 0 < a ^ (k + k) ↔ a ≠ 0
state_after: no goals

tactic: simpa using h₀
state_before: α : Type u_1
M : Type u_2
R : Type u_3
inst✝¹ : LinearOrderedSemiring R
a b : R
m : ℕ
inst✝ : ExistsAddOfLE R
k : ℕ
h₀ : k + k ≠ 0
⊢ k ≠ 0
state_after: no goals
Theorem: AffineMap.decomp'
File: Mathlib/LinearAlgebra/AffineSpace/AffineMap.lean

tactic: rw [decomp]
state_before: k : Type u_1
V1 : Type u_2
P1 : Type u_3
V2 : Type u_4
P2 : Type u_5
V3 : Type u_6
P3 : Type u_7
V4 : Type u_8
P4 : Type u_9
inst✝¹² : Ring k
inst✝¹¹ : AddCommGroup V1
inst✝¹⁰ : Module k V1
inst✝⁹ : AffineSpace V1 P1
inst✝⁸ : AddCommGroup V2
inst✝⁷ : Module k V2
inst✝⁶ : AffineSpace V2 P2
inst✝⁵ : AddCommGroup V3
inst✝⁴ : Module k V3
inst✝³ : AffineSpace V3 P3
inst✝² : AddCommGroup V4
inst✝¹ : Module k V4
inst✝ : AffineSpace V4 P4
f : V1 →ᵃ[k] V2
⊢ ⇑f.linear = ⇑f - fun x => f 0
state_after: k : Type u_1
V1 : Type u_2
P1 : Type u_3
V2 : Type u_4
P2 : Type u_5
V3 : Type u_6
P3 : Type u_7
V4 : Type u_8
P4 : Type u_9
inst✝¹² : Ring k
inst✝¹¹ : AddCommGroup V1
inst✝¹⁰ : Module k V1
inst✝⁹ : AffineSpace V1 P1
inst✝⁸ : AddCommGroup V2
inst✝⁷ : Module k V2
inst✝⁶ : AffineSpace V2 P2
inst✝⁵ : AddCommGroup V3
inst✝⁴ : Module k V3
inst✝³ : AffineSpace V3 P3
inst✝² : AddCommGroup V4
inst✝¹ : Module k V4
inst✝ : AffineSpace V4 P4
f : V1 →ᵃ[k] V2
⊢ ⇑f.linear = (⇑f.linear + fun x => f 0) - fun x => (⇑f.linear + fun x => f 0) 0

tactic: simp only [LinearMap.map_zero, Pi.add_apply, add_sub_cancel_right, zero_add]
state_before: k : Type u_1
V1 : Type u_2
P1 : Type u_3
V2 : Type u_4
P2 : Type u_5
V3 : Type u_6
P3 : Type u_7
V4 : Type u_8
P4 : Type u_9
inst✝¹² : Ring k
inst✝¹¹ : AddCommGroup V1
inst✝¹⁰ : Module k V1
inst✝⁹ : AffineSpace V1 P1
inst✝⁸ : AddCommGroup V2
inst✝⁷ : Module k V2
inst✝⁶ : AffineSpace V2 P2
inst✝⁵ : AddCommGroup V3
inst✝⁴ : Module k V3
inst✝³ : AffineSpace V3 P3
inst✝² : AddCommGroup V4
inst✝¹ : Module k V4
inst✝ : AffineSpace V4 P4
f : V1 →ᵃ[k] V2
⊢ ⇑f.linear = (⇑f.linear + fun x => f 0) - fun x => (⇑f.linear + fun x => f 0) 0
state_after: no goals
Theorem: MeasureTheory.FiniteMeasure.testAgainstNN_const
File: Mathlib/MeasureTheory/Measure/FiniteMeasure.lean

tactic: simp [← ENNReal.coe_inj]
state_before: Ω : Type u_1
inst✝⁵ : MeasurableSpace Ω
R : Type u_2
inst✝⁴ : SMul R ℝ≥0
inst✝³ : SMul R ℝ≥0∞
inst✝² : IsScalarTower R ℝ≥0 ℝ≥0∞
inst✝¹ : IsScalarTower R ℝ≥0∞ ℝ≥0∞
inst✝ : TopologicalSpace Ω
μ : FiniteMeasure Ω
c : ℝ≥0
⊢ μ.testAgainstNN (const Ω c) = c * μ.mass
state_after: no goals
Theorem: Polynomial.degree_eq_degree_of_associated
File: Mathlib/Algebra/Polynomial/RingDivision.lean

tactic: let ⟨u, hu⟩ := h
state_before: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p q : R[X]
h : Associated p q
⊢ p.degree = q.degree
state_after: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p q : R[X]
h : Associated p q
u : R[X]ˣ
hu : p * ↑u = q
⊢ p.degree = q.degree

tactic: simp [hu.symm]
state_before: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p q : R[X]
h : Associated p q
u : R[X]ˣ
hu : p * ↑u = q
⊢ p.degree = q.degree
state_after: no goals
Theorem: Finset.disjoint_insert_left
File: Mathlib/Data/Finset/Basic.lean

tactic: simp only [disjoint_left, mem_insert, or_imp, forall_and, forall_eq]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s t u v : Finset α
a b : α
⊢ _root_.Disjoint (insert a s) t ↔ a ∉ t ∧ _root_.Disjoint s t
state_after: no goals
Theorem: Basis.orientation_isEmpty
File: Mathlib/LinearAlgebra/Orientation.lean

tactic: rw [Basis.orientation]
state_before: R : Type u_1
inst✝⁹ : StrictOrderedCommRing R
M : Type u_2
N : Type u_3
inst✝⁸ : AddCommGroup M
inst✝⁷ : AddCommGroup N
inst✝⁶ : Module R M
inst✝⁵ : Module R N
ι : Type u_4
ι' : Type u_5
inst✝⁴ : Fintype ι
inst✝³ : DecidableEq ι
inst✝² : Fintype ι'
inst✝¹ : DecidableEq ι'
inst✝ : IsEmpty ι
b : Basis ι R M
⊢ b.orientation = positiveOrientation
state_after: R : Type u_1
inst✝⁹ : StrictOrderedCommRing R
M : Type u_2
N : Type u_3
inst✝⁸ : AddCommGroup M
inst✝⁷ : AddCommGroup N
inst✝⁶ : Module R M
inst✝⁵ : Module R N
ι : Type u_4
ι' : Type u_5
inst✝⁴ : Fintype ι
inst✝³ : DecidableEq ι
inst✝² : Fintype ι'
inst✝¹ : DecidableEq ι'
inst✝ : IsEmpty ι
b : Basis ι R M
⊢ rayOfNeZero R b.det ⋯ = positiveOrientation

tactic: congr
state_before: R : Type u_1
inst✝⁹ : StrictOrderedCommRing R
M : Type u_2
N : Type u_3
inst✝⁸ : AddCommGroup M
inst✝⁷ : AddCommGroup N
inst✝⁶ : Module R M
inst✝⁵ : Module R N
ι : Type u_4
ι' : Type u_5
inst✝⁴ : Fintype ι
inst✝³ : DecidableEq ι
inst✝² : Fintype ι'
inst✝¹ : DecidableEq ι'
inst✝ : IsEmpty ι
b : Basis ι R M
⊢ rayOfNeZero R b.det ⋯ = positiveOrientation
state_after: case e_v
R : Type u_1
inst✝⁹ : StrictOrderedCommRing R
M : Type u_2
N : Type u_3
inst✝⁸ : AddCommGroup M
inst✝⁷ : AddCommGroup N
inst✝⁶ : Module R M
inst✝⁵ : Module R N
ι : Type u_4
ι' : Type u_5
inst✝⁴ : Fintype ι
inst✝³ : DecidableEq ι
inst✝² : Fintype ι'
inst✝¹ : DecidableEq ι'
inst✝ : IsEmpty ι
b : Basis ι R M
⊢ b.det = AlternatingMap.constLinearEquivOfIsEmpty 1

tactic: exact b.det_isEmpty
state_before: case e_v
R : Type u_1
inst✝⁹ : StrictOrderedCommRing R
M : Type u_2
N : Type u_3
inst✝⁸ : AddCommGroup M
inst✝⁷ : AddCommGroup N
inst✝⁶ : Module R M
inst✝⁵ : Module R N
ι : Type u_4
ι' : Type u_5
inst✝⁴ : Fintype ι
inst✝³ : DecidableEq ι
inst✝² : Fintype ι'
inst✝¹ : DecidableEq ι'
inst✝ : IsEmpty ι
b : Basis ι R M
⊢ b.det = AlternatingMap.constLinearEquivOfIsEmpty 1
state_after: no goals
Theorem: StructureGroupoid.LocalInvariantProp.liftPropAt_chart_symm
File: Mathlib/Geometry/Manifold/LocalInvariantProperties.lean

tactic: simp
state_before: H : Type u_1
M : Type u_2
H' : Type u_3
M' : Type u_4
X : Type u_5
inst✝⁷ : TopologicalSpace H
inst✝⁶ : TopologicalSpace M
inst✝⁵ : ChartedSpace H M
inst✝⁴ : TopologicalSpace H'
inst✝³ : TopologicalSpace M'
inst✝² : ChartedSpace H' M'
inst✝¹ : TopologicalSpace X
G : StructureGroupoid H
G' : StructureGroupoid H'
e e' : PartialHomeomorph M H
f f' : PartialHomeomorph M' H'
P : (H → H') → Set H → H → Prop
g g' : M → M'
s t : Set M
x : M
Q : (H → H) → Set H → H → Prop
hG✝ : G.LocalInvariantProp G' P
inst✝ : HasGroupoid M G
hG : G.LocalInvariantProp G Q
hQ : ∀ (y : H), Q id univ y
⊢ ↑(chartAt H x) x ∈ (chartAt H x).target
state_after: no goals
Theorem: Finmap.liftOn₂_toFinmap
File: Mathlib/Data/Finmap.lean

tactic: cases s₁
state_before: α : Type u
β : α → Type v
γ : Type u_1
s₁ s₂ : AList β
f : AList β → AList β → γ
H : ∀ (a₁ b₁ a₂ b₂ : AList β), a₁.entries ~ a₂.entries → b₁.entries ~ b₂.entries → f a₁ b₁ = f a₂ b₂
⊢ ⟦s₁⟧.liftOn₂ ⟦s₂⟧ f H = f s₁ s₂
state_after: case mk
α : Type u
β : α → Type v
γ : Type u_1
s₂ : AList β
f : AList β → AList β → γ
H : ∀ (a₁ b₁ a₂ b₂ : AList β), a₁.entries ~ a₂.entries → b₁.entries ~ b₂.entries → f a₁ b₁ = f a₂ b₂
entries✝ : List (Sigma β)
nodupKeys✝ : entries✝.NodupKeys
⊢ ⟦{ entries := entries✝, nodupKeys := nodupKeys✝ }⟧.liftOn₂ ⟦s₂⟧ f H =
    f { entries := entries✝, nodupKeys := nodupKeys✝ } s₂

tactic: cases s₂
state_before: case mk
α : Type u
β : α → Type v
γ : Type u_1
s₂ : AList β
f : AList β → AList β → γ
H : ∀ (a₁ b₁ a₂ b₂ : AList β), a₁.entries ~ a₂.entries → b₁.entries ~ b₂.entries → f a₁ b₁ = f a₂ b₂
entries✝ : List (Sigma β)
nodupKeys✝ : entries✝.NodupKeys
⊢ ⟦{ entries := entries✝, nodupKeys := nodupKeys✝ }⟧.liftOn₂ ⟦s₂⟧ f H =
    f { entries := entries✝, nodupKeys := nodupKeys✝ } s₂
state_after: case mk.mk
α : Type u
β : α → Type v
γ : Type u_1
f : AList β → AList β → γ
H : ∀ (a₁ b₁ a₂ b₂ : AList β), a₁.entries ~ a₂.entries → b₁.entries ~ b₂.entries → f a₁ b₁ = f a₂ b₂
entries✝¹ : List (Sigma β)
nodupKeys✝¹ : entries✝¹.NodupKeys
entries✝ : List (Sigma β)
nodupKeys✝ : entries✝.NodupKeys
⊢ ⟦{ entries := entries✝¹, nodupKeys := nodupKeys✝¹ }⟧.liftOn₂ ⟦{ entries := entries✝, nodupKeys := nodupKeys✝ }⟧ f H =
    f { entries := entries✝¹, nodupKeys := nodupKeys✝¹ } { entries := entries✝, nodupKeys := nodupKeys✝ }

tactic: rfl
state_before: case mk.mk
α : Type u
β : α → Type v
γ : Type u_1
f : AList β → AList β → γ
H : ∀ (a₁ b₁ a₂ b₂ : AList β), a₁.entries ~ a₂.entries → b₁.entries ~ b₂.entries → f a₁ b₁ = f a₂ b₂
entries✝¹ : List (Sigma β)
nodupKeys✝¹ : entries✝¹.NodupKeys
entries✝ : List (Sigma β)
nodupKeys✝ : entries✝.NodupKeys
⊢ ⟦{ entries := entries✝¹, nodupKeys := nodupKeys✝¹ }⟧.liftOn₂ ⟦{ entries := entries✝, nodupKeys := nodupKeys✝ }⟧ f H =
    f { entries := entries✝¹, nodupKeys := nodupKeys✝¹ } { entries := entries✝, nodupKeys := nodupKeys✝ }
state_after: no goals
Theorem: Equiv.Perm.sign_surjective
File: Mathlib/GroupTheory/Perm/Sign.lean

tactic: simp [h]
state_before: α : Type u
inst✝² : DecidableEq α
β : Type v
inst✝¹ : Fintype α
inst✝ : Nontrivial α
a : ℤˣ
h : a = 1
⊢ sign 1 = a
state_after: no goals

tactic: rw [sign_swap hxy, h]
state_before: α : Type u
inst✝² : DecidableEq α
β : Type v
inst✝¹ : Fintype α
inst✝ : Nontrivial α
a : ℤˣ
h : a = -1
x y : α
hxy : x ≠ y
⊢ sign (swap x y) = a
state_after: no goals
Theorem: ContinuousLinearMap.map_neg₂
File: Mathlib/Analysis/NormedSpace/BoundedLinearMaps.lean

tactic: rw [f.map_neg, neg_apply]
state_before: 𝕜 : Type u_1
inst✝¹⁶ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹⁵ : NormedAddCommGroup E
inst✝¹⁴ : NormedSpace 𝕜 E
F : Type u_3
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_4
inst✝¹¹ : NormedAddCommGroup G
inst✝¹⁰ : NormedSpace 𝕜 G
R : Type u_5
𝕜₂ : Type u_6
𝕜' : Type u_7
inst✝⁹ : NontriviallyNormedField 𝕜'
inst✝⁸ : NontriviallyNormedField 𝕜₂
M : Type u_8
inst✝⁷ : TopologicalSpace M
σ₁₂ : 𝕜 →+* 𝕜₂
G' : Type u_9
inst✝⁶ : NormedAddCommGroup G'
inst✝⁵ : NormedSpace 𝕜₂ G'
inst✝⁴ : NormedSpace 𝕜' G'
inst✝³ : SMulCommClass 𝕜₂ 𝕜' G'
inst✝² : Ring R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
ρ₁₂ : R →+* 𝕜'
f : M →SL[ρ₁₂] F →SL[σ₁₂] G'
x : M
y : F
⊢ (f (-x)) y = -(f x) y
state_after: no goals
Theorem: Finset.le_card_sdiff
File: Mathlib/Data/Finset/Card.lean

tactic: rw [sdiff_inter_self_right t s]
state_before: α : Type u_1
β : Type u_2
R : Type u_3
s✝ t✝ u : Finset α
f : α → β
n : ℕ
inst✝ : DecidableEq α
s t : Finset α
⊢ (t \ (s ∩ t)).card ≤ (t \ s).card
state_after: no goals
Theorem: Submodule.mem_iInf
File: Mathlib/Algebra/Module/Submodule/Lattice.lean

tactic: rw [← SetLike.mem_coe, iInf_coe, Set.mem_iInter]
state_before: R : Type u_1
S : Type u_2
M : Type u_3
inst✝⁶ : Semiring R
inst✝⁵ : Semiring S
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
inst✝² : Module S M
inst✝¹ : SMul S R
inst✝ : IsScalarTower S R M
p✝ q : Submodule R M
ι : Sort u_4
p : ι → Submodule R M
x : M
⊢ x ∈ ⨅ i, p i ↔ ∀ (i : ι), x ∈ p i
state_after: R : Type u_1
S : Type u_2
M : Type u_3
inst✝⁶ : Semiring R
inst✝⁵ : Semiring S
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
inst✝² : Module S M
inst✝¹ : SMul S R
inst✝ : IsScalarTower S R M
p✝ q : Submodule R M
ι : Sort u_4
p : ι → Submodule R M
x : M
⊢ (∀ (i : ι), x ∈ ↑(p i)) ↔ ∀ (i : ι), x ∈ p i

tactic: rfl
state_before: R : Type u_1
S : Type u_2
M : Type u_3
inst✝⁶ : Semiring R
inst✝⁵ : Semiring S
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
inst✝² : Module S M
inst✝¹ : SMul S R
inst✝ : IsScalarTower S R M
p✝ q : Submodule R M
ι : Sort u_4
p : ι → Submodule R M
x : M
⊢ (∀ (i : ι), x ∈ ↑(p i)) ↔ ∀ (i : ι), x ∈ p i
state_after: no goals
Theorem: CategoryTheory.Limits.colimit.isoColimitCocone_ι_hom
File: Mathlib/CategoryTheory/Limits/HasLimits.lean

tactic: dsimp [colimit.isoColimitCocone, IsColimit.coconePointUniqueUpToIso]
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✝ : HasColimit F
t : ColimitCocone F
j : J
⊢ ι F j ≫ (isoColimitCocone t).hom = t.cocone.ι.app j
state_after: 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✝ : HasColimit F
t : ColimitCocone F
j : J
⊢ ι F j ≫ desc F t.cocone = t.cocone.ι.app j

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✝ : HasColimit F
t : ColimitCocone F
j : J
⊢ ι F j ≫ desc F t.cocone = t.cocone.ι.app j
state_after: no goals
Theorem: SemidirectProduct.lift_inr
File: Mathlib/GroupTheory/SemidirectProduct.lean

tactic: simp [lift]
state_before: N : Type u_1
G : Type u_2
H : Type u_3
inst✝² : Group N
inst✝¹ : Group G
inst✝ : Group H
φ : G →* MulAut N
f₁ : N →* H
f₂ : G →* H
h : ∀ (g : G), f₁.comp (MulEquiv.toMonoidHom (φ g)) = (MulEquiv.toMonoidHom (MulAut.conj (f₂ g))).comp f₁
g : G
⊢ (lift f₁ f₂ h) (inr g) = f₂ g
state_after: no goals
Theorem: StieltjesFunction.measure_Ico
File: Mathlib/MeasureTheory/Measure/Stieltjes.lean

tactic: rcases le_or_lt b a with (hab | hab)
state_before: f : StieltjesFunction
a b : ℝ
⊢ f.measure (Ico a b) = ofReal (leftLim (↑f) b - leftLim (↑f) a)
state_after: case inl
f : StieltjesFunction
a b : ℝ
hab : b ≤ a
⊢ f.measure (Ico a b) = ofReal (leftLim (↑f) b - leftLim (↑f) a)

case inr
f : StieltjesFunction
a b : ℝ
hab : a < b
⊢ f.measure (Ico a b) = ofReal (leftLim (↑f) b - leftLim (↑f) a)

tactic: simp only [hab, measure_empty, Ico_eq_empty, not_lt]
state_before: case inl
f : StieltjesFunction
a b : ℝ
hab : b ≤ a
⊢ f.measure (Ico a b) = ofReal (leftLim (↑f) b - leftLim (↑f) a)
state_after: case inl
f : StieltjesFunction
a b : ℝ
hab : b ≤ a
⊢ 0 = ofReal (leftLim (↑f) b - leftLim (↑f) a)

tactic: symm
state_before: case inl
f : StieltjesFunction
a b : ℝ
hab : b ≤ a
⊢ 0 = ofReal (leftLim (↑f) b - leftLim (↑f) a)
state_after: case inl
f : StieltjesFunction
a b : ℝ
hab : b ≤ a
⊢ ofReal (leftLim (↑f) b - leftLim (↑f) a) = 0

tactic: simp [ENNReal.ofReal_eq_zero, f.mono.leftLim hab]
state_before: case inl
f : StieltjesFunction
a b : ℝ
hab : b ≤ a
⊢ ofReal (leftLim (↑f) b - leftLim (↑f) a) = 0
state_after: no goals

tactic: have A : Disjoint {a} (Ioo a b) := by simp
state_before: case inr
f : StieltjesFunction
a b : ℝ
hab : a < b
⊢ f.measure (Ico a b) = ofReal (leftLim (↑f) b - leftLim (↑f) a)
state_after: case inr
f : StieltjesFunction
a b : ℝ
hab : a < b
A : Disjoint {a} (Ioo a b)
⊢ f.measure (Ico a b) = ofReal (leftLim (↑f) b - leftLim (↑f) a)

tactic: simp [← Icc_union_Ioo_eq_Ico le_rfl hab, -singleton_union, hab.ne, f.mono.leftLim_le,
  measure_union A measurableSet_Ioo, f.mono.le_leftLim hab, ← ENNReal.ofReal_add]
state_before: case inr
f : StieltjesFunction
a b : ℝ
hab : a < b
A : Disjoint {a} (Ioo a b)
⊢ f.measure (Ico a b) = ofReal (leftLim (↑f) b - leftLim (↑f) a)
state_after: no goals

tactic: simp
state_before: f : StieltjesFunction
a b : ℝ
hab : a < b
⊢ Disjoint {a} (Ioo a b)
state_after: no goals
Theorem: MeasureTheory.edist_indicatorConstLp_eq_nnnorm
File: Mathlib/MeasureTheory/Function/LpSpace.lean

tactic: unfold indicatorConstLp
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
s : Set α
hs : MeasurableSet s
hμs : μ s ≠ ⊤
c : E
t : Set α
ht : MeasurableSet t
hμt : μ t ≠ ⊤
⊢ edist (indicatorConstLp p hs hμs c) (indicatorConstLp p ht hμt c) = ↑‖indicatorConstLp p ⋯ ⋯ c‖₊
state_after: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
s : Set α
hs : MeasurableSet s
hμs : μ s ≠ ⊤
c : E
t : Set α
ht : MeasurableSet t
hμt : μ t ≠ ⊤
⊢ edist (Memℒp.toLp (s.indicator fun x => c) ⋯) (Memℒp.toLp (t.indicator fun x => c) ⋯) =
    ↑‖Memℒp.toLp ((symmDiff s t).indicator fun x => c) ⋯‖₊

tactic: rw [Lp.edist_toLp_toLp, snorm_indicator_sub_indicator, Lp.coe_nnnorm_toLp]
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
s : Set α
hs : MeasurableSet s
hμs : μ s ≠ ⊤
c : E
t : Set α
ht : MeasurableSet t
hμt : μ t ≠ ⊤
⊢ edist (Memℒp.toLp (s.indicator fun x => c) ⋯) (Memℒp.toLp (t.indicator fun x => c) ⋯) =
    ↑‖Memℒp.toLp ((symmDiff s t).indicator fun x => c) ⋯‖₊
state_after: no goals