ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: PrimeSpectrum.range_comap_of_surjective
File: Mathlib/AlgebraicGeometry/PrimeSpectrum/Basic.lean

Proof steps:
state_before: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
f : R →+* S
hf : Surjective ⇑f
⊢ Set.range ⇑(comap f) = zeroLocus ↑(ker f)
state_after: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
f : R →+* S
hf : Surjective ⇑f
⊢ ⇑(comap f) '' Set.univ = zeroLocus ↑(ker f)
tactic: rw [← Set.image_univ]
state_before: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
f : R →+* S
hf : Surjective ⇑f
⊢ ⇑(comap f) '' Set.univ = zeroLocus ↑(ker f)
state_after: case h.e'_2.h.e'_4
R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
f : R →+* S
hf : Surjective ⇑f
⊢ Set.univ = zeroLocus ↑⊥
tactic: convert image_comap_zeroLocus_eq_zeroLocus_comap _ _ hf _
state_before: case h.e'_2.h.e'_4
R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
f : R →+* S
hf : Surjective ⇑f
⊢ Set.univ = zeroLocus ↑⊥
state_after: no goals
tactic: rw [zeroLocus_bot]
Theorem: ProbabilityTheory.truncation_eq_self
File: Mathlib/Probability/StrongLaw.lean

Proof steps:
state_before: α : Type u_1
m : MeasurableSpace α
μ : Measure α
f✝ f : α → ℝ
A : ℝ
x : α
h : |f x| < A
⊢ truncation f A x = f x
state_after: α : Type u_1
m : MeasurableSpace α
μ : Measure α
f✝ f : α → ℝ
A : ℝ
x : α
h : |f x| < A
⊢ f x ∉ Set.Ioc (-A) A → 0 = f x
tactic: simp only [truncation, indicator, Set.mem_Icc, id, Function.comp_apply, ite_eq_left_iff]
state_before: α : Type u_1
m : MeasurableSpace α
μ : Measure α
f✝ f : α → ℝ
A : ℝ
x : α
h : |f x| < A
⊢ f x ∉ Set.Ioc (-A) A → 0 = f x
state_after: α : Type u_1
m : MeasurableSpace α
μ : Measure α
f✝ f : α → ℝ
A : ℝ
x : α
h : |f x| < A
H : f x ∉ Set.Ioc (-A) A
⊢ 0 = f x
tactic: intro H
state_before: α : Type u_1
m : MeasurableSpace α
μ : Measure α
f✝ f : α → ℝ
A : ℝ
x : α
h : |f x| < A
H : f x ∉ Set.Ioc (-A) A
⊢ 0 = f x
state_after: α : Type u_1
m : MeasurableSpace α
μ : Measure α
f✝ f : α → ℝ
A : ℝ
x : α
h : |f x| < A
H : f x ∉ Set.Ioc (-A) A
⊢ f x ∈ Set.Ioc (-A) A
tactic: apply H.elim
state_before: α : Type u_1
m : MeasurableSpace α
μ : Measure α
f✝ f : α → ℝ
A : ℝ
x : α
h : |f x| < A
H : f x ∉ Set.Ioc (-A) A
⊢ f x ∈ Set.Ioc (-A) A
state_after: no goals
tactic: simp [(abs_lt.1 h).1, (abs_lt.1 h).2.le]
Theorem: orderOf_dvd_iff_pow_eq_one
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 n : ℕ
h : orderOf x ∣ n
⊢ x ^ n = 1
state_after: no goals
tactic: rw [← pow_mod_orderOf, Nat.mod_eq_zero_of_dvd h, _root_.pow_zero]
Theorem: Submodule.wcovBy_span_singleton_sup
File: Mathlib/LinearAlgebra/Span.lean

