ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: FractionalIdeal.fg_of_isNoetherianRing
File: Mathlib/RingTheory/FractionalIdeal/Basic.lean

Proof steps:
state_before: R✝ : Type u_1
inst✝⁸ : CommRing R✝
S✝ : Submonoid R✝
P✝ : Type u_2
inst✝⁷ : CommRing P✝
inst✝⁶ : Algebra R✝ P✝
loc : IsLocalization S✝ P✝
R : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : Nontrivial R
S : Submonoid R
P : Type u_4
inst✝³ : Nontrivial P
inst✝² : CommRing P
inst✝¹ : Algebra R P
inst✝ : NoZeroSMulDivisors R P
hR : IsNoetherianRing R
hS : S ≤ R⁰
I : FractionalIdeal S P
⊢ (↑I).FG
state_after: R✝ : Type u_1
inst✝⁸ : CommRing R✝
S✝ : Submonoid R✝
P✝ : Type u_2
inst✝⁷ : CommRing P✝
inst✝⁶ : Algebra R✝ P✝
loc : IsLocalization S✝ P✝
R : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : Nontrivial R
S : Submonoid R
P : Type u_4
inst✝³ : Nontrivial P
inst✝² : CommRing P
inst✝¹ : Algebra R P
inst✝ : NoZeroSMulDivisors R P
hR : IsNoetherianRing R
hS : S ≤ R⁰
I : FractionalIdeal S P
this : FG I.num
⊢ (↑I).FG
tactic: have := hR.noetherian I.num
state_before: R✝ : Type u_1
inst✝⁸ : CommRing R✝
S✝ : Submonoid R✝
P✝ : Type u_2
inst✝⁷ : CommRing P✝
inst✝⁶ : Algebra R✝ P✝
loc : IsLocalization S✝ P✝
R : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : Nontrivial R
S : Submonoid R
P : Type u_4
inst✝³ : Nontrivial P
inst✝² : CommRing P
inst✝¹ : Algebra R P
inst✝ : NoZeroSMulDivisors R P
hR : IsNoetherianRing R
hS : S ≤ R⁰
I : FractionalIdeal S P
this : FG I.num
⊢ (↑I).FG
state_after: R✝ : Type u_1
inst✝⁸ : CommRing R✝
S✝ : Submonoid R✝
P✝ : Type u_2
inst✝⁷ : CommRing P✝
inst✝⁶ : Algebra R✝ P✝
loc : IsLocalization S✝ P✝
R : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : Nontrivial R
S : Submonoid R
P : Type u_4
inst✝³ : Nontrivial P
inst✝² : CommRing P
inst✝¹ : Algebra R P
inst✝ : NoZeroSMulDivisors R P
hR : IsNoetherianRing R
hS : S ≤ R⁰
I : FractionalIdeal S P
this : ⊤.FG
⊢ ⊤.FG
tactic: rw [← fg_top] at this ⊢
state_before: R✝ : Type u_1
inst✝⁸ : CommRing R✝
S✝ : Submonoid R✝
P✝ : Type u_2
inst✝⁷ : CommRing P✝
inst✝⁶ : Algebra R✝ P✝
loc : IsLocalization S✝ P✝
R : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : Nontrivial R
S : Submonoid R
P : Type u_4
inst✝³ : Nontrivial P
inst✝² : CommRing P
inst✝¹ : Algebra R P
inst✝ : NoZeroSMulDivisors R P
hR : IsNoetherianRing R
hS : S ≤ R⁰
I : FractionalIdeal S P
this : ⊤.FG
⊢ ⊤.FG
state_after: no goals
tactic: exact fg_of_linearEquiv (I.equivNum <| coe_ne_zero ⟨(I.den : R), hS (SetLike.coe_mem I.den)⟩) this
Theorem: Ordinal.apply_le_nfpFamily
File: Mathlib/SetTheory/Ordinal/FixedPoint.lean

Proof steps:
state_before: ι : Type u
f✝ : ι → Ordinal.{max u v} → Ordinal.{max u v}
hι : Nonempty ι
f : ι → Ordinal.{max u v} → Ordinal.{max u v}
H : ∀ (i : ι), IsNormal (f i)
a b : Ordinal.{max u v}
⊢ (∀ (i : ι), f i b ≤ nfpFamily f a) ↔ b ≤ nfpFamily f a
state_after: case refine_1
ι : Type u
f✝ : ι → Ordinal.{max u v} → Ordinal.{max u v}
hι : Nonempty ι
f : ι → Ordinal.{max u v} → Ordinal.{max u v}
H : ∀ (i : ι), IsNormal (f i)
a b : Ordinal.{max u v}
h : ∀ (i : ι), f i b ≤ nfpFamily f a
⊢ b ≤ nfpFamily f a

