ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Profinite.IndexFunctor.eq_of_forall_π_app_eq
File: Mathlib/Topology/Category/Profinite/Product.lean

Proof steps:
state_before: ι : Type u
X : ι → Type
inst✝ : (i : ι) → TopologicalSpace (X i)
C : Set ((i : ι) → X i)
J K : ι → Prop
a b : ↑C
h : ∀ (J : Finset ι), (π_app C fun x => x ∈ J) a = (π_app C fun x => x ∈ J) b
⊢ a = b
state_after: case a.h
ι : Type u
X : ι → Type
inst✝ : (i : ι) → TopologicalSpace (X i)
C : Set ((i : ι) → X i)
J K : ι → Prop
a b : ↑C
h : ∀ (J : Finset ι), (π_app C fun x => x ∈ J) a = (π_app C fun x => x ∈ J) b
i : ι
⊢ ↑a i = ↑b i
tactic: ext i
state_before: case a.h
ι : Type u
X : ι → Type
inst✝ : (i : ι) → TopologicalSpace (X i)
C : Set ((i : ι) → X i)
J K : ι → Prop
a b : ↑C
h : ∀ (J : Finset ι), (π_app C fun x => x ∈ J) a = (π_app C fun x => x ∈ J) b
i : ι
⊢ ↑a i = ↑b i
state_after: case a.h
ι : Type u
X : ι → Type
inst✝ : (i : ι) → TopologicalSpace (X i)
C : Set ((i : ι) → X i)
J K : ι → Prop
a b : ↑C
i : ι
h : (π_app C fun x => x ∈ {i}) a = (π_app C fun x => x ∈ {i}) b
⊢ ↑a i = ↑b i
tactic: specialize h ({i} : Finset ι)
state_before: case a.h
ι : Type u
X : ι → Type
inst✝ : (i : ι) → TopologicalSpace (X i)
C : Set ((i : ι) → X i)
J K : ι → Prop
a b : ↑C
i : ι
h : (π_app C fun x => x ∈ {i}) a = (π_app C fun x => x ∈ {i}) b
⊢ ↑a i = ↑b i
state_after: case a.h
ι : Type u
X : ι → Type
inst✝ : (i : ι) → TopologicalSpace (X i)
C : Set ((i : ι) → X i)
J K : ι → Prop
a b : ↑C
i : ι
h : ↑((π_app C fun x => x ∈ {i}) a) = ↑((π_app C fun x => x ∈ {i}) b)
⊢ ↑a i = ↑b i
tactic: rw [Subtype.ext_iff] at h
state_before: case a.h
ι : Type u
X : ι → Type
inst✝ : (i : ι) → TopologicalSpace (X i)
C : Set ((i : ι) → X i)
J K : ι → Prop
a b : ↑C
i : ι
h : ↑((π_app C fun x => x ∈ {i}) a) = ↑((π_app C fun x => x ∈ {i}) b)
⊢ ↑a i = ↑b i
state_after: case a.h
ι : Type u
X : ι → Type
inst✝ : (i : ι) → TopologicalSpace (X i)
C : Set ((i : ι) → X i)
J K : ι → Prop
a b : ↑C
i : ι
h : (fun j => ↑a ↑j) = fun j => ↑b ↑j
⊢ ↑a i = ↑b i
tactic: simp only [π_app, ContinuousMap.precomp, ContinuousMap.coe_mk,
    Set.MapsTo.val_restrict_apply] at h
state_before: case a.h
ι : Type u
X : ι → Type
inst✝ : (i : ι) → TopologicalSpace (X i)
C : Set ((i : ι) → X i)
J K : ι → Prop
a b : ↑C
i : ι
h : (fun j => ↑a ↑j) = fun j => ↑b ↑j
⊢ ↑a i = ↑b i
state_after: no goals
tactic: exact congr_fun h ⟨i, Finset.mem_singleton.mpr rfl⟩
Theorem: CategoryTheory.ShortComplex.exact_iff_mono
File: Mathlib/Algebra/Homology/ShortComplex/Exact.lean