Proof steps:
state_before: R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
x : V
p : Submodule K V
⊢ p ⩿ span K {x} ⊔ p
state_after: R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
x : V
p q : Submodule K V
hpq : p < q
hqp : q < span K {x} ⊔ p
⊢ span K {x} ⊔ p ≤ q
tactic: refine ⟨le_sup_right, fun q hpq hqp ↦ hqp.not_le ?_⟩
state_before: R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
x : V
p q : Submodule K V
hpq : p < q
hqp : q < span K {x} ⊔ p
⊢ span K {x} ⊔ p ≤ q
state_after: case intro.intro
R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
x : V
p q : Submodule K V
hpq : p < q
hqp : q < span K {x} ⊔ p
y : V
hyq : y ∈ q
hyp : y ∉ p
⊢ span K {x} ⊔ p ≤ q
tactic: rcases SetLike.exists_of_lt hpq with ⟨y, hyq, hyp⟩
state_before: case intro.intro
R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
x : V
p q : Submodule K V
hpq : p < q
hqp : q < span K {x} ⊔ p
y : V
hyq : y ∈ q
hyp : y ∉ p
⊢ span K {x} ⊔ p ≤ q
state_after: case intro.intro.intro.intro.intro
R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
x : V
p q : Submodule K V
hpq : p < q
hqp : q < span K {x} ⊔ p
c : K
z : V
hz : z ∈ p
hyq : c • x + z ∈ q
hyp : c • x + z ∉ p
⊢ span K {x} ⊔ p ≤ q
tactic: obtain ⟨c, z, hz, rfl⟩ : ∃ c : K, ∃ z ∈ p, c • x + z = y := by
    simpa [mem_sup, mem_span_singleton] using hqp.le hyq
state_before: case intro.intro.intro.intro.intro
R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
x : V
p q : Submodule K V
hpq : p < q
hqp : q < span K {x} ⊔ p
c : K
z : V
hz : z ∈ p
hyq : c • x + z ∈ q
hyp : c • x + z ∉ p
⊢ span K {x} ⊔ p ≤ q
state_after: case intro.intro.intro.intro.intro.inl
R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
x : V
p q : Submodule K V
hpq : p < q
hqp : q < span K {x} ⊔ p
z : V
hz : z ∈ p
hyq : 0 • x + z ∈ q
hyp : 0 • x + z ∉ p
⊢ span K {x} ⊔ p ≤ q

case intro.intro.intro.intro.intro.inr
R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
x : V
p q : Submodule K V
hpq : p < q
hqp : q < span K {x} ⊔ p
c : K
z : V
hz : z ∈ p
hyq : c • x + z ∈ q
hyp : c • x + z ∉ p
hc : c ≠ 0
⊢ span K {x} ⊔ p ≤ q
tactic: rcases eq_or_ne c 0 with rfl | hc
Theorem: ContinuousLinearEquiv.arrowCongrEquiv_symm_apply
File: Mathlib/Topology/Algebra/Module/Basic.lean

