1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: BoxIntegral.Prepartition.restrict_split
File: Mathlib/Analysis/BoxIntegral/Partition/Split.lean

tactic: refine ((isPartitionSplit J i x).restrict h).eq_of_boxes_subset ?_
state_before: ι : Type u_1
M : Type u_2
n : ℕ
I J : Box ι
i✝ : ι
x✝ : ℝ
h : I ≤ J
i : ι
x : ℝ
⊢ (split J i x).restrict I = split I i x
state_after: ι : Type u_1
M : Type u_2
n : ℕ
I J : Box ι
i✝ : ι
x✝ : ℝ
h : I ≤ J
i : ι
x : ℝ
⊢ ((split J i x).restrict I).boxes ⊆ (split I i x).boxes

tactic: simp only [Finset.subset_iff, mem_boxes, mem_restrict', exists_prop, mem_split_iff']
state_before: ι : Type u_1
M : Type u_2
n : ℕ
I J : Box ι
i✝ : ι
x✝ : ℝ
h : I ≤ J
i : ι
x : ℝ
⊢ ((split J i x).restrict I).boxes ⊆ (split I i x).boxes
state_after: ι : Type u_1
M : Type u_2
n : ℕ
I J : Box ι
i✝ : ι
x✝ : ℝ
h : I ≤ J
i : ι
x : ℝ
⊢ ∀ ⦃x_1 : Box ι⦄,
    (∃ J', (↑J' = ↑J ∩ {y | y i ≤ x} ∨ ↑J' = ↑J ∩ {y | x < y i}) ∧ ↑x_1 = ↑I ∩ ↑J') →
      ↑x_1 = ↑I ∩ {y | y i ≤ x} ∨ ↑x_1 = ↑I ∩ {y | x < y i}

tactic: have : ∀ s, (I ∩ s : Set (ι → ℝ)) ⊆ J := fun s => inter_subset_left.trans h
state_before: ι : Type u_1
M : Type u_2
n : ℕ
I J : Box ι
i✝ : ι
x✝ : ℝ
h : I ≤ J
i : ι
x : ℝ
⊢ ∀ ⦃x_1 : Box ι⦄,
    (∃ J', (↑J' = ↑J ∩ {y | y i ≤ x} ∨ ↑J' = ↑J ∩ {y | x < y i}) ∧ ↑x_1 = ↑I ∩ ↑J') →
      ↑x_1 = ↑I ∩ {y | y i ≤ x} ∨ ↑x_1 = ↑I ∩ {y | x < y i}
state_after: ι : Type u_1
M : Type u_2
n : ℕ
I J : Box ι
i✝ : ι
x✝ : ℝ
h : I ≤ J
i : ι
x : ℝ
this : ∀ (s : Set (ι → ℝ)), ↑I ∩ s ⊆ ↑J
⊢ ∀ ⦃x_1 : Box ι⦄,
    (∃ J', (↑J' = ↑J ∩ {y | y i ≤ x} ∨ ↑J' = ↑J ∩ {y | x < y i}) ∧ ↑x_1 = ↑I ∩ ↑J') →
      ↑x_1 = ↑I ∩ {y | y i ≤ x} ∨ ↑x_1 = ↑I ∩ {y | x < y i}

tactic: rintro J₁ ⟨J₂, H₂ | H₂, H₁⟩ <;> [left; right] <;>
  simp [H₁, H₂, inter_left_comm (I : Set (ι → ℝ)), this]
state_before: ι : Type u_1
M : Type u_2
n : ℕ
I J : Box ι
i✝ : ι
x✝ : ℝ
h : I ≤ J
i : ι
x : ℝ
this : ∀ (s : Set (ι → ℝ)), ↑I ∩ s ⊆ ↑J
⊢ ∀ ⦃x_1 : Box ι⦄,
    (∃ J', (↑J' = ↑J ∩ {y | y i ≤ x} ∨ ↑J' = ↑J ∩ {y | x < y i}) ∧ ↑x_1 = ↑I ∩ ↑J') →
      ↑x_1 = ↑I ∩ {y | y i ≤ x} ∨ ↑x_1 = ↑I ∩ {y | x < y i}
state_after: no goals
Theorem: entrywise_sup_norm_bound_of_unitary
File: Mathlib/Analysis/NormedSpace/Star/Matrix.lean

tactic: conv => rw [pi_norm_le_iff_of_nonneg zero_le_one]
  intro
  rw [pi_norm_le_iff_of_nonneg zero_le_one]
state_before: 𝕜 : Type u_1
m : Type u_2
n : Type u_3
l : Type u_4
E : Type u_5
inst✝² : RCLike 𝕜
inst✝¹ : Fintype n
inst✝ : DecidableEq n
U : Matrix n n 𝕜
hU : U ∈ Matrix.unitaryGroup n 𝕜
⊢ ‖U‖ ≤ 1
state_after: 𝕜 : Type u_1
m : Type u_2
n : Type u_3
l : Type u_4
E : Type u_5
inst✝² : RCLike 𝕜
inst✝¹ : Fintype n
inst✝ : DecidableEq n
U : Matrix n n 𝕜
hU : U ∈ Matrix.unitaryGroup n 𝕜
⊢ ∀ (i i_1 : n), ‖U i i_1‖ ≤ 1

