1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: writtenInExtChartAt_extChartAt_symm
File: Mathlib/Geometry/Manifold/SmoothManifoldWithCorners.lean

tactic: simp_all only [mfld_simps]
state_before: 𝕜 : Type u_1
E : Type u_2
M : Type u_3
H : Type u_4
E' : Type u_5
M' : Type u_6
H' : Type u_7
inst✝¹⁰ : NontriviallyNormedField 𝕜
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
inst✝⁷ : TopologicalSpace H
inst✝⁶ : TopologicalSpace M
f f' : PartialHomeomorph M H
I : ModelWithCorners 𝕜 E H
inst✝⁵ : NormedAddCommGroup E'
inst✝⁴ : NormedSpace 𝕜 E'
inst✝³ : TopologicalSpace H'
inst✝² : TopologicalSpace M'
I' : ModelWithCorners 𝕜 E' H'
s t : Set M
inst✝¹ : ChartedSpace H M
inst✝ : ChartedSpace H' M'
x : M
y : E
h : y ∈ (extChartAt I x).target
⊢ writtenInExtChartAt 𝓘(𝕜, E) I (↑(extChartAt I x) x) (↑(extChartAt I x).symm) y = y
state_after: no goals
Theorem: Basis.coe_toDual_self
File: Mathlib/LinearAlgebra/Dual.lean

tactic: ext
state_before: R : Type uR
M : Type uM
K : Type uK
V : Type uV
ι : Type uι
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
inst✝ : DecidableEq ι
b : Basis ι R M
i : ι
⊢ b.toDual (b i) = b.coord i
state_after: case h
R : Type uR
M : Type uM
K : Type uK
V : Type uV
ι : Type uι
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
inst✝ : DecidableEq ι
b : Basis ι R M
i : ι
x✝ : M
⊢ (b.toDual (b i)) x✝ = (b.coord i) x✝

tactic: apply toDual_apply_right
state_before: case h
R : Type uR
M : Type uM
K : Type uK
V : Type uV
ι : Type uι
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
inst✝ : DecidableEq ι
b : Basis ι R M
i : ι
x✝ : M
⊢ (b.toDual (b i)) x✝ = (b.coord i) x✝
state_after: no goals
Theorem: CategoryTheory.Functor.congr_obj
File: Mathlib/CategoryTheory/EqToHom.lean

tactic: rw [h]
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
β : Sort u_1
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F G : C ⥤ D
h : F = G
X : C
⊢ F.obj X = G.obj X
state_after: no goals
Theorem: pow_injective_of_not_unit
File: Mathlib/Algebra/Associated.lean

tactic: refine injective_of_lt_imp_ne fun n m h => DvdNotUnit.ne ⟨pow_ne_zero n hq', q ^ (m - n), ?_, ?_⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : CancelCommMonoidWithZero α
q : α
hq : ¬IsUnit q
hq' : q ≠ 0
⊢ Function.Injective fun n => q ^ n
state_after: case refine_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : CancelCommMonoidWithZero α
q : α
hq : ¬IsUnit q
hq' : q ≠ 0
n m : ℕ
h : n < m
⊢ ¬IsUnit (q ^ (m - n))

case refine_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : CancelCommMonoidWithZero α
q : α
hq : ¬IsUnit q
hq' : q ≠ 0
n m : ℕ
h : n < m
⊢ q ^ m = q ^ n * q ^ (m - n)