case refine_2
ι : Type u
f✝ : ι → Ordinal.{max u v} → Ordinal.{max u v}
hι : Nonempty ι
f : ι → Ordinal.{max u v} → Ordinal.{max u v}
H : ∀ (i : ι), IsNormal (f i)
a b : Ordinal.{max u v}
h : b ≤ nfpFamily f a
i : ι
⊢ f i b ≤ nfpFamily f a
tactic: refine ⟨fun h => ?_, fun h i => ?_⟩
state_before: case refine_2
ι : Type u
f✝ : ι → Ordinal.{max u v} → Ordinal.{max u v}
hι : Nonempty ι
f : ι → Ordinal.{max u v} → Ordinal.{max u v}
H : ∀ (i : ι), IsNormal (f i)
a b : Ordinal.{max u v}
h : b ≤ nfpFamily f a
i : ι
⊢ f i b ≤ nfpFamily f a
state_after: case refine_2
ι : Type u
f✝ : ι → Ordinal.{max u v} → Ordinal.{max u v}
hι : Nonempty ι
f : ι → Ordinal.{max u v} → Ordinal.{max u v}
H : ∀ (i : ι), IsNormal (f i)
a b : Ordinal.{max u v}
h : b ≤ nfpFamily f a
i : ι
⊢ f i b ≤ f i (nfpFamily f a)
tactic: rw [← nfpFamily_fp (H i)]
state_before: case refine_2
ι : Type u
f✝ : ι → Ordinal.{max u v} → Ordinal.{max u v}
hι : Nonempty ι
f : ι → Ordinal.{max u v} → Ordinal.{max u v}
H : ∀ (i : ι), IsNormal (f i)
a b : Ordinal.{max u v}
h : b ≤ nfpFamily f a
i : ι
⊢ f i b ≤ f i (nfpFamily f a)
state_after: no goals
tactic: exact (H i).monotone h
Theorem: Set.image_mul_left'
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 : α
⊢ (fun x => a⁻¹ * x) '' t = (fun x => a * x) ⁻¹' t
state_after: no goals
tactic: simp
Theorem: NonUnitalSubring.mem_sSup_of_directedOn
File: Mathlib/RingTheory/NonUnitalSubring/Basic.lean

Proof steps:
state_before: F : Type w
R : Type u
S✝ : Type v
T : Type u_1
inst✝⁴ : NonUnitalNonAssocRing R
inst✝³ : NonUnitalNonAssocRing S✝
inst✝² : NonUnitalNonAssocRing T
inst✝¹ : FunLike F R S✝
inst✝ : NonUnitalRingHomClass F R S✝
g : S✝ →ₙ+* T
f : R →ₙ+* S✝
S : Set (NonUnitalSubring R)
Sne : S.Nonempty
hS : DirectedOn (fun x x_1 => x ≤ x_1) S
x : R
⊢ x ∈ sSup S ↔ ∃ s ∈ S, x ∈ s
state_after: F : Type w
R : Type u
S✝ : Type v
T : Type u_1
inst✝⁴ : NonUnitalNonAssocRing R
inst✝³ : NonUnitalNonAssocRing S✝
inst✝² : NonUnitalNonAssocRing T
inst✝¹ : FunLike F R S✝
inst✝ : NonUnitalRingHomClass F R S✝
g : S✝ →ₙ+* T
f : R →ₙ+* S✝
S : Set (NonUnitalSubring R)
Sne : S.Nonempty
hS : DirectedOn (fun x x_1 => x ≤ x_1) S
x : R
this : Nonempty ↑S
⊢ x ∈ sSup S ↔ ∃ s ∈ S, x ∈ s
tactic: haveI : Nonempty S := Sne.to_subtype
state_before: F : Type w
R : Type u
S✝ : Type v
T : Type u_1
inst✝⁴ : NonUnitalNonAssocRing R
inst✝³ : NonUnitalNonAssocRing S✝
inst✝² : NonUnitalNonAssocRing T
inst✝¹ : FunLike F R S✝
inst✝ : NonUnitalRingHomClass F R S✝
g : S✝ →ₙ+* T
f : R →ₙ+* S✝
S : Set (NonUnitalSubring R)
Sne : S.Nonempty
hS : DirectedOn (fun x x_1 => x ≤ x_1) S
x : R
this : Nonempty ↑S
⊢ x ∈ sSup S ↔ ∃ s ∈ S, x ∈ s
state_after: no goals
tactic: simp only [sSup_eq_iSup', mem_iSup_of_directed hS.directed_val, SetCoe.exists, Subtype.coe_mk,
    exists_prop]
