ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: IsSubmonoid.pow_mem
File: Mathlib/Deprecated/Submonoid.lean

Proof steps:
state_before: M : Type u_1
inst✝¹ : Monoid M
s : Set M
A : Type u_2
inst✝ : AddMonoid A
t : Set A
a : M
hs : IsSubmonoid s
h : a ∈ s
⊢ a ^ 0 ∈ s
state_after: M : Type u_1
inst✝¹ : Monoid M
s : Set M
A : Type u_2
inst✝ : AddMonoid A
t : Set A
a : M
hs : IsSubmonoid s
h : a ∈ s
⊢ 1 ∈ s
tactic: rw [pow_zero]
state_before: M : Type u_1
inst✝¹ : Monoid M
s : Set M
A : Type u_2
inst✝ : AddMonoid A
t : Set A
a : M
hs : IsSubmonoid s
h : a ∈ s
⊢ 1 ∈ s
state_after: no goals
tactic: exact hs.one_mem
state_before: M : Type u_1
inst✝¹ : Monoid M
s : Set M
A : Type u_2
inst✝ : AddMonoid A
t : Set A
a : M
hs : IsSubmonoid s
h : a ∈ s
n : ℕ
⊢ a ^ (n + 1) ∈ s
state_after: M : Type u_1
inst✝¹ : Monoid M
s : Set M
A : Type u_2
inst✝ : AddMonoid A
t : Set A
a : M
hs : IsSubmonoid s
h : a ∈ s
n : ℕ
⊢ a ^ n * a ∈ s
tactic: rw [pow_succ]
state_before: M : Type u_1
inst✝¹ : Monoid M
s : Set M
A : Type u_2
inst✝ : AddMonoid A
t : Set A
a : M
hs : IsSubmonoid s
h : a ∈ s
n : ℕ
⊢ a ^ n * a ∈ s
state_after: no goals
tactic: exact hs.mul_mem (IsSubmonoid.pow_mem hs h) h
Theorem: Summable.countable_support
File: Mathlib/Topology/Algebra/InfiniteSum/Group.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
G : Type u_5
inst✝⁴ : TopologicalSpace G
inst✝³ : CommGroup G
inst✝² : TopologicalGroup G
f : α → G
inst✝¹ : FirstCountableTopology G
inst✝ : T1Space G
hf : Multipliable f
⊢ (mulSupport f).Countable
state_after: no goals
tactic: simpa only [ker_nhds] using hf.tendsto_cofinite_one.countable_compl_preimage_ker
Theorem: inv_mul_cancel
File: Mathlib/Algebra/GroupWithZero/NeZero.lean

Proof steps:
state_before: M₀ : Type u_1
M₀' : Type u_2
inst✝² : MulZeroOneClass M₀
inst✝¹ : Nontrivial M₀
G₀ : Type u_3
inst✝ : GroupWithZero G₀
a : G₀
h : a ≠ 0
⊢ a⁻¹ * a = a⁻¹ * a * a⁻¹ * a⁻¹⁻¹
state_after: no goals
tactic: simp [inv_ne_zero h]
state_before: M₀ : Type u_1
M₀' : Type u_2
inst✝² : MulZeroOneClass M₀
inst✝¹ : Nontrivial M₀
G₀ : Type u_3
inst✝ : GroupWithZero G₀
a : G₀
h : a ≠ 0
⊢ a⁻¹ * a * a⁻¹ * a⁻¹⁻¹ = a⁻¹ * a⁻¹⁻¹
state_after: no goals
tactic: simp [h]
state_before: M₀ : Type u_1
M₀' : Type u_2
inst✝² : MulZeroOneClass M₀
inst✝¹ : Nontrivial M₀
G₀ : Type u_3
inst✝ : GroupWithZero G₀
a : G₀
h : a ≠ 0
⊢ a⁻¹ * a⁻¹⁻¹ = 1
state_after: no goals
tactic: simp [inv_ne_zero h]
Theorem: AlgHom.card_of_splits
File: Mathlib/FieldTheory/PrimitiveElement.lean