tactic: exact not_isUnit_of_not_isUnit_dvd hq (dvd_pow (dvd_refl _) (Nat.sub_pos_of_lt h).ne')
state_before: case refine_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : CancelCommMonoidWithZero α
q : α
hq : ¬IsUnit q
hq' : q ≠ 0
n m : ℕ
h : n < m
⊢ ¬IsUnit (q ^ (m - n))
state_after: no goals

tactic: exact (pow_mul_pow_sub q h.le).symm
state_before: case refine_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : CancelCommMonoidWithZero α
q : α
hq : ¬IsUnit q
hq' : q ≠ 0
n m : ℕ
h : n < m
⊢ q ^ m = q ^ n * q ^ (m - n)
state_after: no goals
Theorem: Nat.Partrec'.bind
File: Mathlib/Computability/Halting.lean

tactic: refine Fin.cases ?_ (fun i => ?_) i <;> simp [*]
state_before: n : ℕ
f : Vector ℕ n →. ℕ
g : Vector ℕ (n + 1) →. ℕ
hf : Partrec' f
hg : Partrec' g
i : Fin (n + 1)
⊢ Partrec' ((fun i => Fin.cases f (fun i v => ↑(some (v.get i))) i) i)
state_after: case refine_2
n : ℕ
f : Vector ℕ n →. ℕ
g : Vector ℕ (n + 1) →. ℕ
hf : Partrec' f
hg : Partrec' g
i✝ : Fin (n + 1)
i : Fin n
⊢ Partrec' fun v => Part.some (v.get i)

tactic: exact prim (Nat.Primrec'.get _)
state_before: case refine_2
n : ℕ
f : Vector ℕ n →. ℕ
g : Vector ℕ (n + 1) →. ℕ
hf : Partrec' f
hg : Partrec' g
i✝ : Fin (n + 1)
i : Fin n
⊢ Partrec' fun v => Part.some (v.get i)
state_after: no goals

tactic: simp [mOfFn, Part.bind_assoc, pure]
state_before: n : ℕ
f : Vector ℕ n →. ℕ
g : Vector ℕ (n + 1) →. ℕ
hf : Partrec' f
hg : Partrec' g
v : Vector ℕ n
⊢ (mOfFn fun i => Fin.cases f (fun i v => ↑(some (v.get i))) i v) >>= g = (f v).bind fun a => g (a ::ᵥ v)
state_after: no goals
Theorem: Matrix.toLin_one
File: Mathlib/LinearAlgebra/Matrix/ToLin.lean

tactic: rw [← LinearMap.toMatrix_id v₁, Matrix.toLin_toMatrix]
state_before: R : Type u_1
inst✝⁷ : CommSemiring R
l : Type u_2
m : Type u_3
n : Type u_4
inst✝⁶ : Fintype n
inst✝⁵ : Finite m
inst✝⁴ : DecidableEq n
M₁ : Type u_5
M₂ : Type u_6
inst✝³ : AddCommMonoid M₁
inst✝² : AddCommMonoid M₂
inst✝¹ : Module R M₁
inst✝ : Module R M₂
v₁ : Basis n R M₁
v₂ : Basis m R M₂
⊢ (toLin v₁ v₁) 1 = LinearMap.id
state_after: no goals
Theorem: PartialHomeomorph.isBigOWith_congr
File: Mathlib/Analysis/Asymptotics/Asymptotics.lean

tactic: have := e.continuousAt (e.map_target hb)
state_before: α : Type u_1
β : Type u_2
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
E : Type u_3
inst✝¹ : Norm E
F : Type u_4
inst✝ : Norm F
e : PartialHomeomorph α β
b : β
hb : b ∈ e.target
f : β → E
g : β → F
C : ℝ
h : IsBigOWith C (𝓝 b) f g
⊢ Tendsto (↑e) (𝓝 (↑e.symm b)) (𝓝 b)
state_after: α : Type u_1
β : Type u_2
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
E : Type u_3
inst✝¹ : Norm E
F : Type u_4
inst✝ : Norm F
e : PartialHomeomorph α β
b : β
hb : b ∈ e.target
f : β → E
g : β → F
C : ℝ
h : IsBigOWith C (𝓝 b) f g
this : ContinuousAt (↑e) (↑e.symm b)
⊢ Tendsto (↑e) (𝓝 (↑e.symm b)) (𝓝 b)

tactic: rwa [ContinuousAt, e.rightInvOn hb] at this
state_before: α : Type u_1
β : Type u_2
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
E : Type u_3
inst✝¹ : Norm E
F : Type u_4
inst✝ : Norm F
e : PartialHomeomorph α β
b : β
hb : b ∈ e.target
f : β → E
g : β → F
C : ℝ
h : IsBigOWith C (𝓝 b) f g
this : ContinuousAt (↑e) (↑e.symm b)
⊢ Tendsto (↑e) (𝓝 (↑e.symm b)) (𝓝 b)
state_after: no goals
Theorem: Real.exp_ne_zero
File: Mathlib/Data/Complex/Exponential.lean

tactic: rw [exp, ← ofReal_inj] at h
state_before: x y : ℝ
h : rexp x = 0
⊢ cexp ↑x = 0
state_after: x y : ℝ
h : ↑(cexp ↑x).re = ↑0
⊢ cexp ↑x = 0

tactic: simp_all
state_before: x y : ℝ
h : ↑(cexp ↑x).re = ↑0
⊢ cexp ↑x = 0
state_after: no goals
Theorem: PiNat.cylinder_zero
File: Mathlib/Topology/MetricSpace/PiNat.lean

tactic: simp [cylinder_eq_pi]
state_before: E : ℕ → Type u_1
x : (n : ℕ) → E n
⊢ cylinder x 0 = univ
state_after: no goals
Theorem: Polynomial.intCast_inj
File: Mathlib/Algebra/Polynomial/Coeff.lean

tactic: constructor
state_before: R✝ : Type u
S : Type v
a b : R✝
n✝ m✝ : ℕ
inst✝² : Semiring R✝
p q r : R✝[X]
m n : ℤ
R : Type u_1
inst✝¹ : Ring R
inst✝ : CharZero R
⊢ ↑m = ↑n ↔ m = n
state_after: case mp
R✝ : Type u
S : Type v
a b : R✝
n✝ m✝ : ℕ
inst✝² : Semiring R✝
p q r : R✝[X]
m n : ℤ
R : Type u_1
inst✝¹ : Ring R
inst✝ : CharZero R
⊢ ↑m = ↑n → m = n

case mpr
R✝ : Type u
S : Type v
a b : R✝
n✝ m✝ : ℕ
inst✝² : Semiring R✝
p q r : R✝[X]
m n : ℤ
R : Type u_1
inst✝¹ : Ring R
inst✝ : CharZero R
⊢ m = n → ↑m = ↑n

tactic: intro h
state_before: case mp
R✝ : Type u
S : Type v
a b : R✝
n✝ m✝ : ℕ
inst✝² : Semiring R✝
p q r : R✝[X]
m n : ℤ
R : Type u_1
inst✝¹ : Ring R
inst✝ : CharZero R
⊢ ↑m = ↑n → m = n
state_after: case mp
R✝ : Type u
S : Type v
a b : R✝
n✝ m✝ : ℕ
inst✝² : Semiring R✝
p q r : R✝[X]
m n : ℤ
R : Type u_1
inst✝¹ : Ring R
inst✝ : CharZero R
h : ↑m = ↑n
⊢ m = n

tactic: apply_fun fun p => p.coeff 0 at h
state_before: case mp
R✝ : Type u
S : Type v
a b : R✝
n✝ m✝ : ℕ
inst✝² : Semiring R✝
p q r : R✝[X]
m n : ℤ
R : Type u_1
inst✝¹ : Ring R
inst✝ : CharZero R
h : ↑m = ↑n
⊢ m = n
state_after: case mp
R✝ : Type u
S : Type v
a b : R✝
n✝ m✝ : ℕ
inst✝² : Semiring R✝
p q r : R✝[X]
m n : ℤ
R : Type u_1
inst✝¹ : Ring R
inst✝ : CharZero R
h : (↑m).coeff 0 = (↑n).coeff 0
⊢ m = n

tactic: simpa using h
state_before: case mp
R✝ : Type u
S : Type v
a b : R✝
n✝ m✝ : ℕ
inst✝² : Semiring R✝
p q r : R✝[X]
m n : ℤ
R : Type u_1
inst✝¹ : Ring R
inst✝ : CharZero R
h : (↑m).coeff 0 = (↑n).coeff 0
⊢ m = n
state_after: no goals

tactic: rintro rfl
state_before: case mpr
R✝ : Type u
S : Type v
a b : R✝
n✝ m✝ : ℕ
inst✝² : Semiring R✝
p q r : R✝[X]
m n : ℤ
R : Type u_1
inst✝¹ : Ring R
inst✝ : CharZero R
⊢ m = n → ↑m = ↑n
state_after: case mpr
R✝ : Type u
S : Type v
a b : R✝
n m✝ : ℕ
inst✝² : Semiring R✝
p q r : R✝[X]
m : ℤ
R : Type u_1
inst✝¹ : Ring R
inst✝ : CharZero R
⊢ ↑m = ↑m

tactic: rfl
state_before: case mpr
R✝ : Type u
S : Type v
a b : R✝
n m✝ : ℕ
inst✝² : Semiring R✝
p q r : R✝[X]
m : ℤ
R : Type u_1
inst✝¹ : Ring R
inst✝ : CharZero R
⊢ ↑m = ↑m
state_after: no goals
Theorem: odd_abs
File: Mathlib/Algebra/Order/Ring/Abs.lean

tactic: cases' abs_choice a with h h <;> simp only [h, odd_neg]
state_before: α : Type u_1
inst✝¹ : LinearOrder α
inst✝ : Ring α
a : α
⊢ Odd |a| ↔ Odd a
state_after: no goals
Theorem: Cardinal.mk_finsupp_nat
File: Mathlib/SetTheory/Cardinal/Ordinal.lean

tactic: simp
state_before: α : Type u
inst✝ : Nonempty α
⊢ #(α →₀ ℕ) = max #α ℵ₀
state_after: no goals
Theorem: StarSubalgebra.eq_top_iff
File: Mathlib/Algebra/Star/Subalgebra.lean

tactic: rw [h]
state_before: F : Type u_1
R : Type u_2
A : Type u_3
B : Type u_4
inst✝⁹ : CommSemiring R
inst✝⁸ : StarRing R
inst✝⁷ : Semiring A
inst✝⁶ : Algebra R A
inst✝⁵ : StarRing A
inst✝⁴ : StarModule R A
inst✝³ : Semiring B
inst✝² : Algebra R B
inst✝¹ : StarRing B
inst✝ : StarModule R B
S : StarSubalgebra R A
h : S = ⊤
x : A
⊢ x ∈ S
state_after: F : Type u_1
R : Type u_2
A : Type u_3
B : Type u_4
inst✝⁹ : CommSemiring R
inst✝⁸ : StarRing R
inst✝⁷ : Semiring A
inst✝⁶ : Algebra R A
inst✝⁵ : StarRing A
inst✝⁴ : StarModule R A
inst✝³ : Semiring B
inst✝² : Algebra R B
inst✝¹ : StarRing B
inst✝ : StarModule R B
S : StarSubalgebra R A
h : S = ⊤
x : A
⊢ x ∈ ⊤

tactic: exact mem_top
state_before: F : Type u_1
R : Type u_2
A : Type u_3
B : Type u_4
inst✝⁹ : CommSemiring R
inst✝⁸ : StarRing R
inst✝⁷ : Semiring A
inst✝⁶ : Algebra R A
inst✝⁵ : StarRing A
inst✝⁴ : StarModule R A
inst✝³ : Semiring B
inst✝² : Algebra R B
inst✝¹ : StarRing B
inst✝ : StarModule R B
S : StarSubalgebra R A
h : S = ⊤
x : A
⊢ x ∈ ⊤
state_after: no goals

tactic: ext x
state_before: F : Type u_1
R : Type u_2
A : Type u_3
B : Type u_4
inst✝⁹ : CommSemiring R
inst✝⁸ : StarRing R
inst✝⁷ : Semiring A
inst✝⁶ : Algebra R A
inst✝⁵ : StarRing A
inst✝⁴ : StarModule R A
inst✝³ : Semiring B
inst✝² : Algebra R B
inst✝¹ : StarRing B
inst✝ : StarModule R B
S : StarSubalgebra R A
h : ∀ (x : A), x ∈ S
⊢ S = ⊤
state_after: case h
F : Type u_1
R : Type u_2
A : Type u_3
B : Type u_4
inst✝⁹ : CommSemiring R
inst✝⁸ : StarRing R
inst✝⁷ : Semiring A
inst✝⁶ : Algebra R A
inst✝⁵ : StarRing A
inst✝⁴ : StarModule R A
inst✝³ : Semiring B
inst✝² : Algebra R B
inst✝¹ : StarRing B
inst✝ : StarModule R B
S : StarSubalgebra R A
h : ∀ (x : A), x ∈ S
x : A
⊢ x ∈ S ↔ x ∈ ⊤

tactic: exact ⟨fun _ => mem_top, fun _ => h x⟩
state_before: case h
F : Type u_1
R : Type u_2
A : Type u_3
B : Type u_4
inst✝⁹ : CommSemiring R
inst✝⁸ : StarRing R
inst✝⁷ : Semiring A
inst✝⁶ : Algebra R A
inst✝⁵ : StarRing A
inst✝⁴ : StarModule R A
inst✝³ : Semiring B
inst✝² : Algebra R B
inst✝¹ : StarRing B
inst✝ : StarModule R B
S : StarSubalgebra R A
h : ∀ (x : A), x ∈ S
x : A
⊢ x ∈ S ↔ x ∈ ⊤
state_after: no goals
Theorem: monovary_iff_mul_rearrangement
File: Mathlib/Algebra/Order/Monovary.lean

tactic: simp only [smul_eq_mul, monovary_iff_smul_rearrangement]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedRing α
f g : ι → α
s : Set ι
a b c d : α
⊢ Monovary f g ↔ ∀ (i j : ι), f i * g j + f j * g i ≤ f i * g i + f j * g j
state_after: no goals
Theorem: Finsupp.domLCongr_single
File: Mathlib/LinearAlgebra/Finsupp.lean

tactic: simp
state_before: α : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
R : Type u_5
S : Type u_6
inst✝⁷ : Semiring R
inst✝⁶ : Semiring S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid N
inst✝² : Module R N
inst✝¹ : AddCommMonoid P
inst✝ : Module R P
α₁ : Type u_7
α₂ : Type u_8
e : α₁ ≃ α₂
i : α₁
m : M
⊢ (Finsupp.domLCongr e) (single i m) = single (e i) m
state_after: no goals
Theorem: Real.two_le_pi
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

tactic: norm_num
state_before: ⊢ 0 < 2
state_after: no goals

tactic: rw [div_self (two_ne_zero' ℝ)]
state_before: ⊢ 2 / 2 ≤ π / 2
state_after: ⊢ 1 ≤ π / 2

tactic: exact one_le_pi_div_two
state_before: ⊢ 1 ≤ π / 2
state_after: no goals
Theorem: subset_interior_iff_isOpen
File: Mathlib/Topology/Basic.lean

tactic: simp only [interior_eq_iff_isOpen.symm, Subset.antisymm_iff, interior_subset, true_and]
state_before: X : Type u
Y : Type v
ι : Sort w
α : Type u_1
β : Type u_2
x : X
s s₁ s₂ t : Set X
p p₁ p₂ : X → Prop
inst✝ : TopologicalSpace X
⊢ s ⊆ interior s ↔ IsOpen s
state_after: no goals
Theorem: Real.not_bddAbove_coe
File: Mathlib/Data/Real/Archimedean.lean

tactic: dsimp only [BddAbove, upperBounds]
state_before: ⊢ ¬BddAbove (range fun x => ↑x)
state_after: ⊢ ¬{x | ∀ ⦃a : ℝ⦄, (a ∈ range fun x => ↑x) → a ≤ x}.Nonempty

tactic: rw [Set.not_nonempty_iff_eq_empty]
state_before: ⊢ ¬{x | ∀ ⦃a : ℝ⦄, (a ∈ range fun x => ↑x) → a ≤ x}.Nonempty
state_after: ⊢ {x | ∀ ⦃a : ℝ⦄, (a ∈ range fun x => ↑x) → a ≤ x} = ∅

tactic: ext
state_before: ⊢ {x | ∀ ⦃a : ℝ⦄, (a ∈ range fun x => ↑x) → a ≤ x} = ∅
state_after: case h
x✝ : ℝ
⊢ x✝ ∈ {x | ∀ ⦃a : ℝ⦄, (a ∈ range fun x => ↑x) → a ≤ x} ↔ x✝ ∈ ∅

tactic: simpa using exists_rat_gt _
state_before: case h
x✝ : ℝ
⊢ x✝ ∈ {x | ∀ ⦃a : ℝ⦄, (a ∈ range fun x => ↑x) → a ≤ x} ↔ x✝ ∈ ∅
state_after: no goals
Theorem: CategoryTheory.Functor.hasRightDerivedFunctor_iff
File: Mathlib/CategoryTheory/Functor/Derived/RightDerived.lean

tactic: have : HasRightDerivedFunctor F W ↔ HasLeftKanExtension W.Q F :=
  ⟨fun h => h.hasLeftKanExtension', fun h => ⟨h⟩⟩
state_before: C : Type u_1
C' : Type ?u.80949
D : Type u_5
D' : Type ?u.80955
H : Type u_2
H' : Type ?u.80961
inst✝⁶ : Category.{u_3, u_1} C
inst✝⁵ : Category.{?u.80969, ?u.80949} C'
inst✝⁴ : Category.{u_6, u_5} D
inst✝³ : Category.{?u.80977, ?u.80955} D'
inst✝² : Category.{u_4, u_2} H
inst✝¹ : Category.{?u.80985, ?u.80961} H'
RF RF' RF'' : D ⥤ H
F F' F'' : C ⥤ H
e : F ≅ F'
L : C ⥤ D
α : F ⟶ L ⋙ RF
α' : F' ⟶ L ⋙ RF'
α'' : F'' ⟶ L ⋙ RF''
α'₂ : F ⟶ L ⋙ RF'
W : MorphismProperty C
inst✝ : L.IsLocalization W
⊢ F.HasRightDerivedFunctor W ↔ L.HasLeftKanExtension F
state_after: C : Type u_1
C' : Type ?u.80949
D : Type u_5
D' : Type ?u.80955
H : Type u_2
H' : Type ?u.80961
inst✝⁶ : Category.{u_3, u_1} C
inst✝⁵ : Category.{?u.80969, ?u.80949} C'
inst✝⁴ : Category.{u_6, u_5} D
inst✝³ : Category.{?u.80977, ?u.80955} D'
inst✝² : Category.{u_4, u_2} H
inst✝¹ : Category.{?u.80985, ?u.80961} H'
RF RF' RF'' : D ⥤ H
F F' F'' : C ⥤ H
e : F ≅ F'
L : C ⥤ D
α : F ⟶ L ⋙ RF
α' : F' ⟶ L ⋙ RF'
α'' : F'' ⟶ L ⋙ RF''
α'₂ : F ⟶ L ⋙ RF'
W : MorphismProperty C
inst✝ : L.IsLocalization W
this : F.HasRightDerivedFunctor W ↔ W.Q.HasLeftKanExtension F
⊢ F.HasRightDerivedFunctor W ↔ L.HasLeftKanExtension F

tactic: rw [this, hasLeftExtension_iff_postcomp₁ (Localization.compUniqFunctor W.Q L W) F]
state_before: C : Type u_1
C' : Type ?u.80949
D : Type u_5
D' : Type ?u.80955
H : Type u_2
H' : Type ?u.80961
inst✝⁶ : Category.{u_3, u_1} C
inst✝⁵ : Category.{?u.80969, ?u.80949} C'
inst✝⁴ : Category.{u_6, u_5} D
inst✝³ : Category.{?u.80977, ?u.80955} D'
inst✝² : Category.{u_4, u_2} H
inst✝¹ : Category.{?u.80985, ?u.80961} H'
RF RF' RF'' : D ⥤ H
F F' F'' : C ⥤ H
e : F ≅ F'
L : C ⥤ D
α : F ⟶ L ⋙ RF
α' : F' ⟶ L ⋙ RF'
α'' : F'' ⟶ L ⋙ RF''
α'₂ : F ⟶ L ⋙ RF'
W : MorphismProperty C
inst✝ : L.IsLocalization W
this : F.HasRightDerivedFunctor W ↔ W.Q.HasLeftKanExtension F
⊢ F.HasRightDerivedFunctor W ↔ L.HasLeftKanExtension F
state_after: no goals
Theorem: SetTheory.PGame.Impartial.equiv_iff_add_equiv_zero
File: Mathlib/SetTheory/Game/Impartial.lean

tactic: rw [Game.PGame.equiv_iff_game_eq, ← @add_right_cancel_iff _ _ _ ⟦G⟧, mk'_add_self, ← quot_add,
  Game.PGame.equiv_iff_game_eq]
state_before: G : PGame
inst✝ : G.Impartial
H : PGame
⊢ H ≈ G ↔ H + G ≈ 0
state_after: G : PGame
inst✝ : G.Impartial
H : PGame
⊢ ⟦H + G⟧ = 0 ↔ ⟦H + G⟧ = ⟦0⟧

tactic: rfl
state_before: G : PGame
inst✝ : G.Impartial
H : PGame
⊢ ⟦H + G⟧ = 0 ↔ ⟦H + G⟧ = ⟦0⟧
state_after: no goals
Theorem: ContinuousMap.uniformInducing_equivBoundedOfCompact
File: Mathlib/Topology/ContinuousFunction/Compact.lean

tactic: simp only [hasBasis_compactConvergenceUniformity.mem_iff, uniformity_basis_dist_le.mem_iff]
state_before: α : Type u_1
β : Type u_2
E : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : CompactSpace α
inst✝¹ : MetricSpace β
inst✝ : NormedAddCommGroup E
⊢ ∀ (s : Set (C(α, β) × C(α, β))),
    s ∈ uniformity C(α, β) ↔
      ∃ t ∈ uniformity (α →ᵇ β),
        ∀ (x y : C(α, β)), ((equivBoundedOfCompact α β) x, (equivBoundedOfCompact α β) y) ∈ t → (x, y) ∈ s
state_after: α : Type u_1
β : Type u_2
E : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : CompactSpace α
inst✝¹ : MetricSpace β
inst✝ : NormedAddCommGroup E
⊢ ∀ (s : Set (C(α, β) × C(α, β))),
    (∃ i,
        (IsCompact i.1 ∧ ∃ i_1, 0 < i_1 ∧ {p | dist p.1 p.2 ≤ i_1} ⊆ i.2) ∧
          {fg | ∀ x ∈ i.1, (fg.1 x, fg.2 x) ∈ i.2} ⊆ s) ↔
      ∃ t,
        (∃ i, 0 < i ∧ {p | dist p.1 p.2 ≤ i} ⊆ t) ∧
          ∀ (x y : C(α, β)), ((equivBoundedOfCompact α β) x, (equivBoundedOfCompact α β) y) ∈ t → (x, y) ∈ s

tactic: exact fun s =>
  ⟨fun ⟨⟨a, b⟩, ⟨_, ⟨ε, hε, hb⟩⟩, hs⟩ =>
    ⟨{ p | ∀ x, (p.1 x, p.2 x) ∈ b }, ⟨ε, hε, fun _ h x => hb ((dist_le hε.le).mp h x)⟩,
      fun f g h => hs fun x _ => h x⟩,
    fun ⟨_, ⟨ε, hε, ht⟩, hs⟩ =>
    ⟨⟨Set.univ, { p | dist p.1 p.2 ≤ ε }⟩, ⟨isCompact_univ, ⟨ε, hε, fun _ h => h⟩⟩,
      fun ⟨f, g⟩ h => hs _ _ (ht ((dist_le hε.le).mpr fun x => h x (mem_univ x)))⟩⟩
state_before: α : Type u_1
β : Type u_2
E : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : CompactSpace α
inst✝¹ : MetricSpace β
inst✝ : NormedAddCommGroup E
⊢ ∀ (s : Set (C(α, β) × C(α, β))),
    (∃ i,
        (IsCompact i.1 ∧ ∃ i_1, 0 < i_1 ∧ {p | dist p.1 p.2 ≤ i_1} ⊆ i.2) ∧
          {fg | ∀ x ∈ i.1, (fg.1 x, fg.2 x) ∈ i.2} ⊆ s) ↔
      ∃ t,
        (∃ i, 0 < i ∧ {p | dist p.1 p.2 ≤ i} ⊆ t) ∧
          ∀ (x y : C(α, β)), ((equivBoundedOfCompact α β) x, (equivBoundedOfCompact α β) y) ∈ t → (x, y) ∈ s
state_after: no goals
Theorem: Multiset.replicate_le_replicate
File: Mathlib/Data/Multiset/Basic.lean

tactic: rw [← replicate_le_coe, coe_replicate]
state_before: α : Type u_1
β : Type v
γ : Type u_2
a : α
k n : ℕ
⊢ replicate k a ≤ replicate n a ↔ List.replicate k a <+ List.replicate n a
state_after: no goals
Theorem: CategoryTheory.MonoidalCategory.pentagon_hom_inv_inv_inv_inv
File: Mathlib/CategoryTheory/Monoidal/Category.lean

tactic: simp [← cancel_epi (W ◁ (α_ X Y Z).inv)]
state_before: C✝ : Type u
𝒞 : Category.{v, u} C✝
inst✝² : MonoidalCategory C✝
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : MonoidalCategory C
U V W X Y Z : C
⊢ W ◁ (α_ X Y Z).hom ≫ (α_ W X (Y ⊗ Z)).inv ≫ (α_ (W ⊗ X) Y Z).inv = (α_ W (X ⊗ Y) Z).inv ≫ (α_ W X Y).inv ▷ Z
state_after: no goals
Theorem: MeasureTheory.ae_restrict_iUnion_iff
File: Mathlib/MeasureTheory/Measure/Restrict.lean

tactic: simp
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 α
inst✝ : Countable ι
s : ι → Set α
p : α → Prop
⊢ (∀ᵐ (x : α) ∂μ.restrict (⋃ i, s i), p x) ↔ ∀ (i : ι), ∀ᵐ (x : α) ∂μ.restrict (s i), p x
state_after: no goals
Theorem: PythagoreanTriple.isClassified_of_isPrimitiveClassified
File: Mathlib/NumberTheory/PythagoreanTriples.lean

tactic: obtain ⟨m, n, H⟩ := hp
state_before: x y z : ℤ
h : PythagoreanTriple x y z
hp : h.IsPrimitiveClassified
⊢ h.IsClassified
state_after: case intro.intro
x y z : ℤ
h : PythagoreanTriple x y z
m n : ℤ
H :
  (x = m ^ 2 - n ^ 2 ∧ y = 2 * m * n ∨ x = 2 * m * n ∧ y = m ^ 2 - n ^ 2) ∧
    m.gcd n = 1 ∧ (m % 2 = 0 ∧ n % 2 = 1 ∨ m % 2 = 1 ∧ n % 2 = 0)
⊢ h.IsClassified

tactic: use 1, m, n
state_before: case intro.intro
x y z : ℤ
h : PythagoreanTriple x y z
m n : ℤ
H :
  (x = m ^ 2 - n ^ 2 ∧ y = 2 * m * n ∨ x = 2 * m * n ∧ y = m ^ 2 - n ^ 2) ∧
    m.gcd n = 1 ∧ (m % 2 = 0 ∧ n % 2 = 1 ∨ m % 2 = 1 ∧ n % 2 = 0)
⊢ h.IsClassified
state_after: case h
x y z : ℤ
h : PythagoreanTriple x y z
m n : ℤ
H :
  (x = m ^ 2 - n ^ 2 ∧ y = 2 * m * n ∨ x = 2 * m * n ∧ y = m ^ 2 - n ^ 2) ∧
    m.gcd n = 1 ∧ (m % 2 = 0 ∧ n % 2 = 1 ∨ m % 2 = 1 ∧ n % 2 = 0)
⊢ (x = 1 * (m ^ 2 - n ^ 2) ∧ y = 1 * (2 * m * n) ∨ x = 1 * (2 * m * n) ∧ y = 1 * (m ^ 2 - n ^ 2)) ∧ m.gcd n = 1

tactic: rcases H with ⟨t, co, _⟩
state_before: case h
x y z : ℤ
h : PythagoreanTriple x y z
m n : ℤ
H :
  (x = m ^ 2 - n ^ 2 ∧ y = 2 * m * n ∨ x = 2 * m * n ∧ y = m ^ 2 - n ^ 2) ∧
    m.gcd n = 1 ∧ (m % 2 = 0 ∧ n % 2 = 1 ∨ m % 2 = 1 ∧ n % 2 = 0)
⊢ (x = 1 * (m ^ 2 - n ^ 2) ∧ y = 1 * (2 * m * n) ∨ x = 1 * (2 * m * n) ∧ y = 1 * (m ^ 2 - n ^ 2)) ∧ m.gcd n = 1
state_after: case h.intro.intro
x y z : ℤ
h : PythagoreanTriple x y z
m n : ℤ
t : x = m ^ 2 - n ^ 2 ∧ y = 2 * m * n ∨ x = 2 * m * n ∧ y = m ^ 2 - n ^ 2
co : m.gcd n = 1
right✝ : m % 2 = 0 ∧ n % 2 = 1 ∨ m % 2 = 1 ∧ n % 2 = 0
⊢ (x = 1 * (m ^ 2 - n ^ 2) ∧ y = 1 * (2 * m * n) ∨ x = 1 * (2 * m * n) ∧ y = 1 * (m ^ 2 - n ^ 2)) ∧ m.gcd n = 1

tactic: rw [one_mul, one_mul]
state_before: case h.intro.intro
x y z : ℤ
h : PythagoreanTriple x y z
m n : ℤ
t : x = m ^ 2 - n ^ 2 ∧ y = 2 * m * n ∨ x = 2 * m * n ∧ y = m ^ 2 - n ^ 2
co : m.gcd n = 1
right✝ : m % 2 = 0 ∧ n % 2 = 1 ∨ m % 2 = 1 ∧ n % 2 = 0
⊢ (x = 1 * (m ^ 2 - n ^ 2) ∧ y = 1 * (2 * m * n) ∨ x = 1 * (2 * m * n) ∧ y = 1 * (m ^ 2 - n ^ 2)) ∧ m.gcd n = 1
state_after: case h.intro.intro
x y z : ℤ
h : PythagoreanTriple x y z
m n : ℤ
t : x = m ^ 2 - n ^ 2 ∧ y = 2 * m * n ∨ x = 2 * m * n ∧ y = m ^ 2 - n ^ 2
co : m.gcd n = 1
right✝ : m % 2 = 0 ∧ n % 2 = 1 ∨ m % 2 = 1 ∧ n % 2 = 0
⊢ (x = m ^ 2 - n ^ 2 ∧ y = 2 * m * n ∨ x = 2 * m * n ∧ y = m ^ 2 - n ^ 2) ∧ m.gcd n = 1

tactic: exact ⟨t, co⟩
state_before: case h.intro.intro
x y z : ℤ
h : PythagoreanTriple x y z
m n : ℤ
t : x = m ^ 2 - n ^ 2 ∧ y = 2 * m * n ∨ x = 2 * m * n ∧ y = m ^ 2 - n ^ 2
co : m.gcd n = 1
right✝ : m % 2 = 0 ∧ n % 2 = 1 ∨ m % 2 = 1 ∧ n % 2 = 0
⊢ (x = m ^ 2 - n ^ 2 ∧ y = 2 * m * n ∨ x = 2 * m * n ∧ y = m ^ 2 - n ^ 2) ∧ m.gcd n = 1
state_after: no goals
Theorem: HomologicalComplex₂.d_f_comp_d_f
File: Mathlib/Algebra/Homology/HomologicalBicomplex.lean

tactic: rw [← comp_f, d_comp_d, zero_f]
state_before: C : Type u_1
inst✝¹ : Category.{u_4, u_1} C
inst✝ : HasZeroMorphisms C
I₁ : Type u_2
I₂ : Type u_3
c₁ : ComplexShape I₁
c₂ : ComplexShape I₂
K : HomologicalComplex₂ C c₁ c₂
i₁ i₁' i₁'' : I₁
i₂ : I₂
⊢ (K.d i₁ i₁').f i₂ ≫ (K.d i₁' i₁'').f i₂ = 0
state_after: no goals
Theorem: CompHausLike.epi_of_surjective
File: Mathlib/Topology/Category/CompHausLike/Basic.lean

tactic: rw [← CategoryTheory.epi_iff_surjective] at hf
state_before: P : TopCat → Prop
X✝ : Type u
inst✝³ : TopologicalSpace X✝
inst✝² : CompactSpace X✝
inst✝¹ : T2Space X✝
inst✝ : HasProp P X✝
X Y : CompHausLike P
f : X ⟶ Y
hf : Function.Surjective ⇑f
⊢ Epi f
state_after: P : TopCat → Prop
X✝ : Type u
inst✝³ : TopologicalSpace X✝
inst✝² : CompactSpace X✝
inst✝¹ : T2Space X✝
inst✝ : HasProp P X✝
X Y : CompHausLike P
f : X ⟶ Y
hf : Epi ⇑f
⊢ Epi f

tactic: exact (forget (CompHausLike P)).epi_of_epi_map hf
state_before: P : TopCat → Prop
X✝ : Type u
inst✝³ : TopologicalSpace X✝
inst✝² : CompactSpace X✝
inst✝¹ : T2Space X✝
inst✝ : HasProp P X✝
X Y : CompHausLike P
f : X ⟶ Y
hf : Epi ⇑f
⊢ Epi f
state_after: no goals
Theorem: Tree.treesOfNumNodesEq_zero
File: Mathlib/Combinatorics/Enumerative/Catalan.lean

tactic: rw [treesOfNumNodesEq]
state_before: ⊢ treesOfNumNodesEq 0 = {nil}
state_after: no goals