ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Subalgebra.finrank_eq_one_iff
File: Mathlib/LinearAlgebra/Dimension/FreeAndStrongRankCondition.lean

Proof steps:
state_before: F : Type u_1
E : Type u_2
inst✝⁵ : CommRing F
inst✝⁴ : StrongRankCondition F
inst✝³ : Ring E
inst✝² : Algebra F E
S : Subalgebra F E
inst✝¹ : Nontrivial E
inst✝ : Module.Free F ↥S
⊢ finrank F ↥S = 1 ↔ S = ⊥
state_after: F : Type u_1
E : Type u_2
inst✝⁵ : CommRing F
inst✝⁴ : StrongRankCondition F
inst✝³ : Ring E
inst✝² : Algebra F E
S : Subalgebra F E
inst✝¹ : Nontrivial E
inst✝ : Module.Free F ↥S
⊢ finrank F ↥S = 1 ↔ Module.rank F ↥S = 1
tactic: rw [← Subalgebra.rank_eq_one_iff]
state_before: F : Type u_1
E : Type u_2
inst✝⁵ : CommRing F
inst✝⁴ : StrongRankCondition F
inst✝³ : Ring E
inst✝² : Algebra F E
S : Subalgebra F E
inst✝¹ : Nontrivial E
inst✝ : Module.Free F ↥S
⊢ finrank F ↥S = 1 ↔ Module.rank F ↥S = 1
state_after: no goals
tactic: exact toNat_eq_iff one_ne_zero
Theorem: Commute.orderOf_dvd_lcm_mul
File: Mathlib/GroupTheory/OrderOfElement.lean

Proof steps:
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 : ℕ
h : Commute x y
⊢ orderOf y ∣ (orderOf x).lcm (orderOf (x * y))
state_after: case pos
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 : ℕ
h : Commute x y
h0 : orderOf x = 0
⊢ orderOf y ∣ (orderOf x).lcm (orderOf (x * y))

case neg
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 : ℕ
h : Commute x y
h0 : ¬orderOf x = 0
⊢ orderOf y ∣ (orderOf x).lcm (orderOf (x * y))
tactic: by_cases h0 : orderOf x = 0
state_before: case neg
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 : ℕ
h : Commute x y
h0 : ¬orderOf x = 0
⊢ orderOf y ∣ (orderOf x).lcm (orderOf (x * y))
state_after: case neg
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 : ℕ
h : Commute x y
h0 : ¬orderOf x = 0
⊢ orderOf (x ^ (orderOf x).pred * (x * y)) ∣ (orderOf x).lcm (orderOf (x * y))
tactic: conv_lhs =>
    rw [← one_mul y, ← pow_orderOf_eq_one x, ← succ_pred_eq_of_pos (Nat.pos_of_ne_zero h0),
      _root_.pow_succ, mul_assoc]
state_before: case neg
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 : ℕ
h : Commute x y
h0 : ¬orderOf x = 0
⊢ orderOf (x ^ (orderOf x).pred * (x * y)) ∣ (orderOf x).lcm (orderOf (x * y))
state_after: no goals
tactic: exact
    (((Commute.refl x).mul_right h).pow_left _).orderOf_mul_dvd_lcm.trans
      (lcm_dvd_iff.2 ⟨(orderOf_pow_dvd _).trans (dvd_lcm_left _ _), dvd_lcm_right _ _⟩)
Theorem: DenseRange.topologicalClosure_map_subalgebra
File: Mathlib/Topology/Algebra/Algebra.lean