Proof steps:
state_before: F : Type u_1
E : Type u_2
inst✝⁶ : Field F
inst✝⁵ : Field E
inst✝⁴ : Algebra F E
inst✝³ : FiniteDimensional F E
inst✝² : Algebra.IsSeparable F E
L : Type u_3
inst✝¹ : Field L
inst✝ : Algebra F L
hL : ∀ (x : E), Splits (algebraMap F L) (minpoly F x)
⊢ Fintype.card (E →ₐ[F] L) = finrank F E
state_after: F : Type u_1
E : Type u_2
inst✝⁶ : Field F
inst✝⁵ : Field E
inst✝⁴ : Algebra F E
inst✝³ : FiniteDimensional F E
inst✝² : Algebra.IsSeparable F E
L : Type u_3
inst✝¹ : Field L
inst✝ : Algebra F L
hL : ∀ (x : E), Splits (algebraMap F L) (minpoly F x)
⊢ Fintype.card (E →ₐ[F] AlgebraicClosure L) = finrank F E
tactic: rw [← Fintype.ofEquiv_card <| Algebra.IsAlgebraic.algHomEquivAlgHomOfSplits
    (AlgebraicClosure L) _ hL]
state_before: F : Type u_1
E : Type u_2
inst✝⁶ : Field F
inst✝⁵ : Field E
inst✝⁴ : Algebra F E
inst✝³ : FiniteDimensional F E
inst✝² : Algebra.IsSeparable F E
L : Type u_3
inst✝¹ : Field L
inst✝ : Algebra F L
hL : ∀ (x : E), Splits (algebraMap F L) (minpoly F x)
⊢ Fintype.card (E →ₐ[F] AlgebraicClosure L) = finrank F E
state_after: no goals
tactic: convert AlgHom.card F E (AlgebraicClosure L)
Theorem: LocallyFinite.comp_injOn
File: Mathlib/Topology/LocallyFinite.lean

