ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: isLowerSet_iff_Iic_subset
File: Mathlib/Order/UpperLower/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝¹ : Preorder α
inst✝ : Preorder β
s : Set α
p : α → Prop
a : α
⊢ IsLowerSet s ↔ ∀ ⦃a : α⦄, a ∈ s → Iic a ⊆ s
state_after: no goals
tactic: simp [IsLowerSet, subset_def, @forall_swap (_ ∈ s)]
Theorem: List.chain'_reverse
File: Mathlib/Data/List/Chain.lean

Proof steps:
state_before: α : Type u
β : Type v
R r : α → α → Prop
l l₁ l₂ : List α
a✝ b a : α
⊢ Chain' R [a].reverse ↔ Chain' (flip R) [a]
state_after: no goals
tactic: simp only [chain'_singleton, reverse_singleton]
state_before: α : Type u
β : Type v
R r : α → α → Prop
l✝ l₁ l₂ : List α
a✝ b✝ a b : α
l : List α
⊢ Chain' R (a :: b :: l).reverse ↔ Chain' (flip R) (a :: b :: l)
state_after: no goals
tactic: rw [chain'_cons, reverse_cons, reverse_cons, append_assoc, cons_append, nil_append,
      chain'_split, ← reverse_cons, @chain'_reverse (b :: l), and_comm, chain'_pair, flip]
Theorem: frontier_eq_inter_compl_interior
File: Mathlib/Topology/Basic.lean

Proof steps:
state_before: X : Type u
Y : Type v
ι : Sort w
α : Type u_1
β : Type u_2
x : X
s s₁ s₂ t : Set X
p p₁ p₂ : X → Prop
inst✝ : TopologicalSpace X
⊢ frontier s = (interior s)ᶜ ∩ (interior sᶜ)ᶜ
state_after: no goals
tactic: rw [← frontier_compl, ← closure_compl, ← diff_eq, closure_diff_interior]
Theorem: RingHom.not_one_mem_ker
File: Mathlib/RingTheory/Ideal/Maps.lean

Proof steps:
state_before: R : Type u
S : Type v
T : Type w
F : Type u_1
G : Type u_2
inst✝⁵ : Semiring R
inst✝⁴ : Semiring S
inst✝³ : Semiring T
inst✝² : FunLike F R S
rcf : RingHomClass F R S
inst✝¹ : FunLike G T S
rcg : RingHomClass G T S
f✝ : F
g : G
inst✝ : Nontrivial S
f : F
⊢ 1 ∉ ker f
state_after: R : Type u
S : Type v
T : Type w
F : Type u_1
G : Type u_2
inst✝⁵ : Semiring R
inst✝⁴ : Semiring S
inst✝³ : Semiring T
inst✝² : FunLike F R S
rcf : RingHomClass F R S
inst✝¹ : FunLike G T S
rcg : RingHomClass G T S
f✝ : F
g : G
inst✝ : Nontrivial S
f : F
⊢ ¬1 = 0
tactic: rw [mem_ker, map_one]
state_before: R : Type u
S : Type v
T : Type w
F : Type u_1
G : Type u_2
inst✝⁵ : Semiring R
inst✝⁴ : Semiring S
inst✝³ : Semiring T
inst✝² : FunLike F R S
rcf : RingHomClass F R S
inst✝¹ : FunLike G T S
rcg : RingHomClass G T S
f✝ : F
g : G
inst✝ : Nontrivial S
f : F
⊢ ¬1 = 0
state_after: no goals
tactic: exact one_ne_zero
Theorem: CompletePartialOrder.scottContinuous
File: Mathlib/Order/CompletePartialOrder.lean

Proof steps:
state_before: ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝¹ : CompletePartialOrder α
inst✝ : Preorder β
f✝ : ι → α
d : Set α
a : α
f : α → β
⊢ ScottContinuous f ↔ ∀ ⦃d : Set α⦄, d.Nonempty → DirectedOn (fun x x_1 => x ≤ x_1) d → IsLUB (f '' d) (f (sSup d))
state_after: ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝¹ : CompletePartialOrder α
inst✝ : Preorder β
f✝ : ι → α
d✝ : Set α
a✝ : α
f : α → β
h : ∀ ⦃d : Set α⦄, d.Nonempty → DirectedOn (fun x x_1 => x ≤ x_1) d → IsLUB (f '' d) (f (sSup d))
d : Set α
hne : d.Nonempty
hd : DirectedOn (fun x x_1 => x ≤ x_1) d
a : α
hda : IsLUB d a
⊢ IsLUB (f '' d) (f a)
tactic: refine ⟨fun h d hd₁ hd₂ ↦ h hd₁ hd₂ hd₂.isLUB_sSup, fun h d hne hd a hda ↦ ?_⟩
state_before: ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝¹ : CompletePartialOrder α
inst✝ : Preorder β
f✝ : ι → α
d✝ : Set α
a✝ : α
f : α → β
h : ∀ ⦃d : Set α⦄, d.Nonempty → DirectedOn (fun x x_1 => x ≤ x_1) d → IsLUB (f '' d) (f (sSup d))
d : Set α
hne : d.Nonempty
hd : DirectedOn (fun x x_1 => x ≤ x_1) d
a : α
hda : IsLUB d a
⊢ IsLUB (f '' d) (f a)
state_after: ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝¹ : CompletePartialOrder α
inst✝ : Preorder β
f✝ : ι → α
d✝ : Set α
a✝ : α
f : α → β
h : ∀ ⦃d : Set α⦄, d.Nonempty → DirectedOn (fun x x_1 => x ≤ x_1) d → IsLUB (f '' d) (f (sSup d))
d : Set α
hne : d.Nonempty
hd : DirectedOn (fun x x_1 => x ≤ x_1) d
a : α
hda : IsLUB d a
⊢ IsLUB (f '' d) (f (sSup d))
tactic: rw [hda.unique hd.isLUB_sSup]
state_before: ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝¹ : CompletePartialOrder α
inst✝ : Preorder β
f✝ : ι → α
d✝ : Set α
a✝ : α
f : α → β
h : ∀ ⦃d : Set α⦄, d.Nonempty → DirectedOn (fun x x_1 => x ≤ x_1) d → IsLUB (f '' d) (f (sSup d))
d : Set α
hne : d.Nonempty
hd : DirectedOn (fun x x_1 => x ≤ x_1) d
a : α
hda : IsLUB d a
⊢ IsLUB (f '' d) (f (sSup d))
state_after: no goals
tactic: exact h hne hd
Theorem: Subadditive.apply_mul_add_le
File: Mathlib/Analysis/Subadditive.lean

Proof steps:
state_before: u : ℕ → ℝ
h : Subadditive u
k n r : ℕ
⊢ u (k * n + r) ≤ ↑k * u n + u r
state_after: no goals
tactic: induction k with
  | zero => simp only [Nat.zero_eq, Nat.cast_zero, zero_mul, zero_add]; rfl
  | succ k IH =>
    calc
      u ((k + 1) * n + r) = u (n + (k * n + r)) := by congr 1; ring
      _ ≤ u n + u (k * n + r) := h _ _
      _ ≤ u n + (k * u n + u r) := add_le_add_left IH _
      _ = (k + 1 : ℕ) * u n + u r := by simp; ring
Theorem: AlgebraicGeometry.Spec_Γ_naturality
File: Mathlib/AlgebraicGeometry/Spec.lean

Proof steps:
state_before: R S : CommRingCat
f : R ⟶ S
⊢ f ≫ toSpecΓ S = toSpecΓ R ≫ Γ.map (Spec.toLocallyRingedSpace.map f.op).op
state_after: R S : CommRingCat
f : R ⟶ S
x : ↑R
x' : ↥(unop (op ⊤))
⊢ ↑((f ≫ toSpecΓ S) x) x' = ↑((toSpecΓ R ≫ Γ.map (Spec.toLocallyRingedSpace.map f.op).op) x) x'
tactic: refine RingHom.ext fun x => Subtype.ext <| funext fun x' => ?_
state_before: R S : CommRingCat
f : R ⟶ S
x : ↑R
x' : ↥(unop (op ⊤))
⊢ ↑((f ≫ toSpecΓ S) x) x' = ↑((toSpecΓ R ≫ Γ.map (Spec.toLocallyRingedSpace.map f.op).op) x) x'
state_after: R S : CommRingCat
f : R ⟶ S
x : ↑R
x' : ↥(unop (op ⊤))
⊢ ↑((toSpecΓ R ≫ Γ.map (Spec.toLocallyRingedSpace.map f.op).op) x) x' = ↑((f ≫ toSpecΓ S) x) x'
tactic: symm
state_before: R S : CommRingCat
f : R ⟶ S
x : ↑R
x' : ↥(unop (op ⊤))
⊢ ↑((toSpecΓ R ≫ Γ.map (Spec.toLocallyRingedSpace.map f.op).op) x) x' = ↑((f ≫ toSpecΓ S) x) x'
state_after: no goals
tactic: apply Localization.localRingHom_to_map
Theorem: Associated.pow_pow
File: Mathlib/Algebra/Associated/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : CommMonoid α
a b : α
n : ℕ
h : a ~ᵤ b
⊢ a ^ n ~ᵤ b ^ n
state_after: case zero
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : CommMonoid α
a b : α
h : a ~ᵤ b
⊢ a ^ 0 ~ᵤ b ^ 0

case succ
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : CommMonoid α
a b : α
h : a ~ᵤ b
n : ℕ
ih : a ^ n ~ᵤ b ^ n
⊢ a ^ (n + 1) ~ᵤ b ^ (n + 1)
tactic: induction' n with n ih
state_before: case succ
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : CommMonoid α
a b : α
h : a ~ᵤ b
n : ℕ
ih : a ^ n ~ᵤ b ^ n
⊢ a ^ (n + 1) ~ᵤ b ^ (n + 1)
state_after: no goals
tactic: convert h.mul_mul ih <;> rw [pow_succ']
Theorem: MeasureTheory.FinStronglyMeasurable.inf
File: Mathlib/MeasureTheory/Function/StronglyMeasurable/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m0 : MeasurableSpace α
μ : Measure α
f g : α → β
inst✝³ : TopologicalSpace β
inst✝² : Zero β
inst✝¹ : SemilatticeInf β
inst✝ : ContinuousInf β
hf : FinStronglyMeasurable f μ
hg : FinStronglyMeasurable g μ
⊢ FinStronglyMeasurable (f ⊓ g) μ
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m0 : MeasurableSpace α
μ : Measure α
f g : α → β
inst✝³ : TopologicalSpace β
inst✝² : Zero β
inst✝¹ : SemilatticeInf β
inst✝ : ContinuousInf β
hf : FinStronglyMeasurable f μ
hg : FinStronglyMeasurable g μ
n : ℕ
⊢ μ (support ↑((fun n => hf.approx n ⊓ hg.approx n) n)) < ⊤
tactic: refine
    ⟨fun n => hf.approx n ⊓ hg.approx n, fun n => ?_, fun x =>
      (hf.tendsto_approx x).inf_nhds (hg.tendsto_approx x)⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m0 : MeasurableSpace α
μ : Measure α
f g : α → β
inst✝³ : TopologicalSpace β
inst✝² : Zero β
inst✝¹ : SemilatticeInf β
inst✝ : ContinuousInf β
hf : FinStronglyMeasurable f μ
hg : FinStronglyMeasurable g μ
n : ℕ
⊢ μ (support ↑((fun n => hf.approx n ⊓ hg.approx n) n)) < ⊤
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m0 : MeasurableSpace α
μ : Measure α
f g : α → β
inst✝³ : TopologicalSpace β
inst✝² : Zero β
inst✝¹ : SemilatticeInf β
inst✝ : ContinuousInf β
hf : FinStronglyMeasurable f μ
hg : FinStronglyMeasurable g μ
n : ℕ
⊢ μ (support ↑(hf.approx n) ∪ support ↑(hg.approx n)) < ⊤
tactic: refine (measure_mono (support_inf _ _)).trans_lt ?_
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁴ : Countable ι
m0 : MeasurableSpace α
μ : Measure α
f g : α → β
inst✝³ : TopologicalSpace β
inst✝² : Zero β
inst✝¹ : SemilatticeInf β
inst✝ : ContinuousInf β
hf : FinStronglyMeasurable f μ
hg : FinStronglyMeasurable g μ
n : ℕ
⊢ μ (support ↑(hf.approx n) ∪ support ↑(hg.approx n)) < ⊤
state_after: no goals
tactic: exact measure_union_lt_top_iff.mpr ⟨hf.fin_support_approx n, hg.fin_support_approx n⟩
Theorem: ENNReal.tendsto_nhds_top_iff_nat
File: Mathlib/Topology/Instances/ENNReal.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
a b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
m : α → ℝ≥0∞
f : Filter α
h : ∀ (x : ℝ≥0), ∀ᶠ (a : α) in f, ↑x < m a
n : ℕ
⊢ ∀ᶠ (a : α) in f, ↑n < m a
state_after: no goals
tactic: simpa only [ENNReal.coe_natCast] using h n
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
a b c d : ℝ≥0∞
r p q : ℝ≥0
x✝ y✝ z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
m : α → ℝ≥0∞
f : Filter α
h : ∀ (n : ℕ), ∀ᶠ (a : α) in f, ↑n < m a
x : ℝ≥0
n : ℕ
hn : x < ↑n
y : α
⊢ ↑x < ↑n
state_after: no goals
tactic: rwa [← ENNReal.coe_natCast, coe_lt_coe]
Theorem: WeierstrassCurve.Projective.polynomialY_eq
File: Mathlib/AlgebraicGeometry/EllipticCurve/Projective.lean

Proof steps:
state_before: R : Type u
inst✝ : CommRing R
W : Projective R
⊢ W.polynomialY = C 2 * X 1 * X 2 + C W.a₁ * X 0 * X 2 + C W.a₃ * X 2 ^ 2
state_after: R : Type u
inst✝ : CommRing R
W : Projective R
⊢ (pderiv 1)
      (X 1 ^ 2 * X 2 + C W.a₁ * X 0 * X 1 * X 2 + C W.a₃ * X 1 * X 2 ^ 2 -
        (X 0 ^ 3 + C W.a₂ * X 0 ^ 2 * X 2 + C W.a₄ * X 0 * X 2 ^ 2 + C W.a₆ * X 2 ^ 3)) =
    C 2 * X 1 * X 2 + C W.a₁ * X 0 * X 2 + C W.a₃ * X 2 ^ 2
tactic: rw [polynomialY, polynomial]
state_before: R : Type u
inst✝ : CommRing R
W : Projective R
⊢ (pderiv 1)
      (X 1 ^ 2 * X 2 + C W.a₁ * X 0 * X 1 * X 2 + C W.a₃ * X 1 * X 2 ^ 2 -
        (X 0 ^ 3 + C W.a₂ * X 0 ^ 2 * X 2 + C W.a₄ * X 0 * X 2 ^ 2 + C W.a₆ * X 2 ^ 3)) =
    C 2 * X 1 * X 2 + C W.a₁ * X 0 * X 2 + C W.a₃ * X 2 ^ 2
state_after: R : Type u
inst✝ : CommRing R
W : Projective R
⊢ ↑2 * X 1 ^ (2 - 1) * 1 * X 2 + X 1 ^ 2 * 0 +
          (((0 * X 0 + C W.a₁ * 0) * X 1 + C W.a₁ * X 0 * 1) * X 2 + C W.a₁ * X 0 * X 1 * 0) +
        ((0 * X 1 + C W.a₃ * 1) * X 2 ^ 2 + C W.a₃ * X 1 * (↑2 * X 2 ^ (2 - 1) * 0)) -
      (↑3 * X 0 ^ (3 - 1) * 0 + ((0 * X 0 ^ 2 + C W.a₂ * (↑2 * X 0 ^ (2 - 1) * 0)) * X 2 + C W.a₂ * X 0 ^ 2 * 0) +
          ((0 * X 0 + C W.a₄ * 0) * X 2 ^ 2 + C W.a₄ * X 0 * (↑2 * X 2 ^ (2 - 1) * 0)) +
        (0 * X 2 ^ 3 + C W.a₆ * (↑3 * X 2 ^ (3 - 1) * 0))) =
    2 * X 1 * X 2 + C W.a₁ * X 0 * X 2 + C W.a₃ * X 2 ^ 2
tactic: pderiv_simp
state_before: R : Type u
inst✝ : CommRing R
W : Projective R
⊢ ↑2 * X 1 ^ (2 - 1) * 1 * X 2 + X 1 ^ 2 * 0 +
          (((0 * X 0 + C W.a₁ * 0) * X 1 + C W.a₁ * X 0 * 1) * X 2 + C W.a₁ * X 0 * X 1 * 0) +
        ((0 * X 1 + C W.a₃ * 1) * X 2 ^ 2 + C W.a₃ * X 1 * (↑2 * X 2 ^ (2 - 1) * 0)) -
      (↑3 * X 0 ^ (3 - 1) * 0 + ((0 * X 0 ^ 2 + C W.a₂ * (↑2 * X 0 ^ (2 - 1) * 0)) * X 2 + C W.a₂ * X 0 ^ 2 * 0) +
          ((0 * X 0 + C W.a₄ * 0) * X 2 ^ 2 + C W.a₄ * X 0 * (↑2 * X 2 ^ (2 - 1) * 0)) +
        (0 * X 2 ^ 3 + C W.a₆ * (↑3 * X 2 ^ (3 - 1) * 0))) =
    2 * X 1 * X 2 + C W.a₁ * X 0 * X 2 + C W.a₃ * X 2 ^ 2
state_after: no goals
tactic: ring1
Theorem: Perfect.closure_nhds_inter
File: Mathlib/Topology/Perfect.lean

Proof steps:
state_before: α : Type u_1
inst✝ : TopologicalSpace α
C U : Set α
hC : Perfect C
x : α
xC : x ∈ C
xU : x ∈ U
Uop : IsOpen U
⊢ Perfect (closure (U ∩ C)) ∧ (closure (U ∩ C)).Nonempty
state_after: case left
α : Type u_1
inst✝ : TopologicalSpace α
C U : Set α
hC : Perfect C
x : α
xC : x ∈ C
xU : x ∈ U
Uop : IsOpen U
⊢ Perfect (closure (U ∩ C))

case right
α : Type u_1
inst✝ : TopologicalSpace α
C U : Set α
hC : Perfect C
x : α
xC : x ∈ C
xU : x ∈ U
Uop : IsOpen U
⊢ (closure (U ∩ C)).Nonempty
tactic: constructor
state_before: case right
α : Type u_1
inst✝ : TopologicalSpace α
C U : Set α
hC : Perfect C
x : α
xC : x ∈ C
xU : x ∈ U
Uop : IsOpen U
⊢ (closure (U ∩ C)).Nonempty
state_after: case right.a
α : Type u_1
inst✝ : TopologicalSpace α
C U : Set α
hC : Perfect C
x : α
xC : x ∈ C
xU : x ∈ U
Uop : IsOpen U
⊢ (U ∩ C).Nonempty
tactic: apply Nonempty.closure
state_before: case right.a
α : Type u_1
inst✝ : TopologicalSpace α
C U : Set α
hC : Perfect C
x : α
xC : x ∈ C
xU : x ∈ U
Uop : IsOpen U
⊢ (U ∩ C).Nonempty
state_after: no goals
tactic: exact ⟨x, ⟨xU, xC⟩⟩
Theorem: MvPolynomial.vars_neg
File: Mathlib/Algebra/MvPolynomial/CommRing.lean

Proof steps:
state_before: R : Type u
S : Type v
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝ : CommRing R
p q : MvPolynomial σ R
⊢ (-p).vars = p.vars
state_after: no goals
tactic: simp [vars, degrees_neg]
Theorem: Field.DirectLimit.mul_inv_cancel
File: Mathlib/Algebra/DirectLimit.lean

Proof steps:
state_before: R : Type u
inst✝⁴ : Ring R
ι : Type v
inst✝³ : Preorder ι
G : ι → Type w
inst✝² : Nonempty ι
inst✝¹ : IsDirected ι fun x x_1 => x ≤ x_1
inst✝ : (i : ι) → Field (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
p : Ring.DirectLimit G f
hp : p ≠ 0
⊢ p * inv G f p = 1
state_after: no goals
tactic: rw [inv, dif_neg hp, Classical.choose_spec (DirectLimit.exists_inv G f hp)]
Theorem: PowerBasis.quotientEquivQuotientMinpolyMap_symm_apply
File: Mathlib/RingTheory/AdjoinRoot.lean

Proof steps:
state_before: R : Type u
S : Type v
K : Type w
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : Algebra R S
pb : PowerBasis R S
I : Ideal R
x : R
⊢ (aeval (root (minpoly R pb.gen))) (minpoly R pb.gen) = 0
state_after: no goals
tactic: rw [AdjoinRoot.aeval_eq, AdjoinRoot.mk_self]
state_before: R : Type u
S : Type v
K : Type w
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : Algebra R S
pb : PowerBasis R S
I : Ideal R
x : R
⊢ Ideal.map (of (minpoly R pb.gen)) I =
    Ideal.map (↑(equiv' (minpoly R pb.gen) pb ⋯ ⋯).symm.toRingEquiv) (Ideal.map (algebraMap R S) I)
state_after: no goals
tactic: rw [Ideal.map_map, AlgEquiv.toRingEquiv_eq_coe,
                      ← AlgEquiv.coe_ringHom_commutes, ← AdjoinRoot.algebraMap_eq,
                      AlgHom.comp_algebraMap]
state_before: R : Type u
S : Type v
K : Type w
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : Algebra R S
pb : PowerBasis R S
I : Ideal R
x : R
⊢ ((Ideal.map (algebraMap R S) I).quotientEquiv (Ideal.map (of (minpoly R pb.gen)) I)
        (equiv' (minpoly R pb.gen) pb ⋯ ⋯).symm.toRingEquiv ⋯)
      ((algebraMap R (S ⧸ Ideal.map (algebraMap R S) I)) x) =
    (algebraMap R (AdjoinRoot (minpoly R pb.gen) ⧸ Ideal.map (of (minpoly R pb.gen)) I)) x
state_after: no goals
tactic: rw [← Ideal.Quotient.mk_algebraMap, Ideal.quotientEquiv_apply,
                    RingHom.toFun_eq_coe, Ideal.quotientMap_mk, AlgEquiv.toRingEquiv_eq_coe,
                    RingEquiv.coe_toRingHom, AlgEquiv.coe_ringEquiv, AlgEquiv.commutes,
                    Quotient.mk_algebraMap]
Theorem: EReal.natCast_div_le
File: Mathlib/Data/Real/EReal.lean

Proof steps:
state_before: m n : ℕ
⊢ ↑(m / n) ≤ ↑m / ↑n
state_after: m n : ℕ
⊢ ↑↑(m / n) ≤ ↑m / ↑n
tactic: ← coe_coe_eq_natCast,
state_before: m n : ℕ
⊢ ↑↑(m / n) ≤ ↑m / ↑n
state_after: m n : ℕ
⊢ ↑↑(m / n) ≤ ↑↑m / ↑n
tactic: ← coe_coe_eq_natCast,
state_before: m n : ℕ
⊢ ↑↑(m / n) ≤ ↑↑m / ↑n
state_after: m n : ℕ
⊢ ↑↑(m / n) ≤ ↑↑m / ↑↑n
tactic: ← coe_coe_eq_natCast,
state_before: m n : ℕ
⊢ ↑↑(m / n) ≤ ↑↑m / ↑↑n
state_after: m n : ℕ
⊢ ↑↑(m / n) ≤ ↑(↑m / ↑n)
tactic: ← coe_div,
state_before: m n : ℕ
⊢ ↑↑(m / n) ≤ ↑(↑m / ↑n)
state_after: m n : ℕ
⊢ ↑(m / n) ≤ ↑m / ↑n
tactic: EReal.coe_le_coe_iff
state_before: m n : ℕ
⊢ ↑(m / n) ≤ ↑m / ↑n
state_after: no goals
tactic: exact Nat.cast_div_le
Theorem: div_mul_div_comm
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 : α
⊢ a / b * (c / d) = a * c / (b * d)
state_after: no goals
tactic: simp
Theorem: QuaternionGroup.card
File: Mathlib/GroupTheory/SpecificGroups/Quaternion.lean

Proof steps:
state_before: n : ℕ
inst✝ : NeZero n
⊢ Fintype.card (QuaternionGroup n) = 4 * n
state_after: n : ℕ
inst✝ : NeZero n
⊢ n + n + (n + n) = 4 * n
tactic: rw [← Fintype.card_eq.mpr ⟨fintypeHelper⟩, Fintype.card_sum, ZMod.card, two_mul]
state_before: n : ℕ
inst✝ : NeZero n
⊢ n + n + (n + n) = 4 * n
state_after: no goals
tactic: ring
Theorem: finrank_range_le_card
File: Mathlib/LinearAlgebra/Dimension/Constructions.lean

Proof steps:
state_before: R S : Type u
M : Type v
M' : Type v'
M₁ : Type v
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝⁹ : Ring R
inst✝⁸ : CommRing S
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup M₁
inst✝⁴ : Module R M
inst✝³ : Module R M'
inst✝² : Module R M₁
inst✝¹ : StrongRankCondition R
ι : Type u_2
inst✝ : Fintype ι
b : ι → M
⊢ Set.finrank R (range b) ≤ Fintype.card ι
state_after: no goals
tactic: classical
  refine (finrank_span_le_card _).trans ?_
  rw [Set.toFinset_range]
  exact Finset.card_image_le
Theorem: AdjoinRoot.lift_root
File: Mathlib/RingTheory/AdjoinRoot.lean

Proof steps:
state_before: R : Type u
S : Type v
K : Type w
inst✝¹ : CommRing R
f : R[X]
inst✝ : CommRing S
i : R →+* S
a : S
h : eval₂ i a f = 0
⊢ (lift i a h) (root f) = a
state_after: no goals
tactic: rw [root, lift_mk, eval₂_X]
Theorem: HNNExtension.NormalWord.unitsSMulGroup_snd
File: Mathlib/GroupTheory/HNNExtension.lean

Proof steps:
state_before: G : Type u_1
inst✝² : Group G
A B : Subgroup G
φ : ↥A ≃* ↥B
H : Type u_2
inst✝¹ : Group H
M : Type u_3
inst✝ : Monoid M
d : TransversalPair G A B
u : ℤˣ
g : G
⊢ (unitsSMulGroup φ d u g).2 = (⋯.equiv g).2
state_after: no goals
tactic: rcases Int.units_eq_one_or u with rfl | rfl <;> rfl
Theorem: Equiv.Perm.IsCycleOn.exists_pow_eq'
File: Mathlib/GroupTheory/Perm/Cycle/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
s t : Set α
a b x y : α
hs : s.Finite
hf : f.IsCycleOn s
ha : a ∈ s
hb : b ∈ s
⊢ ∃ n, (f ^ n) a = b
state_after: case intro
ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
t : Set α
a b x y : α
s : Finset α
hs : (↑s).Finite
hf : f.IsCycleOn ↑s
ha : a ∈ ↑s
hb : b ∈ ↑s
⊢ ∃ n, (f ^ n) a = b
tactic: lift s to Finset α using id hs
state_before: case intro
ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
t : Set α
a b x y : α
s : Finset α
hs : (↑s).Finite
hf : f.IsCycleOn ↑s
ha : a ∈ ↑s
hb : b ∈ ↑s
⊢ ∃ n, (f ^ n) a = b
state_after: case intro.intro.intro
ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
t : Set α
a b x y : α
s : Finset α
hs : (↑s).Finite
hf : f.IsCycleOn ↑s
ha : a ∈ ↑s
hb : b ∈ ↑s
n : ℕ
hn : (f ^ n) a = b
⊢ ∃ n, (f ^ n) a = b
tactic: obtain ⟨n, -, hn⟩ := hf.exists_pow_eq ha hb
state_before: case intro.intro.intro
ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
t : Set α
a b x y : α
s : Finset α
hs : (↑s).Finite
hf : f.IsCycleOn ↑s
ha : a ∈ ↑s
hb : b ∈ ↑s
n : ℕ
hn : (f ^ n) a = b
⊢ ∃ n, (f ^ n) a = b
state_after: no goals
tactic: exact ⟨n, hn⟩
Theorem: MeasureTheory.continuousOn_of_dominated
File: Mathlib/MeasureTheory/Integral/Bochner.lean

Proof steps:
state_before: α : Type u_1
E : Type u_2
F✝ : Type u_3
𝕜 : Type u_4
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace ℝ E
hE : CompleteSpace E
inst✝⁹ : NontriviallyNormedField 𝕜
inst✝⁸ : NormedSpace 𝕜 E
inst✝⁷ : SMulCommClass ℝ 𝕜 E
inst✝⁶ : NormedAddCommGroup F✝
inst✝⁵ : NormedSpace ℝ F✝
inst✝⁴ : CompleteSpace F✝
G : Type u_5
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace ℝ G
f g : α → E
m : MeasurableSpace α
μ : Measure α
X : Type u_6
inst✝¹ : TopologicalSpace X
inst✝ : FirstCountableTopology X
F : X → α → G
bound : α → ℝ
s : Set X
hF_meas : ∀ x ∈ s, AEStronglyMeasurable (F x) μ
h_bound : ∀ x ∈ s, ∀ᵐ (a : α) ∂μ, ‖F x a‖ ≤ bound a
bound_integrable : Integrable bound μ
h_cont : ∀ᵐ (a : α) ∂μ, ContinuousOn (fun x => F x a) s
⊢ ContinuousOn (fun x => ∫ (a : α), F x a ∂μ) s
state_after: case pos
α : Type u_1
E : Type u_2
F✝ : Type u_3
𝕜 : Type u_4
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace ℝ E
hE : CompleteSpace E
inst✝⁹ : NontriviallyNormedField 𝕜
inst✝⁸ : NormedSpace 𝕜 E
inst✝⁷ : SMulCommClass ℝ 𝕜 E
inst✝⁶ : NormedAddCommGroup F✝
inst✝⁵ : NormedSpace ℝ F✝
inst✝⁴ : CompleteSpace F✝
G : Type u_5
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace ℝ G
f g : α → E
m : MeasurableSpace α
μ : Measure α
X : Type u_6
inst✝¹ : TopologicalSpace X
inst✝ : FirstCountableTopology X
F : X → α → G
bound : α → ℝ
s : Set X
hF_meas : ∀ x ∈ s, AEStronglyMeasurable (F x) μ
h_bound : ∀ x ∈ s, ∀ᵐ (a : α) ∂μ, ‖F x a‖ ≤ bound a
bound_integrable : Integrable bound μ
h_cont : ∀ᵐ (a : α) ∂μ, ContinuousOn (fun x => F x a) s
hG : CompleteSpace G
⊢ ContinuousOn (fun x => ∫ (a : α), F x a ∂μ) s

case neg
α : Type u_1
E : Type u_2
F✝ : Type u_3
𝕜 : Type u_4
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace ℝ E
hE : CompleteSpace E
inst✝⁹ : NontriviallyNormedField 𝕜
inst✝⁸ : NormedSpace 𝕜 E
inst✝⁷ : SMulCommClass ℝ 𝕜 E
inst✝⁶ : NormedAddCommGroup F✝
inst✝⁵ : NormedSpace ℝ F✝
inst✝⁴ : CompleteSpace F✝
G : Type u_5
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace ℝ G
f g : α → E
m : MeasurableSpace α
μ : Measure α
X : Type u_6
inst✝¹ : TopologicalSpace X
inst✝ : FirstCountableTopology X
F : X → α → G
bound : α → ℝ
s : Set X
hF_meas : ∀ x ∈ s, AEStronglyMeasurable (F x) μ
h_bound : ∀ x ∈ s, ∀ᵐ (a : α) ∂μ, ‖F x a‖ ≤ bound a
bound_integrable : Integrable bound μ
h_cont : ∀ᵐ (a : α) ∂μ, ContinuousOn (fun x => F x a) s
hG : ¬CompleteSpace G
⊢ ContinuousOn (fun x => ∫ (a : α), F x a ∂μ) s
tactic: by_cases hG : CompleteSpace G
Theorem: AddSubmonoid.LocalizationMap.lift_injective_iff
File: Mathlib/GroupTheory/MonoidLocalization/Basic.lean

Proof steps:
state_before: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
f : S.LocalizationMap N
g : M →* P
hg : ∀ (y : ↥S), IsUnit (g ↑y)
⊢ Injective ⇑(f.lift hg) ↔ ∀ (x y : M), f.toMap x = f.toMap y ↔ g x = g y
state_after: case mp
M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
f : S.LocalizationMap N
g : M →* P
hg : ∀ (y : ↥S), IsUnit (g ↑y)
⊢ Injective ⇑(f.lift hg) → ∀ (x y : M), f.toMap x = f.toMap y ↔ g x = g y

case mpr
M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
f : S.LocalizationMap N
g : M →* P
hg : ∀ (y : ↥S), IsUnit (g ↑y)
⊢ (∀ (x y : M), f.toMap x = f.toMap y ↔ g x = g y) → Injective ⇑(f.lift hg)
tactic: constructor
Theorem: Polynomial.ext_iff
File: Mathlib/Algebra/Polynomial/Basic.lean

Proof steps:
state_before: R : Type u
a b : R
m n : ℕ
inst✝ : Semiring R
p✝ q✝ p q : R[X]
⊢ p = q ↔ ∀ (n : ℕ), p.coeff n = q.coeff n
state_after: case ofFinsupp
R : Type u
a b : R
m n : ℕ
inst✝ : Semiring R
p q✝ q : R[X]
f : ℕ →₀ R
⊢ { toFinsupp := f } = q ↔ ∀ (n : ℕ), { toFinsupp := f }.coeff n = q.coeff n
tactic: rcases p with ⟨f : ℕ →₀ R⟩
state_before: case ofFinsupp
R : Type u
a b : R
m n : ℕ
inst✝ : Semiring R
p q✝ q : R[X]
f : ℕ →₀ R
⊢ { toFinsupp := f } = q ↔ ∀ (n : ℕ), { toFinsupp := f }.coeff n = q.coeff n
state_after: case ofFinsupp.ofFinsupp
R : Type u
a b : R
m n : ℕ
inst✝ : Semiring R
p q : R[X]
f g : ℕ →₀ R
⊢ { toFinsupp := f } = { toFinsupp := g } ↔ ∀ (n : ℕ), { toFinsupp := f }.coeff n = { toFinsupp := g }.coeff n
tactic: rcases q with ⟨g : ℕ →₀ R⟩
state_before: case ofFinsupp.ofFinsupp
R : Type u
a b : R
m n : ℕ
inst✝ : Semiring R
p q : R[X]
f g : ℕ →₀ R
⊢ { toFinsupp := f } = { toFinsupp := g } ↔ ∀ (n : ℕ), { toFinsupp := f }.coeff n = { toFinsupp := g }.coeff n
state_after: no goals
tactic: simpa [coeff] using DFunLike.ext_iff (f := f) (g := g)