ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Affine.Simplex.circumcenter_eq_centroid
File: Mathlib/Geometry/Euclidean/Circumcenter.lean

Proof steps:
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Simplex ℝ P 1
⊢ s.circumcenter = centroid ℝ univ s.points
state_after: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Simplex ℝ P 1
hr :
  Set.univ.Pairwise fun i j =>
    dist (s.points i) (centroid ℝ univ s.points) = dist (s.points j) (centroid ℝ univ s.points)
⊢ s.circumcenter = centroid ℝ univ s.points
tactic: have hr :
    Set.Pairwise Set.univ fun i j : Fin 2 =>
      dist (s.points i) (Finset.univ.centroid ℝ s.points) =
        dist (s.points j) (Finset.univ.centroid ℝ s.points) := by
    intro i hi j hj hij
    rw [Finset.centroid_pair_fin, dist_eq_norm_vsub V (s.points i),
      dist_eq_norm_vsub V (s.points j), vsub_vadd_eq_vsub_sub, vsub_vadd_eq_vsub_sub, ←
      one_smul ℝ (s.points i -ᵥ s.points 0), ← one_smul ℝ (s.points j -ᵥ s.points 0)]
    fin_cases i <;> fin_cases j <;> simp [-one_smul, ← sub_smul] <;> norm_num
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Simplex ℝ P 1
hr :
  Set.univ.Pairwise fun i j =>
    dist (s.points i) (centroid ℝ univ s.points) = dist (s.points j) (centroid ℝ univ s.points)
⊢ s.circumcenter = centroid ℝ univ s.points
state_after: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Simplex ℝ P 1
hr : ∃ z, ∀ x ∈ Set.univ, dist (s.points x) (centroid ℝ univ s.points) = z
⊢ s.circumcenter = centroid ℝ univ s.points
tactic: rw [Set.pairwise_eq_iff_exists_eq] at hr
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Simplex ℝ P 1
hr : ∃ z, ∀ x ∈ Set.univ, dist (s.points x) (centroid ℝ univ s.points) = z
⊢ s.circumcenter = centroid ℝ univ s.points
state_after: case intro
V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Simplex ℝ P 1
r : ℝ
hr : ∀ x ∈ Set.univ, dist (s.points x) (centroid ℝ univ s.points) = r
⊢ s.circumcenter = centroid ℝ univ s.points
tactic: cases' hr with r hr
state_before: case intro
V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Simplex ℝ P 1
r : ℝ
hr : ∀ x ∈ Set.univ, dist (s.points x) (centroid ℝ univ s.points) = r
⊢ s.circumcenter = centroid ℝ univ s.points
state_after: no goals
tactic: exact
    (s.eq_circumcenter_of_dist_eq
        (centroid_mem_affineSpan_of_card_eq_add_one ℝ _ (Finset.card_fin 2)) fun i =>
        hr i (Set.mem_univ _)).symm
Theorem: Submodule.map_comap_subtype
File: Mathlib/Algebra/Module/Submodule/Map.lean