tactic: intros
state_before: 𝕜 : Type u_1
m : Type u_2
n : Type u_3
l : Type u_4
E : Type u_5
inst✝² : RCLike 𝕜
inst✝¹ : Fintype n
inst✝ : DecidableEq n
U : Matrix n n 𝕜
hU : U ∈ Matrix.unitaryGroup n 𝕜
⊢ ∀ (i i_1 : n), ‖U i i_1‖ ≤ 1
state_after: 𝕜 : Type u_1
m : Type u_2
n : Type u_3
l : Type u_4
E : Type u_5
inst✝² : RCLike 𝕜
inst✝¹ : Fintype n
inst✝ : DecidableEq n
U : Matrix n n 𝕜
hU : U ∈ Matrix.unitaryGroup n 𝕜
i✝¹ i✝ : n
⊢ ‖U i✝¹ i✝‖ ≤ 1

tactic: exact entry_norm_bound_of_unitary hU _ _
state_before: 𝕜 : Type u_1
m : Type u_2
n : Type u_3
l : Type u_4
E : Type u_5
inst✝² : RCLike 𝕜
inst✝¹ : Fintype n
inst✝ : DecidableEq n
U : Matrix n n 𝕜
hU : U ∈ Matrix.unitaryGroup n 𝕜
i✝¹ i✝ : n
⊢ ‖U i✝¹ i✝‖ ≤ 1
state_after: no goals
Theorem: Filter.HasBasis.eq_iInf
File: Mathlib/Order/Filter/Bases.lean

tactic: simpa only [iInf_true] using h.eq_biInf
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
l l' : Filter α
p : ι → Prop
s : ι → Set α
t : Set α
i : ι
p' : ι' → Prop
s' : ι' → Set α
i' : ι'
h : l.HasBasis (fun x => True) s
⊢ l = ⨅ i, 𝓟 (s i)
state_after: no goals
Theorem: Module.Flat.exists_factorization_of_apply_eq_zero_of_free
File: Mathlib/RingTheory/Flat/EquationalCriterion.lean

tactic: exact ((tfae_equational_criterion R M).out 0 5 rfl rfl).mp ‹Flat R M› h
state_before: R M : Type u
inst✝⁷ : CommRing R
inst✝⁶ : AddCommGroup M
inst✝⁵ : Module R M
inst✝⁴ : Flat R M
N : Type u
inst✝³ : AddCommGroup N
inst✝² : Module R N
inst✝¹ : Free R N
inst✝ : Finite R N
f : N
x : N →ₗ[R] M
h : x f = 0
⊢ ∃ κ x_1 a y, x = y ∘ₗ a ∧ a f = 0
state_after: no goals
Theorem: Finmap.dlookup_list_toFinmap
File: Mathlib/Data/Finmap.lean

tactic: rw [List.toFinmap, lookup_toFinmap, lookup_to_alist]
state_before: α : Type u
β : α → Type v
inst✝ : DecidableEq α
a : α
s : List (Sigma β)
⊢ lookup a s.toFinmap = dlookup a s
state_after: no goals
Theorem: Finset.periodic_prod
File: Mathlib/Algebra/Periodic.lean

tactic: simpa [-Periodic]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f✝ g : α → β
c c₁ c₂ x : α
inst✝¹ : Add α
inst✝ : CommMonoid β
ι : Type u_4
f : ι → α → β
s : Finset ι
hs : ∀ i ∈ s, Periodic (f i) c
⊢ ∀ f_1 ∈ List.map f s.toList, Periodic f_1 c
state_after: no goals
Theorem: FiberwiseLinear.source_trans_partialHomeomorph
File: Mathlib/Geometry/Manifold/VectorBundle/FiberwiseLinear.lean