Proof steps:
state_before: R₁ : Type u_1
R₂ : Type u_2
R₃ : Type u_3
inst✝³¹ : Semiring R₁
inst✝³⁰ : Semiring R₂
inst✝²⁹ : Semiring R₃
σ₁₂ : R₁ →+* R₂
σ₂₁ : R₂ →+* R₁
inst✝²⁸ : RingHomInvPair σ₁₂ σ₂₁
inst✝²⁷ : RingHomInvPair σ₂₁ σ₁₂
σ₂₃ : R₂ →+* R₃
σ₃₂ : R₃ →+* R₂
inst✝²⁶ : RingHomInvPair σ₂₃ σ₃₂
inst✝²⁵ : RingHomInvPair σ₃₂ σ₂₃
σ₁₃ : R₁ →+* R₃
σ₃₁ : R₃ →+* R₁
inst✝²⁴ : RingHomInvPair σ₁₃ σ₃₁
inst✝²³ : RingHomInvPair σ₃₁ σ₁₃
inst✝²² : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝²¹ : RingHomCompTriple σ₃₂ σ₂₁ σ₃₁
M₁ : Type u_4
inst✝²⁰ : TopologicalSpace M₁
inst✝¹⁹ : AddCommMonoid M₁
M'₁ : Type u_5
inst✝¹⁸ : TopologicalSpace M'₁
inst✝¹⁷ : AddCommMonoid M'₁
M₂ : Type u_6
inst✝¹⁶ : TopologicalSpace M₂
inst✝¹⁵ : AddCommMonoid M₂
M₃ : Type u_7
inst✝¹⁴ : TopologicalSpace M₃
inst✝¹³ : AddCommMonoid M₃
M₄ : Type u_8
inst✝¹² : TopologicalSpace M₄
inst✝¹¹ : AddCommMonoid M₄
inst✝¹⁰ : Module R₁ M₁
inst✝⁹ : Module R₁ M'₁
inst✝⁸ : Module R₂ M₂
inst✝⁷ : Module R₃ M₃
R₄ : Type u_9
inst✝⁶ : Semiring R₄
inst✝⁵ : Module R₄ M₄
σ₃₄ : R₃ →+* R₄
σ₄₃ : R₄ →+* R₃
inst✝⁴ : RingHomInvPair σ₃₄ σ₄₃
inst✝³ : RingHomInvPair σ₄₃ σ₃₄
σ₂₄ : R₂ →+* R₄
σ₁₄ : R₁ →+* R₄
inst✝² : RingHomCompTriple σ₂₁ σ₁₄ σ₂₄
inst✝¹ : RingHomCompTriple σ₂₄ σ₄₃ σ₂₃
inst✝ : RingHomCompTriple σ₁₃ σ₃₄ σ₁₄
e₁₂ : M₁ ≃SL[σ₁₂] M₂
e₄₃ : M₄ ≃SL[σ₄₃] M₃
f : M₁ →SL[σ₁₄] M₄
x : M₁
⊢ ((fun f => (↑e₄₃.symm).comp (f.comp ↑e₁₂)) ((fun f => (↑e₄₃).comp (f.comp ↑e₁₂.symm)) f)) x = f x
state_after: no goals
tactic: simp only [ContinuousLinearMap.comp_apply, symm_apply_apply, coe_coe]
state_before: R₁ : Type u_1
R₂ : Type u_2
R₃ : Type u_3
inst✝³¹ : Semiring R₁
inst✝³⁰ : Semiring R₂
inst✝²⁹ : Semiring R₃
σ₁₂ : R₁ →+* R₂
σ₂₁ : R₂ →+* R₁
inst✝²⁸ : RingHomInvPair σ₁₂ σ₂₁
inst✝²⁷ : RingHomInvPair σ₂₁ σ₁₂
σ₂₃ : R₂ →+* R₃
σ₃₂ : R₃ →+* R₂
inst✝²⁶ : RingHomInvPair σ₂₃ σ₃₂
inst✝²⁵ : RingHomInvPair σ₃₂ σ₂₃
σ₁₃ : R₁ →+* R₃
σ₃₁ : R₃ →+* R₁
inst✝²⁴ : RingHomInvPair σ₁₃ σ₃₁
inst✝²³ : RingHomInvPair σ₃₁ σ₁₃
inst✝²² : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝²¹ : RingHomCompTriple σ₃₂ σ₂₁ σ₃₁
M₁ : Type u_4
inst✝²⁰ : TopologicalSpace M₁
inst✝¹⁹ : AddCommMonoid M₁
M'₁ : Type u_5
inst✝¹⁸ : TopologicalSpace M'₁
inst✝¹⁷ : AddCommMonoid M'₁
M₂ : Type u_6
inst✝¹⁶ : TopologicalSpace M₂
inst✝¹⁵ : AddCommMonoid M₂
M₃ : Type u_7
inst✝¹⁴ : TopologicalSpace M₃
inst✝¹³ : AddCommMonoid M₃
M₄ : Type u_8
inst✝¹² : TopologicalSpace M₄
inst✝¹¹ : AddCommMonoid M₄
inst✝¹⁰ : Module R₁ M₁
inst✝⁹ : Module R₁ M'₁
inst✝⁸ : Module R₂ M₂
inst✝⁷ : Module R₃ M₃
R₄ : Type u_9
inst✝⁶ : Semiring R₄
inst✝⁵ : Module R₄ M₄
σ₃₄ : R₃ →+* R₄
σ₄₃ : R₄ →+* R₃
inst✝⁴ : RingHomInvPair σ₃₄ σ₄₃
inst✝³ : RingHomInvPair σ₄₃ σ₃₄
σ₂₄ : R₂ →+* R₄
σ₁₄ : R₁ →+* R₄
inst✝² : RingHomCompTriple σ₂₁ σ₁₄ σ₂₄
inst✝¹ : RingHomCompTriple σ₂₄ σ₄₃ σ₂₃
inst✝ : RingHomCompTriple σ₁₃ σ₃₄ σ₁₄
e₁₂ : M₁ ≃SL[σ₁₂] M₂
e₄₃ : M₄ ≃SL[σ₄₃] M₃
f : M₂ →SL[σ₂₃] M₃
x : M₂
⊢ ((fun f => (↑e₄₃).comp (f.comp ↑e₁₂.symm)) ((fun f => (↑e₄₃.symm).comp (f.comp ↑e₁₂)) f)) x = f x
state_after: no goals
tactic: simp only [ContinuousLinearMap.comp_apply, apply_symm_apply, coe_coe]
Theorem: OrderEmbedding.birkhoffFinset_inf
File: Mathlib/Order/Birkhoff.lean