Proof steps:
state_before: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{u_3, u_1} C
inst✝³ : Category.{?u.31342, u_2} D
inst✝² : Preadditive C
inst✝¹ : Preadditive D
S : ShortComplex C
inst✝ : HasZeroObject C
hf : S.f = 0
⊢ S.Exact ↔ Mono S.g
state_after: case mp
C : Type u_1
D : Type u_2
inst✝⁴ : Category.{u_3, u_1} C
inst✝³ : Category.{?u.31342, u_2} D
inst✝² : Preadditive C
inst✝¹ : Preadditive D
S : ShortComplex C
inst✝ : HasZeroObject C
hf : S.f = 0
⊢ S.Exact → Mono S.g

case mpr
C : Type u_1
D : Type u_2
inst✝⁴ : Category.{u_3, u_1} C
inst✝³ : Category.{?u.31342, u_2} D
inst✝² : Preadditive C
inst✝¹ : Preadditive D
S : ShortComplex C
inst✝ : HasZeroObject C
hf : S.f = 0
⊢ Mono S.g → S.Exact
tactic: constructor
Theorem: ZMod.expand_card
File: Mathlib/FieldTheory/Finite/Basic.lean

Proof steps:
state_before: K : Type u_1
R : Type u_2
p : ℕ
inst✝ : Fact (Nat.Prime p)
f : (ZMod p)[X]
⊢ (expand (ZMod p) p) f = f ^ p
state_after: K : Type u_1
R : Type u_2
p : ℕ
inst✝ : Fact (Nat.Prime p)
f : (ZMod p)[X]
h : (expand (ZMod p) (Fintype.card (ZMod p))) f = f ^ Fintype.card (ZMod p)
⊢ (expand (ZMod p) p) f = f ^ p
tactic: have h := FiniteField.expand_card f
state_before: K : Type u_1
R : Type u_2
p : ℕ
inst✝ : Fact (Nat.Prime p)
f : (ZMod p)[X]
h : (expand (ZMod p) (Fintype.card (ZMod p))) f = f ^ Fintype.card (ZMod p)
⊢ (expand (ZMod p) p) f = f ^ p
state_after: no goals
tactic: rwa [ZMod.card p] at h
Theorem: CharZero.of_noZeroSMulDivisors
File: Mathlib/Algebra/Module/Defs.lean

Proof steps:
state_before: α : Type u_1
R : Type u_2
k : Type u_3
S : Type u_4
M : Type u_5
M₂ : Type u_6
M₃ : Type u_7
ι : Type u_8
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : NoZeroSMulDivisors R M
inst✝¹ : Nontrivial M
inst✝ : NoZeroSMulDivisors ℤ M
⊢ CharZero R
state_after: α : Type u_1
R : Type u_2
k : Type u_3
S : Type u_4
M : Type u_5
M₂ : Type u_6
M₃ : Type u_7
ι : Type u_8
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : NoZeroSMulDivisors R M
inst✝¹ : Nontrivial M
inst✝ : NoZeroSMulDivisors ℤ M
n m : ℕ
h : ↑n = ↑m
⊢ n = m
tactic: refine ⟨fun {n m h} ↦ ?_⟩
state_before: α : Type u_1
R : Type u_2
k : Type u_3
S : Type u_4
M : Type u_5
M₂ : Type u_6
M₃ : Type u_7
ι : Type u_8
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : NoZeroSMulDivisors R M
inst✝¹ : Nontrivial M
inst✝ : NoZeroSMulDivisors ℤ M
n m : ℕ
h : ↑n = ↑m
⊢ n = m
state_after: case intro
α : Type u_1
R : Type u_2
k : Type u_3
S : Type u_4
M : Type u_5
M₂ : Type u_6
M₃ : Type u_7
ι : Type u_8
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : NoZeroSMulDivisors R M
inst✝¹ : Nontrivial M
inst✝ : NoZeroSMulDivisors ℤ M
n m : ℕ
h : ↑n = ↑m
x : M
hx : x ≠ 0
⊢ n = m
tactic: obtain ⟨x, hx⟩ := exists_ne (0 : M)
state_before: case intro
α : Type u_1
R : Type u_2
k : Type u_3
S : Type u_4
M : Type u_5
M₂ : Type u_6
M₃ : Type u_7
ι : Type u_8
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : NoZeroSMulDivisors R M
inst✝¹ : Nontrivial M
inst✝ : NoZeroSMulDivisors ℤ M
n m : ℕ
h : ↑n = ↑m
x : M
hx : x ≠ 0
⊢ n = m
state_after: case intro
α : Type u_1
R : Type u_2
k : Type u_3
S : Type u_4
M : Type u_5
M₂ : Type u_6
M₃ : Type u_7
ι : Type u_8
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : NoZeroSMulDivisors R M
inst✝¹ : Nontrivial M
inst✝ : NoZeroSMulDivisors ℤ M
n m : ℕ
x : M
hx : x ≠ 0
h : ↑n • x = ↑m • x
⊢ n = m
tactic: replace h : (n : ℤ) • x = (m : ℤ) • x := by simp [← Nat.cast_smul_eq_nsmul R, h]
state_before: case intro
α : Type u_1
R : Type u_2
k : Type u_3
S : Type u_4
M : Type u_5
M₂ : Type u_6
M₃ : Type u_7
ι : Type u_8
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : NoZeroSMulDivisors R M
inst✝¹ : Nontrivial M
inst✝ : NoZeroSMulDivisors ℤ M
n m : ℕ
x : M
hx : x ≠ 0
h : ↑n • x = ↑m • x
⊢ n = m
state_after: no goals
tactic: simpa using smul_left_injective ℤ hx h
Theorem: MeasurableSpace.self_subset_generateMeasurableRec
File: Mathlib/MeasureTheory/MeasurableSpace/Card.lean

