ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: OptionT.run_map
File: Mathlib/Control/Lawful.lean

Proof steps:
state_before: α β : Type u
m : Type u → Type v
x : OptionT m α
inst✝¹ : Monad m
f : α → β
inst✝ : LawfulMonad m
⊢ (f <$> x).run = Option.map f <$> x.run
state_after: α β : Type u
m : Type u → Type v
x : OptionT m α
inst✝¹ : Monad m
f : α → β
inst✝ : LawfulMonad m
⊢ (f <$> x).run = do
    let a ← x.run
    pure (Option.map f a)
tactic: rw [← bind_pure_comp _ x.run]
state_before: α β : Type u
m : Type u → Type v
x : OptionT m α
inst✝¹ : Monad m
f : α → β
inst✝ : LawfulMonad m
⊢ (f <$> x).run = do
    let a ← x.run
    pure (Option.map f a)
state_after: α β : Type u
m : Type u → Type v
x : OptionT m α
inst✝¹ : Monad m
f : α → β
inst✝ : LawfulMonad m
⊢ (do
      let x ← x.run
      match x with
        | some a => (pure (f a)).run
        | none => pure none) =
    do
    let a ← x.run
    pure (Option.map f a)
tactic: change x.run >>= (fun
                     | some a => OptionT.run (pure (f a))
                     | none   => pure none) = _
state_before: α β : Type u
m : Type u → Type v
x : OptionT m α
inst✝¹ : Monad m
f : α → β
inst✝ : LawfulMonad m
⊢ (do
      let x ← x.run
      match x with
        | some a => (pure (f a)).run
        | none => pure none) =
    do
    let a ← x.run
    pure (Option.map f a)
state_after: case h
α β : Type u
m : Type u → Type v
x : OptionT m α
inst✝¹ : Monad m
f : α → β
inst✝ : LawfulMonad m
⊢ ∀ (a : Option α),
    (match a with
      | some a => (pure (f a)).run
      | none => pure none) =
      pure (Option.map f a)
tactic: apply bind_congr
state_before: case h
α β : Type u
m : Type u → Type v
x : OptionT m α
inst✝¹ : Monad m
f : α → β
inst✝ : LawfulMonad m
⊢ ∀ (a : Option α),
    (match a with
      | some a => (pure (f a)).run
      | none => pure none) =
      pure (Option.map f a)
state_after: case h
α β : Type u
m : Type u → Type v
x : OptionT m α
inst✝¹ : Monad m
f : α → β
inst✝ : LawfulMonad m
a : Option α
⊢ (match a with
    | some a => (pure (f a)).run
    | none => pure none) =
    pure (Option.map f a)
tactic: intro a
state_before: case h
α β : Type u
m : Type u → Type v
x : OptionT m α
inst✝¹ : Monad m
f : α → β
inst✝ : LawfulMonad m
a : Option α
⊢ (match a with
    | some a => (pure (f a)).run
    | none => pure none) =
    pure (Option.map f a)
state_after: no goals
tactic: cases a <;> simp [Option.map, Option.bind]
Theorem: Nat.mod_two_add_add_odd_mod_two
File: Mathlib/Algebra/Ring/Parity.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
R : Type u_4
m✝ n✝ m n : ℕ
hn : Odd n
hm : Even m
⊢ m % 2 + (m + n) % 2 = 1
state_after: no goals
tactic: rw [even_iff.1 hm, odd_iff.1 (hm.add_odd hn)]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
R : Type u_4
m✝ n✝ m n : ℕ
hn : Odd n
hm : Odd m
⊢ m % 2 + (m + n) % 2 = 1
state_after: no goals
tactic: rw [odd_iff.1 hm, even_iff.1 (hm.add_odd hn)]
Theorem: List.nodup_iff_injective_get
File: Mathlib/Data/List/Nodup.lean

Proof steps:
state_before: α : Type u
β : Type v
l✝ l₁ l₂ : List α
r : α → α → Prop
a b : α
l : List α
⊢ l.Nodup ↔ Injective l.get
state_after: α : Type u
β : Type v
l✝ l₁ l₂ : List α
r : α → α → Prop
a b : α
l : List α
⊢ (Injective fun i => l[↑i]) ↔ Injective l.get
tactic: rw [nodup_iff_injective_getElem]
state_before: α : Type u
β : Type v
l✝ l₁ l₂ : List α
r : α → α → Prop
a b : α
l : List α
⊢ (Injective fun i => l[↑i]) ↔ Injective l.get
state_after: α : Type u
β : Type v
l✝ l₁ l₂ : List α
r : α → α → Prop
a b : α
l : List α
⊢ (Injective fun i => l[↑i]) ↔ Injective fun i => l.get i
tactic: change _ ↔ Injective (fun i => l.get i)
state_before: α : Type u
β : Type v
l✝ l₁ l₂ : List α
r : α → α → Prop
a b : α
l : List α
⊢ (Injective fun i => l[↑i]) ↔ Injective fun i => l.get i
state_after: no goals
tactic: simp
Theorem: Pell.Solution₁.d_pos_of_one_lt_x
File: Mathlib/NumberTheory/Pell.lean