Proof steps:
state_before: α : Type u_1
inst✝⁴ : DistribLattice α
inst✝³ : OrderBot α
inst✝² : Fintype α
inst✝¹ : DecidablePred SupIrred
inst✝ : DecidableEq α
a b : α
⊢ birkhoffFinset (a ⊓ b) = birkhoffFinset a ∩ birkhoffFinset b
state_after: α : Type u_1
inst✝⁴ : DistribLattice α
inst✝³ : OrderBot α
inst✝² : Fintype α
inst✝¹ : DecidablePred SupIrred
inst✝ : DecidableEq α
a b : α
⊢ Fintype.finsetOrderIsoSet.symm.toOrderEmbedding (birkhoffSet (a ⊓ b)) =
    Fintype.finsetOrderIsoSet.symm.toOrderEmbedding (birkhoffSet a) ∩
      Fintype.finsetOrderIsoSet.symm.toOrderEmbedding (birkhoffSet b)
tactic: dsimp [OrderEmbedding.birkhoffFinset]
state_before: α : Type u_1
inst✝⁴ : DistribLattice α
inst✝³ : OrderBot α
inst✝² : Fintype α
inst✝¹ : DecidablePred SupIrred
inst✝ : DecidableEq α
a b : α
⊢ Fintype.finsetOrderIsoSet.symm.toOrderEmbedding (birkhoffSet (a ⊓ b)) =
    Fintype.finsetOrderIsoSet.symm.toOrderEmbedding (birkhoffSet a) ∩
      Fintype.finsetOrderIsoSet.symm.toOrderEmbedding (birkhoffSet b)
state_after: α : Type u_1
inst✝⁴ : DistribLattice α
inst✝³ : OrderBot α
inst✝² : Fintype α
inst✝¹ : DecidablePred SupIrred
inst✝ : DecidableEq α
a b : α
⊢ Fintype.finsetOrderIsoSet.symm (birkhoffSet a ∩ birkhoffSet b) =
    Fintype.finsetOrderIsoSet.symm (birkhoffSet a) ∩ Fintype.finsetOrderIsoSet.symm (birkhoffSet b)
tactic: rw [birkhoffSet_inf, OrderIso.coe_toOrderEmbedding]
state_before: α : Type u_1
inst✝⁴ : DistribLattice α
inst✝³ : OrderBot α
inst✝² : Fintype α
inst✝¹ : DecidablePred SupIrred
inst✝ : DecidableEq α
a b : α
⊢ Fintype.finsetOrderIsoSet.symm (birkhoffSet a ∩ birkhoffSet b) =
    Fintype.finsetOrderIsoSet.symm (birkhoffSet a) ∩ Fintype.finsetOrderIsoSet.symm (birkhoffSet b)
state_after: no goals
tactic: simp
Theorem: Ordinal.toPGame_def
File: Mathlib/SetTheory/Game/Ordinal.lean

Proof steps:
state_before: o : Ordinal.{u_1}
⊢ let_fun this := ⋯;
  o.toPGame = mk (Quotient.out o).α PEmpty.{u_1 + 1} (fun x => (typein (fun x x_1 => x < x_1) x).toPGame) PEmpty.elim
state_after: no goals
tactic: rw [toPGame]
Theorem: Subgroup.mem_sup'
File: Mathlib/Algebra/Group/Subgroup/Basic.lean

Proof steps:
state_before: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁵ : Group G
inst✝⁴ : Group G'
inst✝³ : Group G''
A : Type u_4
inst✝² : AddGroup A
N : Type u_5
inst✝¹ : Group N
C : Type u_6
inst✝ : CommGroup C
s t : Subgroup C
x : C
⊢ (∃ y ∈ s, ∃ z ∈ t, y * z = x) ↔ ∃ y z, ↑y * ↑z = x
state_after: no goals
tactic: simp only [SetLike.exists, coe_mk, exists_prop]
Theorem: Multiset.singleton_bind
File: Mathlib/Data/Multiset/Bind.lean