Proof steps:
state_before: α : Type u
s : Set (Set α)
i : (Quotient.out (aleph 1).ord).α
⊢ s ⊆ generateMeasurableRec s i
state_after: α : Type u
s : Set (Set α)
i : (Quotient.out (aleph 1).ord).α
⊢ s ⊆
    let i := i;
    let S := ⋃ j, generateMeasurableRec s ↑j;
    s ∪ {∅} ∪ compl '' S ∪ range fun f => ⋃ n, ↑(f n)
tactic: unfold generateMeasurableRec
state_before: α : Type u
s : Set (Set α)
i : (Quotient.out (aleph 1).ord).α
⊢ s ⊆
    let i := i;
    let S := ⋃ j, generateMeasurableRec s ↑j;
    s ∪ {∅} ∪ compl '' S ∪ range fun f => ⋃ n, ↑(f n)
state_after: case h.h.h
α : Type u
s : Set (Set α)
i : (Quotient.out (aleph 1).ord).α
⊢ s ⊆ s
tactic: apply_rules [subset_union_of_subset_left]
state_before: case h.h.h
α : Type u
s : Set (Set α)
i : (Quotient.out (aleph 1).ord).α
⊢ s ⊆ s
state_after: no goals
tactic: exact subset_rfl
Theorem: symmDiff_sdiff_left
File: Mathlib/Order/SymmDiff.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝ : GeneralizedBooleanAlgebra α
a b c d : α
⊢ a ∆ b \ a = b \ a
state_after: no goals
tactic: rw [symmDiff_def, sup_sdiff, sdiff_idem, sdiff_sdiff_self, bot_sup_eq]
Theorem: neg_one_sq
File: Mathlib/Algebra/Ring/Commute.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
R : Type x
inst✝¹ : Monoid R
inst✝ : HasDistribNeg R
⊢ (-1) ^ 2 = 1
state_after: no goals
tactic: simp [neg_sq, one_pow]
Theorem: Function.Semiconj₂.isIdempotent_right
File: Mathlib/Logic/Function/Conjugate.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f : α → β
ga : α → α → α
gb : β → β → β
inst✝ : Std.IdempotentOp ga
h : Semiconj₂ f ga gb
h_surj : Surjective f
x : α
⊢ gb (f x) (f x) = f x
state_after: no goals
tactic: simp only [← h.eq, Std.IdempotentOp.idempotent (op := ga)]
Theorem: closedBall_mul_singleton
File: Mathlib/Analysis/Normed/Group/Pointwise.lean

Proof steps:
state_before: E : Type u_1
inst✝ : SeminormedCommGroup E
ε δ : ℝ
s t : Set E
x y : E
⊢ closedBall x δ * {y} = closedBall (x * y) δ
state_after: no goals
tactic: simp [mul_comm _ {y}, mul_comm y]
Theorem: nonempty_preirreducible_inter
File: Mathlib/Topology/Irreducible.lean

Proof steps:
state_before: X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
s t : Set X
inst✝ : PreirreducibleSpace X
⊢ IsOpen s → IsOpen t → s.Nonempty → t.Nonempty → (s ∩ t).Nonempty
state_after: no goals
tactic: simpa only [univ_inter, univ_subset_iff] using
    @PreirreducibleSpace.isPreirreducible_univ X _ _ s t