Proof steps:
state_before: ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f g✝ : ι → Set X
g : ι' → ι
hf : LocallyFinite f
hg : InjOn g {i | (f (g i)).Nonempty}
x : X
⊢ ∃ t ∈ 𝓝 x, {i | ((f ∘ g) i ∩ t).Nonempty}.Finite
state_after: ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f g✝ : ι → Set X
g : ι' → ι
hf : LocallyFinite f
hg : InjOn g {i | (f (g i)).Nonempty}
x : X
t : Set X
htx : t ∈ 𝓝 x
htf : {i | (f i ∩ t).Nonempty}.Finite
⊢ ∃ t ∈ 𝓝 x, {i | ((f ∘ g) i ∩ t).Nonempty}.Finite
tactic: let ⟨t, htx, htf⟩ := hf x
state_before: ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f g✝ : ι → Set X
g : ι' → ι
hf : LocallyFinite f
hg : InjOn g {i | (f (g i)).Nonempty}
x : X
t : Set X
htx : t ∈ 𝓝 x
htf : {i | (f i ∩ t).Nonempty}.Finite
⊢ ∃ t ∈ 𝓝 x, {i | ((f ∘ g) i ∩ t).Nonempty}.Finite
state_after: ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f g✝ : ι → Set X
g : ι' → ι
hf : LocallyFinite f
hg : InjOn g {i | (f (g i)).Nonempty}
x : X
t : Set X
htx : t ∈ 𝓝 x
htf : {i | (f i ∩ t).Nonempty}.Finite
⊢ InjOn g (g ⁻¹' {i | (f i ∩ t).Nonempty})
tactic: refine ⟨t, htx, htf.preimage <| ?_⟩
state_before: ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f g✝ : ι → Set X
g : ι' → ι
hf : LocallyFinite f
hg : InjOn g {i | (f (g i)).Nonempty}
x : X
t : Set X
htx : t ∈ 𝓝 x
htf : {i | (f i ∩ t).Nonempty}.Finite
⊢ InjOn g (g ⁻¹' {i | (f i ∩ t).Nonempty})
state_after: no goals
tactic: exact hg.mono fun i (hi : Set.Nonempty _) => hi.left
Theorem: MeasureTheory.lowerCrossingTime_lt_upperCrossingTime
File: Mathlib/Probability/Martingale/Upcrossing.lean

Proof steps:
state_before: Ω : Type u_1
ι : Type u_2
m0 : MeasurableSpace Ω
μ : Measure Ω
a b : ℝ
f : ℕ → Ω → ℝ
N n m : ℕ
ω : Ω
hab : a < b
hn : upperCrossingTime a b f N (n + 1) ω ≠ N
⊢ lowerCrossingTime a b f N n ω < upperCrossingTime a b f N (n + 1) ω
state_after: Ω : Type u_1
ι : Type u_2
m0 : MeasurableSpace Ω
μ : Measure Ω
a b : ℝ
f : ℕ → Ω → ℝ
N n m : ℕ
ω : Ω
hab : a < b
hn : upperCrossingTime a b f N (n + 1) ω ≠ N
h : lowerCrossingTime a b f N n ω = upperCrossingTime a b f N (n + 1) ω
⊢ stoppedValue f (upperCrossingTime a b f N (n + 1)) ω ≤ a
tactic: refine lt_of_le_of_ne lowerCrossingTime_le_upperCrossingTime_succ fun h =>
    not_le.2 hab <| le_trans (stoppedValue_upperCrossingTime hn) ?_
state_before: Ω : Type u_1
ι : Type u_2
m0 : MeasurableSpace Ω
μ : Measure Ω
a b : ℝ
f : ℕ → Ω → ℝ
N n m : ℕ
ω : Ω
hab : a < b
hn : upperCrossingTime a b f N (n + 1) ω ≠ N
h : lowerCrossingTime a b f N n ω = upperCrossingTime a b f N (n + 1) ω
⊢ stoppedValue f (upperCrossingTime a b f N (n + 1)) ω ≤ a
state_after: Ω : Type u_1
ι : Type u_2
m0 : MeasurableSpace Ω
μ : Measure Ω
a b : ℝ
f : ℕ → Ω → ℝ
N n m : ℕ
ω : Ω
hab : a < b
hn : upperCrossingTime a b f N (n + 1) ω ≠ N
h : lowerCrossingTime a b f N n ω = upperCrossingTime a b f N (n + 1) ω
⊢ f (upperCrossingTime a b f N (n + 1) ω) ω ≤ a
tactic: simp only [stoppedValue]
state_before: Ω : Type u_1
ι : Type u_2
m0 : MeasurableSpace Ω
μ : Measure Ω
a b : ℝ
f : ℕ → Ω → ℝ
N n m : ℕ
ω : Ω
hab : a < b
hn : upperCrossingTime a b f N (n + 1) ω ≠ N
h : lowerCrossingTime a b f N n ω = upperCrossingTime a b f N (n + 1) ω
⊢ f (upperCrossingTime a b f N (n + 1) ω) ω ≤ a
state_after: Ω : Type u_1
ι : Type u_2
m0 : MeasurableSpace Ω
μ : Measure Ω
a b : ℝ
f : ℕ → Ω → ℝ
N n m : ℕ
ω : Ω
hab : a < b
hn : upperCrossingTime a b f N (n + 1) ω ≠ N
h : lowerCrossingTime a b f N n ω = upperCrossingTime a b f N (n + 1) ω
⊢ f (lowerCrossingTime a b f N n ω) ω ≤ a
tactic: rw [← h]
state_before: Ω : Type u_1
ι : Type u_2
m0 : MeasurableSpace Ω
μ : Measure Ω
a b : ℝ
f : ℕ → Ω → ℝ
N n m : ℕ
ω : Ω
hab : a < b
hn : upperCrossingTime a b f N (n + 1) ω ≠ N
h : lowerCrossingTime a b f N n ω = upperCrossingTime a b f N (n + 1) ω
⊢ f (lowerCrossingTime a b f N n ω) ω ≤ a
state_after: no goals
tactic: exact stoppedValue_lowerCrossingTime (h.symm ▸ hn)
Theorem: CategoryTheory.Pi.optionEquivalence_functor
File: Mathlib/CategoryTheory/Pi/Basic.lean

Proof steps:
state_before: I : Type w₀
J : Type w₁
C : I → Type u₁
inst✝¹ : (i : I) → Category.{v₁, u₁} (C i)
C' : Option J → Type u₁
inst✝ : (i : Option J) → Category.{v₁, u₁} (C' i)
⊢ (Functor.pi' fun i =>
        match i with
        | none => Prod.fst (C' none) ((j : J) → C' (some j))
        | some i => Prod.snd (C' none) ((j : J) → C' (some j)) ⋙ eval (fun j => C' (some j)) i) ⋙
      (eval C' none).prod' (Functor.pi' fun i => eval C' (some i)) ≅
    𝟭 (C' none × ((j : J) → C' (some j)))
state_after: no goals
tactic: exact Iso.refl _
Theorem: CategoryTheory.Idempotents.toKaroubi_map_f
File: Mathlib/CategoryTheory/Idempotents/Karoubi.lean

Proof steps:
state_before: C : Type u_1
inst✝ : Category.{?u.17320, u_1} C
X : C
⊢ 𝟙 X ≫ 𝟙 X = 𝟙 X
state_after: no goals
tactic: rw [comp_id]
state_before: C : Type u_1
inst✝ : Category.{?u.17320, u_1} C
X✝ Y✝ : C
f : X✝ ⟶ Y✝
⊢ f = ((fun X => { X := X, p := 𝟙 X, idem := ⋯ }) X✝).p ≫ f ≫ ((fun X => { X := X, p := 𝟙 X, idem := ⋯ }) Y✝).p
state_after: no goals
tactic: simp only [comp_id, id_comp]
Theorem: Finset.analyticAt_sum
File: Mathlib/Analysis/Analytic/Constructions.lean

Proof steps:
state_before: α : Type u_1
𝕜 : Type u_2
inst✝¹² : NontriviallyNormedField 𝕜
E : Type u_3
F : Type u_4
G : Type u_5
H : Type u_6
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
inst✝⁷ : NormedAddCommGroup G
inst✝⁶ : NormedSpace 𝕜 G
inst✝⁵ : NormedAddCommGroup H
inst✝⁴ : NormedSpace 𝕜 H
𝕝 : Type u_7
inst✝³ : NontriviallyNormedField 𝕝
inst✝² : NormedAlgebra 𝕜 𝕝
A : Type u_8
inst✝¹ : NormedRing A
inst✝ : NormedAlgebra 𝕜 A
f : α → E → F
c : E
N : Finset α
h : ∀ n ∈ N, AnalyticAt 𝕜 (f n) c
⊢ AnalyticAt 𝕜 (fun z => ∑ n ∈ N, f n z) c
state_after: case empty
α : Type u_1
𝕜 : Type u_2
inst✝¹² : NontriviallyNormedField 𝕜
E : Type u_3
F : Type u_4
G : Type u_5
H : Type u_6
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
inst✝⁷ : NormedAddCommGroup G
inst✝⁶ : NormedSpace 𝕜 G
inst✝⁵ : NormedAddCommGroup H
inst✝⁴ : NormedSpace 𝕜 H
𝕝 : Type u_7
inst✝³ : NontriviallyNormedField 𝕝
inst✝² : NormedAlgebra 𝕜 𝕝
A : Type u_8
inst✝¹ : NormedRing A
inst✝ : NormedAlgebra 𝕜 A
f : α → E → F
c : E
h : ∀ n ∈ ∅, AnalyticAt 𝕜 (f n) c
⊢ AnalyticAt 𝕜 (fun z => ∑ n ∈ ∅, f n z) c

case insert
α : Type u_1
𝕜 : Type u_2
inst✝¹² : NontriviallyNormedField 𝕜
E : Type u_3
F : Type u_4
G : Type u_5
H : Type u_6
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
inst✝⁷ : NormedAddCommGroup G
inst✝⁶ : NormedSpace 𝕜 G
inst✝⁵ : NormedAddCommGroup H
inst✝⁴ : NormedSpace 𝕜 H
𝕝 : Type u_7
inst✝³ : NontriviallyNormedField 𝕝
inst✝² : NormedAlgebra 𝕜 𝕝
A : Type u_8
inst✝¹ : NormedRing A
inst✝ : NormedAlgebra 𝕜 A
f : α → E → F
c : E
a : α
B : Finset α
aB : a ∉ B
hB : (∀ n ∈ B, AnalyticAt 𝕜 (f n) c) → AnalyticAt 𝕜 (fun z => ∑ n ∈ B, f n z) c
h : ∀ n ∈ insert a B, AnalyticAt 𝕜 (f n) c
⊢ AnalyticAt 𝕜 (fun z => ∑ n ∈ insert a B, f n z) c
tactic: induction' N using Finset.induction with a B aB hB
Theorem: Finset.product_self_eq_disjiUnion_perm
File: Mathlib/GroupTheory/Perm/Cycle/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
f : Perm α
s : Finset α
hf : f.IsCycleOn ↑s
⊢ s ×ˢ s = (range s.card).disjiUnion (fun k => map { toFun := fun i => (i, (f ^ k) i), inj' := ⋯ } s) ⋯
state_after: case a.mk
ι : Type u_1
α : Type u_2
β : Type u_3
f : Perm α
s : Finset α
hf : f.IsCycleOn ↑s
a b : α
⊢ (a, b) ∈ s ×ˢ s ↔
    (a, b) ∈ (range s.card).disjiUnion (fun k => map { toFun := fun i => (i, (f ^ k) i), inj' := ⋯ } s) ⋯
tactic: ext ⟨a, b⟩
state_before: case a.mk
ι : Type u_1
α : Type u_2
β : Type u_3
f : Perm α
s : Finset α
hf : f.IsCycleOn ↑s
a b : α
⊢ (a, b) ∈ s ×ˢ s ↔
    (a, b) ∈ (range s.card).disjiUnion (fun k => map { toFun := fun i => (i, (f ^ k) i), inj' := ⋯ } s) ⋯
state_after: case a.mk
ι : Type u_1
α : Type u_2
β : Type u_3
f : Perm α
s : Finset α
hf : f.IsCycleOn ↑s
a b : α
⊢ a ∈ s ∧ b ∈ s ↔ ∃ a_1 < s.card, ∃ a_2 ∈ s, a_2 = a ∧ (⇑f)^[a_1] a_2 = b
tactic: simp only [mem_product, Equiv.Perm.coe_pow, mem_disjiUnion, mem_range, mem_map,
    Function.Embedding.coeFn_mk, Prod.mk.inj_iff, exists_prop]
state_before: case a.mk
ι : Type u_1
α : Type u_2
β : Type u_3
f : Perm α
s : Finset α
hf : f.IsCycleOn ↑s
a b : α
⊢ a ∈ s ∧ b ∈ s ↔ ∃ a_1 < s.card, ∃ a_2 ∈ s, a_2 = a ∧ (⇑f)^[a_1] a_2 = b
state_after: case a.mk.refine_1
ι : Type u_1
α : Type u_2
β : Type u_3
f : Perm α
s : Finset α
hf : f.IsCycleOn ↑s
a b : α
hx : a ∈ s ∧ b ∈ s
⊢ ∃ a_1 < s.card, ∃ a_2 ∈ s, a_2 = a ∧ (⇑f)^[a_1] a_2 = b

case a.mk.refine_2
ι : Type u_1
α : Type u_2
β : Type u_3
f : Perm α
s : Finset α
hf : f.IsCycleOn ↑s
a b : α
⊢ (∃ a_1 < s.card, ∃ a_2 ∈ s, a_2 = a ∧ (⇑f)^[a_1] a_2 = b) → a ∈ s ∧ b ∈ s
tactic: refine ⟨fun hx => ?_, ?_⟩
Theorem: Nat.binaryRec_of_ne_zero
File: Mathlib/Data/Nat/Bitwise.lean

Proof steps:
state_before: f✝ : Bool → Bool → Bool
C : ℕ → Sort u_1
z : C 0
f : (b : Bool) → (n : ℕ) → C n → C (bit b n)
n : ℕ
h : n ≠ 0
⊢ binaryRec z f n = ⋯ ▸ f n.bodd n.div2 (binaryRec z f n.div2)
state_after: f✝ : Bool → Bool → Bool
C : ℕ → Sort u_1
z : C 0
f : (b : Bool) → (n : ℕ) → C n → C (bit b n)
n : ℕ
h : n ≠ 0
⊢ binaryRec z f n = cast ⋯ (f n.bodd n.div2 (binaryRec z f n.div2))
tactic: rw [Eq.rec_eq_cast]
state_before: f✝ : Bool → Bool → Bool
C : ℕ → Sort u_1
z : C 0
f : (b : Bool) → (n : ℕ) → C n → C (bit b n)
n : ℕ
h : n ≠ 0
⊢ binaryRec z f n = cast ⋯ (f n.bodd n.div2 (binaryRec z f n.div2))
state_after: f✝ : Bool → Bool → Bool
C : ℕ → Sort u_1
z : C 0
f : (b : Bool) → (n : ℕ) → C n → C (bit b n)
n : ℕ
h : n ≠ 0
⊢ (if n0 : n = 0 then ⋯.mpr z
    else
      let n' := n.div2;
      let_fun _x := ⋯;
      ⋯.mpr (f n.bodd n' (binaryRec z f n'))) =
    cast ⋯ (f n.bodd n.div2 (binaryRec z f n.div2))
tactic: rw [binaryRec]
state_before: f✝ : Bool → Bool → Bool
C : ℕ → Sort u_1
z : C 0
f : (b : Bool) → (n : ℕ) → C n → C (bit b n)
n : ℕ
h : n ≠ 0
⊢ (if n0 : n = 0 then ⋯.mpr z
    else
      let n' := n.div2;
      let_fun _x := ⋯;
      ⋯.mpr (f n.bodd n' (binaryRec z f n'))) =
    cast ⋯ (f n.bodd n.div2 (binaryRec z f n.div2))
state_after: f✝ : Bool → Bool → Bool
C : ℕ → Sort u_1
z : C 0
f : (b : Bool) → (n : ℕ) → C n → C (bit b n)
n : ℕ
h : n ≠ 0
⊢ (if n0 : n = 0 then ⋯.mpr z else ⋯.mpr (f n.bodd n.div2 (binaryRec z f n.div2))) =
    cast ⋯ (f n.bodd n.div2 (binaryRec z f n.div2))
tactic: dsimp only
state_before: f✝ : Bool → Bool → Bool
C : ℕ → Sort u_1
z : C 0
f : (b : Bool) → (n : ℕ) → C n → C (bit b n)
n : ℕ
h : n ≠ 0
⊢ (if n0 : n = 0 then ⋯.mpr z else ⋯.mpr (f n.bodd n.div2 (binaryRec z f n.div2))) =
    cast ⋯ (f n.bodd n.div2 (binaryRec z f n.div2))
state_after: no goals
tactic: rw [dif_neg h, eq_mpr_eq_cast]
Theorem: MeasureTheory.setLIntegral_map
File: Mathlib/MeasureTheory/Integral/Lebesgue.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : MeasurableSpace β
f : β → ℝ≥0∞
g : α → β
s : Set β
hs : MeasurableSet s
hf : Measurable f
hg : Measurable g
⊢ ∫⁻ (y : β) in s, f y ∂Measure.map g μ = ∫⁻ (x : α) in g ⁻¹' s, f (g x) ∂μ
state_after: no goals
tactic: rw [restrict_map hg hs, lintegral_map hf hg]
Theorem: Polynomial.monic_normalize
File: Mathlib/Algebra/Polynomial/FieldDivision.lean

Proof steps:
state_before: R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n : ℕ
inst✝¹ : Field R
p q : R[X]
inst✝ : DecidableEq R
hp0 : p ≠ 0
⊢ (normalize p).Monic
state_after: R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n : ℕ
inst✝¹ : Field R
p q : R[X]
inst✝ : DecidableEq R
hp0 : IsUnit p.leadingCoeff
⊢ (normalize p).Monic
tactic: rw [Ne, ← leadingCoeff_eq_zero, ← Ne, ← isUnit_iff_ne_zero] at hp0
state_before: R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n : ℕ
inst✝¹ : Field R
p q : R[X]
inst✝ : DecidableEq R
hp0 : IsUnit p.leadingCoeff
⊢ (normalize p).Monic
state_after: R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n : ℕ
inst✝¹ : Field R
p q : R[X]
inst✝ : DecidableEq R
hp0 : IsUnit p.leadingCoeff
⊢ IsUnit p.leadingCoeff
tactic: rw [Monic, leadingCoeff_normalize, normalize_eq_one]
state_before: R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n : ℕ
inst✝¹ : Field R
p q : R[X]
inst✝ : DecidableEq R
hp0 : IsUnit p.leadingCoeff
⊢ IsUnit p.leadingCoeff
state_after: no goals
tactic: apply hp0
Theorem: Set.one_mem_div_iff
File: Mathlib/Data/Set/Pointwise/Basic.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝ : Group α
s t : Set α
a b : α
⊢ 1 ∈ s / t ↔ ¬Disjoint s t
state_after: no goals
tactic: simp [not_disjoint_iff_nonempty_inter, mem_div, div_eq_one, Set.Nonempty]
Theorem: MvPFunctor.liftP_iff
File: Mathlib/Data/PFunctor/Multivariate/Basic.lean

Proof steps:
state_before: n m : ℕ
P : MvPFunctor.{u} n
Q : Fin2 n → MvPFunctor.{u} m
α✝ β : TypeVec.{u} m
α : TypeVec.{u} n
p : ⦃i : Fin2 n⦄ → α i → Prop
x : ↑P α
⊢ LiftP p x ↔ ∃ a f, x = ⟨a, f⟩ ∧ ∀ (i : Fin2 n) (j : P.B a i), p (f i j)
state_after: case mp
n m : ℕ
P : MvPFunctor.{u} n
Q : Fin2 n → MvPFunctor.{u} m
α✝ β : TypeVec.{u} m
α : TypeVec.{u} n
p : ⦃i : Fin2 n⦄ → α i → Prop
x : ↑P α
⊢ LiftP p x → ∃ a f, x = ⟨a, f⟩ ∧ ∀ (i : Fin2 n) (j : P.B a i), p (f i j)

case mpr
n m : ℕ
P : MvPFunctor.{u} n
Q : Fin2 n → MvPFunctor.{u} m
α✝ β : TypeVec.{u} m
α : TypeVec.{u} n
p : ⦃i : Fin2 n⦄ → α i → Prop
x : ↑P α
⊢ (∃ a f, x = ⟨a, f⟩ ∧ ∀ (i : Fin2 n) (j : P.B a i), p (f i j)) → LiftP p x
tactic: constructor
state_before: case mpr
n m : ℕ
P : MvPFunctor.{u} n
Q : Fin2 n → MvPFunctor.{u} m
α✝ β : TypeVec.{u} m
α : TypeVec.{u} n
p : ⦃i : Fin2 n⦄ → α i → Prop
x : ↑P α
⊢ (∃ a f, x = ⟨a, f⟩ ∧ ∀ (i : Fin2 n) (j : P.B a i), p (f i j)) → LiftP p x
state_after: case mpr.intro.intro.intro
n m : ℕ
P : MvPFunctor.{u} n
Q : Fin2 n → MvPFunctor.{u} m
α✝ β : TypeVec.{u} m
α : TypeVec.{u} n
p : ⦃i : Fin2 n⦄ → α i → Prop
x : ↑P α
a : P.A
f : P.B a ⟹ α
xeq : x = ⟨a, f⟩
pf : ∀ (i : Fin2 n) (j : P.B a i), p (f i j)
⊢ LiftP p x
tactic: rintro ⟨a, f, xeq, pf⟩
state_before: case mpr.intro.intro.intro
n m : ℕ
P : MvPFunctor.{u} n
Q : Fin2 n → MvPFunctor.{u} m
α✝ β : TypeVec.{u} m
α : TypeVec.{u} n
p : ⦃i : Fin2 n⦄ → α i → Prop
x : ↑P α
a : P.A
f : P.B a ⟹ α
xeq : x = ⟨a, f⟩
pf : ∀ (i : Fin2 n) (j : P.B a i), p (f i j)
⊢ LiftP p x
state_after: case h
n m : ℕ
P : MvPFunctor.{u} n
Q : Fin2 n → MvPFunctor.{u} m
α✝ β : TypeVec.{u} m
α : TypeVec.{u} n
p : ⦃i : Fin2 n⦄ → α i → Prop
x : ↑P α
a : P.A
f : P.B a ⟹ α
xeq : x = ⟨a, f⟩
pf : ∀ (i : Fin2 n) (j : P.B a i), p (f i j)
⊢ (fun i => Subtype.val) <$$> ⟨a, fun i j => ⟨f i j, ⋯⟩⟩ = x
tactic: use ⟨a, fun i j => ⟨f i j, pf i j⟩⟩
state_before: case h
n m : ℕ
P : MvPFunctor.{u} n
Q : Fin2 n → MvPFunctor.{u} m
α✝ β : TypeVec.{u} m
α : TypeVec.{u} n
p : ⦃i : Fin2 n⦄ → α i → Prop
x : ↑P α
a : P.A
f : P.B a ⟹ α
xeq : x = ⟨a, f⟩
pf : ∀ (i : Fin2 n) (j : P.B a i), p (f i j)
⊢ (fun i => Subtype.val) <$$> ⟨a, fun i j => ⟨f i j, ⋯⟩⟩ = x
state_after: case h
n m : ℕ
P : MvPFunctor.{u} n
Q : Fin2 n → MvPFunctor.{u} m
α✝ β : TypeVec.{u} m
α : TypeVec.{u} n
p : ⦃i : Fin2 n⦄ → α i → Prop
x : ↑P α
a : P.A
f : P.B a ⟹ α
xeq : x = ⟨a, f⟩
pf : ∀ (i : Fin2 n) (j : P.B a i), p (f i j)
⊢ (fun i => Subtype.val) <$$> ⟨a, fun i j => ⟨f i j, ⋯⟩⟩ = ⟨a, f⟩
tactic: rw [xeq]
state_before: case h
n m : ℕ
P : MvPFunctor.{u} n
Q : Fin2 n → MvPFunctor.{u} m
α✝ β : TypeVec.{u} m
α : TypeVec.{u} n
p : ⦃i : Fin2 n⦄ → α i → Prop
x : ↑P α
a : P.A
f : P.B a ⟹ α
xeq : x = ⟨a, f⟩
pf : ∀ (i : Fin2 n) (j : P.B a i), p (f i j)
⊢ (fun i => Subtype.val) <$$> ⟨a, fun i j => ⟨f i j, ⋯⟩⟩ = ⟨a, f⟩
state_after: no goals
tactic: rfl
Theorem: exists_vector_succ
File: Mathlib/Data/Vector3.lean

Proof steps:
state_before: α : Type u_1
m n : ℕ
f : Vector3 α n.succ → Prop
x✝ : Exists f
v : Vector3 α n.succ
fv : f v
⊢ f (?m.23397 x✝ v fv :: ?m.23398 x✝ v fv)
state_after: α : Type u_1
m n : ℕ
f : Vector3 α n.succ → Prop
x✝ : Exists f
v : Vector3 α n.succ
fv : f v
⊢ f v
tactic: rw [cons_head_tail v]
state_before: α : Type u_1
m n : ℕ
f : Vector3 α n.succ → Prop
x✝ : Exists f
v : Vector3 α n.succ
fv : f v
⊢ f v
state_after: no goals
tactic: exact fv
Theorem: CategoryTheory.tensorIso_hom
File: Mathlib/CategoryTheory/Monoidal/Category.lean

Proof steps:
state_before: C✝ : Type u
𝒞 : Category.{v, u} C✝
inst✝² : MonoidalCategory C✝
C : Type u
X Y X' Y' : C
inst✝¹ : Category.{v, u} C
inst✝ : MonoidalCategory C
f : X ≅ Y
g : X' ≅ Y'
⊢ (f.hom ⊗ g.hom) ≫ (f.inv ⊗ g.inv) = 𝟙 (X ⊗ X')
state_after: no goals
tactic: rw [← tensor_comp, Iso.hom_inv_id, Iso.hom_inv_id, ← tensor_id]
state_before: C✝ : Type u
𝒞 : Category.{v, u} C✝
inst✝² : MonoidalCategory C✝
C : Type u
X Y X' Y' : C
inst✝¹ : Category.{v, u} C
inst✝ : MonoidalCategory C
f : X ≅ Y
g : X' ≅ Y'
⊢ (f.inv ⊗ g.inv) ≫ (f.hom ⊗ g.hom) = 𝟙 (Y ⊗ Y')
state_after: no goals
tactic: rw [← tensor_comp, Iso.inv_hom_id, Iso.inv_hom_id, ← tensor_id]
Theorem: one_div_mul_eq_div
File: Mathlib/Algebra/Group/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
G : Type u_3
M : Type u_4
inst✝ : DivisionCommMonoid α
a b c d : α
⊢ 1 / a * b = b / a
state_after: no goals
tactic: simp
Theorem: Commute.div_mul_div_comm
File: Mathlib/Algebra/Group/Commute/Basic.lean

Proof steps:
state_before: G : Type u_1
inst✝ : DivisionMonoid G
a b c d : G
hbd : Commute b d
hbc : Commute b⁻¹ c
⊢ a / b * (c / d) = a * c / (b * d)
state_after: no goals
tactic: simp_rw [div_eq_mul_inv, mul_inv_rev, hbd.inv_inv.symm.eq, hbc.mul_mul_mul_comm]
Theorem: Polynomial.reverse_natDegree
File: Mathlib/Algebra/Polynomial/Reverse.lean

Proof steps:
state_before: R : Type u_1
inst✝ : Semiring R
f✝ f : R[X]
⊢ f.reverse.natDegree = f.natDegree - f.natTrailingDegree
state_after: no goals
tactic: rw [f.natDegree_eq_reverse_natDegree_add_natTrailingDegree, add_tsub_cancel_right]
Theorem: Submodule.apply_mem_span_image_of_mem_span
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✝⁸ : Semiring R
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
x✝ : M
p p' : Submodule R M
inst✝⁵ : Semiring R₂
σ₁₂ : R →+* R₂
inst✝⁴ : AddCommMonoid M₂
inst✝³ : Module R₂ M₂
F : Type u_8
inst✝² : FunLike F M M₂
inst✝¹ : SemilinearMapClass F σ₁₂ M M₂
s✝ t : Set M
inst✝ : RingHomSurjective σ₁₂
f : F
x : M
s : Set M
h : x ∈ span R s
⊢ f x ∈ span R₂ (⇑f '' s)
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✝⁸ : Semiring R
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
x✝ : M
p p' : Submodule R M
inst✝⁵ : Semiring R₂
σ₁₂ : R →+* R₂
inst✝⁴ : AddCommMonoid M₂
inst✝³ : Module R₂ M₂
F : Type u_8
inst✝² : FunLike F M M₂
inst✝¹ : SemilinearMapClass F σ₁₂ M M₂
s✝ t : Set M
inst✝ : RingHomSurjective σ₁₂
f : F
x : M
s : Set M
h : x ∈ span R s
⊢ f x ∈ map f (span R s)
tactic: rw [Submodule.span_image]
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✝⁸ : Semiring R
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
x✝ : M
p p' : Submodule R M
inst✝⁵ : Semiring R₂
σ₁₂ : R →+* R₂
inst✝⁴ : AddCommMonoid M₂
inst✝³ : Module R₂ M₂
F : Type u_8
inst✝² : FunLike F M M₂
inst✝¹ : SemilinearMapClass F σ₁₂ M M₂
s✝ t : Set M
inst✝ : RingHomSurjective σ₁₂
f : F
x : M
s : Set M
h : x ∈ span R s
⊢ f x ∈ map f (span R s)
state_after: no goals
tactic: exact Submodule.mem_map_of_mem h