Proof steps:
state_before: R : Type u_1
inst✝¹² : CommSemiring R
inst✝¹¹ : TopologicalSpace R
inst✝¹⁰ : TopologicalSemiring R
A : Type u_2
inst✝⁹ : Semiring A
inst✝⁸ : TopologicalSpace A
inst✝⁷ : TopologicalSemiring A
inst✝⁶ : TopologicalSpace R
inst✝⁵ : TopologicalSemiring R
B : Type u_3
inst✝⁴ : Semiring B
inst✝³ : TopologicalSpace B
inst✝² : Algebra R A
inst✝¹ : Algebra R B
inst✝ : TopologicalSemiring B
f : A →A[R] B
hf' : DenseRange ⇑f
s : Subalgebra R A
hs : s.topologicalClosure = ⊤
⊢ (Subalgebra.map (↑f) s).topologicalClosure = ⊤
state_after: R : Type u_1
inst✝¹² : CommSemiring R
inst✝¹¹ : TopologicalSpace R
inst✝¹⁰ : TopologicalSemiring R
A : Type u_2
inst✝⁹ : Semiring A
inst✝⁸ : TopologicalSpace A
inst✝⁷ : TopologicalSemiring A
inst✝⁶ : TopologicalSpace R
inst✝⁵ : TopologicalSemiring R
B : Type u_3
inst✝⁴ : Semiring B
inst✝³ : TopologicalSpace B
inst✝² : Algebra R A
inst✝¹ : Algebra R B
inst✝ : TopologicalSemiring B
f : A →A[R] B
hf' : DenseRange ⇑f
s : Subalgebra R A
hs : ↑s.topologicalClosure = ↑⊤
⊢ ↑(Subalgebra.map (↑f) s).topologicalClosure = ↑⊤
tactic: rw [SetLike.ext'_iff] at hs ⊢
state_before: R : Type u_1
inst✝¹² : CommSemiring R
inst✝¹¹ : TopologicalSpace R
inst✝¹⁰ : TopologicalSemiring R
A : Type u_2
inst✝⁹ : Semiring A
inst✝⁸ : TopologicalSpace A
inst✝⁷ : TopologicalSemiring A
inst✝⁶ : TopologicalSpace R
inst✝⁵ : TopologicalSemiring R
B : Type u_3
inst✝⁴ : Semiring B
inst✝³ : TopologicalSpace B
inst✝² : Algebra R A
inst✝¹ : Algebra R B
inst✝ : TopologicalSemiring B
f : A →A[R] B
hf' : DenseRange ⇑f
s : Subalgebra R A
hs : ↑s.topologicalClosure = ↑⊤
⊢ ↑(Subalgebra.map (↑f) s).topologicalClosure = ↑⊤
state_after: R : Type u_1
inst✝¹² : CommSemiring R
inst✝¹¹ : TopologicalSpace R
inst✝¹⁰ : TopologicalSemiring R
A : Type u_2
inst✝⁹ : Semiring A
inst✝⁸ : TopologicalSpace A
inst✝⁷ : TopologicalSemiring A
inst✝⁶ : TopologicalSpace R
inst✝⁵ : TopologicalSemiring R
B : Type u_3
inst✝⁴ : Semiring B
inst✝³ : TopologicalSpace B
inst✝² : Algebra R A
inst✝¹ : Algebra R B
inst✝ : TopologicalSemiring B
f : A →A[R] B
hf' : DenseRange ⇑f
s : Subalgebra R A
hs : Dense ↑s
⊢ Dense ((fun a => f a) '' ↑s)
tactic: simp only [Subalgebra.topologicalClosure_coe, coe_top, ← dense_iff_closure_eq, Subalgebra.coe_map,
    AlgHom.coe_coe] at hs ⊢
state_before: R : Type u_1
inst✝¹² : CommSemiring R
inst✝¹¹ : TopologicalSpace R
inst✝¹⁰ : TopologicalSemiring R
A : Type u_2
inst✝⁹ : Semiring A
inst✝⁸ : TopologicalSpace A
inst✝⁷ : TopologicalSemiring A
inst✝⁶ : TopologicalSpace R
inst✝⁵ : TopologicalSemiring R
B : Type u_3
inst✝⁴ : Semiring B
inst✝³ : TopologicalSpace B
inst✝² : Algebra R A
inst✝¹ : Algebra R B
inst✝ : TopologicalSemiring B
f : A →A[R] B
hf' : DenseRange ⇑f
s : Subalgebra R A
hs : Dense ↑s
⊢ Dense ((fun a => f a) '' ↑s)
state_after: no goals
tactic: exact hf'.dense_image f.continuous hs
Theorem: CategoryTheory.Subobject.ofLE_comp_ofLE
File: Mathlib/CategoryTheory/Subobject/Basic.lean

Proof steps:
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X✝ Y✝ Z✝ : C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
B : C
X Y Z : Subobject B
h₁ : X ≤ Y
h₂ : Y ≤ Z
⊢ X.ofLE Y h₁ ≫ Y.ofLE Z h₂ = X.ofLE Z ⋯
state_after: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X✝ Y✝ Z✝ : C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
B : C
X Y Z : Subobject B
h₁ : X ≤ Y
h₂ : Y ≤ Z
⊢ underlying.map (h₁.hom ≫ h₂.hom) = underlying.map ⋯.hom
tactic: simp only [ofLE, ← Functor.map_comp underlying]
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X✝ Y✝ Z✝ : C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
B : C
X Y Z : Subobject B
h₁ : X ≤ Y
h₂ : Y ≤ Z
⊢ underlying.map (h₁.hom ≫ h₂.hom) = underlying.map ⋯.hom
state_after: no goals
tactic: congr 1
Theorem: CategoryTheory.NatTrans.unop_app
File: Mathlib/CategoryTheory/Opposites.lean

Proof steps:
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F✝ G✝ : C ⥤ D
F G : Cᵒᵖ ⥤ Dᵒᵖ
α : F ⟶ G
X Y : C
f : X ⟶ Y
⊢ (G.unop.map f ≫ (fun X => (α.app (op X)).unop) Y).op = ((fun X => (α.app (op X)).unop) X ≫ F.unop.map f).op
state_after: no goals
tactic: simp
Theorem: Nat.mul_dvd_mul_iff_right
File: Mathlib/Data/Nat/Defs.lean

Proof steps:
state_before: a b c d✝ m n k : ℕ
p q : ℕ → Prop
hc : 0 < c
d : ℕ
⊢ b * c = a * c * d ↔ b = a * d
state_after: no goals
tactic: rw [Nat.mul_right_comm, Nat.mul_left_inj $ ne_of_gt hc]
Theorem: IsClosed.analyticSet
File: Mathlib/MeasureTheory/Constructions/Polish/Basic.lean

Proof steps:
state_before: α : Type u_1
ι : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : PolishSpace α
s : Set α
hs : IsClosed s
⊢ AnalyticSet s
state_after: α : Type u_1
ι : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : PolishSpace α
s : Set α
hs : IsClosed s
this : PolishSpace ↑s
⊢ AnalyticSet s
tactic: haveI : PolishSpace s := hs.polishSpace
state_before: α : Type u_1
ι : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : PolishSpace α
s : Set α
hs : IsClosed s
this : PolishSpace ↑s
⊢ AnalyticSet s
state_after: α : Type u_1
ι : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : PolishSpace α
s : Set α
hs : IsClosed s
this : PolishSpace ↑s
⊢ AnalyticSet (range Subtype.val)
tactic: rw [← @Subtype.range_val α s]
state_before: α : Type u_1
ι : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : PolishSpace α
s : Set α
hs : IsClosed s
this : PolishSpace ↑s
⊢ AnalyticSet (range Subtype.val)
state_after: no goals
tactic: exact analyticSet_range_of_polishSpace continuous_subtype_val
Theorem: AddCircle.liftIco_continuous
File: Mathlib/Topology/Instances/AddCircle.lean

Proof steps:
state_before: 𝕜 : Type u_1
B : Type u_2
inst✝⁴ : LinearOrderedAddCommGroup 𝕜
inst✝³ : TopologicalSpace 𝕜
inst✝² : OrderTopology 𝕜
p a : 𝕜
hp : Fact (0 < p)
inst✝¹ : Archimedean 𝕜
inst✝ : TopologicalSpace B
f : 𝕜 → B
hf : f a = f (a + p)
hc : ContinuousOn f (Icc a (a + p))
⊢ Continuous (liftIco p a f)
state_after: 𝕜 : Type u_1
B : Type u_2
inst✝⁴ : LinearOrderedAddCommGroup 𝕜
inst✝³ : TopologicalSpace 𝕜
inst✝² : OrderTopology 𝕜
p a : 𝕜
hp : Fact (0 < p)
inst✝¹ : Archimedean 𝕜
inst✝ : TopologicalSpace B
f : 𝕜 → B
hf : f a = f (a + p)
hc : ContinuousOn f (Icc a (a + p))
⊢ Continuous (Quot.lift ((Icc a (a + p)).restrict f) ⋯ ∘ ⇑(equivIccQuot p a))
tactic: rw [liftIco_eq_lift_Icc hf]
state_before: 𝕜 : Type u_1
B : Type u_2
inst✝⁴ : LinearOrderedAddCommGroup 𝕜
inst✝³ : TopologicalSpace 𝕜
inst✝² : OrderTopology 𝕜
p a : 𝕜
hp : Fact (0 < p)
inst✝¹ : Archimedean 𝕜
inst✝ : TopologicalSpace B
f : 𝕜 → B
hf : f a = f (a + p)
hc : ContinuousOn f (Icc a (a + p))
⊢ Continuous (Quot.lift ((Icc a (a + p)).restrict f) ⋯ ∘ ⇑(equivIccQuot p a))
state_after: 𝕜 : Type u_1
B : Type u_2
inst✝⁴ : LinearOrderedAddCommGroup 𝕜
inst✝³ : TopologicalSpace 𝕜
inst✝² : OrderTopology 𝕜
p a : 𝕜
hp : Fact (0 < p)
inst✝¹ : Archimedean 𝕜
inst✝ : TopologicalSpace B
f : 𝕜 → B
hf : f a = f (a + p)
hc : ContinuousOn f (Icc a (a + p))
⊢ Continuous (Quot.lift ((Icc a (a + p)).restrict f) ⋯)
tactic: refine Continuous.comp ?_ (homeoIccQuot p a).continuous_toFun
state_before: 𝕜 : Type u_1
B : Type u_2
inst✝⁴ : LinearOrderedAddCommGroup 𝕜
inst✝³ : TopologicalSpace 𝕜
inst✝² : OrderTopology 𝕜
p a : 𝕜
hp : Fact (0 < p)
inst✝¹ : Archimedean 𝕜
inst✝ : TopologicalSpace B
f : 𝕜 → B
hf : f a = f (a + p)
hc : ContinuousOn f (Icc a (a + p))
⊢ Continuous (Quot.lift ((Icc a (a + p)).restrict f) ⋯)
state_after: no goals
tactic: exact continuous_coinduced_dom.mpr (continuousOn_iff_continuous_restrict.mp hc)
Theorem: LinearMap.baseChange_zero
File: Mathlib/RingTheory/TensorProduct/Basic.lean

Proof steps:
state_before: R : Type u_1
A : Type u_2
B : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
inst✝¹⁰ : CommSemiring R
inst✝⁹ : Semiring A
inst✝⁸ : Algebra R A
inst✝⁷ : Semiring B
inst✝⁶ : Algebra R B
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
r : R
f g : M →ₗ[R] N
⊢ baseChange A 0 = 0
state_after: case a.h.h
R : Type u_1
A : Type u_2
B : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
inst✝¹⁰ : CommSemiring R
inst✝⁹ : Semiring A
inst✝⁸ : Algebra R A
inst✝⁷ : Semiring B
inst✝⁶ : Algebra R B
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
r : R
f g : M →ₗ[R] N
x✝ : M
⊢ ((AlgebraTensorModule.curry (baseChange A 0)) 1) x✝ = ((AlgebraTensorModule.curry 0) 1) x✝
tactic: ext
state_before: case a.h.h
R : Type u_1
A : Type u_2
B : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
inst✝¹⁰ : CommSemiring R
inst✝⁹ : Semiring A
inst✝⁸ : Algebra R A
inst✝⁷ : Semiring B
inst✝⁶ : Algebra R B
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
r : R
f g : M →ₗ[R] N
x✝ : M
⊢ ((AlgebraTensorModule.curry (baseChange A 0)) 1) x✝ = ((AlgebraTensorModule.curry 0) 1) x✝
state_after: no goals
tactic: simp [baseChange_eq_ltensor]
Theorem: NonUnitalSubalgebra.toNonUnitalSubring_injective
File: Mathlib/Algebra/Algebra/NonUnitalSubalgebra.lean

Proof steps:
state_before: F : Type v'
R' : Type u'
R : Type u
A : Type v
B : Type w
C : Type w'
inst✝⁶ : CommRing R
inst✝⁵ : NonUnitalNonAssocRing A
inst✝⁴ : NonUnitalNonAssocRing B
inst✝³ : NonUnitalNonAssocRing C
inst✝² : Module R A
inst✝¹ : Module R B
inst✝ : Module R C
S T : NonUnitalSubalgebra R A
h : S.toNonUnitalSubring = T.toNonUnitalSubring
x : A
⊢ x ∈ S ↔ x ∈ T
state_after: no goals
tactic: rw [← mem_toNonUnitalSubring, ← mem_toNonUnitalSubring, h]
Theorem: MeasureTheory.tilted_congr
File: Mathlib/MeasureTheory/Measure/Tilted.lean

Proof steps:
state_before: α : Type u_1
mα : MeasurableSpace α
μ : Measure α
f g : α → ℝ
hfg : f =ᶠ[ae μ] g
⊢ μ.tilted f = μ.tilted g
state_after: α : Type u_1
mα : MeasurableSpace α
μ : Measure α
f g : α → ℝ
hfg : f =ᶠ[ae μ] g
h_int_eq : ∫ (x : α), rexp (f x) ∂μ = ∫ (x : α), rexp (g x) ∂μ
⊢ μ.tilted f = μ.tilted g
tactic: have h_int_eq : ∫ x, exp (f x) ∂μ = ∫ x, exp (g x) ∂μ := by
    refine integral_congr_ae ?_
    filter_upwards [hfg] with x hx
    rw [hx]
state_before: α : Type u_1
mα : MeasurableSpace α
μ : Measure α
f g : α → ℝ
hfg : f =ᶠ[ae μ] g
h_int_eq : ∫ (x : α), rexp (f x) ∂μ = ∫ (x : α), rexp (g x) ∂μ
⊢ μ.tilted f = μ.tilted g
state_after: α : Type u_1
mα : MeasurableSpace α
μ : Measure α
f g : α → ℝ
hfg : f =ᶠ[ae μ] g
h_int_eq : ∫ (x : α), rexp (f x) ∂μ = ∫ (x : α), rexp (g x) ∂μ
⊢ (fun x => ENNReal.ofReal (rexp (f x) / ∫ (x : α), rexp (f x) ∂μ)) =ᶠ[ae μ] fun x =>
    ENNReal.ofReal (rexp (g x) / ∫ (x : α), rexp (g x) ∂μ)
tactic: refine withDensity_congr_ae ?_
state_before: α : Type u_1
mα : MeasurableSpace α
μ : Measure α
f g : α → ℝ
hfg : f =ᶠ[ae μ] g
h_int_eq : ∫ (x : α), rexp (f x) ∂μ = ∫ (x : α), rexp (g x) ∂μ
⊢ (fun x => ENNReal.ofReal (rexp (f x) / ∫ (x : α), rexp (f x) ∂μ)) =ᶠ[ae μ] fun x =>
    ENNReal.ofReal (rexp (g x) / ∫ (x : α), rexp (g x) ∂μ)
state_after: case h
α : Type u_1
mα : MeasurableSpace α
μ : Measure α
f g : α → ℝ
hfg : f =ᶠ[ae μ] g
h_int_eq : ∫ (x : α), rexp (f x) ∂μ = ∫ (x : α), rexp (g x) ∂μ
x : α
hx : f x = g x
⊢ ENNReal.ofReal (rexp (f x) / ∫ (x : α), rexp (f x) ∂μ) = ENNReal.ofReal (rexp (g x) / ∫ (x : α), rexp (g x) ∂μ)
tactic: filter_upwards [hfg] with x hx
state_before: case h
α : Type u_1
mα : MeasurableSpace α
μ : Measure α
f g : α → ℝ
hfg : f =ᶠ[ae μ] g
h_int_eq : ∫ (x : α), rexp (f x) ∂μ = ∫ (x : α), rexp (g x) ∂μ
x : α
hx : f x = g x
⊢ ENNReal.ofReal (rexp (f x) / ∫ (x : α), rexp (f x) ∂μ) = ENNReal.ofReal (rexp (g x) / ∫ (x : α), rexp (g x) ∂μ)
state_after: no goals
tactic: rw [h_int_eq, hx]
Theorem: bernoulli'_three
File: Mathlib/NumberTheory/Bernoulli.lean

Proof steps:
state_before: A : Type u_1
inst✝¹ : CommRing A
inst✝ : Algebra ℚ A
⊢ bernoulli' 3 = 0
state_after: A : Type u_1
inst✝¹ : CommRing A
inst✝ : Algebra ℚ A
⊢ 1 - ∑ k ∈ range 3, ↑(Nat.choose 3 k) / (↑3 - ↑k + 1) * bernoulli' k = 0
tactic: rw [bernoulli'_def]
state_before: A : Type u_1
inst✝¹ : CommRing A
inst✝ : Algebra ℚ A
⊢ 1 - ∑ k ∈ range 3, ↑(Nat.choose 3 k) / (↑3 - ↑k + 1) * bernoulli' k = 0
state_after: no goals
tactic: norm_num [sum_range_succ, sum_range_succ, sum_range_zero]
Theorem: String.extract_zero_endPos
File: .lake/packages/batteries/Batteries/Data/String/Lemmas.lean

Proof steps:
state_before: c : Char
cs : List Char
⊢ { data := c :: cs }.extract 0 { data := c :: cs }.endPos = { data := c :: cs }
state_after: c : Char
cs : List Char
⊢ { data := extract.go₁ (c :: cs) 0 0 { byteIdx := utf8Len cs + c.utf8Size } } = { data := c :: cs }
tactic: simp only [extract, Pos.byteIdx_zero, endPos_eq, utf8Len_cons, ge_iff_le, Nat.le_zero_eq,
      Nat.ne_of_gt add_csize_pos, ↓reduceIte]
state_before: c : Char
cs : List Char
⊢ { data := extract.go₁ (c :: cs) 0 0 { byteIdx := utf8Len cs + c.utf8Size } } = { data := c :: cs }
state_after: case e_data
c : Char
cs : List Char
⊢ extract.go₁ (c :: cs) 0 0 { byteIdx := utf8Len cs + c.utf8Size } = c :: cs
tactic: congr
state_before: case e_data
c : Char
cs : List Char
⊢ extract.go₁ (c :: cs) 0 0 { byteIdx := utf8Len cs + c.utf8Size } = c :: cs
state_after: no goals
tactic: apply extract.go₁_zero_utf8Len
Theorem: Submodule.unique_quotient_iff_eq_top
File: Mathlib/LinearAlgebra/Quotient.lean

Proof steps:
state_before: R : Type u_1
M : Type u_2
r : R
x y : M
inst✝² : Ring R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
p p' : Submodule R M
⊢ p = ⊤ → Nonempty (Unique (M ⧸ p))
state_after: R : Type u_1
M : Type u_2
r : R
x y : M
inst✝² : Ring R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
p' : Submodule R M
⊢ Nonempty (Unique (M ⧸ ⊤))
tactic: rintro rfl
state_before: R : Type u_1
M : Type u_2
r : R
x y : M
inst✝² : Ring R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
p' : Submodule R M
⊢ Nonempty (Unique (M ⧸ ⊤))
state_after: no goals
tactic: exact ⟨QuotientTop.unique⟩
Theorem: mabs_le_mabs_of_le_one
File: Mathlib/Algebra/Order/Group/Unbundled/Abs.lean

Proof steps:
state_before: α : Type u_1
inst✝³ : Group α
inst✝² : LinearOrder α
a✝ b✝ : α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b c : α
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
ha : a ≤ 1
hab : b ≤ a
⊢ mabs a ≤ mabs b
state_after: α : Type u_1
inst✝³ : Group α
inst✝² : LinearOrder α
a✝ b✝ : α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b c : α
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
ha : a ≤ 1
hab : b ≤ a
⊢ a⁻¹ ≤ b⁻¹
tactic: rw [mabs_of_le_one ha, mabs_of_le_one (hab.trans ha)]
state_before: α : Type u_1
inst✝³ : Group α
inst✝² : LinearOrder α
a✝ b✝ : α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b c : α
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
ha : a ≤ 1
hab : b ≤ a
⊢ a⁻¹ ≤ b⁻¹
state_after: no goals
tactic: exact inv_le_inv_iff.mpr hab
Theorem: min_add_distrib
File: Mathlib/Algebra/Order/Monoid/Canonical/Defs.lean

Proof steps:
state_before: α : Type u
inst✝ : CanonicallyLinearOrderedCommMonoid α
a b c : α
⊢ min a (b * c) = min a (min a b * min a c)
state_after: case inl
α : Type u
inst✝ : CanonicallyLinearOrderedCommMonoid α
a b c : α
hb : a ≤ b
⊢ min a (b * c) = min a (min a b * min a c)

case inr
α : Type u
inst✝ : CanonicallyLinearOrderedCommMonoid α
a b c : α
hb : b ≤ a
⊢ min a (b * c) = min a (min a b * min a c)
tactic: rcases le_total a b with hb | hb
Theorem: Polynomial.mul_scaleRoots'
File: Mathlib/RingTheory/Polynomial/ScaleRoots.lean

Proof steps:
state_before: R : Type u_1
S : Type u_2
A : Type u_3
K : Type u_4
inst✝³ : Semiring S
inst✝² : CommSemiring R
inst✝¹ : Semiring A
inst✝ : Field K
p q : R[X]
r : R
h : p.leadingCoeff * q.leadingCoeff ≠ 0
⊢ (p * q).scaleRoots r = p.scaleRoots r * q.scaleRoots r
state_after: no goals
tactic: rw [← mul_scaleRoots, natDegree_mul' h, tsub_self, pow_zero, one_smul]
Theorem: LinearMap.lTensor_surj_iff_rTensor_surj
File: Mathlib/LinearAlgebra/TensorProduct/Basic.lean

Proof steps:
state_before: R : Type u_1
inst✝¹⁶ : CommSemiring R
R' : Type u_2
inst✝¹⁵ : Monoid R'
R'' : Type u_3
inst✝¹⁴ : Semiring R''
M : Type u_4
N : Type u_5
P : Type u_6
Q : Type u_7
S : Type u_8
T : Type u_9
inst✝¹³ : AddCommMonoid M
inst✝¹² : AddCommMonoid N
inst✝¹¹ : AddCommMonoid P
inst✝¹⁰ : AddCommMonoid Q
inst✝⁹ : AddCommMonoid S
inst✝⁸ : AddCommMonoid T
inst✝⁷ : Module R M
inst✝⁶ : Module R N
inst✝⁵ : Module R P
inst✝⁴ : Module R Q
inst✝³ : Module R S
inst✝² : Module R T
inst✝¹ : DistribMulAction R' M
inst✝ : Module R'' M
g : P →ₗ[R] Q
f : N →ₗ[R] P
⊢ Function.Surjective ⇑(lTensor M f) ↔ Function.Surjective ⇑(rTensor M f)
state_after: no goals
tactic: simp [← comm_comp_rTensor_comp_comm_eq]
Theorem: Icc_mem_nhds_iff
File: Mathlib/Topology/Order/DenselyOrdered.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝⁵ : TopologicalSpace α
inst✝⁴ : LinearOrder α
inst✝³ : OrderTopology α
inst✝² : DenselyOrdered α
a✝ b✝ : α
s : Set α
inst✝¹ : NoMinOrder α
inst✝ : NoMaxOrder α
a b x : α
⊢ Icc a b ∈ 𝓝 x ↔ x ∈ Ioo a b
state_after: no goals
tactic: rw [← interior_Icc, mem_interior_iff_mem_nhds]
Theorem: binary_relation_sInf_iff
File: Mathlib/Order/CompleteLattice.lean

Proof steps:
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
α : Type u_9
β : Type u_10
s : Set (α → β → Prop)
a : α
b : β
⊢ sInf s a b ↔ ∀ r ∈ s, r a b
state_after: α✝ : Type u_1
β✝ : Type u_2
β₂ : Type u_3
γ : Type u_4
ι : Sort u_5
ι' : Sort u_6
κ : ι → Sort u_7
κ' : ι' → Sort u_8
α : Type u_9
β : Type u_10
s : Set (α → β → Prop)
a : α
b : β
⊢ (⨅ f, ↑f a) b ↔ ∀ r ∈ s, r a b
tactic: rw [sInf_apply]
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
α : Type u_9
β : Type u_10
s : Set (α → β → Prop)
a : α
b : β
⊢ (⨅ f, ↑f a) b ↔ ∀ r ∈ s, r a b
state_after: no goals
tactic: simp [← eq_iff_iff]
Theorem: List.sum_int_mod
File: Mathlib/Algebra/BigOperators/Group/List.lean

Proof steps:
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 ℤ
n : ℤ
⊢ l.sum % n = (map (fun x => x % n) l).sum % n
state_after: no goals
tactic: induction l <;> simp [Int.add_emod, *]
Theorem: Filter.comap_bot
File: Mathlib/Order/Filter/Basic.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
l f f₁ f₂ : Filter α
g g₁ g₂ : Filter β
m : α → β
m' : β → γ
s✝ : Set α
t : Set β
s : Set α
x✝ : s ∈ ⊥
⊢ m ⁻¹' ∅ ⊆ s
state_after: no goals
tactic: simp only [empty_subset, preimage_empty]
Theorem: IsLocalization.injective
File: Mathlib/RingTheory/Localization/Basic.lean

Proof steps:
state_before: R : Type u_1
inst✝⁴ : CommRing R
M : Submonoid R
S : Type u_2
inst✝³ : CommRing S
inst✝² : Algebra R S
P : Type u_3
inst✝¹ : CommRing P
K : Type u_4
inst✝ : IsLocalization M S
hM : M ≤ nonZeroDivisors R
⊢ Injective ⇑(algebraMap R S)
state_after: R : Type u_1
inst✝⁴ : CommRing R
M : Submonoid R
S : Type u_2
inst✝³ : CommRing S
inst✝² : Algebra R S
P : Type u_3
inst✝¹ : CommRing P
K : Type u_4
inst✝ : IsLocalization M S
hM : M ≤ nonZeroDivisors R
⊢ ∀ (a : R), (algebraMap R S) a = 0 → a = 0
tactic: rw [injective_iff_map_eq_zero (algebraMap R S)]
state_before: R : Type u_1
inst✝⁴ : CommRing R
M : Submonoid R
S : Type u_2
inst✝³ : CommRing S
inst✝² : Algebra R S
P : Type u_3
inst✝¹ : CommRing P
K : Type u_4
inst✝ : IsLocalization M S
hM : M ≤ nonZeroDivisors R
⊢ ∀ (a : R), (algebraMap R S) a = 0 → a = 0
state_after: R : Type u_1
inst✝⁴ : CommRing R
M : Submonoid R
S : Type u_2
inst✝³ : CommRing S
inst✝² : Algebra R S
P : Type u_3
inst✝¹ : CommRing P
K : Type u_4
inst✝ : IsLocalization M S
hM : M ≤ nonZeroDivisors R
a : R
ha : (algebraMap R S) a = 0
⊢ a = 0
tactic: intro a ha
state_before: R : Type u_1
inst✝⁴ : CommRing R
M : Submonoid R
S : Type u_2
inst✝³ : CommRing S
inst✝² : Algebra R S
P : Type u_3
inst✝¹ : CommRing P
K : Type u_4
inst✝ : IsLocalization M S
hM : M ≤ nonZeroDivisors R
a : R
ha : (algebraMap R S) a = 0
⊢ a = 0
state_after: no goals
tactic: rwa [to_map_eq_zero_iff S hM] at ha
Theorem: AddSubmonoid.prod_eq_top_iff
File: Mathlib/Algebra/Group/Submonoid/Operations.lean

Proof steps:
state_before: M : Type u_1
N : Type u_2
P : Type u_3
inst✝³ : MulOneClass M
inst✝² : MulOneClass N
inst✝¹ : MulOneClass P
S : Submonoid M
A : Type u_4
inst✝ : SetLike A M
hA : SubmonoidClass A M
S' : A
s : Submonoid M
t : Submonoid N
⊢ s.prod t = ⊤ ↔ s = ⊤ ∧ t = ⊤
state_after: no goals
tactic: simp only [eq_top_iff, le_prod_iff, ← (gc_map_comap _).le_iff_le, ← mrange_eq_map, mrange_fst,
    mrange_snd]
Theorem: MeasureTheory.sum_addContent_le_of_subset
File: Mathlib/MeasureTheory/Measure/AddContent.lean

Proof steps:
state_before: α : Type u_1
C : Set (Set α)
s t : Set α
I : Finset (Set α)
m m' : AddContent C
hC : IsSetSemiring C
h_ss : ↑I ⊆ C
h_dis : (↑I).PairwiseDisjoint id
ht : t ∈ C
hJt : ∀ s ∈ I, s ⊆ t
⊢ ∑ u ∈ I, m u ≤ m t
state_after: no goals
tactic: classical
  rw [addContent_eq_add_diffFinset₀_of_subset hC ht h_ss hJt h_dis]
  exact le_add_right le_rfl