Proof steps:
state_before: d : ℤ
a : Solution₁ d
ha : 1 < a.x
⊢ 0 < d
state_after: d : ℤ
a : Solution₁ d
ha : 1 < a.x
⊢ 0 < d * a.y ^ 2
tactic: refine pos_of_mul_pos_left ?_ (sq_nonneg a.y)
state_before: d : ℤ
a : Solution₁ d
ha : 1 < a.x
⊢ 0 < d * a.y ^ 2
state_after: d : ℤ
a : Solution₁ d
ha : 1 < a.x
⊢ 1 < a.x ^ 2
tactic: rw [a.prop_y, sub_pos]
state_before: d : ℤ
a : Solution₁ d
ha : 1 < a.x
⊢ 1 < a.x ^ 2
state_after: no goals
tactic: exact one_lt_pow ha two_ne_zero
Theorem: MulAction.stabilizer_op_subgroup
File: Mathlib/Algebra/Pointwise/Stabilizer.lean

Proof steps:
state_before: G : Type u_1
H : Type u_2
α : Type u_3
inst✝² : Group G
inst✝¹ : Group H
inst✝ : MulAction G α
a : G
s : Subgroup G
⊢ stabilizer Gᵐᵒᵖ ↑s = s.op
state_after: G : Type u_1
H : Type u_2
α : Type u_3
inst✝² : Group G
inst✝¹ : Group H
inst✝ : MulAction G α
a : G
s : Subgroup G
⊢ ∀ (x : Gᵐᵒᵖ), (∀ (b : G), x • b ∈ ↑s ↔ b ∈ ↑s) ↔ x ∈ s.op
tactic: simp_rw [SetLike.ext_iff, mem_stabilizer_set]
state_before: G : Type u_1
H : Type u_2
α : Type u_3
inst✝² : Group G
inst✝¹ : Group H
inst✝ : MulAction G α
a : G
s : Subgroup G
⊢ ∀ (x : Gᵐᵒᵖ), (∀ (b : G), x • b ∈ ↑s ↔ b ∈ ↑s) ↔ x ∈ s.op
state_after: G : Type u_1
H : Type u_2
α : Type u_3
inst✝² : Group G
inst✝¹ : Group H
inst✝ : MulAction G α
a : G
s : Subgroup G
⊢ ∀ (x : Gᵐᵒᵖ), (∀ (b : G), b * unop x ∈ s ↔ b ∈ s) ↔ unop x ∈ s
tactic: simp? says simp only [smul_eq_mul_unop, SetLike.mem_coe, Subgroup.mem_op]
state_before: G : Type u_1
H : Type u_2
α : Type u_3
inst✝² : Group G
inst✝¹ : Group H
inst✝ : MulAction G α
a : G
s : Subgroup G
⊢ ∀ (x : Gᵐᵒᵖ), (∀ (b : G), b * unop x ∈ s ↔ b ∈ s) ↔ unop x ∈ s
state_after: G : Type u_1
H : Type u_2
α : Type u_3
inst✝² : Group G
inst✝¹ : Group H
inst✝ : MulAction G α
a✝ : G
s : Subgroup G
a : Gᵐᵒᵖ
h : ∀ (b : G), b * unop a ∈ s ↔ b ∈ s
⊢ unop a ∈ s
tactic: refine fun a ↦ ⟨fun h ↦ ?_, fun ha b ↦ s.mul_mem_cancel_right ha⟩
state_before: G : Type u_1
H : Type u_2
α : Type u_3
inst✝² : Group G
inst✝¹ : Group H
inst✝ : MulAction G α
a✝ : G
s : Subgroup G
a : Gᵐᵒᵖ
h : ∀ (b : G), b * unop a ∈ s ↔ b ∈ s
⊢ unop a ∈ s
state_after: no goals
tactic: simpa only [op_smul_eq_mul, SetLike.mem_coe, one_mul] using (h 1).2 s.one_mem
Theorem: iSup_extend_bot
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
inst✝ : CompleteLattice α
f✝ g s t : ι → α
a b : α
e : ι → β
he : Injective e
f : ι → α
⊢ ⨆ j, extend e f ⊥ j = ⨆ i, f i
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
inst✝ : CompleteLattice α
f✝ g s t : ι → α
a b : α
e : ι → β
he : Injective e
f : ι → α
⊢ (⨆ i, ⨆ (_ : ∃ i_1, e i_1 = i), extend e f ⊥ i) ⊔ ⨆ i, ⨆ (_ : ¬∃ i_1, e i_1 = i), extend e f ⊥ i = ⨆ i, f i
tactic: rw [iSup_split _ fun j => ∃ i, e i = j]
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
inst✝ : CompleteLattice α
f✝ g s t : ι → α
a b : α
e : ι → β
he : Injective e
f : ι → α
⊢ (⨆ i, ⨆ (_ : ∃ i_1, e i_1 = i), extend e f ⊥ i) ⊔ ⨆ i, ⨆ (_ : ¬∃ i_1, e i_1 = i), extend e f ⊥ i = ⨆ i, f i
state_after: no goals
tactic: simp (config := { contextual := true }) [he.extend_apply, extend_apply', @iSup_comm _ β ι]
Theorem: Algebra.FiniteType.iff_quotient_freeAlgebra'
File: Mathlib/RingTheory/FiniteType.lean

Proof steps:
state_before: R : Type uR
S : Type uS
A : Type uA
B : Type uB
M : Type uM
N : Type uN
inst✝¹⁰ : CommSemiring R
inst✝⁹ : CommSemiring S
inst✝⁸ : Semiring A
inst✝⁷ : Semiring B
inst✝⁶ : Algebra R S
inst✝⁵ : Algebra R A
inst✝⁴ : Algebra R B
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid N
inst✝ : Module R N
⊢ FiniteType R A ↔ ∃ ι x f, Surjective ⇑f
state_after: case mp
R : Type uR
S : Type uS
A : Type uA
B : Type uB
M : Type uM
N : Type uN
inst✝¹⁰ : CommSemiring R
inst✝⁹ : CommSemiring S
inst✝⁸ : Semiring A
inst✝⁷ : Semiring B
inst✝⁶ : Algebra R S
inst✝⁵ : Algebra R A
inst✝⁴ : Algebra R B
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid N
inst✝ : Module R N
⊢ FiniteType R A → ∃ ι x f, Surjective ⇑f

case mpr
R : Type uR
S : Type uS
A : Type uA
B : Type uB
M : Type uM
N : Type uN
inst✝¹⁰ : CommSemiring R
inst✝⁹ : CommSemiring S
inst✝⁸ : Semiring A
inst✝⁷ : Semiring B
inst✝⁶ : Algebra R S
inst✝⁵ : Algebra R A
inst✝⁴ : Algebra R B
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid N
inst✝ : Module R N
⊢ (∃ ι x f, Surjective ⇑f) → FiniteType R A
tactic: constructor
Theorem: LipschitzWith.max_const
File: Mathlib/Topology/MetricSpace/Lipschitz.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝ : PseudoEMetricSpace α
f g : α → ℝ
Kf Kg : ℝ≥0
hf : LipschitzWith Kf f
a : ℝ
⊢ LipschitzWith Kf fun x => max (f x) a
state_after: no goals
tactic: simpa only [max_eq_left (zero_le Kf)] using hf.max (LipschitzWith.const a)
Theorem: ZFSet.mem_sInter
File: Mathlib/SetTheory/ZFC/Basic.lean

Proof steps:
state_before: x y : ZFSet
h : x.Nonempty
⊢ y ∈ ⋂₀ x ↔ ∀ z ∈ x, y ∈ z
state_after: x y : ZFSet
h : x.Nonempty
⊢ y ∈ ZFSet.sep (fun y => ∀ z ∈ x, y ∈ z) (Set.Nonempty.some h) ↔ ∀ z ∈ x, y ∈ z
tactic: rw [sInter, dif_pos h]
state_before: x y : ZFSet
h : x.Nonempty
⊢ y ∈ ZFSet.sep (fun y => ∀ z ∈ x, y ∈ z) (Set.Nonempty.some h) ↔ ∀ z ∈ x, y ∈ z
state_after: x y : ZFSet
h : x.Nonempty
⊢ (∀ z ∈ x, y ∈ z) → y ∈ Set.Nonempty.some h
tactic: simp only [mem_toSet, mem_sep, and_iff_right_iff_imp]
state_before: x y : ZFSet
h : x.Nonempty
⊢ (∀ z ∈ x, y ∈ z) → y ∈ Set.Nonempty.some h
state_after: no goals
tactic: exact fun H => H _ h.some_mem
Theorem: ContinuousMap.tendsto_iff_tendstoLocallyUniformly
File: Mathlib/Topology/UniformSpace/CompactConvergence.lean

Proof steps:
state_before: α : Type u₁
β : Type u₂
inst✝² : TopologicalSpace α
inst✝¹ : UniformSpace β
K : Set α
V : Set (β × β)
f : C(α, β)
ι : Type u₃
p : Filter ι
F : ι → C(α, β)
inst✝ : WeaklyLocallyCompactSpace α
⊢ Tendsto F p (𝓝 f) ↔ TendstoLocallyUniformly (fun i a => (F i) a) (⇑f) p
state_after: α : Type u₁
β : Type u₂
inst✝² : TopologicalSpace α
inst✝¹ : UniformSpace β
K : Set α
V✝ : Set (β × β)
f : C(α, β)
ι : Type u₃
p : Filter ι
F : ι → C(α, β)
inst✝ : WeaklyLocallyCompactSpace α
h : Tendsto F p (𝓝 f)
V : Set (β × β)
hV : V ∈ 𝓤 β
x : α
⊢ ∃ t ∈ 𝓝 x, ∀ᶠ (n : ι) in p, ∀ y ∈ t, (f y, (fun i a => (F i) a) n y) ∈ V
tactic: refine ⟨fun h V hV x ↦ ?_, tendsto_of_tendstoLocallyUniformly⟩
state_before: α : Type u₁
β : Type u₂
inst✝² : TopologicalSpace α
inst✝¹ : UniformSpace β
K : Set α
V✝ : Set (β × β)
f : C(α, β)
ι : Type u₃
p : Filter ι
F : ι → C(α, β)
inst✝ : WeaklyLocallyCompactSpace α
h : Tendsto F p (𝓝 f)
V : Set (β × β)
hV : V ∈ 𝓤 β
x : α
⊢ ∃ t ∈ 𝓝 x, ∀ᶠ (n : ι) in p, ∀ y ∈ t, (f y, (fun i a => (F i) a) n y) ∈ V
state_after: α : Type u₁
β : Type u₂
inst✝² : TopologicalSpace α
inst✝¹ : UniformSpace β
K : Set α
V✝ : Set (β × β)
f : C(α, β)
ι : Type u₃
p : Filter ι
F : ι → C(α, β)
inst✝ : WeaklyLocallyCompactSpace α
h : ∀ (K : Set α), IsCompact K → TendstoUniformlyOn (fun i a => (F i) a) (⇑f) p K
V : Set (β × β)
hV : V ∈ 𝓤 β
x : α
⊢ ∃ t ∈ 𝓝 x, ∀ᶠ (n : ι) in p, ∀ y ∈ t, (f y, (fun i a => (F i) a) n y) ∈ V
tactic: rw [tendsto_iff_forall_compact_tendstoUniformlyOn] at h
state_before: α : Type u₁
β : Type u₂
inst✝² : TopologicalSpace α
inst✝¹ : UniformSpace β
K : Set α
V✝ : Set (β × β)
f : C(α, β)
ι : Type u₃
p : Filter ι
F : ι → C(α, β)
inst✝ : WeaklyLocallyCompactSpace α
h : ∀ (K : Set α), IsCompact K → TendstoUniformlyOn (fun i a => (F i) a) (⇑f) p K
V : Set (β × β)
hV : V ∈ 𝓤 β
x : α
⊢ ∃ t ∈ 𝓝 x, ∀ᶠ (n : ι) in p, ∀ y ∈ t, (f y, (fun i a => (F i) a) n y) ∈ V
state_after: case intro.intro
α : Type u₁
β : Type u₂
inst✝² : TopologicalSpace α
inst✝¹ : UniformSpace β
K : Set α
V✝ : Set (β × β)
f : C(α, β)
ι : Type u₃
p : Filter ι
F : ι → C(α, β)
inst✝ : WeaklyLocallyCompactSpace α
h : ∀ (K : Set α), IsCompact K → TendstoUniformlyOn (fun i a => (F i) a) (⇑f) p K
V : Set (β × β)
hV : V ∈ 𝓤 β
x : α
n : Set α
hn₁ : IsCompact n
hn₂ : n ∈ 𝓝 x
⊢ ∃ t ∈ 𝓝 x, ∀ᶠ (n : ι) in p, ∀ y ∈ t, (f y, (fun i a => (F i) a) n y) ∈ V
tactic: obtain ⟨n, hn₁, hn₂⟩ := exists_compact_mem_nhds x
state_before: case intro.intro
α : Type u₁
β : Type u₂
inst✝² : TopologicalSpace α
inst✝¹ : UniformSpace β
K : Set α
V✝ : Set (β × β)
f : C(α, β)
ι : Type u₃
p : Filter ι
F : ι → C(α, β)
inst✝ : WeaklyLocallyCompactSpace α
h : ∀ (K : Set α), IsCompact K → TendstoUniformlyOn (fun i a => (F i) a) (⇑f) p K
V : Set (β × β)
hV : V ∈ 𝓤 β
x : α
n : Set α
hn₁ : IsCompact n
hn₂ : n ∈ 𝓝 x
⊢ ∃ t ∈ 𝓝 x, ∀ᶠ (n : ι) in p, ∀ y ∈ t, (f y, (fun i a => (F i) a) n y) ∈ V
state_after: no goals
tactic: exact ⟨n, hn₂, h n hn₁ V hV⟩
Theorem: Matroid.restrictSubtype_base_iff
File: Mathlib/Data/Matroid/Map.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
f : α → β
E✝ I✝ s : Set α
M✝ : Matroid α
N : Matroid β
E X I : Set α
M : Matroid α
B : Set ↑X
⊢ (M.restrictSubtype X).Base B ↔ M.Basis' (↑B) X
state_after: α : Type u_1
β : Type u_2
f : α → β
E✝ I✝ s : Set α
M✝ : Matroid α
N : Matroid β
E X I : Set α
M : Matroid α
B : Set ↑X
⊢ (M ↾ X).Basis ↑B ↑(X ↓∩ (M ↾ X).E) ∧ InjOn Subtype.val B ∧ B ⊆ X ↓∩ (M ↾ X).E ↔ M.Basis' (↑B) X
tactic: rw [restrictSubtype, comap_base_iff]
state_before: α : Type u_1
β : Type u_2
f : α → β
E✝ I✝ s : Set α
M✝ : Matroid α
N : Matroid β
E X I : Set α
M : Matroid α
B : Set ↑X
⊢ (M ↾ X).Basis ↑B ↑(X ↓∩ (M ↾ X).E) ∧ InjOn Subtype.val B ∧ B ⊆ X ↓∩ (M ↾ X).E ↔ M.Basis' (↑B) X
state_after: no goals
tactic: simp [Subtype.val_injective.injOn, Subset.rfl, basis_restrict_iff', basis'_iff_basis_inter_ground]
Theorem: SecondCountableTopology.of_separableSpace_orderTopology
File: Mathlib/Topology/Order/Basic.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
inst✝⁴ : TopologicalSpace α
inst✝³ : LinearOrder α
inst✝² : OrderTopology α
inst✝¹ : DenselyOrdered α
inst✝ : SeparableSpace α
⊢ SecondCountableTopology α
state_after: case intro.intro
α : Type u
β : Type v
γ : Type w
inst✝⁴ : TopologicalSpace α
inst✝³ : LinearOrder α
inst✝² : OrderTopology α
inst✝¹ : DenselyOrdered α
inst✝ : SeparableSpace α
s : Set α
hc : s.Countable
hd : Dense s
⊢ SecondCountableTopology α
tactic: rcases exists_countable_dense α with ⟨s, hc, hd⟩
state_before: case intro.intro
α : Type u
β : Type v
γ : Type w
inst✝⁴ : TopologicalSpace α
inst✝³ : LinearOrder α
inst✝² : OrderTopology α
inst✝¹ : DenselyOrdered α
inst✝ : SeparableSpace α
s : Set α
hc : s.Countable
hd : Dense s
⊢ SecondCountableTopology α
state_after: case intro.intro
α : Type u
β : Type v
γ : Type w
inst✝⁴ : TopologicalSpace α
inst✝³ : LinearOrder α
inst✝² : OrderTopology α
inst✝¹ : DenselyOrdered α
inst✝ : SeparableSpace α
s : Set α
hc : s.Countable
hd : Dense s
⊢ (Ioi '' s ∪ Iio '' s).Countable
tactic: refine ⟨⟨_, ?_, hd.topology_eq_generateFrom⟩⟩
state_before: case intro.intro
α : Type u
β : Type v
γ : Type w
inst✝⁴ : TopologicalSpace α
inst✝³ : LinearOrder α
inst✝² : OrderTopology α
inst✝¹ : DenselyOrdered α
inst✝ : SeparableSpace α
s : Set α
hc : s.Countable
hd : Dense s
⊢ (Ioi '' s ∪ Iio '' s).Countable
state_after: no goals
tactic: exact (hc.image _).union (hc.image _)
Theorem: List.Palindrome.append_reverse
File: Mathlib/Data/List/Palindrome.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
l✝ l : List α
⊢ (l ++ l.reverse).Palindrome
state_after: case a
α : Type u_1
β : Type u_2
l✝ l : List α
⊢ (l ++ l.reverse).reverse = l ++ l.reverse
tactic: apply of_reverse_eq
state_before: case a
α : Type u_1
β : Type u_2
l✝ l : List α
⊢ (l ++ l.reverse).reverse = l ++ l.reverse
state_after: no goals
tactic: rw [reverse_append, reverse_reverse]
Theorem: ProbabilityTheory.cond_pos_of_inter_ne_zero
File: Mathlib/Probability/ConditionalProbability.lean

Proof steps:
state_before: Ω : Type u_1
Ω' : Type u_2
α : Type u_3
m : MeasurableSpace Ω
m' : MeasurableSpace Ω'
μ : Measure Ω
s t : Set Ω
inst✝ : IsFiniteMeasure μ
hms : MeasurableSet s
hci : μ (s ∩ t) ≠ 0
⊢ 0 < μ[|s] t
state_after: Ω : Type u_1
Ω' : Type u_2
α : Type u_3
m : MeasurableSpace Ω
m' : MeasurableSpace Ω'
μ : Measure Ω
s t : Set Ω
inst✝ : IsFiniteMeasure μ
hms : MeasurableSet s
hci : μ (s ∩ t) ≠ 0
⊢ 0 < (μ s)⁻¹ * μ (s ∩ t)
tactic: rw [cond_apply _ hms]
state_before: Ω : Type u_1
Ω' : Type u_2
α : Type u_3
m : MeasurableSpace Ω
m' : MeasurableSpace Ω'
μ : Measure Ω
s t : Set Ω
inst✝ : IsFiniteMeasure μ
hms : MeasurableSet s
hci : μ (s ∩ t) ≠ 0
⊢ 0 < (μ s)⁻¹ * μ (s ∩ t)
state_after: Ω : Type u_1
Ω' : Type u_2
α : Type u_3
m : MeasurableSpace Ω
m' : MeasurableSpace Ω'
μ : Measure Ω
s t : Set Ω
inst✝ : IsFiniteMeasure μ
hms : MeasurableSet s
hci : μ (s ∩ t) ≠ 0
⊢ (μ s)⁻¹ ≠ 0
tactic: refine ENNReal.mul_pos ?_ hci
state_before: Ω : Type u_1
Ω' : Type u_2
α : Type u_3
m : MeasurableSpace Ω
m' : MeasurableSpace Ω'
μ : Measure Ω
s t : Set Ω
inst✝ : IsFiniteMeasure μ
hms : MeasurableSet s
hci : μ (s ∩ t) ≠ 0
⊢ (μ s)⁻¹ ≠ 0
state_after: no goals
tactic: exact ENNReal.inv_ne_zero.mpr (measure_ne_top _ _)
Theorem: GroupAlgebra.mul_average_right
File: Mathlib/RepresentationTheory/Invariants.lean

Proof steps:
state_before: k : Type u_1
G : Type u_2
inst✝³ : CommSemiring k
inst✝² : Group G
inst✝¹ : Fintype G
inst✝ : Invertible ↑(Fintype.card G)
g : G
⊢ average k G * Finsupp.single g 1 = average k G
state_after: k : Type u_1
G : Type u_2
inst✝³ : CommSemiring k
inst✝² : Group G
inst✝¹ : Fintype G
inst✝ : Invertible ↑(Fintype.card G)
g : G
⊢ ⅟↑(Fintype.card G) • ∑ x : G, single (x * g) 1 = ⅟↑(Fintype.card G) • ∑ x : G, single x 1
tactic: simp only [mul_one, Finset.sum_mul, Algebra.smul_mul_assoc, average, MonoidAlgebra.of_apply,
    Finset.sum_congr, MonoidAlgebra.single_mul_single]
state_before: k : Type u_1
G : Type u_2
inst✝³ : CommSemiring k
inst✝² : Group G
inst✝¹ : Fintype G
inst✝ : Invertible ↑(Fintype.card G)
g : G
⊢ ⅟↑(Fintype.card G) • ∑ x : G, single (x * g) 1 = ⅟↑(Fintype.card G) • ∑ x : G, single x 1
state_after: k : Type u_1
G : Type u_2
inst✝³ : CommSemiring k
inst✝² : Group G
inst✝¹ : Fintype G
inst✝ : Invertible ↑(Fintype.card G)
g : G
f : G → MonoidAlgebra k G := fun x => Finsupp.single x 1
⊢ ⅟↑(Fintype.card G) • ∑ x : G, single (x * g) 1 = ⅟↑(Fintype.card G) • Finset.univ.sum f
tactic: set f : G → MonoidAlgebra k G := fun x => Finsupp.single x 1
state_before: k : Type u_1
G : Type u_2
inst✝³ : CommSemiring k
inst✝² : Group G
inst✝¹ : Fintype G
inst✝ : Invertible ↑(Fintype.card G)
g : G
f : G → MonoidAlgebra k G := fun x => Finsupp.single x 1
⊢ ⅟↑(Fintype.card G) • ∑ x : G, single (x * g) 1 = ⅟↑(Fintype.card G) • Finset.univ.sum f
state_after: k : Type u_1
G : Type u_2
inst✝³ : CommSemiring k
inst✝² : Group G
inst✝¹ : Fintype G
inst✝ : Invertible ↑(Fintype.card G)
g : G
f : G → MonoidAlgebra k G := fun x => Finsupp.single x 1
⊢ ⅟↑(Fintype.card G) • ∑ x : G, f (x * g) = ⅟↑(Fintype.card G) • ∑ x : G, f x
tactic: show ⅟ (Fintype.card G : k) • ∑ x : G, f (x * g) = ⅟ (Fintype.card G : k) • ∑ x : G, f x
state_before: k : Type u_1
G : Type u_2
inst✝³ : CommSemiring k
inst✝² : Group G
inst✝¹ : Fintype G
inst✝ : Invertible ↑(Fintype.card G)
g : G
f : G → MonoidAlgebra k G := fun x => Finsupp.single x 1
⊢ ⅟↑(Fintype.card G) • ∑ x : G, f (x * g) = ⅟↑(Fintype.card G) • ∑ x : G, f x
state_after: no goals
tactic: rw [Function.Bijective.sum_comp (Group.mulRight_bijective g) _]
Theorem: Set.pi_univ_Ioc_update_left
File: Mathlib/Order/Interval/Set/Pi.lean

Proof steps:
state_before: ι : Type u_1
α : ι → Type u_2
inst✝¹ : (i : ι) → Preorder (α i)
x✝ y✝ : (i : ι) → α i
inst✝ : DecidableEq ι
x y : (i : ι) → α i
i₀ : ι
m : α i₀
hm : x i₀ ≤ m
⊢ (univ.pi fun i => Ioc (update x i₀ m i) (y i)) = {z | m < z i₀} ∩ univ.pi fun i => Ioc (x i) (y i)
state_after: ι : Type u_1
α : ι → Type u_2
inst✝¹ : (i : ι) → Preorder (α i)
x✝ y✝ : (i : ι) → α i
inst✝ : DecidableEq ι
x y : (i : ι) → α i
i₀ : ι
m : α i₀
hm : x i₀ ≤ m
this : Ioc m (y i₀) = Ioi m ∩ Ioc (x i₀) (y i₀)
⊢ (univ.pi fun i => Ioc (update x i₀ m i) (y i)) = {z | m < z i₀} ∩ univ.pi fun i => Ioc (x i) (y i)
tactic: have : Ioc m (y i₀) = Ioi m ∩ Ioc (x i₀) (y i₀) := by
    rw [← Ioi_inter_Iic, ← Ioi_inter_Iic, ← inter_assoc,
      inter_eq_self_of_subset_left (Ioi_subset_Ioi hm)]
state_before: ι : Type u_1
α : ι → Type u_2
inst✝¹ : (i : ι) → Preorder (α i)
x✝ y✝ : (i : ι) → α i
inst✝ : DecidableEq ι
x y : (i : ι) → α i
i₀ : ι
m : α i₀
hm : x i₀ ≤ m
this : Ioc m (y i₀) = Ioi m ∩ Ioc (x i₀) (y i₀)
⊢ (univ.pi fun i => Ioc (update x i₀ m i) (y i)) = {z | m < z i₀} ∩ univ.pi fun i => Ioc (x i) (y i)
state_after: ι : Type u_1
α : ι → Type u_2
inst✝¹ : (i : ι) → Preorder (α i)
x✝ y✝ : (i : ι) → α i
inst✝ : DecidableEq ι
x y : (i : ι) → α i
i₀ : ι
m : α i₀
hm : x i₀ ≤ m
this : Ioc m (y i₀) = Ioi m ∩ Ioc (x i₀) (y i₀)
⊢ ({x_1 | x_1 i₀ ∈ Ioi m ∩ Ioc (x i₀) (y i₀)} ∩ {i₀}ᶜ.pi fun j => Ioc (x j) (y j)) =
    {z | m < z i₀} ∩ {x_1 | x_1 i₀ ∈ Ioc (x i₀) (y i₀)} ∩ {i₀}ᶜ.pi fun j => Ioc (x j) (y j)
tactic: simp_rw [univ_pi_update i₀ _ _ fun i z ↦ Ioc z (y i), ← pi_inter_compl ({i₀} : Set ι),
    singleton_pi', ← inter_assoc, this]
state_before: ι : Type u_1
α : ι → Type u_2
inst✝¹ : (i : ι) → Preorder (α i)
x✝ y✝ : (i : ι) → α i
inst✝ : DecidableEq ι
x y : (i : ι) → α i
i₀ : ι
m : α i₀
hm : x i₀ ≤ m
this : Ioc m (y i₀) = Ioi m ∩ Ioc (x i₀) (y i₀)
⊢ ({x_1 | x_1 i₀ ∈ Ioi m ∩ Ioc (x i₀) (y i₀)} ∩ {i₀}ᶜ.pi fun j => Ioc (x j) (y j)) =
    {z | m < z i₀} ∩ {x_1 | x_1 i₀ ∈ Ioc (x i₀) (y i₀)} ∩ {i₀}ᶜ.pi fun j => Ioc (x j) (y j)
state_after: no goals
tactic: rfl
Theorem: Real.sinh_sub_id_strictMono
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Deriv.lean

Proof steps:
state_before: x y z : ℝ
⊢ StrictMono fun x => sinh x - x
state_after: x y z : ℝ
⊢ StrictMonoOn (fun x => sinh x - x) (Ici 0)
tactic: refine strictMono_of_odd_strictMonoOn_nonneg (fun x => by simp; abel) ?_
state_before: x y z : ℝ
⊢ StrictMonoOn (fun x => sinh x - x) (Ici 0)
state_after: case refine_1
x y z : ℝ
⊢ ContinuousOn (fun x => sinh x - x) (Ici 0)

case refine_2
x✝ y z x : ℝ
hx : x ∈ interior (Ici 0)
⊢ 0 < deriv (fun x => sinh x - x) x
tactic: refine strictMonoOn_of_deriv_pos (convex_Ici _) ?_ fun x hx => ?_
Theorem: Rat.divInt_one_one
File: Mathlib/Data/Rat/Defs.lean

Proof steps:
state_before: q a b c : ℚ
⊢ 1 /. 1 = 1
state_after: no goals
tactic: rw [divInt_one, intCast_one]
Theorem: forall_or_exists_not
File: Mathlib/Logic/Basic.lean

Proof steps:
state_before: α : Sort u_1
β : Sort u_2
p q P : α → Prop
⊢ (∀ (a : α), P a) ∨ ∃ a, ¬P a
state_after: α : Sort u_1
β : Sort u_2
p q P : α → Prop
⊢ (∀ (a : α), P a) ∨ ¬∀ (x : α), P x
tactic: rw [← not_forall]
state_before: α : Sort u_1
β : Sort u_2
p q P : α → Prop
⊢ (∀ (a : α), P a) ∨ ¬∀ (x : α), P x
state_after: no goals
tactic: exact em _
Theorem: EuclideanDomain.xgcdAux_fst
File: Mathlib/Algebra/EuclideanDomain/Basic.lean

Proof steps:
state_before: R : Type u
inst✝¹ : EuclideanDomain R
inst✝ : DecidableEq R
x y : R
⊢ ∀ (x s t s' t' : R), (xgcdAux 0 s t x s' t').1 = gcd 0 x
state_after: R : Type u
inst✝¹ : EuclideanDomain R
inst✝ : DecidableEq R
x y x✝ s✝ t✝ s'✝ t'✝ : R
⊢ (xgcdAux 0 s✝ t✝ x✝ s'✝ t'✝).1 = gcd 0 x✝
tactic: intros
state_before: R : Type u
inst✝¹ : EuclideanDomain R
inst✝ : DecidableEq R
x y x✝ s✝ t✝ s'✝ t'✝ : R
⊢ (xgcdAux 0 s✝ t✝ x✝ s'✝ t'✝).1 = gcd 0 x✝
state_after: no goals
tactic: rw [xgcd_zero_left, gcd_zero_left]
state_before: R : Type u
inst✝¹ : EuclideanDomain R
inst✝ : DecidableEq R
x✝ y✝ x y : R
h : x ≠ 0
IH : ∀ (s t s' t' : R), (xgcdAux (y % x) s t x s' t').1 = gcd (y % x) x
s t s' t' : R
⊢ (xgcdAux x s t y s' t').1 = gcd x y
state_after: R : Type u
inst✝¹ : EuclideanDomain R
inst✝ : DecidableEq R
x✝ y✝ x y : R
h : x ≠ 0
IH : ∀ (s t s' t' : R), (xgcdAux (y % x) s t x s' t').1 = gcd (y % x) x
s t s' t' : R
⊢ gcd (y % x) x = gcd x y
tactic: simp only [xgcdAux_rec h, if_neg h, IH]
state_before: R : Type u
inst✝¹ : EuclideanDomain R
inst✝ : DecidableEq R
x✝ y✝ x y : R
h : x ≠ 0
IH : ∀ (s t s' t' : R), (xgcdAux (y % x) s t x s' t').1 = gcd (y % x) x
s t s' t' : R
⊢ gcd (y % x) x = gcd x y
state_after: no goals
tactic: rw [← gcd_val]