Theorem: Set.swap_mem_addAntidiagonal
File: Mathlib/Data/Set/MulAntidiagonal.lean

Proof steps:
state_before: α : Type u_1
inst✝ : CommSemigroup α
s t : Set α
a : α
x : α × α
⊢ x.swap ∈ s.mulAntidiagonal t a ↔ x ∈ t.mulAntidiagonal s a
state_after: no goals
tactic: simp [mul_comm, and_left_comm]
Theorem: comp_symm_mem_uniformity_sets
File: Mathlib/Topology/UniformSpace/Basic.lean

Proof steps:
state_before: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort u_1
inst✝ : UniformSpace α
s : Set (α × α)
hs : s ∈ 𝓤 α
⊢ ∃ t ∈ 𝓤 α, SymmetricRel t ∧ t ○ t ⊆ s
state_after: case intro.intro
α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort u_1
inst✝ : UniformSpace α
s : Set (α × α)
hs : s ∈ 𝓤 α
w : Set (α × α)
w_in : w ∈ 𝓤 α
w_sub : w ○ w ⊆ s
⊢ ∃ t ∈ 𝓤 α, SymmetricRel t ∧ t ○ t ⊆ s
tactic: obtain ⟨w, w_in, w_sub⟩ : ∃ w ∈ 𝓤 α, w ○ w ⊆ s := comp_mem_uniformity_sets hs
state_before: case intro.intro
α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort u_1
inst✝ : UniformSpace α
s : Set (α × α)
hs : s ∈ 𝓤 α
w : Set (α × α)
w_in : w ∈ 𝓤 α
w_sub : w ○ w ⊆ s
⊢ ∃ t ∈ 𝓤 α, SymmetricRel t ∧ t ○ t ⊆ s
state_after: case right
α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort u_1
inst✝ : UniformSpace α
s : Set (α × α)
hs : s ∈ 𝓤 α
w : Set (α × α)
w_in : w ∈ 𝓤 α
w_sub : w ○ w ⊆ s
⊢ symmetrizeRel w ○ symmetrizeRel w ⊆ s
tactic: use symmetrizeRel w, symmetrize_mem_uniformity w_in, symmetric_symmetrizeRel w
state_before: case right
α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort u_1
inst✝ : UniformSpace α
s : Set (α × α)
hs : s ∈ 𝓤 α
w : Set (α × α)
w_in : w ∈ 𝓤 α
w_sub : w ○ w ⊆ s
⊢ symmetrizeRel w ○ symmetrizeRel w ⊆ s
state_after: case right
α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort u_1
inst✝ : UniformSpace α
s : Set (α × α)
hs : s ∈ 𝓤 α
w : Set (α × α)
w_in : w ∈ 𝓤 α
w_sub : w ○ w ⊆ s
this : symmetrizeRel w ⊆ w
⊢ symmetrizeRel w ○ symmetrizeRel w ⊆ s
tactic: have : symmetrizeRel w ⊆ w := symmetrizeRel_subset_self w
state_before: case right
α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort u_1
inst✝ : UniformSpace α
s : Set (α × α)
hs : s ∈ 𝓤 α
w : Set (α × α)
w_in : w ∈ 𝓤 α
w_sub : w ○ w ⊆ s
this : symmetrizeRel w ⊆ w
⊢ symmetrizeRel w ○ symmetrizeRel w ⊆ s
state_after: no goals
tactic: calc symmetrizeRel w ○ symmetrizeRel w
    _ ⊆ w ○ w := by gcongr
    _ ⊆ s     := w_sub