Proof steps:
state_before: α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
a : α
s t : Multiset α
f g : α → Multiset β
⊢ {a}.bind f = f a
state_after: no goals
tactic: simp [bind]
Theorem: Int.units_sq
File: Mathlib/Data/Int/Order/Units.lean

Proof steps:
state_before: u : ℤˣ
⊢ u ^ 2 = 1
state_after: no goals
tactic: rw [Units.ext_iff, Units.val_pow_eq_pow_val, Units.val_one, isUnit_sq u.isUnit]
Theorem: Submodule.map_equivMapOfInjective_symm_apply
File: Mathlib/Algebra/Module/Submodule/Map.lean

Proof steps:
state_before: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
R₃ : Type u_4
M : Type u_5
M₁ : Type u_6
M₂ : Type u_7
M₃ : Type u_8
inst✝¹³ : Semiring R
inst✝¹² : Semiring R₂
inst✝¹¹ : Semiring R₃
inst✝¹⁰ : AddCommMonoid M
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : AddCommMonoid M₃
inst✝⁷ : Module R M
inst✝⁶ : Module R₂ M₂
inst✝⁵ : Module R₃ M₃
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
inst✝⁴ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
p✝ p' : Submodule R M
q q' : Submodule R₂ M₂
x✝ : M
σ₂₁ : R₂ →+* R
inst✝³ : RingHomInvPair σ₁₂ σ₂₁
inst✝² : RingHomInvPair σ₂₁ σ₁₂
F : Type u_9
inst✝¹ : FunLike F M M₂
inst✝ : SemilinearMapClass F σ₁₂ M M₂
f : F
i : Injective ⇑f
p : Submodule R M
x : ↥(map f p)
⊢ f ↑((equivMapOfInjective f i p).symm x) = ↑x
state_after: no goals
tactic: rw [← LinearEquiv.apply_symm_apply (equivMapOfInjective f i p) x, coe_equivMapOfInjective_apply,
    i.eq_iff, LinearEquiv.apply_symm_apply]
Theorem: HomologicalComplex.homotopyCofiber.desc_f'
File: Mathlib/Algebra/Homology/HomotopyCofiber.lean

Proof steps:
state_before: C : Type u_1
inst✝³ : Category.{u_3, u_1} C
inst✝² : Preadditive C
ι : Type u_2
c : ComplexShape ι
F G K : HomologicalComplex C c
φ : F ⟶ G
inst✝¹ : HasHomotopyCofiber φ
inst✝ : DecidableRel c.Rel
α : G ⟶ K
hα : Homotopy (φ ≫ α) 0
j : ι
hj : ¬c.Rel j (c.next j)
⊢ (desc φ α hα).f j = sndX φ j ≫ α.f j
state_after: no goals
tactic: apply dif_neg hj
Theorem: PresheafOfModules.sheafificationAdjunction_unit_app_hom
File: Mathlib/Algebra/Category/ModuleCat/Presheaf/Sheafification.lean

Proof steps:
state_before: C : Type u'
inst✝⁴ : Category.{v', u'} C
J : GrothendieckTopology C
R₀ : Cᵒᵖ ⥤ RingCat
R : Sheaf J RingCat
α : R₀ ⟶ R.val
inst✝³ : Presheaf.IsLocallyInjective J α
inst✝² : Presheaf.IsLocallySurjective J α
inst✝¹ : J.WEqualsLocallyBijective AddCommGrp
inst✝ : HasWeakSheafify J AddCommGrp
M₀ : PresheafOfModules R₀
⊢ ((sheafificationAdjunction α).unit.app M₀).hom = CategoryTheory.toSheafify J M₀.presheaf
state_after: no goals
tactic: rfl
Theorem: Polynomial.divX_C_mul
File: Mathlib/Algebra/Polynomial/Inductions.lean

Proof steps:
state_before: R : Type u
S : Type v
T : Type w
A : Type z
a b : R
n : ℕ
inst✝ : Semiring R
p q : R[X]
⊢ (C a * p).divX = C a * p.divX
state_after: case a
R : Type u
S : Type v
T : Type w
A : Type z
a b : R
n : ℕ
inst✝ : Semiring R
p q : R[X]
n✝ : ℕ
⊢ (C a * p).divX.coeff n✝ = (C a * p.divX).coeff n✝
tactic: ext
state_before: case a
R : Type u
S : Type v
T : Type w
A : Type z
a b : R
n : ℕ
inst✝ : Semiring R
p q : R[X]
n✝ : ℕ
⊢ (C a * p).divX.coeff n✝ = (C a * p.divX).coeff n✝
state_after: no goals
tactic: simp
Theorem: String.prev_of_valid
File: .lake/packages/batteries/Batteries/Data/String/Lemmas.lean