tactic: dsimp only [FiberwiseLinear.partialHomeomorph]
state_before: 𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝³ : TopologicalSpace B
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
φ φ' : B → F ≃L[𝕜] F
U U' : Set B
hU : IsOpen U
hφ : ContinuousOn (fun x => ↑(φ x)) U
h2φ : ContinuousOn (fun x => ↑(φ x).symm) U
hU' : IsOpen U'
hφ' : ContinuousOn (fun x => ↑(φ' x)) U'
h2φ' : ContinuousOn (fun x => ↑(φ' x).symm) U'
⊢ (partialHomeomorph φ hU hφ h2φ ≫ₕ partialHomeomorph φ' hU' hφ' h2φ').source = (U ∩ U') ×ˢ univ
state_after: 𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝³ : TopologicalSpace B
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
φ φ' : B → F ≃L[𝕜] F
U U' : Set B
hU : IsOpen U
hφ : ContinuousOn (fun x => ↑(φ x)) U
h2φ : ContinuousOn (fun x => ↑(φ x).symm) U
hU' : IsOpen U'
hφ' : ContinuousOn (fun x => ↑(φ' x)) U'
h2φ' : ContinuousOn (fun x => ↑(φ' x).symm) U'
⊢ ({ toFun := fun x => (x.1, (φ x.1) x.2), invFun := fun x => (x.1, (φ x.1).symm x.2), source := U ×ˢ univ,
          target := U ×ˢ univ, map_source' := ⋯, map_target' := ⋯, left_inv' := ⋯, right_inv' := ⋯, open_source := ⋯,
          open_target := ⋯, continuousOn_toFun := ⋯, continuousOn_invFun := ⋯ } ≫ₕ
        { toFun := fun x => (x.1, (φ' x.1) x.2), invFun := fun x => (x.1, (φ' x.1).symm x.2), source := U' ×ˢ univ,
          target := U' ×ˢ univ, map_source' := ⋯, map_target' := ⋯, left_inv' := ⋯, right_inv' := ⋯, open_source := ⋯,
          open_target := ⋯, continuousOn_toFun := ⋯, continuousOn_invFun := ⋯ }).source =
    (U ∩ U') ×ˢ univ

tactic: mfld_set_tac
state_before: 𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝³ : TopologicalSpace B
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
φ φ' : B → F ≃L[𝕜] F
U U' : Set B
hU : IsOpen U
hφ : ContinuousOn (fun x => ↑(φ x)) U
h2φ : ContinuousOn (fun x => ↑(φ x).symm) U
hU' : IsOpen U'
hφ' : ContinuousOn (fun x => ↑(φ' x)) U'
h2φ' : ContinuousOn (fun x => ↑(φ' x).symm) U'
⊢ ({ toFun := fun x => (x.1, (φ x.1) x.2), invFun := fun x => (x.1, (φ x.1).symm x.2), source := U ×ˢ univ,
          target := U ×ˢ univ, map_source' := ⋯, map_target' := ⋯, left_inv' := ⋯, right_inv' := ⋯, open_source := ⋯,
          open_target := ⋯, continuousOn_toFun := ⋯, continuousOn_invFun := ⋯ } ≫ₕ
        { toFun := fun x => (x.1, (φ' x.1) x.2), invFun := fun x => (x.1, (φ' x.1).symm x.2), source := U' ×ˢ univ,
          target := U' ×ˢ univ, map_source' := ⋯, map_target' := ⋯, left_inv' := ⋯, right_inv' := ⋯, open_source := ⋯,
          open_target := ⋯, continuousOn_toFun := ⋯, continuousOn_invFun := ⋯ }).source =
    (U ∩ U') ×ˢ univ
state_after: no goals
Theorem: PowerSeries.coeff_mul_X_pow'
File: Mathlib/RingTheory/PowerSeries/Basic.lean

tactic: split_ifs with h
state_before: R : Type u_1
inst✝ : Semiring R
p : R⟦X⟧
n d : ℕ
⊢ (coeff R d) (p * X ^ n) = if n ≤ d then (coeff R (d - n)) p else 0
state_after: case pos
R : Type u_1
inst✝ : Semiring R
p : R⟦X⟧
n d : ℕ
h : n ≤ d
⊢ (coeff R d) (p * X ^ n) = (coeff R (d - n)) p

case neg
R : Type u_1
inst✝ : Semiring R
p : R⟦X⟧
n d : ℕ
h : ¬n ≤ d
⊢ (coeff R d) (p * X ^ n) = 0

tactic: rw [← tsub_add_cancel_of_le h, coeff_mul_X_pow, add_tsub_cancel_right]
state_before: case pos
R : Type u_1
inst✝ : Semiring R
p : R⟦X⟧
n d : ℕ
h : n ≤ d
⊢ (coeff R d) (p * X ^ n) = (coeff R (d - n)) p
state_after: no goals

tactic: refine (coeff_mul _ _ _).trans (Finset.sum_eq_zero fun x hx => ?_)
state_before: case neg
R : Type u_1
inst✝ : Semiring R
p : R⟦X⟧
n d : ℕ
h : ¬n ≤ d
⊢ (coeff R d) (p * X ^ n) = 0
state_after: case neg
R : Type u_1
inst✝ : Semiring R
p : R⟦X⟧
n d : ℕ
h : ¬n ≤ d
x : ℕ × ℕ
hx : x ∈ antidiagonal d
⊢ (coeff R x.1) p * (coeff R x.2) (X ^ n) = 0

tactic: rw [coeff_X_pow, if_neg, mul_zero]
state_before: case neg
R : Type u_1
inst✝ : Semiring R
p : R⟦X⟧
n d : ℕ
h : ¬n ≤ d
x : ℕ × ℕ
hx : x ∈ antidiagonal d
⊢ (coeff R x.1) p * (coeff R x.2) (X ^ n) = 0
state_after: case neg.hnc
R : Type u_1
inst✝ : Semiring R
p : R⟦X⟧
n d : ℕ
h : ¬n ≤ d
x : ℕ × ℕ
hx : x ∈ antidiagonal d
⊢ ¬x.2 = n

tactic: exact ((le_of_add_le_right (mem_antidiagonal.mp hx).le).trans_lt <| not_le.mp h).ne
state_before: case neg.hnc
R : Type u_1
inst✝ : Semiring R
p : R⟦X⟧
n d : ℕ
h : ¬n ≤ d
x : ℕ × ℕ
hx : x ∈ antidiagonal d
⊢ ¬x.2 = n
state_after: no goals
Theorem: Irreducible.addVal_pow
File: Mathlib/RingTheory/DiscreteValuationRing/Basic.lean

tactic: rw [addVal_pow, addVal_uniformizer h, nsmul_one]
state_before: R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : DiscreteValuationRing R
ϖ : R
h : Irreducible ϖ
n : ℕ
⊢ (addVal R) (ϖ ^ n) = ↑n
state_after: no goals
Theorem: SimplicialObject.Splitting.hom_ext
File: Mathlib/AlgebraicTopology/SplitSimplicialObject.lean

tactic: ext Δ
state_before: C : Type u_1
inst✝ : Category.{u_2, u_1} C
X Y : SimplicialObject C
s : Splitting X
f g : X ⟶ Y
h : ∀ (n : ℕ), s.φ f n = s.φ g n
⊢ f = g
state_after: case h
C : Type u_1
inst✝ : Category.{u_2, u_1} C
X Y : SimplicialObject C
s : Splitting X
f g : X ⟶ Y
h : ∀ (n : ℕ), s.φ f n = s.φ g n
Δ : SimplexCategoryᵒᵖ
⊢ f.app Δ = g.app Δ

tactic: apply s.hom_ext'
state_before: case h
C : Type u_1
inst✝ : Category.{u_2, u_1} C
X Y : SimplicialObject C
s : Splitting X
f g : X ⟶ Y
h : ∀ (n : ℕ), s.φ f n = s.φ g n
Δ : SimplexCategoryᵒᵖ
⊢ f.app Δ = g.app Δ
state_after: case h.h
C : Type u_1
inst✝ : Category.{u_2, u_1} C
X Y : SimplicialObject C
s : Splitting X
f g : X ⟶ Y
h : ∀ (n : ℕ), s.φ f n = s.φ g n
Δ : SimplexCategoryᵒᵖ
⊢ ∀ (A : IndexSet Δ), (s.cofan Δ).inj A ≫ f.app Δ = (s.cofan Δ).inj A ≫ g.app Δ

tactic: intro A
state_before: case h.h
C : Type u_1
inst✝ : Category.{u_2, u_1} C
X Y : SimplicialObject C
s : Splitting X
f g : X ⟶ Y
h : ∀ (n : ℕ), s.φ f n = s.φ g n
Δ : SimplexCategoryᵒᵖ
⊢ ∀ (A : IndexSet Δ), (s.cofan Δ).inj A ≫ f.app Δ = (s.cofan Δ).inj A ≫ g.app Δ
state_after: case h.h
C : Type u_1
inst✝ : Category.{u_2, u_1} C
X Y : SimplicialObject C
s : Splitting X
f g : X ⟶ Y
h : ∀ (n : ℕ), s.φ f n = s.φ g n
Δ : SimplexCategoryᵒᵖ
A : IndexSet Δ
⊢ (s.cofan Δ).inj A ≫ f.app Δ = (s.cofan Δ).inj A ≫ g.app Δ

tactic: induction' Δ using Opposite.rec with Δ
state_before: case h.h
C : Type u_1
inst✝ : Category.{u_2, u_1} C
X Y : SimplicialObject C
s : Splitting X
f g : X ⟶ Y
h : ∀ (n : ℕ), s.φ f n = s.φ g n
Δ : SimplexCategoryᵒᵖ
A : IndexSet Δ
⊢ (s.cofan Δ).inj A ≫ f.app Δ = (s.cofan Δ).inj A ≫ g.app Δ
state_after: case h.h.op
C : Type u_1
inst✝ : Category.{u_2, u_1} C
X Y : SimplicialObject C
s : Splitting X
f g : X ⟶ Y
h : ∀ (n : ℕ), s.φ f n = s.φ g n
Δ : SimplexCategory
A : IndexSet { unop := Δ }
⊢ (s.cofan { unop := Δ }).inj A ≫ f.app { unop := Δ } = (s.cofan { unop := Δ }).inj A ≫ g.app { unop := Δ }

tactic: induction' Δ using SimplexCategory.rec with n
state_before: case h.h.op
C : Type u_1
inst✝ : Category.{u_2, u_1} C
X Y : SimplicialObject C
s : Splitting X
f g : X ⟶ Y
h : ∀ (n : ℕ), s.φ f n = s.φ g n
Δ : SimplexCategory
A : IndexSet { unop := Δ }
⊢ (s.cofan { unop := Δ }).inj A ≫ f.app { unop := Δ } = (s.cofan { unop := Δ }).inj A ≫ g.app { unop := Δ }
state_after: case h.h.op.h
C : Type u_1
inst✝ : Category.{u_2, u_1} C
X Y : SimplicialObject C
s : Splitting X
f g : X ⟶ Y
h : ∀ (n : ℕ), s.φ f n = s.φ g n
n : ℕ
A : IndexSet { unop := [n] }
⊢ (s.cofan { unop := [n] }).inj A ≫ f.app { unop := [n] } = (s.cofan { unop := [n] }).inj A ≫ g.app { unop := [n] }

tactic: simp only [s.cofan_inj_comp_app, h]
state_before: case h.h.op.h
C : Type u_1
inst✝ : Category.{u_2, u_1} C
X Y : SimplicialObject C
s : Splitting X
f g : X ⟶ Y
h : ∀ (n : ℕ), s.φ f n = s.φ g n
n : ℕ
A : IndexSet { unop := [n] }
⊢ (s.cofan { unop := [n] }).inj A ≫ f.app { unop := [n] } = (s.cofan { unop := [n] }).inj A ≫ g.app { unop := [n] }
state_after: no goals
Theorem: Nat.coprime_mul_left_add_left
File: Mathlib/Data/Nat/GCD/Basic.lean

tactic: rw [Coprime, Coprime, gcd_mul_left_add_left]
state_before: m n k : ℕ
⊢ (n * k + m).Coprime n ↔ m.Coprime n
state_after: no goals
Theorem: RCLike.nonneg_iff
File: Mathlib/Analysis/RCLike/Basic.lean

tactic: simpa only [map_zero, eq_comm] using le_iff_re_im (z := 0) (w := z)
state_before: K : Type u_1
E : Type u_2
inst✝ : RCLike K
z w : K
⊢ 0 ≤ z ↔ 0 ≤ re z ∧ im z = 0
state_after: no goals
Theorem: Topology.IsLower.isOpen_iff_generate_Ici_compl
File: Mathlib/Topology/Order/LowerUpperTopology.lean

tactic: rfl
state_before: α : Type u_1
β : ?m.4516
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : IsLower α
s : Set α
⊢ IsOpen s ↔ GenerateOpen {t | ∃ a, (Ici a)ᶜ = t} s
state_after: no goals
Theorem: mul_not_mem_of_orderOf_eq_two
File: Mathlib/GroupTheory/Exponent.lean

tactic: simp only [Set.mem_singleton_iff, Set.mem_insert_iff, mul_right_eq_self, mul_left_eq_self,
  mul_eq_one_iff_eq_inv, inv_eq_self_of_orderOf_eq_two hy, not_or]
state_before: G : Type u
inst✝ : Group G
x y : G
hx : orderOf x = 2
hy : orderOf y = 2
hxy : x ≠ y
⊢ x * y ∉ {x, y, 1}
state_after: G : Type u
inst✝ : Group G
x y : G
hx : orderOf x = 2
hy : orderOf y = 2
hxy : x ≠ y
⊢ ¬y = 1 ∧ ¬x = 1 ∧ ¬x = y

tactic: aesop
state_before: G : Type u
inst✝ : Group G
x y : G
hx : orderOf x = 2
hy : orderOf y = 2
hxy : x ≠ y
⊢ ¬y = 1 ∧ ¬x = 1 ∧ ¬x = y
state_after: no goals
Theorem: Set.toFinset_subset_toFinset
File: Mathlib/Data/Fintype/Basic.lean

tactic: simp [Finset.subset_iff, Set.subset_def]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s t : Set α
inst✝¹ : Fintype ↑s
inst✝ : Fintype ↑t
⊢ s.toFinset ⊆ t.toFinset ↔ s ⊆ t
state_after: no goals
Theorem: edist_vadd_vadd_le
File: Mathlib/Analysis/Normed/Group/AddTorsor.lean

tactic: simp only [edist_nndist]
state_before: α : Type u_1
V : Type u_2
P : Type u_3
W : Type u_4
Q : Type u_5
inst✝⁵ : SeminormedAddCommGroup V
inst✝⁴ : PseudoMetricSpace P
inst✝³ : NormedAddTorsor V P
inst✝² : NormedAddCommGroup W
inst✝¹ : MetricSpace Q
inst✝ : NormedAddTorsor W Q
v v' : V
p p' : P
⊢ edist (v +ᵥ p) (v' +ᵥ p') ≤ edist v v' + edist p p'
state_after: α : Type u_1
V : Type u_2
P : Type u_3
W : Type u_4
Q : Type u_5
inst✝⁵ : SeminormedAddCommGroup V
inst✝⁴ : PseudoMetricSpace P
inst✝³ : NormedAddTorsor V P
inst✝² : NormedAddCommGroup W
inst✝¹ : MetricSpace Q
inst✝ : NormedAddTorsor W Q
v v' : V
p p' : P
⊢ ↑(nndist (v +ᵥ p) (v' +ᵥ p')) ≤ ↑(nndist v v') + ↑(nndist p p')

tactic: norm_cast
state_before: α : Type u_1
V : Type u_2
P : Type u_3
W : Type u_4
Q : Type u_5
inst✝⁵ : SeminormedAddCommGroup V
inst✝⁴ : PseudoMetricSpace P
inst✝³ : NormedAddTorsor V P
inst✝² : NormedAddCommGroup W
inst✝¹ : MetricSpace Q
inst✝ : NormedAddTorsor W Q
v v' : V
p p' : P
⊢ ↑(nndist (v +ᵥ p) (v' +ᵥ p')) ≤ ↑(nndist v v') + ↑(nndist p p')
state_after: α : Type u_1
V : Type u_2
P : Type u_3
W : Type u_4
Q : Type u_5
inst✝⁵ : SeminormedAddCommGroup V
inst✝⁴ : PseudoMetricSpace P
inst✝³ : NormedAddTorsor V P
inst✝² : NormedAddCommGroup W
inst✝¹ : MetricSpace Q
inst✝ : NormedAddTorsor W Q
v v' : V
p p' : P
⊢ nndist (v +ᵥ p) (v' +ᵥ p') ≤ nndist v v' + nndist p p'

tactic: apply dist_vadd_vadd_le
state_before: α : Type u_1
V : Type u_2
P : Type u_3
W : Type u_4
Q : Type u_5
inst✝⁵ : SeminormedAddCommGroup V
inst✝⁴ : PseudoMetricSpace P
inst✝³ : NormedAddTorsor V P
inst✝² : NormedAddCommGroup W
inst✝¹ : MetricSpace Q
inst✝ : NormedAddTorsor W Q
v v' : V
p p' : P
⊢ nndist (v +ᵥ p) (v' +ᵥ p') ≤ nndist v v' + nndist p p'
state_after: no goals
Theorem: nhds_order_unbounded
File: Mathlib/Topology/Order/Basic.lean

tactic: simp only [nhds_eq_order, ← inf_biInf, ← biInf_inf, *, ← inf_principal, ← Ioi_inter_Iio]
state_before: α : Type u
β : Type v
γ : Type w
inst✝¹ : TopologicalSpace α
inst✝ : Preorder α
t : OrderTopology α
a : α
hu : ∃ u, a < u
hl : ∃ l, l < a
⊢ 𝓝 a = ⨅ l, ⨅ (_ : l < a), ⨅ u, ⨅ (_ : a < u), 𝓟 (Ioo l u)
state_after: α : Type u
β : Type v
γ : Type w
inst✝¹ : TopologicalSpace α
inst✝ : Preorder α
t : OrderTopology α
a : α
hu : ∃ u, a < u
hl : ∃ l, l < a
⊢ (⨅ b ∈ Iio a, 𝓟 (Ioi b)) ⊓ ⨅ b ∈ Ioi a, 𝓟 (Iio b) = (⨅ i, ⨅ (_ : i < a), 𝓟 (Ioi i)) ⊓ ⨅ i, ⨅ (_ : a < i), 𝓟 (Iio i)

tactic: rfl
state_before: α : Type u
β : Type v
γ : Type w
inst✝¹ : TopologicalSpace α
inst✝ : Preorder α
t : OrderTopology α
a : α
hu : ∃ u, a < u
hl : ∃ l, l < a
⊢ (⨅ b ∈ Iio a, 𝓟 (Ioi b)) ⊓ ⨅ b ∈ Ioi a, 𝓟 (Iio b) = (⨅ i, ⨅ (_ : i < a), 𝓟 (Ioi i)) ⊓ ⨅ i, ⨅ (_ : a < i), 𝓟 (Iio i)
state_after: no goals
Theorem: Module.finitePresentation_of_finite
File: Mathlib/Algebra/Module/FinitePresentation.lean

tactic: obtain ⟨s, hs⟩ := h
state_before: R : Type u_1
M : Type u_2
N : Type ?u.18413
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : AddCommGroup N
inst✝¹ : Module R N
inst✝ : IsNoetherianRing R
h : Finite R M
⊢ FinitePresentation R M
state_after: case mk.intro
R : Type u_1
M : Type u_2
N : Type ?u.18413
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : AddCommGroup N
inst✝¹ : Module R N
inst✝ : IsNoetherianRing R
s : Finset M
hs : Submodule.span R ↑s = ⊤
⊢ FinitePresentation R M

tactic: exact ⟨s, hs, IsNoetherian.noetherian _⟩
state_before: case mk.intro
R : Type u_1
M : Type u_2
N : Type ?u.18413
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : AddCommGroup N
inst✝¹ : Module R N
inst✝ : IsNoetherianRing R
s : Finset M
hs : Submodule.span R ↑s = ⊤
⊢ FinitePresentation R M
state_after: no goals
Theorem: Finset.Colex.isInitSeg_empty
File: Mathlib/Combinatorics/Colex.lean

tactic: simp [IsInitSeg]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : LinearOrder α
inst✝ : LinearOrder β
f : α → β
𝒜 𝒜₁ 𝒜₂ : Finset (Finset α)
s t u : Finset α
a b : α
r : ℕ
⊢ IsInitSeg ∅ r
state_after: no goals
Theorem: Ordinal.principal_one_iff
File: Mathlib/SetTheory/Ordinal/Principal.lean

tactic: refine ⟨fun h => ?_, fun h a b ha hb => ?_⟩
state_before: op : Ordinal.{u_1} → Ordinal.{u_1} → Ordinal.{u_1}
⊢ Principal op 1 ↔ op 0 0 = 0
state_after: case refine_1
op : Ordinal.{u_1} → Ordinal.{u_1} → Ordinal.{u_1}
h : Principal op 1
⊢ op 0 0 = 0

case refine_2
op : Ordinal.{u_1} → Ordinal.{u_1} → Ordinal.{u_1}
h : op 0 0 = 0
a b : Ordinal.{u_1}
ha : a < 1
hb : b < 1
⊢ op a b < 1

tactic: rw [← lt_one_iff_zero]
state_before: case refine_1
op : Ordinal.{u_1} → Ordinal.{u_1} → Ordinal.{u_1}
h : Principal op 1
⊢ op 0 0 = 0
state_after: case refine_1
op : Ordinal.{u_1} → Ordinal.{u_1} → Ordinal.{u_1}
h : Principal op 1
⊢ op 0 0 < 1

tactic: exact h zero_lt_one zero_lt_one
state_before: case refine_1
op : Ordinal.{u_1} → Ordinal.{u_1} → Ordinal.{u_1}
h : Principal op 1
⊢ op 0 0 < 1
state_after: no goals

tactic: rwa [lt_one_iff_zero, ha, hb] at *
state_before: case refine_2
op : Ordinal.{u_1} → Ordinal.{u_1} → Ordinal.{u_1}
h : op 0 0 = 0
a b : Ordinal.{u_1}
ha : a < 1
hb : b < 1
⊢ op a b < 1
state_after: no goals
Theorem: Matrix.cramer_transpose_apply
File: Mathlib/LinearAlgebra/Matrix/Adjugate.lean

tactic: rw [cramer_apply, updateColumn_transpose, det_transpose]
state_before: m : Type u
n : Type v
α : Type w
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : Fintype m
inst✝ : CommRing α
A : Matrix n n α
b : n → α
i : n
⊢ Aᵀ.cramer b i = (A.updateRow i b).det
state_after: no goals
Theorem: AccPt.nhds_inter
File: Mathlib/Topology/Perfect.lean

tactic: have : 𝓝[≠] x ≤ 𝓟 U := by
  rw [le_principal_iff]
  exact mem_nhdsWithin_of_mem_nhds hU
state_before: α : Type u_1
inst✝ : TopologicalSpace α
C : Set α
x : α
U : Set α
h_acc : AccPt x (𝓟 C)
hU : U ∈ 𝓝 x
⊢ AccPt x (𝓟 (U ∩ C))
state_after: α : Type u_1
inst✝ : TopologicalSpace α
C : Set α
x : α
U : Set α
h_acc : AccPt x (𝓟 C)
hU : U ∈ 𝓝 x
this : 𝓝[≠] x ≤ 𝓟 U
⊢ AccPt x (𝓟 (U ∩ C))

tactic: rw [AccPt, ← inf_principal, ← inf_assoc, inf_of_le_left this]
state_before: α : Type u_1
inst✝ : TopologicalSpace α
C : Set α
x : α
U : Set α
h_acc : AccPt x (𝓟 C)
hU : U ∈ 𝓝 x
this : 𝓝[≠] x ≤ 𝓟 U
⊢ AccPt x (𝓟 (U ∩ C))
state_after: α : Type u_1
inst✝ : TopologicalSpace α
C : Set α
x : α
U : Set α
h_acc : AccPt x (𝓟 C)
hU : U ∈ 𝓝 x
this : 𝓝[≠] x ≤ 𝓟 U
⊢ (𝓝[≠] x ⊓ 𝓟 C).NeBot

tactic: exact h_acc
state_before: α : Type u_1
inst✝ : TopologicalSpace α
C : Set α
x : α
U : Set α
h_acc : AccPt x (𝓟 C)
hU : U ∈ 𝓝 x
this : 𝓝[≠] x ≤ 𝓟 U
⊢ (𝓝[≠] x ⊓ 𝓟 C).NeBot
state_after: no goals

tactic: rw [le_principal_iff]
state_before: α : Type u_1
inst✝ : TopologicalSpace α
C : Set α
x : α
U : Set α
h_acc : AccPt x (𝓟 C)
hU : U ∈ 𝓝 x
⊢ 𝓝[≠] x ≤ 𝓟 U
state_after: α : Type u_1
inst✝ : TopologicalSpace α
C : Set α
x : α
U : Set α
h_acc : AccPt x (𝓟 C)
hU : U ∈ 𝓝 x
⊢ U ∈ 𝓝[≠] x

tactic: exact mem_nhdsWithin_of_mem_nhds hU
state_before: α : Type u_1
inst✝ : TopologicalSpace α
C : Set α
x : α
U : Set α
h_acc : AccPt x (𝓟 C)
hU : U ∈ 𝓝 x
⊢ U ∈ 𝓝[≠] x
state_after: no goals
Theorem: Finset.Iic_mul_Iic_subset'
File: Mathlib/Data/Finset/Pointwise/Interval.lean

tactic: simpa using Set.Iic_mul_Iic_subset' _ _
state_before: α : Type u_1
inst✝⁵ : Mul α
inst✝⁴ : Preorder α
inst✝³ : DecidableEq α
inst✝² : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝¹ : CovariantClass α α (Function.swap HMul.hMul) LE.le
inst✝ : LocallyFiniteOrderBot α
a b : α
⊢ ↑(Iic a * Iic b) ⊆ ↑(Iic (a * b))
state_after: no goals
Theorem: pow_right_comm
File: Mathlib/Algebra/Group/Defs.lean

tactic: rw [← pow_mul, Nat.mul_comm, pow_mul]
state_before: G : Type u_1
M : Type u_2
inst✝ : Monoid M
a✝ b c : M
m✝ n✝ : ℕ
a : M
m n : ℕ
⊢ (a ^ m) ^ n = (a ^ n) ^ m
state_after: no goals
Theorem: FormalMultilinearSeries.apply_eq_pow_smul_coeff
File: Mathlib/Analysis/Calculus/FormalMultilinearSeries.lean

tactic: simp
state_before: 𝕜 : Type u
𝕜' : Type u'
E : Type v
F : Type w
G : Type x
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : E
p : FormalMultilinearSeries 𝕜 𝕜 E
f : 𝕜 → E
n : ℕ
z z₀ : 𝕜
y : Fin n → 𝕜
⊢ ((p n) fun x => z) = z ^ n • p.coeff n
state_after: no goals
Theorem: Fin.sigma_eq_of_eq_comp_cast
File: Mathlib/Data/Fin/Tuple/Basic.lean

tactic: dsimp only at hi
state_before: m n : ℕ
α : Type u_1
ai : ℕ
a : Fin ai → α
bi : ℕ
b : Fin bi → α
hi : ⟨ai, a⟩.fst = ⟨bi, b⟩.fst
h : ⟨ai, a⟩.snd = ⟨bi, b⟩.snd ∘ cast hi
⊢ ⟨ai, a⟩ = ⟨bi, b⟩
state_after: m n : ℕ
α : Type u_1
ai : ℕ
a : Fin ai → α
bi : ℕ
b : Fin bi → α
hi : ai = bi
h : ⟨ai, a⟩.snd = ⟨bi, b⟩.snd ∘ cast hi
⊢ ⟨ai, a⟩ = ⟨bi, b⟩

tactic: subst hi
state_before: m n : ℕ
α : Type u_1
ai : ℕ
a : Fin ai → α
bi : ℕ
b : Fin bi → α
hi : ai = bi
h : ⟨ai, a⟩.snd = ⟨bi, b⟩.snd ∘ cast hi
⊢ ⟨ai, a⟩ = ⟨bi, b⟩
state_after: m n : ℕ
α : Type u_1
ai : ℕ
a b : Fin ai → α
h : ⟨ai, a⟩.snd = ⟨ai, b⟩.snd ∘ cast ⋯
⊢ ⟨ai, a⟩ = ⟨ai, b⟩

tactic: simpa using h
state_before: m n : ℕ
α : Type u_1
ai : ℕ
a b : Fin ai → α
h : ⟨ai, a⟩.snd = ⟨ai, b⟩.snd ∘ cast ⋯
⊢ ⟨ai, a⟩ = ⟨ai, b⟩
state_after: no goals
Theorem: CategoryTheory.any_functor_const_on_obj
File: Mathlib/CategoryTheory/IsConnected.lean

tactic: ext
state_before: J : Type u₁
inst✝² : Category.{v₁, u₁} J
K : Type u₂
inst✝¹ : Category.{v₂, u₂} K
inst✝ : IsPreconnected J
α : Type u₂
F : J ⥤ Discrete α
j j' : J
⊢ F.obj j = F.obj j'
state_after: case as
J : Type u₁
inst✝² : Category.{v₁, u₁} J
K : Type u₂
inst✝¹ : Category.{v₂, u₂} K
inst✝ : IsPreconnected J
α : Type u₂
F : J ⥤ Discrete α
j j' : J
⊢ (F.obj j).as = (F.obj j').as

tactic: exact ((isoConstant F j').hom.app j).down.1
state_before: case as
J : Type u₁
inst✝² : Category.{v₁, u₁} J
K : Type u₂
inst✝¹ : Category.{v₂, u₂} K
inst✝ : IsPreconnected J
α : Type u₂
F : J ⥤ Discrete α
j j' : J
⊢ (F.obj j).as = (F.obj j').as
state_after: no goals