Theorem: List.prod_range_succ'
File: Mathlib/Algebra/BigOperators/Group/List.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
inst✝² : Monoid M
inst✝¹ : Monoid N
inst✝ : Monoid P
l l₁ l₂ : List M
a : M
f : ℕ → M
n : ℕ
⊢ 1 * f 0 = f 0 * 1
state_after: no goals
tactic: rw [one_mul, mul_one]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
inst✝² : Monoid M
inst✝¹ : Monoid N
inst✝ : Monoid P
l l₁ l₂ : List M
a : M
f : ℕ → M
n x✝ : ℕ
hd : (map f (range x✝.succ)).prod = f 0 * (map (fun i => f i.succ) (range x✝)).prod
⊢ (map f (range x✝.succ.succ)).prod = f 0 * (map (fun i => f i.succ) (range x✝.succ)).prod
state_after: no goals
tactic: rw [List.prod_range_succ, hd, mul_assoc, ← List.prod_range_succ]
Theorem: Metric.diam_union
File: Mathlib/Topology/MetricSpace/Bounded.lean

Proof steps:
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
s : Set α
x y z : α
t : Set α
xs : x ∈ s
yt : y ∈ t
⊢ diam (s ∪ t) ≤ diam s + dist x y + diam t
state_after: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
s : Set α
x y z : α
t : Set α
xs : x ∈ s
yt : y ∈ t
⊢ (EMetric.diam (s ∪ t)).toReal ≤ (EMetric.diam s).toReal + (edist x y).toReal + (EMetric.diam t).toReal
tactic: simp only [diam, dist_edist]
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
s : Set α
x y z : α
t : Set α
xs : x ∈ s
yt : y ∈ t
⊢ (EMetric.diam (s ∪ t)).toReal ≤ (EMetric.diam s).toReal + (edist x y).toReal + (EMetric.diam t).toReal
state_after: case refine_1
α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
s : Set α
x y z : α
t : Set α
xs : x ∈ s
yt : y ∈ t
⊢ EMetric.diam s + edist x y = ⊤ → EMetric.diam (s ∪ t) = ⊤