Proof steps:
state_before: cs : List Char
c : Char
cs' : List Char
⊢ { data := cs ++ c :: cs' }.prev { byteIdx := utf8Len cs + c.utf8Size } = { byteIdx := utf8Len cs }
state_after: cs : List Char
c : Char
cs' : List Char
⊢ (if { byteIdx := utf8Len cs + c.utf8Size } = 0 then 0
    else utf8PrevAux (cs ++ c :: cs') 0 { byteIdx := utf8Len cs + c.utf8Size }) =
    { byteIdx := utf8Len cs }
tactic: simp only [prev]
state_before: cs : List Char
c : Char
cs' : List Char
⊢ (if { byteIdx := utf8Len cs + c.utf8Size } = 0 then 0
    else utf8PrevAux (cs ++ c :: cs') 0 { byteIdx := utf8Len cs + c.utf8Size }) =
    { byteIdx := utf8Len cs }
state_after: cs : List Char
c : Char
cs' : List Char
⊢ utf8PrevAux (cs ++ c :: cs') 0 { byteIdx := utf8Len cs + c.utf8Size } = { byteIdx := utf8Len cs }
tactic: refine (if_neg (Pos.ne_of_gt add_csize_pos)).trans ?_
state_before: cs : List Char
c : Char
cs' : List Char
⊢ utf8PrevAux (cs ++ c :: cs') 0 { byteIdx := utf8Len cs + c.utf8Size } = { byteIdx := utf8Len cs }
state_after: no goals
tactic: rw [utf8PrevAux_of_valid] <;> simp
Theorem: finrank_eq_one_iff
File: Mathlib/LinearAlgebra/Dimension/FreeAndStrongRankCondition.lean

Proof steps:
state_before: K : Type u
V : Type v
inst✝⁵ : Ring K
inst✝⁴ : StrongRankCondition K
inst✝³ : AddCommGroup V
inst✝² : Module K V
inst✝¹ : Module.Free K V
ι : Type u_1
inst✝ : Unique ι
⊢ finrank K V = 1 ↔ Nonempty (Basis ι K V)
state_after: case mp
K : Type u
V : Type v
inst✝⁵ : Ring K
inst✝⁴ : StrongRankCondition K
inst✝³ : AddCommGroup V
inst✝² : Module K V
inst✝¹ : Module.Free K V
ι : Type u_1
inst✝ : Unique ι
⊢ finrank K V = 1 → Nonempty (Basis ι K V)

case mpr
K : Type u
V : Type v
inst✝⁵ : Ring K
inst✝⁴ : StrongRankCondition K
inst✝³ : AddCommGroup V
inst✝² : Module K V
inst✝¹ : Module.Free K V
ι : Type u_1
inst✝ : Unique ι
⊢ Nonempty (Basis ι K V) → finrank K V = 1
tactic: constructor
Theorem: BoundedContinuousFunction.const_toFun
File: Mathlib/Topology/ContinuousFunction/Bounded.lean

Proof steps:
state_before: F : Type u_1
α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : PseudoMetricSpace β
inst✝ : PseudoMetricSpace γ
f g : α →ᵇ β
x : α
C : ℝ
b : β
⊢ ∀ (x y : α), dist ((ContinuousMap.const α b).toFun x) ((ContinuousMap.const α b).toFun y) ≤ 0
state_after: no goals
tactic: simp
Theorem: Function.funext_iff_of_subsingleton
File: Mathlib/Logic/Function/Basic.lean

Proof steps:
state_before: α : Sort u_1
β : Sort u_2
γ : Sort u_3
f : α → β
inst✝ : Subsingleton α
g : α → β
x y : α
⊢ f x = g y ↔ f = g
state_after: case refine_1
α : Sort u_1
β : Sort u_2
γ : Sort u_3
f : α → β
inst✝ : Subsingleton α
g : α → β
x y : α
h : f x = g y
z : α
⊢ f z = g z

case refine_2
α : Sort u_1
β : Sort u_2
γ : Sort u_3
f : α → β
inst✝ : Subsingleton α
g : α → β
x y : α
h : f = g
⊢ f x = g y
tactic: refine ⟨fun h ↦ funext fun z ↦ ?_, fun h ↦ ?_⟩
Theorem: Set.mapsTo_iInter₂
File: Mathlib/Data/Set/Lattice.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
s : Set α
t : (i : ι) → κ i → Set β
f : α → β
⊢ MapsTo f s (⋂ i, ⋂ j, t i j) ↔ ∀ (i : ι) (j : κ i), MapsTo f s (t i j)
state_after: no goals
tactic: simp only [mapsTo_iInter]
Theorem: MeasureTheory.ae_restrict_union_eq
File: Mathlib/MeasureTheory/Measure/Restrict.lean

Proof steps:
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✝ s t : Set α
⊢ ae (μ.restrict (s ∪ t)) = ae (μ.restrict s) ⊔ ae (μ.restrict t)
state_after: no goals
tactic: simp [union_eq_iUnion, iSup_bool_eq]
Theorem: Ring.choose_zero_right
File: Mathlib/RingTheory/Binomial.lean

Proof steps:
state_before: R : Type u_1
inst✝³ : NonAssocRing R
inst✝² : Pow R ℕ
inst✝¹ : BinomialRing R
inst✝ : NatPowAssoc R
r : R
⊢ choose r 0 = 1
state_after: no goals
tactic: rw [choose_zero_right', npow_zero]
Theorem: AddOreLocalization.add_cancel
File: Mathlib/RingTheory/OreLocalization/Basic.lean

Proof steps:
state_before: R : Type u_1
inst✝² : Monoid R
S : Submonoid R
inst✝¹ : OreSet S
X : Type ?u.105022
inst✝ : MulAction R X
r : R
s t : ↥S
⊢ ↑s /ₒ t * (r /ₒ s) = r /ₒ t
state_after: no goals
tactic: simp [oreDiv_mul_char s.1 r t s 1 1 (by simp)]
Theorem: CategoryTheory.Pretriangulated.isIso₂_of_isIso₁₃
File: Mathlib/CategoryTheory/Triangulated/Pretriangulated.lean

Proof steps:
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroObject C
inst✝² : HasShift C ℤ
inst✝¹ : Preadditive C
inst✝ : ∀ (n : ℤ), (shiftFunctor C n).Additive
hC : Pretriangulated C
T T' : Triangle C
φ : T ⟶ T'
hT : T ∈ distinguishedTriangles
hT' : T' ∈ distinguishedTriangles
h₁ : IsIso φ.hom₁
h₃ : IsIso φ.hom₃
⊢ IsIso φ.hom₂
state_after: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroObject C
inst✝² : HasShift C ℤ
inst✝¹ : Preadditive C
inst✝ : ∀ (n : ℤ), (shiftFunctor C n).Additive
hC : Pretriangulated C
T T' : Triangle C
φ : T ⟶ T'
hT : T ∈ distinguishedTriangles
hT' : T' ∈ distinguishedTriangles
h₁ : IsIso φ.hom₁
h₃ : IsIso φ.hom₃
this : Mono φ.hom₂
⊢ IsIso φ.hom₂
tactic: have : Mono φ.hom₂ := by
    rw [mono_iff_cancel_zero]
    intro A f hf
    obtain ⟨g, rfl⟩ := Triangle.coyoneda_exact₂ _ hT f
      (by rw [← cancel_mono φ.hom₃, assoc, φ.comm₂, reassoc_of% hf, zero_comp, zero_comp])
    rw [assoc] at hf
    obtain ⟨h, hh⟩ := Triangle.coyoneda_exact₂ T'.invRotate (inv_rot_of_distTriang _ hT')
      (g ≫ φ.hom₁) (by dsimp; rw [assoc, ← φ.comm₁, hf])
    obtain ⟨k, rfl⟩ : ∃ (k : A ⟶ T.invRotate.obj₁), k ≫ T.invRotate.mor₁ = g := by
      refine ⟨h ≫ inv (φ.hom₃⟦(-1 : ℤ)⟧'), ?_⟩
      have eq := ((invRotate C).map φ).comm₁
      dsimp only [invRotate] at eq
      rw [← cancel_mono φ.hom₁, assoc, assoc, eq, IsIso.inv_hom_id_assoc, hh]
    erw [assoc, comp_distTriang_mor_zero₁₂ _ (inv_rot_of_distTriang _ hT), comp_zero]
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroObject C
inst✝² : HasShift C ℤ
inst✝¹ : Preadditive C
inst✝ : ∀ (n : ℤ), (shiftFunctor C n).Additive
hC : Pretriangulated C
T T' : Triangle C
φ : T ⟶ T'
hT : T ∈ distinguishedTriangles
hT' : T' ∈ distinguishedTriangles
h₁ : IsIso φ.hom₁
h₃ : IsIso φ.hom₃
this : Mono φ.hom₂
⊢ IsIso φ.hom₂
state_after: case refine_1
C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroObject C
inst✝² : HasShift C ℤ
inst✝¹ : Preadditive C
inst✝ : ∀ (n : ℤ), (shiftFunctor C n).Additive
hC : Pretriangulated C
T T' : Triangle C
φ : T ⟶ T'
hT : T ∈ distinguishedTriangles
hT' : T' ∈ distinguishedTriangles
h₁ : IsIso φ.hom₁
h₃ : IsIso φ.hom₃
this : Mono φ.hom₂
A : C
⊢ Function.Injective fun x => x ≫ φ.hom₂

case refine_2
C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroObject C
inst✝² : HasShift C ℤ
inst✝¹ : Preadditive C
inst✝ : ∀ (n : ℤ), (shiftFunctor C n).Additive
hC : Pretriangulated C
T T' : Triangle C
φ : T ⟶ T'
hT : T ∈ distinguishedTriangles
hT' : T' ∈ distinguishedTriangles
h₁ : IsIso φ.hom₁
h₃ : IsIso φ.hom₃
this : Mono φ.hom₂
A : C
⊢ Function.Surjective fun x => x ≫ φ.hom₂
tactic: refine isIso_of_yoneda_map_bijective _ (fun A => ⟨?_, ?_⟩)
Theorem: Complex.abs_cpow_eq_rpow_re_of_pos
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

Proof steps:
state_before: x : ℝ
hx : 0 < x
y : ℂ
⊢ abs (↑x ^ y) = x ^ y.re
state_after: no goals
tactic: rw [abs_cpow_of_ne_zero (ofReal_ne_zero.mpr hx.ne'), arg_ofReal_of_nonneg hx.le,
    zero_mul, Real.exp_zero, div_one, abs_of_nonneg hx.le]
Theorem: MeasureTheory.Memℒp.im
File: Mathlib/MeasureTheory/Function/LpSeminorm/Basic.lean

Proof steps:
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
𝕜 : Type u_5
inst✝ : RCLike 𝕜
f : α → 𝕜
hf : Memℒp f p μ
⊢ Memℒp (fun x => RCLike.im (f x)) p μ
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
𝕜 : Type u_5
inst✝ : RCLike 𝕜
f : α → 𝕜
hf : Memℒp f p μ
this : ∀ (x : α), ‖RCLike.im (f x)‖ ≤ 1 * ‖f x‖
⊢ Memℒp (fun x => RCLike.im (f x)) p μ
tactic: have : ∀ x, ‖RCLike.im (f x)‖ ≤ 1 * ‖f x‖ := by
    intro x
    rw [one_mul]
    exact RCLike.norm_im_le_norm (f x)
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
𝕜 : Type u_5
inst✝ : RCLike 𝕜
f : α → 𝕜
hf : Memℒp f p μ
this : ∀ (x : α), ‖RCLike.im (f x)‖ ≤ 1 * ‖f x‖
⊢ Memℒp (fun x => RCLike.im (f x)) p μ
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
𝕜 : Type u_5
inst✝ : RCLike 𝕜
f : α → 𝕜
hf : Memℒp f p μ
this : ∀ (x : α), ‖RCLike.im (f x)‖ ≤ 1 * ‖f x‖
⊢ AEStronglyMeasurable (fun x => RCLike.im (f x)) μ
tactic: refine hf.of_le_mul ?_ (eventually_of_forall this)
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
𝕜 : Type u_5
inst✝ : RCLike 𝕜
f : α → 𝕜
hf : Memℒp f p μ
this : ∀ (x : α), ‖RCLike.im (f x)‖ ≤ 1 * ‖f x‖
⊢ AEStronglyMeasurable (fun x => RCLike.im (f x)) μ
state_after: no goals
tactic: exact RCLike.continuous_im.comp_aestronglyMeasurable hf.1