1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: List.Ico.pred_singleton
File: Mathlib/Data/List/Intervals.lean

tactic: dsimp [Ico]
state_before: m : ℕ
h : 0 < m
⊢ Ico (m - 1) m = [m - 1]
state_after: m : ℕ
h : 0 < m
⊢ range' (m - 1) (m - (m - 1)) = [m - 1]

tactic: rw [Nat.sub_sub_self (succ_le_of_lt h)]
state_before: m : ℕ
h : 0 < m
⊢ range' (m - 1) (m - (m - 1)) = [m - 1]
state_after: m : ℕ
h : 0 < m
⊢ range' (m - 1) (succ 0) = [m - 1]

tactic: simp [← Nat.one_eq_succ_zero]
state_before: m : ℕ
h : 0 < m
⊢ range' (m - 1) (succ 0) = [m - 1]
state_after: no goals
Theorem: Polynomial.mkDerivation_one_eq_derivative
File: Mathlib/Algebra/Polynomial/Derivation.lean

tactic: rw [mkDerivation_one_eq_derivative']
state_before: R : Type u_1
A : Type u_2
inst✝⁴ : CommSemiring R
inst✝³ : AddCommMonoid A
inst✝² : Module R A
inst✝¹ : Module R[X] A
inst✝ : IsScalarTower R R[X] A
f : R[X]
⊢ ((mkDerivation R) 1) f = derivative f
state_after: R : Type u_1
A : Type u_2
inst✝⁴ : CommSemiring R
inst✝³ : AddCommMonoid A
inst✝² : Module R A
inst✝¹ : Module R[X] A
inst✝ : IsScalarTower R R[X] A
f : R[X]
⊢ derivative' f = derivative f

tactic: rfl
state_before: R : Type u_1
A : Type u_2
inst✝⁴ : CommSemiring R
inst✝³ : AddCommMonoid A
inst✝² : Module R A
inst✝¹ : Module R[X] A
inst✝ : IsScalarTower R R[X] A
f : R[X]
⊢ derivative' f = derivative f
state_after: no goals
Theorem: Finset.image_toFinset
File: Mathlib/Data/Finset/Image.lean

tactic: simp only [mem_image, Multiset.mem_toFinset, exists_prop, Multiset.mem_map]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝¹ : DecidableEq β
f g : α → β
s✝ : Finset α
t : Finset β
a : α
b c : β
inst✝ : DecidableEq α
s : Multiset α
x✝ : β
⊢ x✝ ∈ image f s.toFinset ↔ x✝ ∈ (Multiset.map f s).toFinset
state_after: no goals
Theorem: LieAlgebra.rootSpace_zero_eq
File: Mathlib/Algebra/Lie/Weights/Cartan.lean

tactic: rw [← LieSubmodule.coe_toSubmodule_eq_iff, ← coe_zeroRootSubalgebra,
  zeroRootSubalgebra_eq_of_is_cartan R L H, LieSubalgebra.coe_toLieSubmodule]
state_before: R : Type u_1
L : Type u_2
inst✝⁹ : CommRing R
inst✝⁸ : LieRing L
inst✝⁷ : LieAlgebra R L
H✝ : LieSubalgebra R L
inst✝⁶ : IsNilpotent R ↥H✝
M : Type u_3
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : LieRingModule L M
inst✝² : LieModule R L M
H : LieSubalgebra R L
inst✝¹ : H.IsCartanSubalgebra
inst✝ : IsNoetherian R L
⊢ rootSpace H 0 = H.toLieSubmodule
state_after: no goals
Theorem: Ordinal.nat_nadd
File: Mathlib/SetTheory/Ordinal/NaturalOps.lean

tactic: rw [nadd_comm, nadd_nat]
state_before: a b c : Ordinal.{u}
n : ℕ
⊢ ↑n ♯ a = a + ↑n
state_after: no goals
Theorem: Multiset.prod_le_pow_card
File: Mathlib/Algebra/Order/BigOperators/Group/Multiset.lean

tactic: induction s using Quotient.inductionOn
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : OrderedCommMonoid α
s✝ t : Multiset α
a : α
s : Multiset α
n : α
h : ∀ x ∈ s, x ≤ n
⊢ s.prod ≤ n ^ card s
state_after: case h
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : OrderedCommMonoid α
s t : Multiset α
a n : α
a✝ : List α
h : ∀ x ∈ ⟦a✝⟧, x ≤ n
⊢ prod ⟦a✝⟧ ≤ n ^ card ⟦a✝⟧

tactic: simpa using List.prod_le_pow_card _ _ h
state_before: case h
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : OrderedCommMonoid α
s t : Multiset α
a n : α
a✝ : List α
h : ∀ x ∈ ⟦a✝⟧, x ≤ n
⊢ prod ⟦a✝⟧ ≤ n ^ card ⟦a✝⟧
state_after: no goals
Theorem: R_mul
File: Mathlib/Geometry/Manifold/Algebra/Monoid.lean

tactic: ext
state_before: 𝕜 : Type u_1
inst✝¹⁶ : NontriviallyNormedField 𝕜
H : Type u_2
inst✝¹⁵ : TopologicalSpace H
E : Type u_3
inst✝¹⁴ : NormedAddCommGroup E
inst✝¹³ : NormedSpace 𝕜 E
I : ModelWithCorners 𝕜 E H
G✝ : Type u_4
inst✝¹² : Mul G✝
inst✝¹¹ : TopologicalSpace G✝
inst✝¹⁰ : ChartedSpace H G✝
inst✝⁹ : SmoothMul I G✝
E' : Type u_5
inst✝⁸ : NormedAddCommGroup E'
inst✝⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M : Type u_7
inst✝⁵ : TopologicalSpace M
inst✝⁴ : ChartedSpace H' M
g✝ h✝ : G✝
G : Type u_8
inst✝³ : Semigroup G
inst✝² : TopologicalSpace G
inst✝¹ : ChartedSpace H G
inst✝ : SmoothMul I G
g h : G
⊢ 𝑹 I (g * h) = (𝑹 I h).comp (𝑹 I g)
state_after: case h
𝕜 : Type u_1
inst✝¹⁶ : NontriviallyNormedField 𝕜
H : Type u_2
inst✝¹⁵ : TopologicalSpace H
E : Type u_3
inst✝¹⁴ : NormedAddCommGroup E
inst✝¹³ : NormedSpace 𝕜 E
I : ModelWithCorners 𝕜 E H
G✝ : Type u_4
inst✝¹² : Mul G✝
inst✝¹¹ : TopologicalSpace G✝
inst✝¹⁰ : ChartedSpace H G✝
inst✝⁹ : SmoothMul I G✝
E' : Type u_5
inst✝⁸ : NormedAddCommGroup E'
inst✝⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M : Type u_7
inst✝⁵ : TopologicalSpace M
inst✝⁴ : ChartedSpace H' M
g✝ h✝ : G✝
G : Type u_8
inst✝³ : Semigroup G
inst✝² : TopologicalSpace G
inst✝¹ : ChartedSpace H G
inst✝ : SmoothMul I G
g h x✝ : G
⊢ (𝑹 I (g * h)) x✝ = ((𝑹 I h).comp (𝑹 I g)) x✝

tactic: simp only [ContMDiffMap.comp_apply, R_apply, mul_assoc]
state_before: case h
𝕜 : Type u_1
inst✝¹⁶ : NontriviallyNormedField 𝕜
H : Type u_2
inst✝¹⁵ : TopologicalSpace H
E : Type u_3
inst✝¹⁴ : NormedAddCommGroup E
inst✝¹³ : NormedSpace 𝕜 E
I : ModelWithCorners 𝕜 E H
G✝ : Type u_4
inst✝¹² : Mul G✝
inst✝¹¹ : TopologicalSpace G✝
inst✝¹⁰ : ChartedSpace H G✝
inst✝⁹ : SmoothMul I G✝
E' : Type u_5
inst✝⁸ : NormedAddCommGroup E'
inst✝⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M : Type u_7
inst✝⁵ : TopologicalSpace M
inst✝⁴ : ChartedSpace H' M
g✝ h✝ : G✝
G : Type u_8
inst✝³ : Semigroup G
inst✝² : TopologicalSpace G
inst✝¹ : ChartedSpace H G
inst✝ : SmoothMul I G
g h x✝ : G
⊢ (𝑹 I (g * h)) x✝ = ((𝑹 I h).comp (𝑹 I g)) x✝
state_after: no goals
Theorem: Filter.tendsto_lift'
File: Mathlib/Order/Filter/Lift.lean

tactic: simp only [Filter.lift', tendsto_lift, tendsto_principal, comp]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
f f₁ f₂ : Filter α
h h₁ h₂ : Set α → Set β
m : γ → β
l : Filter γ
⊢ Tendsto m l (f.lift' h) ↔ ∀ s ∈ f, ∀ᶠ (a : γ) in l, m a ∈ h s
state_after: no goals
Theorem: ENNReal.truncateToReal_le
File: Mathlib/Topology/Instances/ENNReal.lean

tactic: rw [truncateToReal]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
t : ℝ≥0∞
t_ne_top : t ≠ ⊤
x : ℝ≥0∞
⊢ t.truncateToReal x ≤ t.toReal
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
t : ℝ≥0∞
t_ne_top : t ≠ ⊤
x : ℝ≥0∞
⊢ (min t x).toReal ≤ t.toReal

tactic: apply (toReal_le_toReal _ t_ne_top).mpr (min_le_left t x)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
t : ℝ≥0∞
t_ne_top : t ≠ ⊤
x : ℝ≥0∞
⊢ (min t x).toReal ≤ t.toReal
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
t : ℝ≥0∞
t_ne_top : t ≠ ⊤
x : ℝ≥0∞
⊢ min t x ≠ ⊤

tactic: simp_all only [ne_eq, ge_iff_le, min_eq_top, false_and, not_false_eq_true]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
t : ℝ≥0∞
t_ne_top : t ≠ ⊤
x : ℝ≥0∞
⊢ min t x ≠ ⊤
state_after: no goals
Theorem: SimpleGraph.Walk.darts_takeUntil_subset
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: rw [← take_spec p h, darts_append, List.mem_append]
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v✝ w✝ x✝ y : V
inst✝ : DecidableEq V
u v w : V
p : G.Walk v w
h : u ∈ p.support
x : G.Dart
hx : x ∈ (p.takeUntil u h).darts
⊢ x ∈ p.darts
state_after: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v✝ w✝ x✝ y : V
inst✝ : DecidableEq V
u v w : V
p : G.Walk v w
h : u ∈ p.support
x : G.Dart
hx : x ∈ (p.takeUntil u h).darts
⊢ x ∈ (p.takeUntil u h).darts ∨ x ∈ (p.dropUntil u h).darts

tactic: exact Or.inl hx
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v✝ w✝ x✝ y : V
inst✝ : DecidableEq V
u v w : V
p : G.Walk v w
h : u ∈ p.support
x : G.Dart
hx : x ∈ (p.takeUntil u h).darts
⊢ x ∈ (p.takeUntil u h).darts ∨ x ∈ (p.dropUntil u h).darts
state_after: no goals
Theorem: Ordinal.isNormal_iff_lt_succ_and_bsup_eq
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: rw [← h₂ o ho]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
f : Ordinal.{u} → Ordinal.{max u v}
x✝ : (∀ (a : Ordinal.{u}), f a < f (succ a)) ∧ ∀ (o : Ordinal.{u}), o.IsLimit → (o.bsup fun x x_1 => f x) = f o
h₁ : ∀ (a : Ordinal.{u}), f a < f (succ a)
h₂ : ∀ (o : Ordinal.{u}), o.IsLimit → (o.bsup fun x x_1 => f x) = f o
o : Ordinal.{u}
ho : o.IsLimit
a : Ordinal.{max u v}
⊢ f o ≤ a ↔ ∀ b < o, f b ≤ a
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
f : Ordinal.{u} → Ordinal.{max u v}
x✝ : (∀ (a : Ordinal.{u}), f a < f (succ a)) ∧ ∀ (o : Ordinal.{u}), o.IsLimit → (o.bsup fun x x_1 => f x) = f o
h₁ : ∀ (a : Ordinal.{u}), f a < f (succ a)
h₂ : ∀ (o : Ordinal.{u}), o.IsLimit → (o.bsup fun x x_1 => f x) = f o
o : Ordinal.{u}
ho : o.IsLimit
a : Ordinal.{max u v}
⊢ (o.bsup fun x x_1 => f x) ≤ a ↔ ∀ b < o, f b ≤ a

tactic: exact bsup_le_iff
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
f : Ordinal.{u} → Ordinal.{max u v}
x✝ : (∀ (a : Ordinal.{u}), f a < f (succ a)) ∧ ∀ (o : Ordinal.{u}), o.IsLimit → (o.bsup fun x x_1 => f x) = f o
h₁ : ∀ (a : Ordinal.{u}), f a < f (succ a)
h₂ : ∀ (o : Ordinal.{u}), o.IsLimit → (o.bsup fun x x_1 => f x) = f o
o : Ordinal.{u}
ho : o.IsLimit
a : Ordinal.{max u v}
⊢ (o.bsup fun x x_1 => f x) ≤ a ↔ ∀ b < o, f b ≤ a
state_after: no goals
Theorem: Stirling.log_stirlingSeq'_antitone
File: Mathlib/Analysis/SpecialFunctions/Stirling.lean

tactic: positivity
state_before: n m : ℕ
⊢ 0 ≤ 1 / (2 * ↑(m + 1) + 1) * ((1 / (2 * ↑(n + 1) + 1)) ^ 2) ^ (m + 1)
state_after: no goals
Theorem: Polynomial.divByMonic_eq_div
File: Mathlib/Algebra/Polynomial/FieldDivision.lean

tactic: simp only [Monic.def.1 hq, inv_one, C_1, one_mul, mul_one]
state_before: R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n : ℕ
inst✝ : Field R
p✝ q p : R[X]
hq : q.Monic
⊢ p /ₘ q = C q.leadingCoeff⁻¹ * (p /ₘ (q * C q.leadingCoeff⁻¹))
state_after: no goals
Theorem: MvPolynomial.totalDegree_sub
File: Mathlib/Algebra/MvPolynomial/CommRing.lean

tactic: rw [sub_eq_add_neg]
state_before: R : Type u
S : Type v
σ : Type u_1
a✝ a' a₁ a₂ : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝ : CommRing R
p q a b : MvPolynomial σ R
⊢ (a - b).totalDegree = (a + -b).totalDegree
state_after: no goals

tactic: rw [totalDegree_neg]
state_before: R : Type u
S : Type v
σ : Type u_1
a✝ a' a₁ a₂ : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝ : CommRing R
p q a b : MvPolynomial σ R
⊢ max a.totalDegree (-b).totalDegree = max a.totalDegree b.totalDegree
state_after: no goals
Theorem: disjoint_compl_right_iff
File: Mathlib/Order/BooleanAlgebra.lean

tactic: rw [← le_compl_iff_disjoint_right, compl_compl]
state_before: α : Type u
β : Type u_1
w x y z : α
inst✝ : BooleanAlgebra α
⊢ Disjoint x yᶜ ↔ x ≤ y
state_after: no goals
Theorem: CategoryTheory.isCoseparating_unop_iff
File: Mathlib/CategoryTheory/Generator.lean

tactic: rw [← isSeparating_op_iff, Set.unop_op]
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
𝒢 : Set Cᵒᵖ
⊢ IsCoseparating 𝒢.unop ↔ IsSeparating 𝒢
state_after: no goals
Theorem: Metric.isOpen_iff
File: Mathlib/Topology/MetricSpace/Pseudo/Defs.lean

tactic: simp only [isOpen_iff_mem_nhds, mem_nhds_iff]
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
x y z : α
δ ε ε₁ ε₂ : ℝ
s : Set α
⊢ IsOpen s ↔ ∀ x ∈ s, ∃ ε > 0, ball x ε ⊆ s
state_after: no goals
Theorem: CategoryTheory.Limits.hasFiniteColimits_of_hasFiniteColimits_of_size
File: Mathlib/CategoryTheory/Limits/Shapes/FiniteLimits.lean

tactic: haveI := h (ULiftHom.{w} (ULift.{w} J)) <| @CategoryTheory.finCategoryUlift J hJ hhJ
state_before: C : Type u
inst✝ : Category.{v, u} C
h : ∀ (J : Type w) {𝒥 : SmallCategory J}, FinCategory J → HasColimitsOfShape J C
J : Type
hJ : SmallCategory J
hhJ : FinCategory J
⊢ HasColimitsOfShape J C
state_after: C : Type u
inst✝ : Category.{v, u} C
h : ∀ (J : Type w) {𝒥 : SmallCategory J}, FinCategory J → HasColimitsOfShape J C
J : Type
hJ : SmallCategory J
hhJ : FinCategory J
this : HasColimitsOfShape (ULiftHom (ULift.{w, 0} J)) C
⊢ HasColimitsOfShape J C

tactic: have l : @Equivalence J (ULiftHom (ULift J)) hJ
                       (@ULiftHom.category (ULift J) (@uliftCategory J hJ)) :=
  @ULiftHomULiftCategory.equiv J hJ
state_before: C : Type u
inst✝ : Category.{v, u} C
h : ∀ (J : Type w) {𝒥 : SmallCategory J}, FinCategory J → HasColimitsOfShape J C
J : Type
hJ : SmallCategory J
hhJ : FinCategory J
this : HasColimitsOfShape (ULiftHom (ULift.{w, 0} J)) C
⊢ HasColimitsOfShape J C
state_after: C : Type u
inst✝ : Category.{v, u} C
h : ∀ (J : Type w) {𝒥 : SmallCategory J}, FinCategory J → HasColimitsOfShape J C
J : Type
hJ : SmallCategory J
hhJ : FinCategory J
this : HasColimitsOfShape (ULiftHom (ULift.{w, 0} J)) C
l : J ≌ ULiftHom (ULift.{?u.2350, 0} J)
⊢ HasColimitsOfShape J C

tactic: apply @hasColimitsOfShape_of_equivalence (ULiftHom (ULift J))
  (@ULiftHom.category (ULift J) (@uliftCategory J hJ)) C _ J hJ
  (@Equivalence.symm J hJ (ULiftHom (ULift J))
  (@ULiftHom.category (ULift J) (@uliftCategory J hJ)) l) _
state_before: C : Type u
inst✝ : Category.{v, u} C
h : ∀ (J : Type w) {𝒥 : SmallCategory J}, FinCategory J → HasColimitsOfShape J C
J : Type
hJ : SmallCategory J
hhJ : FinCategory J
this : HasColimitsOfShape (ULiftHom (ULift.{w, 0} J)) C
l : J ≌ ULiftHom (ULift.{?u.2350, 0} J)
⊢ HasColimitsOfShape J C
state_after: no goals
Theorem: Ideal.quotient_map_comp_mkₐ
File: Mathlib/RingTheory/Ideal/QuotientOperations.lean

tactic: simp only [quotient_map_mkₐ, Quotient.mkₐ_eq_mk, AlgHom.comp_apply]
state_before: R : Type u
S : Type v
F : Type w
inst✝⁸ : CommRing R
inst✝⁷ : Semiring S
R₁ : Type u_1
R₂ : Type u_2
A : Type u_3
B : Type u_4
inst✝⁶ : CommSemiring R₁
inst✝⁵ : CommSemiring R₂
inst✝⁴ : CommRing A
inst✝³ : Algebra R₁ A
inst✝² : Algebra R₂ A
inst✝¹ : CommRing B
inst✝ : Algebra R₁ B
I : Ideal A
J : Ideal B
f : A →ₐ[R₁] B
H : I ≤ comap f J
x : A
⊢ ((quotientMapₐ J f H).comp (Quotient.mkₐ R₁ I)) x = ((Quotient.mkₐ R₁ J).comp f) x
state_after: no goals
Theorem: BoxIntegral.Prepartition.injective_boxes
File: Mathlib/Analysis/BoxIntegral/Partition/Basic.lean

tactic: rintro ⟨s₁, h₁, h₁'⟩ ⟨s₂, h₂, h₂'⟩ (rfl : s₁ = s₂)
state_before: ι : Type u_1
I J J₁ J₂ : Box ι
π π₁ π₂ : Prepartition I
x : ι → ℝ
⊢ Injective boxes
state_after: case mk.mk
ι : Type u_1
I J J₁ J₂ : Box ι
π π₁ π₂ : Prepartition I
x : ι → ℝ
s₁ : Finset (Box ι)
h₁ : ∀ J ∈ s₁, J ≤ I
h₁' : (↑s₁).Pairwise (Disjoint on Box.toSet)
h₂ : ∀ J ∈ s₁, J ≤ I
h₂' : (↑s₁).Pairwise (Disjoint on Box.toSet)
⊢ { boxes := s₁, le_of_mem' := h₁, pairwiseDisjoint := h₁' } =
    { boxes := s₁, le_of_mem' := h₂, pairwiseDisjoint := h₂' }

tactic: rfl
state_before: case mk.mk
ι : Type u_1
I J J₁ J₂ : Box ι
π π₁ π₂ : Prepartition I
x : ι → ℝ
s₁ : Finset (Box ι)
h₁ : ∀ J ∈ s₁, J ≤ I
h₁' : (↑s₁).Pairwise (Disjoint on Box.toSet)
h₂ : ∀ J ∈ s₁, J ≤ I
h₂' : (↑s₁).Pairwise (Disjoint on Box.toSet)
⊢ { boxes := s₁, le_of_mem' := h₁, pairwiseDisjoint := h₁' } =
    { boxes := s₁, le_of_mem' := h₂, pairwiseDisjoint := h₂' }
state_after: no goals
Theorem: Batteries.RBNode.Ordered.insert
File: .lake/packages/batteries/Batteries/Data/RBMap/WF.lean

tactic: unfold RBNode.insert
state_before: α✝ : Type u_1
cmp : α✝ → α✝ → Ordering
t : RBNode α✝
v : α✝
h : Ordered cmp t
⊢ Ordered cmp (insert cmp t v)
state_after: α✝ : Type u_1
cmp : α✝ → α✝ → Ordering
t : RBNode α✝
v : α✝
h : Ordered cmp t
⊢ Ordered cmp
    (match t.isRed with
    | red => (ins cmp v t).setBlack
    | black => ins cmp v t)

tactic: split <;> simp [Ordered.setBlack, h.ins (x := v)]
state_before: α✝ : Type u_1
cmp : α✝ → α✝ → Ordering
t : RBNode α✝
v : α✝
h : Ordered cmp t
⊢ Ordered cmp
    (match t.isRed with
    | red => (ins cmp v t).setBlack
    | black => ins cmp v t)
state_after: no goals
Theorem: AddChar.ringChar_ne
File: Mathlib/NumberTheory/LegendreSymbol/AddCharacter.lean

tactic: simpa only [ringChar.eq_zero] using (CharP.ringChar_ne_zero_of_finite F).symm
state_before: F : Type u_1
inst✝² : Field F
inst✝¹ : Finite F
inst✝ : DecidableEq F
⊢ ringChar ℂ ≠ ringChar F
state_after: no goals
Theorem: ProbabilityTheory.kernel.setIntegral_deterministic
File: Mathlib/Probability/Kernel/Basic.lean

tactic: rw [kernel.deterministic_apply, setIntegral_dirac f _ s]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ : ↥(kernel α β)
E : Type u_4
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
f : β → E
g : α → β
a : α
hg : Measurable g
inst✝¹ : MeasurableSingletonClass β
s : Set β
inst✝ : Decidable (g a ∈ s)
⊢ ∫ (x : β) in s, f x ∂(deterministic g hg) a = if g a ∈ s then f (g a) else 0
state_after: no goals
Theorem: Nat.add_descFactorial_eq_ascFactorial
File: Mathlib/Data/Nat/Factorial/Basic.lean

tactic: rw [ascFactorial_zero, descFactorial_zero]
state_before: n : ℕ
⊢ (n + 0).descFactorial 0 = (n + 1).ascFactorial 0
state_after: no goals

tactic: rw [Nat.add_succ, succ_descFactorial_succ, ascFactorial_succ,
  add_descFactorial_eq_ascFactorial _ k, Nat.add_right_comm]
state_before: n k : ℕ
⊢ (n + k.succ).descFactorial k.succ = (n + 1).ascFactorial k.succ
state_after: no goals
Theorem: WeierstrassCurve.Jacobian.equation_zero
File: Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian.lean

tactic: simp only [equation_of_Z_eq_zero, fin3_def_ext, one_pow]
state_before: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
⊢ W'.Equation ![1, 1, 0]
state_after: no goals
Theorem: hasCompactMulSupport_comp_left
File: Mathlib/Topology/Support.lean

tactic: simp_rw [hasCompactMulSupport_def, mulSupport_comp_eq g (@hg) f]
state_before: X : Type u_1
α : Type u_2
α' : Type u_3
β : Type u_4
γ : Type u_5
δ : Type u_6
M : Type u_7
E : Type u_8
R : Type u_9
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace α'
inst✝² : One β
inst✝¹ : One γ
inst✝ : One δ
g : β → γ
f : α → β
f₂ : α → γ
m : β → γ → δ
x : α
hg : ∀ {x : β}, g x = 1 ↔ x = 1
⊢ HasCompactMulSupport (g ∘ f) ↔ HasCompactMulSupport f
state_after: no goals
Theorem: preNormEDS'_two
File: Mathlib/NumberTheory/EllipticDivisibilitySequence.lean

tactic: rw [preNormEDS']
state_before: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
W : ℤ → R
f : R →+* S
b c d : R
⊢ preNormEDS' b c d 2 = 1
state_after: no goals
Theorem: Set.Ioo_disjoint_Ioo
File: Mathlib/Order/Interval/Set/Disjoint.lean

tactic: simp_rw [Set.disjoint_iff_inter_eq_empty, Ioo_inter_Ioo, Ioo_eq_empty_iff, inf_eq_min, sup_eq_max,
  not_lt]
state_before: ι : Sort u
α : Type v
β : Type w
inst✝¹ : LinearOrder α
a₁ a₂ b₁ b₂ : α
inst✝ : DenselyOrdered α
⊢ Disjoint (Ioo a₁ a₂) (Ioo b₁ b₂) ↔ min a₂ b₂ ≤ max a₁ b₁
state_after: no goals
Theorem: Orientation.rightAngleRotation_trans_rightAngleRotation
File: Mathlib/Analysis/InnerProductSpace/TwoDim.lean

tactic: ext
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
⊢ o.rightAngleRotation.trans o.rightAngleRotation = LinearIsometryEquiv.neg ℝ
state_after: case h
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x✝ : E
⊢ (o.rightAngleRotation.trans o.rightAngleRotation) x✝ = (LinearIsometryEquiv.neg ℝ) x✝

tactic: simp
state_before: case h
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x✝ : E
⊢ (o.rightAngleRotation.trans o.rightAngleRotation) x✝ = (LinearIsometryEquiv.neg ℝ) x✝
state_after: no goals
Theorem: SimpleGraph.isEmpty_of_colorable_zero
File: Mathlib/Combinatorics/SimpleGraph/Coloring.lean

tactic: constructor
state_before: V : Type u
G : SimpleGraph V
n : ℕ
α : Type u_1
β : Type u_2
C : G.Coloring α
h : G.Colorable 0
⊢ IsEmpty V
state_after: case false
V : Type u
G : SimpleGraph V
n : ℕ
α : Type u_1
β : Type u_2
C : G.Coloring α
h : G.Colorable 0
⊢ V → False

tactic: intro v
state_before: case false
V : Type u
G : SimpleGraph V
n : ℕ
α : Type u_1
β : Type u_2
C : G.Coloring α
h : G.Colorable 0
⊢ V → False
state_after: case false
V : Type u
G : SimpleGraph V
n : ℕ
α : Type u_1
β : Type u_2
C : G.Coloring α
h : G.Colorable 0
v : V
⊢ False

tactic: obtain ⟨i, hi⟩ := h.some v
state_before: case false
V : Type u
G : SimpleGraph V
n : ℕ
α : Type u_1
β : Type u_2
C : G.Coloring α
h : G.Colorable 0
v : V
⊢ False
state_after: case false.mk
V : Type u
G : SimpleGraph V
n : ℕ
α : Type u_1
β : Type u_2
C : G.Coloring α
h : G.Colorable 0
v : V
i : ℕ
hi : i < 0
⊢ False

tactic: exact Nat.not_lt_zero _ hi
state_before: case false.mk
V : Type u
G : SimpleGraph V
n : ℕ
α : Type u_1
β : Type u_2
C : G.Coloring α
h : G.Colorable 0
v : V
i : ℕ
hi : i < 0
⊢ False
state_after: no goals
Theorem: GeneralizedContinuedFraction.of_part_num_eq_one
File: Mathlib/Algebra/ContinuedFractions/Computation/Approximations.lean

tactic: obtain ⟨gp, nth_s_eq, gp_a_eq_a_n⟩ : ∃ gp, (of v).s.get? n = some gp ∧ gp.a = a :=
  exists_s_a_of_part_num nth_part_num_eq
state_before: K : Type u_1
v : K
n : ℕ
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
a : K
nth_part_num_eq : (of v).partialNumerators.get? n = some a
⊢ a = 1
state_after: case intro.intro
K : Type u_1
v : K
n : ℕ
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
a : K
nth_part_num_eq : (of v).partialNumerators.get? n = some a
gp : Pair K
nth_s_eq : (of v).s.get? n = some gp
gp_a_eq_a_n : gp.a = a
⊢ a = 1

tactic: have : gp.a = 1 := (of_part_num_eq_one_and_exists_int_part_denom_eq nth_s_eq).left
state_before: case intro.intro
K : Type u_1
v : K
n : ℕ
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
a : K
nth_part_num_eq : (of v).partialNumerators.get? n = some a
gp : Pair K
nth_s_eq : (of v).s.get? n = some gp
gp_a_eq_a_n : gp.a = a
⊢ a = 1
state_after: case intro.intro
K : Type u_1
v : K
n : ℕ
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
a : K
nth_part_num_eq : (of v).partialNumerators.get? n = some a
gp : Pair K
nth_s_eq : (of v).s.get? n = some gp
gp_a_eq_a_n : gp.a = a
this : gp.a = 1
⊢ a = 1

tactic: rwa [gp_a_eq_a_n] at this
state_before: case intro.intro
K : Type u_1
v : K
n : ℕ
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
a : K
nth_part_num_eq : (of v).partialNumerators.get? n = some a
gp : Pair K
nth_s_eq : (of v).s.get? n = some gp
gp_a_eq_a_n : gp.a = a
this : gp.a = 1
⊢ a = 1
state_after: no goals
Theorem: Ordinal.nmul_le_iff₃
File: Mathlib/SetTheory/Ordinal/NaturalOps.lean

tactic: rw [← not_iff_not]
state_before: a b c d : Ordinal.{u}
⊢ a ⨳ b ⨳ c ≤ d ↔
    ∀ a' < a,
      ∀ b' < b,
        ∀ c' < c, a' ⨳ b ⨳ c ♯ a ⨳ b' ⨳ c ♯ a ⨳ b ⨳ c' ♯ a' ⨳ b' ⨳ c' < d ♯ a' ⨳ b' ⨳ c ♯ a' ⨳ b ⨳ c' ♯ a ⨳ b' ⨳ c'
state_after: a b c d : Ordinal.{u}
⊢ ¬a ⨳ b ⨳ c ≤ d ↔
    ¬∀ a' < a,
        ∀ b' < b,
          ∀ c' < c, a' ⨳ b ⨳ c ♯ a ⨳ b' ⨳ c ♯ a ⨳ b ⨳ c' ♯ a' ⨳ b' ⨳ c' < d ♯ a' ⨳ b' ⨳ c ♯ a' ⨳ b ⨳ c' ♯ a ⨳ b' ⨳ c'

tactic: simp [lt_nmul_iff₃]
state_before: a b c d : Ordinal.{u}
⊢ ¬a ⨳ b ⨳ c ≤ d ↔
    ¬∀ a' < a,
        ∀ b' < b,
          ∀ c' < c, a' ⨳ b ⨳ c ♯ a ⨳ b' ⨳ c ♯ a ⨳ b ⨳ c' ♯ a' ⨳ b' ⨳ c' < d ♯ a' ⨳ b' ⨳ c ♯ a' ⨳ b ⨳ c' ♯ a ⨳ b' ⨳ c'
state_after: no goals
Theorem: CategoryTheory.Limits.Fork.app_one_eq_ι_comp_left
File: Mathlib/CategoryTheory/Limits/Shapes/Equalizers.lean

tactic: rw [← s.app_zero_eq_ι, ← s.w left, parallelPair_map_left]
state_before: C : Type u
inst✝ : Category.{v, u} C
X Y : C
f g : X ⟶ Y
s : Fork f g
⊢ s.π.app one = s.ι ≫ f
state_after: no goals