case refine_2
α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
s : Set α
x y z : α
t : Set α
xs : x ∈ s
yt : y ∈ t
⊢ EMetric.diam t = ⊤ → EMetric.diam (s ∪ t) = ⊤
tactic: refine (ENNReal.toReal_le_add' (EMetric.diam_union xs yt) ?_ ?_).trans
    (add_le_add_right ENNReal.toReal_add_le _)
Theorem: List.replaceF_cons_of_some
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

Proof steps:
state_before: α : Type u_1
a' a : α
l : List α
p : α → Option α
h : p a = some a'
⊢ replaceF p (a :: l) = a' :: l
state_after: no goals
tactic: simp [replaceF_cons, h]
Theorem: CategoryTheory.ConcreteCategory.bijective_of_isIso
File: Mathlib/CategoryTheory/ConcreteCategory/EpiMono.lean

Proof steps:
state_before: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : ConcreteCategory C
X Y : C
f : X ⟶ Y
inst✝ : IsIso f
⊢ Function.Bijective ((forget C).map f)
state_after: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : ConcreteCategory C
X Y : C
f : X ⟶ Y
inst✝ : IsIso f
⊢ IsIso ((forget C).map f)
tactic: rw [← isIso_iff_bijective]
state_before: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : ConcreteCategory C
X Y : C
f : X ⟶ Y
inst✝ : IsIso f
⊢ IsIso ((forget C).map f)
state_after: no goals
tactic: infer_instance
Theorem: inf_eq_half_smul_add_sub_abs_sub
File: Mathlib/Algebra/Order/Module/OrderedSMul.lean

Proof steps:
state_before: ι : Type u_1
α✝ : Type u_2
β✝ : Type u_3
γ : Type u_4
𝕜 : Type u_5
R : Type u_6
M : Type u_7
N : Type u_8
α : Type u_9
β : Type u_10
inst✝⁵ : Semiring α
inst✝⁴ : Invertible 2
inst✝³ : Lattice β
inst✝² : AddCommGroup β
inst✝¹ : Module α β
inst✝ : CovariantClass β β (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
x y : β
⊢ x ⊓ y = ⅟2 • (x + y - |y - x|)
state_after: no goals
tactic: rw [← two_nsmul_inf_eq_add_sub_abs_sub x y, two_smul, ← two_smul α,
    smul_smul, invOf_mul_self, one_smul]
Theorem: Ring.DirectLimit.map_comp
File: Mathlib/Algebra/DirectLimit.lean

Proof steps:
state_before: R : Type u
inst✝⁷ : Ring R
ι : Type v
inst✝⁶ : Preorder ι
G : ι → Type w
inst✝⁵ : (i : ι) → CommRing (G i)
f✝ : (i j : ι) → i ≤ j → G i → G j
f'✝ : (i j : ι) → i ≤ j → G i →+* G j
P : Type u₁
inst✝⁴ : CommRing P
g : (i : ι) → G i →+* P
Hg : ∀ (i j : ι) (hij : i ≤ j) (x : G i), (g j) (f✝ i j hij x) = (g i) x
f : (i j : ι) → i ≤ j → G i →+* G j
G' : ι → Type v'
inst✝³ : (i : ι) → CommRing (G' i)
f' : (i j : ι) → i ≤ j → G' i →+* G' j
G'' : ι → Type v''
inst✝² : (i : ι) → CommRing (G'' i)
f'' : (i j : ι) → i ≤ j → G'' i →+* G'' j
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
g₁ : (i : ι) → G i →+* G' i
g₂ : (i : ι) → G' i →+* G'' i
hg₁ : ∀ (i j : ι) (h : i ≤ j), (g₁ j).comp (f i j h) = (f' i j h).comp (g₁ i)
hg₂ : ∀ (i j : ι) (h : i ≤ j), (g₂ j).comp (f' i j h) = (f'' i j h).comp (g₂ i)
i j : ι
h : i ≤ j
⊢ ((fun i => (g₂ i).comp (g₁ i)) j).comp (f i j h) = (f'' i j h).comp ((fun i => (g₂ i).comp (g₁ i)) i)
state_after: no goals
tactic: rw [RingHom.comp_assoc, hg₁ i, ← RingHom.comp_assoc, hg₂ i, RingHom.comp_assoc]
state_before: R : Type u
inst✝⁷ : Ring R
ι : Type v
inst✝⁶ : Preorder ι
G : ι → Type w
inst✝⁵ : (i : ι) → CommRing (G i)
f✝ : (i j : ι) → i ≤ j → G i → G j
f'✝ : (i j : ι) → i ≤ j → G i →+* G j
P : Type u₁
inst✝⁴ : CommRing P
g✝ : (i : ι) → G i →+* P
Hg : ∀ (i j : ι) (hij : i ≤ j) (x : G i), (g✝ j) (f✝ i j hij x) = (g✝ i) x
f : (i j : ι) → i ≤ j → G i →+* G j
G' : ι → Type v'
inst✝³ : (i : ι) → CommRing (G' i)
f' : (i j : ι) → i ≤ j → G' i →+* G' j
G'' : ι → Type v''
inst✝² : (i : ι) → CommRing (G'' i)
f'' : (i j : ι) → i ≤ j → G'' i →+* G'' j
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
g₁ : (i : ι) → G i →+* G' i
g₂ : (i : ι) → G' i →+* G'' i
hg₁ : ∀ (i j : ι) (h : i ≤ j), (g₁ j).comp (f i j h) = (f' i j h).comp (g₁ i)
hg₂ : ∀ (i j : ι) (h : i ≤ j), (g₂ j).comp (f' i j h) = (f'' i j h).comp (g₂ i)
x : DirectLimit G fun x x_1 h => ⇑(f x x_1 h)
i : ι
g : G i
⊢ ((map g₂ hg₂).comp (map g₁ hg₁)) ((of G (fun x x_1 h => ⇑(f x x_1 h)) i) g) =
    (map (fun i => (g₂ i).comp (g₁ i)) ⋯) ((of G (fun x x_1 h => ⇑(f x x_1 h)) i) g)
state_after: no goals
tactic: simp
Theorem: Subgroup.iSup_eq_closure
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
H K : Subgroup G
k : Set G
ι : Sort u_5
p : ι → Subgroup G
⊢ ⨆ i, p i = closure (⋃ i, ↑(p i))
state_after: no goals
tactic: simp_rw [closure_iUnion, closure_eq]
Theorem: OrderIso.map_inf
File: Mathlib/Order/Hom/Basic.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
inst✝¹ : SemilatticeInf α
inst✝ : SemilatticeInf β
f : α ≃o β
x y : α
⊢ f (x ⊓ y) = f x ⊓ f y
state_after: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
inst✝¹ : SemilatticeInf α
inst✝ : SemilatticeInf β
f : α ≃o β
x y : α
⊢ f.toOrderEmbedding x ⊓ f.toOrderEmbedding y ≤ f.toOrderEmbedding (x ⊓ y)
tactic: refine (f.toOrderEmbedding.map_inf_le x y).antisymm ?_
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
inst✝¹ : SemilatticeInf α
inst✝ : SemilatticeInf β
f : α ≃o β
x y : α
⊢ f.toOrderEmbedding x ⊓ f.toOrderEmbedding y ≤ f.toOrderEmbedding (x ⊓ y)
state_after: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
inst✝¹ : SemilatticeInf α
inst✝ : SemilatticeInf β
f : α ≃o β
x y : α
⊢ f.symm (f.toOrderEmbedding x ⊓ f.toOrderEmbedding y) ≤ f.symm (f.toOrderEmbedding (x ⊓ y))
tactic: apply f.symm.le_iff_le.1
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
inst✝¹ : SemilatticeInf α
inst✝ : SemilatticeInf β
f : α ≃o β
x y : α
⊢ f.symm (f.toOrderEmbedding x ⊓ f.toOrderEmbedding y) ≤ f.symm (f.toOrderEmbedding (x ⊓ y))
state_after: no goals
tactic: simpa using f.symm.toOrderEmbedding.map_inf_le (f x) (f y)
Theorem: mul_dvd_mul_iff_right
File: Mathlib/Algebra/GroupWithZero/Divisibility.lean

Proof steps:
state_before: α : Type u_1
inst✝ : CancelCommMonoidWithZero α
a b c : α
hc : c ≠ 0
d : α
⊢ b * c = a * c * d ↔ b = a * d
state_after: no goals
tactic: rw [mul_right_comm, mul_left_inj' hc]
Theorem: Mon_.mkIso_inv_hom
File: Mathlib/CategoryTheory/Monoidal/Mon_.lean

Proof steps:
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
M✝ M N : Mon_ C
f : M.X ≅ N.X
one_f : autoParam (M.one ≫ f.hom = N.one) _auto✝
mul_f : autoParam (M.mul ≫ f.hom = (f.hom ⊗ f.hom) ≫ N.mul) _auto✝
⊢ N.one ≫ f.inv = M.one
state_after: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
M✝ M N : Mon_ C
f : M.X ≅ N.X
one_f : autoParam (M.one ≫ f.hom = N.one) _auto✝
mul_f : autoParam (M.mul ≫ f.hom = (f.hom ⊗ f.hom) ≫ N.mul) _auto✝
⊢ (M.one ≫ f.hom) ≫ f.inv = M.one
tactic: rw [← one_f]
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
M✝ M N : Mon_ C
f : M.X ≅ N.X
one_f : autoParam (M.one ≫ f.hom = N.one) _auto✝
mul_f : autoParam (M.mul ≫ f.hom = (f.hom ⊗ f.hom) ≫ N.mul) _auto✝
⊢ (M.one ≫ f.hom) ≫ f.inv = M.one
state_after: no goals
tactic: simp
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
M✝ M N : Mon_ C
f : M.X ≅ N.X
one_f : autoParam (M.one ≫ f.hom = N.one) _auto✝
mul_f : autoParam (M.mul ≫ f.hom = (f.hom ⊗ f.hom) ≫ N.mul) _auto✝
⊢ N.mul ≫ f.inv = (f.inv ⊗ f.inv) ≫ M.mul
state_after: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
M✝ M N : Mon_ C
f : M.X ≅ N.X
one_f : autoParam (M.one ≫ f.hom = N.one) _auto✝
mul_f : autoParam (M.mul ≫ f.hom = (f.hom ⊗ f.hom) ≫ N.mul) _auto✝
⊢ (N.mul ≫ f.inv) ≫ f.hom = ((f.inv ⊗ f.inv) ≫ M.mul) ≫ f.hom
tactic: rw [← cancel_mono f.hom]
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
M✝ M N : Mon_ C
f : M.X ≅ N.X
one_f : autoParam (M.one ≫ f.hom = N.one) _auto✝
mul_f : autoParam (M.mul ≫ f.hom = (f.hom ⊗ f.hom) ≫ N.mul) _auto✝
⊢ (N.mul ≫ f.inv) ≫ f.hom = ((f.inv ⊗ f.inv) ≫ M.mul) ≫ f.hom
state_after: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
M✝ M N : Mon_ C
f : M.X ≅ N.X
one_f : autoParam (M.one ≫ f.hom = N.one) _auto✝
mul_f : autoParam (M.mul ≫ f.hom = (f.hom ⊗ f.hom) ≫ N.mul) _auto✝
⊢ (N.mul ≫ f.inv) ≫ f.hom = (f.inv ⊗ f.inv) ≫ (f.hom ⊗ f.hom) ≫ N.mul
tactic: slice_rhs 2 3 => rw [mul_f]
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
M✝ M N : Mon_ C
f : M.X ≅ N.X
one_f : autoParam (M.one ≫ f.hom = N.one) _auto✝
mul_f : autoParam (M.mul ≫ f.hom = (f.hom ⊗ f.hom) ≫ N.mul) _auto✝
⊢ (N.mul ≫ f.inv) ≫ f.hom = (f.inv ⊗ f.inv) ≫ (f.hom ⊗ f.hom) ≫ N.mul
state_after: no goals
tactic: simp
Theorem: List.Nodup.filterMap
File: Mathlib/Data/List/Nodup.lean

Proof steps:
state_before: α : Type u
β : Type v
l l₁ l₂ : List α
r : α → α → Prop
a✝ b✝ : α
f : α → Option β
h : ∀ (a a' : α), ∀ b ∈ f a, b ∈ f a' → a = a'
a a' : α
n : a ≠ a'
b : β
bm : b ∈ f a
b' : β
bm' : b' ∈ f a'
e : b = b'
⊢ b' ∈ f a
state_after: α : Type u
β : Type v
l l₁ l₂ : List α
r : α → α → Prop
a✝ b✝ : α
f : α → Option β
h : ∀ (a a' : α), ∀ b ∈ f a, b ∈ f a' → a = a'
a a' : α
n : a ≠ a'
b : β
bm : b ∈ f a
b' : β
bm' : b' ∈ f a'
e : b = b'
⊢ b ∈ f a
tactic: rw [← e]
state_before: α : Type u
β : Type v
l l₁ l₂ : List α
r : α → α → Prop
a✝ b✝ : α
f : α → Option β
h : ∀ (a a' : α), ∀ b ∈ f a, b ∈ f a' → a = a'
a a' : α
n : a ≠ a'
b : β
bm : b ∈ f a
b' : β
bm' : b' ∈ f a'
e : b = b'
⊢ b ∈ f a
state_after: no goals
tactic: exact bm
Theorem: Asymptotics.superpolynomialDecay_zero
File: Mathlib/Analysis/Asymptotics/SuperpolynomialDecay.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
l✝ : Filter α
k✝ f g g' : α → β
inst✝¹ : TopologicalSpace β
inst✝ : CommSemiring β
l : Filter α
k : α → β
z : ℕ
⊢ Tendsto (fun a => k a ^ z * 0 a) l (𝓝 0)
state_after: no goals
tactic: simpa only [Pi.zero_apply, mul_zero] using tendsto_const_nhds
Theorem: AddCircle.exists_norm_nsmul_le
File: Mathlib/NumberTheory/WellApproximable.lean

Proof steps:
state_before: T : ℝ
hT : Fact (0 < T)
ξ : 𝕊
n : ℕ
hn : 0 < n
⊢ ∃ j ∈ Icc 1 n, ‖j • ξ‖ ≤ T / ↑(n + 1)
state_after: case hδ
T : ℝ
hT : Fact (0 < T)
ξ : 𝕊
n : ℕ
hn : 0 < n
⊢ volume univ ≤ (n + 1) • volume (closedBall 0 (T / ↑(n + 1) / 2))
tactic: apply NormedAddCommGroup.exists_norm_nsmul_le (μ := volume) ξ hn
state_before: case hδ
T : ℝ
hT : Fact (0 < T)
ξ : 𝕊
n : ℕ
hn : 0 < n
⊢ volume univ ≤ (n + 1) • volume (closedBall 0 (T / ↑(n + 1) / 2))
state_after: no goals
tactic: rw [AddCircle.measure_univ, volume_closedBall, ← ENNReal.ofReal_nsmul,
    mul_div_cancel₀ _ two_ne_zero, min_eq_right (div_le_self hT.out.le <| by simp), nsmul_eq_mul,
    mul_div_cancel₀ _ (Nat.cast_ne_zero.mpr n.succ_ne_zero)]
Theorem: toIcoMod_apply_left
File: Mathlib/Algebra/Order/ToIntervalMod.lean

Proof steps:
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a✝ b c : α
n : ℤ
a : α
⊢ toIcoMod hp a a = a
state_after: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a✝ b c : α
n : ℤ
a : α
⊢ a < a + p ∧ ∃ z, a = a + z • p
tactic: rw [toIcoMod_eq_iff hp, Set.left_mem_Ico]
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a✝ b c : α
n : ℤ
a : α
⊢ a < a + p ∧ ∃ z, a = a + z • p
state_after: no goals
tactic: exact ⟨lt_add_of_pos_right _ hp, 0, by simp⟩
Theorem: Cardinal.iSup_lt_lift_of_isRegular
File: Mathlib/SetTheory/Cardinal/Cofinality.lean

Proof steps:
state_before: α : Type u_1
r : α → α → Prop
ι : Type u
f : ι → Cardinal.{max u v}
c : Cardinal.{max u v}
hc : c.IsRegular
hι : lift.{v, u} #ι < c
⊢ lift.{v, u} #ι < c.ord.cof
state_after: no goals
tactic: rwa [hc.cof_eq]
Theorem: Set.image_const_add_Icc
File: Mathlib/Algebra/Order/Interval/Set/Monoid.lean

Proof steps:
state_before: M : Type u_1
inst✝¹ : OrderedCancelAddCommMonoid M
inst✝ : ExistsAddOfLE M
a b c d : M
⊢ (fun x => a + x) '' Icc b c = Icc (a + b) (a + c)
state_after: no goals
tactic: simp only [add_comm a, image_add_const_Icc]
Theorem: Matrix.transpose_transpose
File: Mathlib/Data/Matrix/Basic.lean

Proof steps:
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
M : Matrix m n α
⊢ Mᵀᵀ = M
state_after: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
M : Matrix m n α
i✝ : m
j✝ : n
⊢ Mᵀᵀ i✝ j✝ = M i✝ j✝
tactic: ext
state_before: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
M : Matrix m n α
i✝ : m
j✝ : n
⊢ Mᵀᵀ i✝ j✝ = M i✝ j✝
state_after: no goals
tactic: rfl
Theorem: Fin.append_right_nil
File: Mathlib/Data/Fin/Tuple/Basic.lean

Proof steps:
state_before: m n : ℕ
α✝ : Fin (n + 1) → Type u
x : α✝ 0
q : (i : Fin (n + 1)) → α✝ i
p : (i : Fin n) → α✝ i.succ
i : Fin n
y : α✝ i.succ
z : α✝ 0
α : Type u_1
u : Fin m → α
v : Fin n → α
hv : n = 0
⊢ m + n = m
state_after: no goals
tactic: rw [hv, Nat.add_zero]
state_before: m n : ℕ
α✝ : Fin (n + 1) → Type u
x : α✝ 0
q : (i : Fin (n + 1)) → α✝ i
p : (i : Fin n) → α✝ i.succ
i : Fin n
y : α✝ i.succ
z : α✝ 0
α : Type u_1
u : Fin m → α
v : Fin n → α
hv : n = 0
⊢ append u v = u ∘ cast ⋯
state_after: case refine_1
m n : ℕ
α✝ : Fin (n + 1) → Type u
x : α✝ 0
q : (i : Fin (n + 1)) → α✝ i
p : (i : Fin n) → α✝ i.succ
i : Fin n
y : α✝ i.succ
z : α✝ 0
α : Type u_1
u : Fin m → α
v : Fin n → α
hv : n = 0
l : Fin m
⊢ append u v (castAdd n l) = (u ∘ cast ⋯) (castAdd n l)

case refine_2
m n : ℕ
α✝ : Fin (n + 1) → Type u
x : α✝ 0
q : (i : Fin (n + 1)) → α✝ i
p : (i : Fin n) → α✝ i.succ
i : Fin n
y : α✝ i.succ
z : α✝ 0
α : Type u_1
u : Fin m → α
v : Fin n → α
hv : n = 0
r : Fin n
⊢ append u v (natAdd m r) = (u ∘ cast ⋯) (natAdd m r)
tactic: refine funext (Fin.addCases (fun l => ?_) fun r => ?_)