Theorem: lineMap_mono_left
File: Mathlib/LinearAlgebra/AffineSpace/Ordered.lean

Proof steps:
state_before: k : Type u_1
E : Type u_2
PE : Type u_3
inst✝³ : OrderedRing k
inst✝² : OrderedAddCommGroup E
inst✝¹ : Module k E
inst✝ : OrderedSMul k E
a a' b b' : E
r r' : k
ha : a ≤ a'
hr : r ≤ 1
⊢ (lineMap a b) r ≤ (lineMap a' b) r
state_after: k : Type u_1
E : Type u_2
PE : Type u_3
inst✝³ : OrderedRing k
inst✝² : OrderedAddCommGroup E
inst✝¹ : Module k E
inst✝ : OrderedSMul k E
a a' b b' : E
r r' : k
ha : a ≤ a'
hr : r ≤ 1
⊢ (1 - r) • a + r • b ≤ (1 - r) • a' + r • b
tactic: simp only [lineMap_apply_module]
state_before: k : Type u_1
E : Type u_2
PE : Type u_3
inst✝³ : OrderedRing k
inst✝² : OrderedAddCommGroup E
inst✝¹ : Module k E
inst✝ : OrderedSMul k E
a a' b b' : E
r r' : k
ha : a ≤ a'
hr : r ≤ 1
⊢ (1 - r) • a + r • b ≤ (1 - r) • a' + r • b
state_after: no goals
tactic: exact add_le_add_right (smul_le_smul_of_nonneg_left ha (sub_nonneg.2 hr)) _
Theorem: contMDiff_prod_iff
File: Mathlib/Geometry/Manifold/ContMDiff/Product.lean

Proof steps:
state_before: 𝕜 : Type u_1
inst✝³⁷ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝³⁶ : NormedAddCommGroup E
inst✝³⁵ : NormedSpace 𝕜 E
H : Type u_3
inst✝³⁴ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝³³ : TopologicalSpace M
inst✝³² : ChartedSpace H M
inst✝³¹ : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝³⁰ : NormedAddCommGroup E'
inst✝²⁹ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝²⁸ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝²⁷ : TopologicalSpace M'
inst✝²⁶ : ChartedSpace H' M'
inst✝²⁵ : SmoothManifoldWithCorners I' M'
E'' : Type u_8
inst✝²⁴ : NormedAddCommGroup E''
inst✝²³ : NormedSpace 𝕜 E''
H'' : Type u_9
inst✝²² : TopologicalSpace H''
I'' : ModelWithCorners 𝕜 E'' H''
M'' : Type u_10
inst✝²¹ : TopologicalSpace M''
inst✝²⁰ : ChartedSpace H'' M''
F : Type u_11
inst✝¹⁹ : NormedAddCommGroup F
inst✝¹⁸ : NormedSpace 𝕜 F
G : Type u_12
inst✝¹⁷ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_13
inst✝¹⁶ : TopologicalSpace N
inst✝¹⁵ : ChartedSpace G N
inst✝¹⁴ : SmoothManifoldWithCorners J N
F' : Type u_14
inst✝¹³ : NormedAddCommGroup F'
inst✝¹² : NormedSpace 𝕜 F'
G' : Type u_15
inst✝¹¹ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_16
inst✝¹⁰ : TopologicalSpace N'
inst✝⁹ : ChartedSpace G' N'
inst✝⁸ : SmoothManifoldWithCorners J' N'
F₁ : Type u_17
inst✝⁷ : NormedAddCommGroup F₁
inst✝⁶ : NormedSpace 𝕜 F₁
F₂ : Type u_18
inst✝⁵ : NormedAddCommGroup F₂
inst✝⁴ : NormedSpace 𝕜 F₂
F₃ : Type u_19
inst✝³ : NormedAddCommGroup F₃
inst✝² : NormedSpace 𝕜 F₃
F₄ : Type u_20
inst✝¹ : NormedAddCommGroup F₄
inst✝ : NormedSpace 𝕜 F₄
e : PartialHomeomorph M H
e' : PartialHomeomorph M' H'
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
f : M → M' × N'
h : ContMDiff I I' n (Prod.fst ∘ f) ∧ ContMDiff I J' n (Prod.snd ∘ f)
⊢ ContMDiff I (I'.prod J') n f
state_after: no goals
tactic: convert h.1.prod_mk h.2
Theorem: NumberField.InfinitePlace.IsUnramified.of_restrictScalars
File: Mathlib/NumberTheory/NumberField/Embeddings.lean

Proof steps:
state_before: k : Type u_1
inst✝⁷ : Field k
K : Type u_2
inst✝⁶ : Field K
F : Type u_3
inst✝⁵ : Field F
inst✝⁴ : NumberField K
inst✝³ : Algebra k K
inst✝² : Algebra k F
inst✝¹ : Algebra K F
inst✝ : IsScalarTower k K F
σ : K ≃ₐ[k] K
w✝ : InfinitePlace K
w : InfinitePlace F
h : IsUnramified k w
⊢ IsUnramified K w
state_after: k : Type u_1
inst✝⁷ : Field k
K : Type u_2
inst✝⁶ : Field K
F : Type u_3
inst✝⁵ : Field F
inst✝⁴ : NumberField K
inst✝³ : Algebra k K
inst✝² : Algebra k F
inst✝¹ : Algebra K F
inst✝ : IsScalarTower k K F
σ : K ≃ₐ[k] K
w✝ : InfinitePlace K
w : InfinitePlace F
h : IsUnramified k w
⊢ ((w.comap (algebraMap K F)).comap (algebraMap k K)).mult ≤ (w.comap (algebraMap K F)).mult
tactic: rw [InfinitePlace.isUnramified_iff_mult_le, ← h.eq, IsScalarTower.algebraMap_eq k K F,
    InfinitePlace.comap_comp]
state_before: k : Type u_1
inst✝⁷ : Field k
K : Type u_2
inst✝⁶ : Field K
F : Type u_3
inst✝⁵ : Field F
inst✝⁴ : NumberField K
inst✝³ : Algebra k K
inst✝² : Algebra k F
inst✝¹ : Algebra K F
inst✝ : IsScalarTower k K F
σ : K ≃ₐ[k] K
w✝ : InfinitePlace K
w : InfinitePlace F
h : IsUnramified k w
⊢ ((w.comap (algebraMap K F)).comap (algebraMap k K)).mult ≤ (w.comap (algebraMap K F)).mult
state_after: no goals
tactic: exact InfinitePlace.mult_comap_le _ _
Theorem: Computation.liftRel_map
File: Mathlib/Data/Seq/Computation.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
R : α → β → Prop
S : γ → δ → Prop
s1 : Computation α
s2 : Computation β
f1 : α → γ
f2 : β → δ
h1 : LiftRel R s1 s2
h2 : ∀ {a : α} {b : β}, R a b → S (f1 a) (f2 b)
⊢ LiftRel S (map f1 s1) (map f2 s2)
state_after: α : Type u
β : Type v
γ : Type w
δ : Type u_1
R : α → β → Prop
S : γ → δ → Prop
s1 : Computation α
s2 : Computation β
f1 : α → γ
f2 : β → δ
h1 : LiftRel R s1 s2
h2 : ∀ {a : α} {b : β}, R a b → S (f1 a) (f2 b)
⊢ LiftRel S (s1.bind (pure ∘ f1)) (s2.bind (pure ∘ f2))
tactic: rw [← bind_pure, ← bind_pure]
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
R : α → β → Prop
S : γ → δ → Prop
s1 : Computation α
s2 : Computation β
f1 : α → γ
f2 : β → δ
h1 : LiftRel R s1 s2
h2 : ∀ {a : α} {b : β}, R a b → S (f1 a) (f2 b)
⊢ LiftRel S (s1.bind (pure ∘ f1)) (s2.bind (pure ∘ f2))
state_after: α : Type u
β : Type v
γ : Type w
δ : Type u_1
R : α → β → Prop
S : γ → δ → Prop
s1 : Computation α
s2 : Computation β
f1 : α → γ
f2 : β → δ
h1 : LiftRel R s1 s2
h2 : ∀ {a : α} {b : β}, R a b → S (f1 a) (f2 b)
⊢ ∀ {a : α} {b : β}, R a b → LiftRel S ((pure ∘ f1) a) ((pure ∘ f2) b)
tactic: apply liftRel_bind _ _ h1
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
R : α → β → Prop
S : γ → δ → Prop
s1 : Computation α
s2 : Computation β
f1 : α → γ
f2 : β → δ
h1 : LiftRel R s1 s2
h2 : ∀ {a : α} {b : β}, R a b → S (f1 a) (f2 b)
⊢ ∀ {a : α} {b : β}, R a b → LiftRel S ((pure ∘ f1) a) ((pure ∘ f2) b)
state_after: α : Type u
β : Type v
γ : Type w
δ : Type u_1
R : α → β → Prop
S : γ → δ → Prop
s1 : Computation α
s2 : Computation β
f1 : α → γ
f2 : β → δ
h1 : LiftRel R s1 s2
h2 : ∀ {a : α} {b : β}, R a b → S (f1 a) (f2 b)
⊢ ∀ {a : α} {b : β}, R a b → ∃ a_2, a_2 ∈ pure (f1 a) ∧ S a_2 (f2 b)
tactic: simp only [comp_apply, liftRel_pure_right]
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
R : α → β → Prop
S : γ → δ → Prop
s1 : Computation α
s2 : Computation β
f1 : α → γ
f2 : β → δ
h1 : LiftRel R s1 s2
h2 : ∀ {a : α} {b : β}, R a b → S (f1 a) (f2 b)
⊢ ∀ {a : α} {b : β}, R a b → ∃ a_2, a_2 ∈ pure (f1 a) ∧ S a_2 (f2 b)
state_after: α : Type u
β : Type v
γ : Type w
δ : Type u_1
R : α → β → Prop
S : γ → δ → Prop
s1 : Computation α
s2 : Computation β
f1 : α → γ
f2 : β → δ
h1 : LiftRel R s1 s2
h2 : ∀ {a : α} {b : β}, R a b → S (f1 a) (f2 b)
a : α
b : β
h : R a b
⊢ ∃ a_1, a_1 ∈ pure (f1 a) ∧ S a_1 (f2 b)
tactic: intros a b h
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
R : α → β → Prop
S : γ → δ → Prop
s1 : Computation α
s2 : Computation β
f1 : α → γ
f2 : β → δ
h1 : LiftRel R s1 s2
h2 : ∀ {a : α} {b : β}, R a b → S (f1 a) (f2 b)
a : α
b : β
h : R a b
⊢ ∃ a_1, a_1 ∈ pure (f1 a) ∧ S a_1 (f2 b)
state_after: no goals
tactic: exact ⟨f1 a, ⟨ret_mem _, @h2 a b h⟩⟩
Theorem: Int.floor_nat_add
File: Mathlib/Algebra/Order/Floor.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
z : ℤ
a✝ : α
n : ℕ
a : α
⊢ ⌊↑n + a⌋ = ↑n + ⌊a⌋
state_after: no goals
tactic: rw [← Int.cast_natCast, floor_int_add]
Theorem: lt_mul_of_one_lt_left
File: Mathlib/Algebra/Order/GroupWithZero/Unbundled.lean

Proof steps:
state_before: α : Type u_1
a b c d : α
inst✝³ : MulOneClass α
inst✝² : Zero α
inst✝¹ : Preorder α
inst✝ : MulPosStrictMono α
hb : 0 < b
h : 1 < a
⊢ b < a * b
state_after: no goals
tactic: simpa only [one_mul] using mul_lt_mul_of_pos_right h hb
Theorem: Ordinal.nadd_le_nadd_right
File: Mathlib/SetTheory/Ordinal/NaturalOps.lean

Proof steps:
state_before: a✝ b c : Ordinal.{u}
h : b ≤ c
a : Ordinal.{u}
⊢ b ♯ a ≤ c ♯ a
state_after: case inl
a✝ b c : Ordinal.{u}
h✝ : b ≤ c
a : Ordinal.{u}
h : b < c
⊢ b ♯ a ≤ c ♯ a

case inr
a✝ b a : Ordinal.{u}
h : b ≤ b
⊢ b ♯ a ≤ b ♯ a
tactic: rcases lt_or_eq_of_le h with (h | rfl)
Theorem: hasFPowerSeriesWithinAt_iff_exists_hasFPowerSeriesAt
File: Mathlib/Analysis/Analytic/Within.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
inst✝ : CompleteSpace F
f : E → F
p : FormalMultilinearSeries 𝕜 E F
s : Set E
x : E
⊢ HasFPowerSeriesWithinAt f p s x ↔ ContinuousWithinAt f s x ∧ ∃ g, f =ᶠ[𝓝[s] x] g ∧ HasFPowerSeriesAt g p x
state_after: case mp
α : 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
inst✝ : CompleteSpace F
f : E → F
p : FormalMultilinearSeries 𝕜 E F
s : Set E
x : E
⊢ HasFPowerSeriesWithinAt f p s x → ContinuousWithinAt f s x ∧ ∃ g, f =ᶠ[𝓝[s] x] g ∧ HasFPowerSeriesAt g p x

case mpr
α : 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
inst✝ : CompleteSpace F
f : E → F
p : FormalMultilinearSeries 𝕜 E F
s : Set E
x : E
⊢ (ContinuousWithinAt f s x ∧ ∃ g, f =ᶠ[𝓝[s] x] g ∧ HasFPowerSeriesAt g p x) → HasFPowerSeriesWithinAt f p s x
tactic: constructor
Theorem: ContDiff.contDiffBump
File: Mathlib/Analysis/Calculus/BumpFunction/Basic.lean

Proof steps:
state_before: E : Type u_1
X : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : NormedAddCommGroup X
inst✝¹ : NormedSpace ℝ X
inst✝ : HasContDiffBump E
c✝ : E
f✝ : ContDiffBump c✝
x : E
n : ℕ∞
c g : X → E
f : (x : X) → ContDiffBump (c x)
hc : ContDiff ℝ n c
hr : ContDiff ℝ n fun x => (f x).rIn
hR : ContDiff ℝ n fun x => (f x).rOut
hg : ContDiff ℝ n g
⊢ ContDiff ℝ n fun x => ↑(f x) (g x)
state_after: E : Type u_1
X : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : NormedAddCommGroup X
inst✝¹ : NormedSpace ℝ X
inst✝ : HasContDiffBump E
c✝ : E
f✝ : ContDiffBump c✝
x : E
n : ℕ∞
c g : X → E
f : (x : X) → ContDiffBump (c x)
hc : ∀ (x : X), ContDiffAt ℝ n c x
hr : ∀ (x : X), ContDiffAt ℝ n (fun x => (f x).rIn) x
hR : ∀ (x : X), ContDiffAt ℝ n (fun x => (f x).rOut) x
hg : ∀ (x : X), ContDiffAt ℝ n g x
⊢ ∀ (x : X), ContDiffAt ℝ n (fun x => ↑(f x) (g x)) x
tactic: rw [contDiff_iff_contDiffAt] at *
state_before: E : Type u_1
X : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : NormedAddCommGroup X
inst✝¹ : NormedSpace ℝ X
inst✝ : HasContDiffBump E
c✝ : E
f✝ : ContDiffBump c✝
x : E
n : ℕ∞
c g : X → E
f : (x : X) → ContDiffBump (c x)
hc : ∀ (x : X), ContDiffAt ℝ n c x
hr : ∀ (x : X), ContDiffAt ℝ n (fun x => (f x).rIn) x
hR : ∀ (x : X), ContDiffAt ℝ n (fun x => (f x).rOut) x
hg : ∀ (x : X), ContDiffAt ℝ n g x
⊢ ∀ (x : X), ContDiffAt ℝ n (fun x => ↑(f x) (g x)) x
state_after: no goals
tactic: exact fun x => (hc x).contDiffBump (hr x) (hR x) (hg x)
Theorem: totallyBounded_iff_subset_finite_iUnion_nhds_zero
File: Mathlib/Topology/Algebra/UniformGroup.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝² : UniformSpace α
inst✝¹ : Group α
inst✝ : UniformGroup α
s : Set α
⊢ (∀ i ∈ 𝓝 1, ∃ t, t.Finite ∧ s ⊆ ⋃ y ∈ t, {x | (x, y) ∈ {x | x.2⁻¹ * x.1 ∈ id i}}) ↔
    ∀ U ∈ 𝓝 1, ∃ t, t.Finite ∧ s ⊆ ⋃ y ∈ t, y • U
state_after: no goals
tactic: simp [← preimage_smul_inv, preimage]
Theorem: tsum_congr_set_coe
File: Mathlib/Topology/Algebra/InfiniteSum/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝¹ : CommMonoid α
inst✝ : TopologicalSpace α
f✝ g : β → α
a a₁ a₂ : α
f : β → α
s t : Set β
h : s = t
⊢ ∏' (x : ↑s), f ↑x = ∏' (x : ↑t), f ↑x
state_after: no goals
tactic: rw [h]