Proof steps:
state_before: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
R₃ : Type u_4
M : Type u_5
M₁ : Type u_6
M₂ : Type u_7
M₃ : Type u_8
inst✝¹¹ : Semiring R
inst✝¹⁰ : Semiring R₂
inst✝⁹ : Semiring R₃
inst✝⁸ : AddCommMonoid M
inst✝⁷ : AddCommMonoid M₂
inst✝⁶ : AddCommMonoid M₃
inst✝⁵ : Module R M
inst✝⁴ : Module R₂ M₂
inst✝³ : Module R₃ M₃
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
inst✝² : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
p p' : Submodule R M
q q' : Submodule R₂ M₂
x✝ : M
F : Type u_9
inst✝¹ : FunLike F M M₂
inst✝ : SemilinearMapClass F σ₁₂ M M₂
x : M
⊢ x ∈ map p.subtype (comap p.subtype p') → x ∈ p ⊓ p'
state_after: case intro.mk.intro
R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
R₃ : Type u_4
M : Type u_5
M₁ : Type u_6
M₂ : Type u_7
M₃ : Type u_8
inst✝¹¹ : Semiring R
inst✝¹⁰ : Semiring R₂
inst✝⁹ : Semiring R₃
inst✝⁸ : AddCommMonoid M
inst✝⁷ : AddCommMonoid M₂
inst✝⁶ : AddCommMonoid M₃
inst✝⁵ : Module R M
inst✝⁴ : Module R₂ M₂
inst✝³ : Module R₃ M₃
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
inst✝² : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
p p' : Submodule R M
q q' : Submodule R₂ M₂
x : M
F : Type u_9
inst✝¹ : FunLike F M M₂
inst✝ : SemilinearMapClass F σ₁₂ M M₂
val✝ : M
h₁ : val✝ ∈ p
h₂ : ⟨val✝, h₁⟩ ∈ ↑(comap p.subtype p')
⊢ p.subtype ⟨val✝, h₁⟩ ∈ p ⊓ p'
tactic: rintro ⟨⟨_, h₁⟩, h₂, rfl⟩
state_before: case intro.mk.intro
R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
R₃ : Type u_4
M : Type u_5
M₁ : Type u_6
M₂ : Type u_7
M₃ : Type u_8
inst✝¹¹ : Semiring R
inst✝¹⁰ : Semiring R₂
inst✝⁹ : Semiring R₃
inst✝⁸ : AddCommMonoid M
inst✝⁷ : AddCommMonoid M₂
inst✝⁶ : AddCommMonoid M₃
inst✝⁵ : Module R M
inst✝⁴ : Module R₂ M₂
inst✝³ : Module R₃ M₃
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
inst✝² : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
p p' : Submodule R M
q q' : Submodule R₂ M₂
x : M
F : Type u_9
inst✝¹ : FunLike F M M₂
inst✝ : SemilinearMapClass F σ₁₂ M M₂
val✝ : M
h₁ : val✝ ∈ p
h₂ : ⟨val✝, h₁⟩ ∈ ↑(comap p.subtype p')
⊢ p.subtype ⟨val✝, h₁⟩ ∈ p ⊓ p'
state_after: no goals
tactic: exact ⟨h₁, h₂⟩
Theorem: MvQPF.Fix.rec_eq
File: Mathlib/Data/QPF/Multivariate/Constructions/Fix.lean

Proof steps:
state_before: n : ℕ
F : TypeVec.{u} (n + 1) → Type u
q : MvQPF F
α : TypeVec.{u} n
β : Type u
g : F (α ::: β) → β
x : F (α ::: Fix F α)
⊢ rec g (mk x) = g ((TypeVec.id ::: rec g) <$$> x)
state_after: n : ℕ
F : TypeVec.{u} (n + 1) → Type u
q : MvQPF F
α : TypeVec.{u} n
β : Type u
g : F (α ::: β) → β
x : F (α ::: Fix F α)
this : recF g ∘ fixToW = rec g
⊢ rec g (mk x) = g ((TypeVec.id ::: rec g) <$$> x)
tactic: have : recF g ∘ fixToW = Fix.rec g := by
    apply funext
    apply Quotient.ind
    intro x
    apply recF_eq_of_wEquiv
    apply wrepr_equiv
state_before: n : ℕ
F : TypeVec.{u} (n + 1) → Type u
q : MvQPF F
α : TypeVec.{u} n
β : Type u
g : F (α ::: β) → β
x : F (α ::: Fix F α)
this : recF g ∘ fixToW = rec g
⊢ rec g (mk x) = g ((TypeVec.id ::: rec g) <$$> x)
state_after: n : ℕ
F : TypeVec.{u} (n + 1) → Type u
q : MvQPF F
α : TypeVec.{u} n
β : Type u
g : F (α ::: β) → β
x : F (α ::: Fix F α)
this : recF g ∘ fixToW = rec g
⊢ recF g ((P F).wMk' ((TypeVec.id ::: fixToW) <$$> repr x)) = g ((TypeVec.id ::: rec g) <$$> x)
tactic: conv =>
    lhs
    rw [Fix.rec, Fix.mk]
    dsimp
state_before: n : ℕ
F : TypeVec.{u} (n + 1) → Type u
q : MvQPF F
α : TypeVec.{u} n
β : Type u
g : F (α ::: β) → β
x : F (α ::: Fix F α)
this : recF g ∘ fixToW = rec g
⊢ recF g ((P F).wMk' ((TypeVec.id ::: fixToW) <$$> repr x)) = g ((TypeVec.id ::: rec g) <$$> x)
state_after: case mk
n : ℕ
F : TypeVec.{u} (n + 1) → Type u
q : MvQPF F
α : TypeVec.{u} n
β : Type u
g : F (α ::: β) → β
x : F (α ::: Fix F α)
this : recF g ∘ fixToW = rec g
a : (P F).A
f : (P F).B a ⟹ α ::: Fix F α
h : repr x = ⟨a, f⟩
⊢ recF g ((P F).wMk' ((TypeVec.id ::: fixToW) <$$> ⟨a, f⟩)) = g ((TypeVec.id ::: rec g) <$$> x)
tactic: cases' h : repr x with a f
state_before: case mk
n : ℕ
F : TypeVec.{u} (n + 1) → Type u
q : MvQPF F
α : TypeVec.{u} n
β : Type u
g : F (α ::: β) → β
x : F (α ::: Fix F α)
this : recF g ∘ fixToW = rec g
a : (P F).A
f : (P F).B a ⟹ α ::: Fix F α
h : repr x = ⟨a, f⟩
⊢ recF g ((P F).wMk' ((TypeVec.id ::: fixToW) <$$> ⟨a, f⟩)) = g ((TypeVec.id ::: rec g) <$$> x)
state_after: case mk
n : ℕ
F : TypeVec.{u} (n + 1) → Type u
q : MvQPF F
α : TypeVec.{u} n
β : Type u
g : F (α ::: β) → β
x : F (α ::: Fix F α)
this : recF g ∘ fixToW = rec g
a : (P F).A
f : (P F).B a ⟹ α ::: Fix F α
h : repr x = ⟨a, f⟩
⊢ g (abs ((TypeVec.id ::: recF g) <$$> (TypeVec.id ::: fixToW) <$$> ⟨a, f⟩)) = g ((TypeVec.id ::: rec g) <$$> x)
tactic: rw [MvPFunctor.map_eq, recF_eq', ← MvPFunctor.map_eq, MvPFunctor.wDest'_wMk']
state_before: case mk
n : ℕ
F : TypeVec.{u} (n + 1) → Type u
q : MvQPF F
α : TypeVec.{u} n
β : Type u
g : F (α ::: β) → β
x : F (α ::: Fix F α)
this : recF g ∘ fixToW = rec g
a : (P F).A
f : (P F).B a ⟹ α ::: Fix F α
h : repr x = ⟨a, f⟩
⊢ g (abs ((TypeVec.id ::: recF g) <$$> (TypeVec.id ::: fixToW) <$$> ⟨a, f⟩)) = g ((TypeVec.id ::: rec g) <$$> x)
state_after: no goals
tactic: rw [← MvPFunctor.comp_map, abs_map, ← h, abs_repr, ← appendFun_comp, id_comp, this]
Theorem: Filter.range_mem_map
File: Mathlib/Order/Filter/Basic.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
l f : Filter α
m : α → β
m' : β → γ
s : Set α
t : Set β
⊢ range m ∈ map m f
state_after: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
l f : Filter α
m : α → β
m' : β → γ
s : Set α
t : Set β
⊢ m '' univ ∈ map m f
tactic: rw [← image_univ]
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
l f : Filter α
m : α → β
m' : β → γ
s : Set α
t : Set β
⊢ m '' univ ∈ map m f
state_after: no goals
tactic: exact image_mem_map univ_mem
Theorem: Polynomial.splits_id_iff_splits
File: Mathlib/Algebra/Polynomial/Splits.lean

Proof steps:
state_before: R : Type u_1
F : Type u
K : Type v
L : Type w
inst✝² : CommRing K
inst✝¹ : Field L
inst✝ : Field F
i : K →+* L
f : K[X]
⊢ Splits (RingHom.id L) (map i f) ↔ Splits i f
state_after: no goals
tactic: rw [splits_map_iff, RingHom.id_comp]
Theorem: CategoryTheory.NonPreadditiveAbelian.add_neg_self
File: Mathlib/CategoryTheory/Abelian/NonPreadditive.lean

Proof steps:
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : NonPreadditiveAbelian C
X Y : C
a : X ⟶ Y
⊢ a + -a = 0
state_after: no goals
tactic: rw [add_neg, sub_self]
Theorem: abs_min_sub_min_le_max
File: Mathlib/Algebra/Order/Group/MinMax.lean

Proof steps:
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
a✝ b✝ c✝ a b c d : α
⊢ |min a b - min c d| ≤ max |a - c| |b - d|
state_after: no goals
tactic: simpa only [max_neg_neg, neg_sub_neg, abs_sub_comm] using
    abs_max_sub_max_le_max (-a) (-b) (-c) (-d)
Theorem: _private.Mathlib.Topology.Instances.EReal.0.EReal.limsup_add_le_of_lt
File: Mathlib/Topology/Instances/EReal.lean

Proof steps:
state_before: α✝ : Type u_1
inst✝ : TopologicalSpace α✝
α : Type u_2
f : Filter α
u v : α → EReal
a b : EReal
ha : limsup u f < a
hb : limsup v f < b
⊢ limsup (u + v) f ≤ a + b
state_after: case inl
α✝ : Type u_1
inst✝ : TopologicalSpace α✝
α : Type u_2
u v : α → EReal
a b : EReal
ha : limsup u ⊥ < a
hb : limsup v ⊥ < b
⊢ limsup (u + v) ⊥ ≤ a + b

case inr
α✝ : Type u_1
inst✝ : TopologicalSpace α✝
α : Type u_2
f : Filter α
u v : α → EReal
a b : EReal
ha : limsup u f < a
hb : limsup v f < b
h✝ : f.NeBot
⊢ limsup (u + v) f ≤ a + b
tactic: rcases eq_or_neBot f with (rfl | _)
state_before: case inr
α✝ : Type u_1
inst✝ : TopologicalSpace α✝
α : Type u_2
f : Filter α
u v : α → EReal
a b : EReal
ha : limsup u f < a
hb : limsup v f < b
h✝ : f.NeBot
⊢ limsup (u + v) f ≤ a + b
state_after: case inr
α✝ : Type u_1
inst✝ : TopologicalSpace α✝
α : Type u_2
f : Filter α
u v : α → EReal
a b : EReal
ha : limsup u f < a
hb : limsup v f < b
h✝ : f.NeBot
⊢ limsup (u + v) f ≤ limsup (fun x => a + b) f
tactic: rw [← @limsup_const EReal α _ f _ (a + b)]
state_before: case inr
α✝ : Type u_1
inst✝ : TopologicalSpace α✝
α : Type u_2
f : Filter α
u v : α → EReal
a b : EReal
ha : limsup u f < a
hb : limsup v f < b
h✝ : f.NeBot
⊢ limsup (u + v) f ≤ limsup (fun x => a + b) f
state_after: α✝ : Type u_1
inst✝ : TopologicalSpace α✝
α : Type u_2
f : Filter α
u v : α → EReal
a b : EReal
ha : limsup u f < a
hb : limsup v f < b
h✝ : f.NeBot
⊢ ∀ (x : α), u x < a ∧ v x < b → (u + v) x ≤ a + b
tactic: apply limsup_le_limsup (Eventually.mp (Eventually.and (eventually_lt_of_limsup_lt ha)
    (eventually_lt_of_limsup_lt hb)) (eventually_of_forall _))
state_before: α✝ : Type u_1
inst✝ : TopologicalSpace α✝
α : Type u_2
f : Filter α
u v : α → EReal
a b : EReal
ha : limsup u f < a
hb : limsup v f < b
h✝ : f.NeBot
⊢ ∀ (x : α), u x < a ∧ v x < b → (u + v) x ≤ a + b
state_after: α✝ : Type u_1
inst✝ : TopologicalSpace α✝
α : Type u_2
f : Filter α
u v : α → EReal
a b : EReal
ha : limsup u f < a
hb : limsup v f < b
h✝ : f.NeBot
⊢ ∀ (x : α), u x < a → v x < b → u x + v x ≤ a + b
tactic: simp only [Pi.add_apply, and_imp]
state_before: α✝ : Type u_1
inst✝ : TopologicalSpace α✝
α : Type u_2
f : Filter α
u v : α → EReal
a b : EReal
ha : limsup u f < a
hb : limsup v f < b
h✝ : f.NeBot
⊢ ∀ (x : α), u x < a → v x < b → u x + v x ≤ a + b
state_after: α✝ : Type u_1
inst✝ : TopologicalSpace α✝
α : Type u_2
f : Filter α
u v : α → EReal
a b : EReal
ha : limsup u f < a
hb : limsup v f < b
h✝ : f.NeBot
x : α
⊢ u x < a → v x < b → u x + v x ≤ a + b
tactic: intro x
state_before: α✝ : Type u_1
inst✝ : TopologicalSpace α✝
α : Type u_2
f : Filter α
u v : α → EReal
a b : EReal
ha : limsup u f < a
hb : limsup v f < b
h✝ : f.NeBot
x : α
⊢ u x < a → v x < b → u x + v x ≤ a + b
state_after: no goals
tactic: exact fun ux_lt_a vx_lt_b ↦ add_le_add (le_of_lt ux_lt_a) (le_of_lt vx_lt_b)
Theorem: UniqueSums.of_addHom
File: Mathlib/Algebra/Group/UniqueProds.lean

Proof steps:
state_before: G : Type u
H : Type v
inst✝² : Mul G
inst✝¹ : Mul H
f : H →ₙ* G
hf : ∀ ⦃a b c d : H⦄, a * b = c * d → f a = f c ∧ f b = f d → a = c ∧ b = d
inst✝ : UniqueProds G
A B : Finset H
A0 : A.Nonempty
B0 : B.Nonempty
⊢ ∃ a0 ∈ A, ∃ b0 ∈ B, UniqueMul A B a0 b0
state_after: no goals
tactic: classical
    obtain ⟨a0, ha0, b0, hb0, h⟩ := uniqueMul_of_nonempty (A0.image f) (B0.image f)
    obtain ⟨a', ha', rfl⟩ := mem_image.mp ha0
    obtain ⟨b', hb', rfl⟩ := mem_image.mp hb0
    exact ⟨a', ha', b', hb', UniqueMul.of_mulHom_image f hf h⟩
Theorem: Cardinal.mk_multiset_of_isEmpty
File: Mathlib/SetTheory/Cardinal/Ordinal.lean

Proof steps:
state_before: α : Type u
inst✝ : IsEmpty α
⊢ #(α →₀ ℕ) = 1
state_after: no goals
tactic: simp
Theorem: Cardinal.mk_real
File: Mathlib/Data/Real/Cardinality.lean

Proof steps:
state_before: c : ℝ
f g : ℕ → Bool
n : ℕ
⊢ #ℝ = 𝔠
state_after: case a
c : ℝ
f g : ℕ → Bool
n : ℕ
⊢ #ℝ ≤ 𝔠

case a
c : ℝ
f g : ℕ → Bool
n : ℕ
⊢ 𝔠 ≤ #ℝ
tactic: apply le_antisymm
Theorem: lowerSemicontinuousWithinAt_univ_iff
File: Mathlib/Topology/Semicontinuous.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : TopologicalSpace α
β : Type u_2
inst✝ : Preorder β
f g : α → β
x : α
s t : Set α
y z : β
⊢ LowerSemicontinuousWithinAt f univ x ↔ LowerSemicontinuousAt f x
state_after: no goals
tactic: simp [LowerSemicontinuousWithinAt, LowerSemicontinuousAt, nhdsWithin_univ]
Theorem: Nat.le_add_pred_of_pos
File: Mathlib/Data/Nat/Defs.lean

Proof steps:
state_before: a✝ b c d m n k : ℕ
p q : ℕ → Prop
a : ℕ
hb : b ≠ 0
⊢ a ≤ b + (a - 1)
state_after: no goals
tactic: omega
Theorem: MeasureTheory.Measure.rnDeriv_withDensity_left_of_absolutelyContinuous
File: Mathlib/MeasureTheory/Decomposition/RadonNikodym.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝¹ μ ν✝ : Measure α
f : α → ℝ≥0∞
ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
hμν : μ ≪ ν
hf : AEMeasurable f ν
⊢ (μ.withDensity f).rnDeriv ν =ᶠ[ae ν] fun x => f x * μ.rnDeriv ν x
state_after: case refine_1
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝¹ μ ν✝ : Measure α
f : α → ℝ≥0∞
ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
hμν : μ ≪ ν
hf : AEMeasurable f ν
⊢ AEMeasurable (fun x => f x * μ.rnDeriv ν x) ν

case refine_2
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝¹ μ ν✝ : Measure α
f : α → ℝ≥0∞
ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
hμν : μ ≪ ν
hf : AEMeasurable f ν
⊢ μ.withDensity f = 0 + ν.withDensity fun x => f x * μ.rnDeriv ν x
tactic: refine (Measure.eq_rnDeriv₀ ?_ Measure.MutuallySingular.zero_left ?_).symm
Theorem: OreLocalization.smul_one_smul
File: Mathlib/RingTheory/OreLocalization/Basic.lean

Proof steps:
state_before: R : Type u_1
R' : Type u_2
M : Type u_3
X : Type u_4
inst✝¹² : Monoid M
S : Submonoid M
inst✝¹¹ : OreSet S
inst✝¹⁰ : MulAction M X
inst✝⁹ : SMul R X
inst✝⁸ : SMul R M
inst✝⁷ : IsScalarTower R M M
inst✝⁶ : IsScalarTower R M X
inst✝⁵ : SMul R' X
inst✝⁴ : SMul R' M
inst✝³ : IsScalarTower R' M M
inst✝² : IsScalarTower R' M X
inst✝¹ : SMul R R'
inst✝ : IsScalarTower R R' M
r : R
x : OreLocalization S X
⊢ (r • 1) • x = r • x
state_after: case c
R : Type u_1
R' : Type u_2
M : Type u_3
X : Type u_4
inst✝¹² : Monoid M
S : Submonoid M
inst✝¹¹ : OreSet S
inst✝¹⁰ : MulAction M X
inst✝⁹ : SMul R X
inst✝⁸ : SMul R M
inst✝⁷ : IsScalarTower R M M
inst✝⁶ : IsScalarTower R M X
inst✝⁵ : SMul R' X
inst✝⁴ : SMul R' M
inst✝³ : IsScalarTower R' M M
inst✝² : IsScalarTower R' M X
inst✝¹ : SMul R R'
inst✝ : IsScalarTower R R' M
r : R
r' : X
s : ↥S
⊢ (r • 1) • (r' /ₒ s) = r • (r' /ₒ s)
tactic: induction' x using OreLocalization.ind with r' s
state_before: case c
R : Type u_1
R' : Type u_2
M : Type u_3
X : Type u_4
inst✝¹² : Monoid M
S : Submonoid M
inst✝¹¹ : OreSet S
inst✝¹⁰ : MulAction M X
inst✝⁹ : SMul R X
inst✝⁸ : SMul R M
inst✝⁷ : IsScalarTower R M M
inst✝⁶ : IsScalarTower R M X
inst✝⁵ : SMul R' X
inst✝⁴ : SMul R' M
inst✝³ : IsScalarTower R' M M
inst✝² : IsScalarTower R' M X
inst✝¹ : SMul R R'
inst✝ : IsScalarTower R R' M
r : R
r' : X
s : ↥S
⊢ (r • 1) • (r' /ₒ s) = r • (r' /ₒ s)
state_after: no goals
tactic: simp only [smul_oreDiv, smul_eq_mul, mul_one]
Theorem: MulAction.smul_mem_fixedBy_iff_mem_fixedBy
File: Mathlib/GroupTheory/GroupAction/FixedPoints.lean

Proof steps:
state_before: α : Type u_1
G : Type u_2
inst✝³ : Group G
inst✝² : MulAction G α
M : Type u_3
inst✝¹ : Monoid M
inst✝ : MulAction M α
a : α
g : G
⊢ g • a ∈ fixedBy α g ↔ a ∈ fixedBy α g
state_after: α : Type u_1
G : Type u_2
inst✝³ : Group G
inst✝² : MulAction G α
M : Type u_3
inst✝¹ : Monoid M
inst✝ : MulAction M α
a : α
g : G
⊢ g • a = a ↔ a ∈ fixedBy α g
tactic: rw [mem_fixedBy, smul_left_cancel_iff]
state_before: α : Type u_1
G : Type u_2
inst✝³ : Group G
inst✝² : MulAction G α
M : Type u_3
inst✝¹ : Monoid M
inst✝ : MulAction M α
a : α
g : G
⊢ g • a = a ↔ a ∈ fixedBy α g
state_after: no goals
tactic: rfl
Theorem: Topology.IsLower.isClosed_upperClosure
File: Mathlib/Topology/Order/LowerUpperTopology.lean

Proof steps:
state_before: α : Type u_1
β : ?m.5263
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : IsLower α
s : Set α
h : s.Finite
⊢ IsClosed ↑(upperClosure s)
state_after: α : Type u_1
β : ?m.5263
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : IsLower α
s : Set α
h : s.Finite
⊢ IsClosed (⋃ i ∈ s, ↑(UpperSet.Ici i))
tactic: simp only [← UpperSet.iInf_Ici, UpperSet.coe_iInf]
state_before: α : Type u_1
β : ?m.5263
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : IsLower α
s : Set α
h : s.Finite
⊢ IsClosed (⋃ i ∈ s, ↑(UpperSet.Ici i))
state_after: no goals
tactic: exact h.isClosed_biUnion fun _ _ => isClosed_Ici
Theorem: Multiset.fold_union_inter
File: Mathlib/Data/Multiset/Fold.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
op : α → α → α
hc : Std.Commutative op
ha : Std.Associative op
inst✝ : DecidableEq α
s₁ s₂ : Multiset α
b₁ b₂ : α
⊢ op (fold op b₁ (s₁ ∪ s₂)) (fold op b₂ (s₁ ∩ s₂)) = op (fold op b₁ s₁) (fold op b₂ s₂)
state_after: no goals
tactic: rw [← fold_add op, union_add_inter, fold_add op]
Theorem: CategoryTheory.Presheaf.isLocallyInjective_iff_of_fac
File: Mathlib/CategoryTheory/Sites/LocallyInjective.lean

Proof steps:
state_before: C : Type u
inst✝³ : Category.{v, u} C
D : Type u'
inst✝² : Category.{v', u'} D
inst✝¹ : ConcreteCategory D
J : GrothendieckTopology C
F₁ F₂ F₃ : Cᵒᵖ ⥤ D
φ : F₁ ⟶ F₂
ψ : F₂ ⟶ F₃
φψ : F₁ ⟶ F₃
fac : φ ≫ ψ = φψ
inst✝ : IsLocallyInjective J ψ
⊢ IsLocallyInjective J φψ ↔ IsLocallyInjective J φ
state_after: case mp
C : Type u
inst✝³ : Category.{v, u} C
D : Type u'
inst✝² : Category.{v', u'} D
inst✝¹ : ConcreteCategory D
J : GrothendieckTopology C
F₁ F₂ F₃ : Cᵒᵖ ⥤ D
φ : F₁ ⟶ F₂
ψ : F₂ ⟶ F₃
φψ : F₁ ⟶ F₃
fac : φ ≫ ψ = φψ
inst✝ : IsLocallyInjective J ψ
⊢ IsLocallyInjective J φψ → IsLocallyInjective J φ

case mpr
C : Type u
inst✝³ : Category.{v, u} C
D : Type u'
inst✝² : Category.{v', u'} D
inst✝¹ : ConcreteCategory D
J : GrothendieckTopology C
F₁ F₂ F₃ : Cᵒᵖ ⥤ D
φ : F₁ ⟶ F₂
ψ : F₂ ⟶ F₃
φψ : F₁ ⟶ F₃
fac : φ ≫ ψ = φψ
inst✝ : IsLocallyInjective J ψ
⊢ IsLocallyInjective J φ → IsLocallyInjective J φψ
tactic: constructor
Theorem: deriv_inv
File: Mathlib/Analysis/Calculus/Deriv/Inv.lean

Proof steps:
state_before: 𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type v
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type w
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L : Filter 𝕜
⊢ deriv (fun x => x⁻¹) x = -(x ^ 2)⁻¹
state_after: case inl
𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type v
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type w
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
s t : Set 𝕜
L : Filter 𝕜
⊢ deriv (fun x => x⁻¹) 0 = -(0 ^ 2)⁻¹

case inr
𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type v
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type w
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L : Filter 𝕜
hne : x ≠ 0
⊢ deriv (fun x => x⁻¹) x = -(x ^ 2)⁻¹
tactic: rcases eq_or_ne x 0 with (rfl | hne)
Theorem: affineSpan_insert_eq_affineSpan
File: Mathlib/LinearAlgebra/AffineSpace/AffineSubspace.lean

Proof steps:
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
ι : Type u_4
p : P
ps : Set P
h : p ∈ affineSpan k ps
⊢ affineSpan k (insert p ps) = affineSpan k ps
state_after: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
ι : Type u_4
p : P
ps : Set P
h : p ∈ ↑(affineSpan k ps)
⊢ affineSpan k (insert p ps) = affineSpan k ps
tactic: rw [← mem_coe] at h
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
ι : Type u_4
p : P
ps : Set P
h : p ∈ ↑(affineSpan k ps)
⊢ affineSpan k (insert p ps) = affineSpan k ps
state_after: no goals
tactic: rw [← affineSpan_insert_affineSpan, Set.insert_eq_of_mem h, affineSpan_coe]
Theorem: EuclideanGeometry.orthogonalProjection_vsub_orthogonalProjection
File: Mathlib/Geometry/Euclidean/Basic.lean

Proof steps:
state_before: V : Type u_1
P : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : InnerProductSpace ℝ V
inst✝³ : MetricSpace P
inst✝² : NormedAddTorsor V P
s : AffineSubspace ℝ P
inst✝¹ : Nonempty ↥s
inst✝ : HasOrthogonalProjection s.direction
p : P
⊢ (_root_.orthogonalProjection s.direction) (p -ᵥ ↑((orthogonalProjection s) p)) = 0
state_after: case hv
V : Type u_1
P : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : InnerProductSpace ℝ V
inst✝³ : MetricSpace P
inst✝² : NormedAddTorsor V P
s : AffineSubspace ℝ P
inst✝¹ : Nonempty ↥s
inst✝ : HasOrthogonalProjection s.direction
p : P
⊢ p -ᵥ ↑((orthogonalProjection s) p) ∈ s.directionᗮ
tactic: apply orthogonalProjection_mem_subspace_orthogonalComplement_eq_zero
state_before: case hv
V : Type u_1
P : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : InnerProductSpace ℝ V
inst✝³ : MetricSpace P
inst✝² : NormedAddTorsor V P
s : AffineSubspace ℝ P
inst✝¹ : Nonempty ↥s
inst✝ : HasOrthogonalProjection s.direction
p : P
⊢ p -ᵥ ↑((orthogonalProjection s) p) ∈ s.directionᗮ
state_after: case hv
V : Type u_1
P : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : InnerProductSpace ℝ V
inst✝³ : MetricSpace P
inst✝² : NormedAddTorsor V P
s : AffineSubspace ℝ P
inst✝¹ : Nonempty ↥s
inst✝ : HasOrthogonalProjection s.direction
p : P
c : V
hc : c ∈ s.direction
⊢ ⟪c, p -ᵥ ↑((orthogonalProjection s) p)⟫_ℝ = 0
tactic: intro c hc
state_before: case hv
V : Type u_1
P : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : InnerProductSpace ℝ V
inst✝³ : MetricSpace P
inst✝² : NormedAddTorsor V P
s : AffineSubspace ℝ P
inst✝¹ : Nonempty ↥s
inst✝ : HasOrthogonalProjection s.direction
p : P
c : V
hc : c ∈ s.direction
⊢ ⟪c, p -ᵥ ↑((orthogonalProjection s) p)⟫_ℝ = 0
state_after: no goals
tactic: rw [← neg_vsub_eq_vsub_rev, inner_neg_right,
    orthogonalProjection_vsub_mem_direction_orthogonal s p c hc, neg_zero]