1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Sym2.map_map
File: Mathlib/Data/Sym/Sym2.lean

tactic: induction x
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
g : β → γ
f : α → β
x : Sym2 α
⊢ map g (map f x) = map (g ∘ f) x
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
g : β → γ
f : α → β
x✝ y✝ : α
⊢ map g (map f s(x✝, y✝)) = map (g ∘ f) s(x✝, y✝)

tactic: aesop
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
g : β → γ
f : α → β
x✝ y✝ : α
⊢ map g (map f s(x✝, y✝)) = map (g ∘ f) s(x✝, y✝)
state_after: no goals
Theorem: Subsemigroup.comap_id
File: Mathlib/Algebra/Group/Subsemigroup/Operations.lean

tactic: simp
state_before: M : Type u_1
N : Type u_2
P : Type u_3
σ : Type u_4
inst✝² : Mul M
inst✝¹ : Mul N
inst✝ : Mul P
S✝ : Subsemigroup M
S : Subsemigroup P
⊢ ∀ (x : P), x ∈ comap (MulHom.id P) S ↔ x ∈ S
state_after: no goals
Theorem: Fin.one_eq_zero_iff
File: Mathlib/Data/Fin/Basic.lean

tactic: obtain _ | _ | n := n <;> simp [Fin.ext_iff]
state_before: n m : ℕ
inst✝ : NeZero n
⊢ 1 = 0 ↔ n = 1
state_after: no goals
Theorem: Vector.mapAccumr₂_eq_map₂
File: Mathlib/Data/Vector/MapLemmas.lean

tactic: rw [Vector.map₂_eq_mapAccumr₂]
state_before: α : Type
n : ℕ
β : Type
xs : Vector α n
ys : Vector β n
σ γ : Type
f : α → β → σ → σ × γ
s₀ : σ
S : Set σ
h₀ : s₀ ∈ S
closure : ∀ (a : α) (b : β), ∀ s ∈ S, (f a b s).1 ∈ S
out : ∀ (a : α) (b : β) (s s' : σ), s ∈ S → s' ∈ S → (f a b s).2 = (f a b s').2
⊢ (mapAccumr₂ f xs ys s₀).2 = map₂ (fun x x_1 => (f x x_1 s₀).2) xs ys
state_after: α : Type
n : ℕ
β : Type
xs : Vector α n
ys : Vector β n
σ γ : Type
f : α → β → σ → σ × γ
s₀ : σ
S : Set σ
h₀ : s₀ ∈ S
closure : ∀ (a : α) (b : β), ∀ s ∈ S, (f a b s).1 ∈ S
out : ∀ (a : α) (b : β) (s s' : σ), s ∈ S → s' ∈ S → (f a b s).2 = (f a b s').2
⊢ (mapAccumr₂ f xs ys s₀).2 = (mapAccumr₂ (fun x y x_1 => ((), (f x y s₀).2)) xs ys ()).2

tactic: apply mapAccumr₂_bisim_tail
state_before: α : Type
n : ℕ
β : Type
xs : Vector α n
ys : Vector β n
σ γ : Type
f : α → β → σ → σ × γ
s₀ : σ
S : Set σ
h₀ : s₀ ∈ S
closure : ∀ (a : α) (b : β), ∀ s ∈ S, (f a b s).1 ∈ S
out : ∀ (a : α) (b : β) (s s' : σ), s ∈ S → s' ∈ S → (f a b s).2 = (f a b s').2
⊢ (mapAccumr₂ f xs ys s₀).2 = (mapAccumr₂ (fun x y x_1 => ((), (f x y s₀).2)) xs ys ()).2
state_after: case h
α : Type
n : ℕ
β : Type
xs : Vector α n
ys : Vector β n
σ γ : Type
f : α → β → σ → σ × γ
s₀ : σ
S : Set σ
h₀ : s₀ ∈ S
closure : ∀ (a : α) (b : β), ∀ s ∈ S, (f a b s).1 ∈ S
out : ∀ (a : α) (b : β) (s s' : σ), s ∈ S → s' ∈ S → (f a b s).2 = (f a b s').2
⊢ ∃ R,
    R s₀ () ∧
      ∀ {s : σ} {q : Unit} (a : α) (b : β),
        R s q → R (f a b s).1 ((), (f a b s₀).2).1 ∧ (f a b s).2 = ((), (f a b s₀).2).2

tactic: use fun s _ => s ∈ S, h₀
state_before: case h
α : Type
n : ℕ
β : Type
xs : Vector α n
ys : Vector β n
σ γ : Type
f : α → β → σ → σ × γ
s₀ : σ
S : Set σ
h₀ : s₀ ∈ S
closure : ∀ (a : α) (b : β), ∀ s ∈ S, (f a b s).1 ∈ S
out : ∀ (a : α) (b : β) (s s' : σ), s ∈ S → s' ∈ S → (f a b s).2 = (f a b s').2
⊢ ∃ R,
    R s₀ () ∧
      ∀ {s : σ} {q : Unit} (a : α) (b : β),
        R s q → R (f a b s).1 ((), (f a b s₀).2).1 ∧ (f a b s).2 = ((), (f a b s₀).2).2
state_after: case right
α : Type
n : ℕ
β : Type
xs : Vector α n
ys : Vector β n
σ γ : Type
f : α → β → σ → σ × γ
s₀ : σ
S : Set σ
h₀ : s₀ ∈ S
closure : ∀ (a : α) (b : β), ∀ s ∈ S, (f a b s).1 ∈ S
out : ∀ (a : α) (b : β) (s s' : σ), s ∈ S → s' ∈ S → (f a b s).2 = (f a b s').2
⊢ ∀ {s : σ} {q : Unit} (a : α) (b : β), s ∈ S → (f a b s).1 ∈ S ∧ (f a b s).2 = ((), (f a b s₀).2).2

tactic: exact @fun s _q a b h => ⟨closure a b s h, out a b s s₀ h h₀⟩
state_before: case right
α : Type
n : ℕ
β : Type
xs : Vector α n
ys : Vector β n
σ γ : Type
f : α → β → σ → σ × γ
s₀ : σ
S : Set σ
h₀ : s₀ ∈ S
closure : ∀ (a : α) (b : β), ∀ s ∈ S, (f a b s).1 ∈ S
out : ∀ (a : α) (b : β) (s s' : σ), s ∈ S → s' ∈ S → (f a b s).2 = (f a b s').2
⊢ ∀ {s : σ} {q : Unit} (a : α) (b : β), s ∈ S → (f a b s).1 ∈ S ∧ (f a b s).2 = ((), (f a b s₀).2).2
state_after: no goals
Theorem: WeierstrassCurve.Jacobian.addX_of_Z_ne_zero
File: Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian.lean

tactic: rw [addX_eq hP hQ hPz hQz, div_div, ← mul_pow, toAffine_slope_of_ne hPz hQz hx,
  toAffine_addX_of_ne hPz hQz <| addZ_ne_zero_of_X_ne hx]
state_before: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P Q : Fin 3 → F
hP : W.Equation P
hQ : W.Equation Q
hPz : P z ≠ 0
hQz : Q z ≠ 0
hx : P x * Q z ^ 2 ≠ Q x * P z ^ 2
⊢ W.addX P Q / addZ P Q ^ 2 =
    W.toAffine.addX (P x / P z ^ 2) (Q x / Q z ^ 2)
      (W.toAffine.slope (P x / P z ^ 2) (Q x / Q z ^ 2) (P y / P z ^ 3) (Q y / Q z ^ 3))
state_after: no goals
Theorem: Monoid.exponent_eq_zero_iff_forall
File: Mathlib/GroupTheory/Exponent.lean

tactic: rw [exponent_eq_zero_iff, ExponentExists]
state_before: G : Type u
inst✝ : Monoid G
⊢ exponent G = 0 ↔ ∀ n > 0, ∃ g, g ^ n ≠ 1
state_after: G : Type u
inst✝ : Monoid G
⊢ (¬∃ n, 0 < n ∧ ∀ (g : G), g ^ n = 1) ↔ ∀ n > 0, ∃ g, g ^ n ≠ 1

tactic: push_neg
state_before: G : Type u
inst✝ : Monoid G
⊢ (¬∃ n, 0 < n ∧ ∀ (g : G), g ^ n = 1) ↔ ∀ n > 0, ∃ g, g ^ n ≠ 1
state_after: G : Type u
inst✝ : Monoid G
⊢ (∀ (n : ℕ), 0 < n → ∃ g, g ^ n ≠ 1) ↔ ∀ n > 0, ∃ g, g ^ n ≠ 1

tactic: rfl
state_before: G : Type u
inst✝ : Monoid G
⊢ (∀ (n : ℕ), 0 < n → ∃ g, g ^ n ≠ 1) ↔ ∀ n > 0, ∃ g, g ^ n ≠ 1
state_after: no goals
Theorem: SpectralMap.cancel_left
File: Mathlib/Topology/Spectral/Hom.lean

tactic: rw [← comp_apply, h, comp_apply]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
g : SpectralMap β γ
f₁ f₂ : SpectralMap α β
hg : Injective ⇑g
h : g.comp f₁ = g.comp f₂
a : α
⊢ g (f₁ a) = g (f₂ a)
state_after: no goals
Theorem: Cardinal.mk_subset_ge_of_subset_image_lift
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: rw [image_eq_range] at h
state_before: α✝ β✝ : Type u
c : Cardinal.{?u.232487}
α : Type u
β : Type v
f : α → β
s : Set α
t : Set β
h : t ⊆ f '' s
⊢ lift.{u, v} #↑t ≤ lift.{v, u} #↑{x | x ∈ s ∧ f x ∈ t}
state_after: α✝ β✝ : Type u
c : Cardinal.{?u.232487}
α : Type u
β : Type v
f : α → β
s : Set α
t : Set β
h : t ⊆ range fun x => f ↑x
⊢ lift.{u, v} #↑t ≤ lift.{v, u} #↑{x | x ∈ s ∧ f x ∈ t}

tactic: convert mk_preimage_of_subset_range_lift _ _ h using 1
state_before: α✝ β✝ : Type u
c : Cardinal.{?u.232487}
α : Type u
β : Type v
f : α → β
s : Set α
t : Set β
h : t ⊆ range fun x => f ↑x
⊢ lift.{u, v} #↑t ≤ lift.{v, u} #↑{x | x ∈ s ∧ f x ∈ t}
state_after: case h.e'_4
α✝ β✝ : Type u
c : Cardinal.{?u.232487}
α : Type u
β : Type v
f : α → β
s : Set α
t : Set β
h : t ⊆ range fun x => f ↑x
⊢ lift.{v, u} #↑{x | x ∈ s ∧ f x ∈ t} = lift.{v, u} #↑((fun x => f ↑x) ⁻¹' t)

tactic: rw [mk_sep]
state_before: case h.e'_4
α✝ β✝ : Type u
c : Cardinal.{?u.232487}
α : Type u
β : Type v
f : α → β
s : Set α
t : Set β
h : t ⊆ range fun x => f ↑x
⊢ lift.{v, u} #↑{x | x ∈ s ∧ f x ∈ t} = lift.{v, u} #↑((fun x => f ↑x) ⁻¹' t)
state_after: case h.e'_4
α✝ β✝ : Type u
c : Cardinal.{?u.232487}
α : Type u
β : Type v
f : α → β
s : Set α
t : Set β
h : t ⊆ range fun x => f ↑x
⊢ lift.{v, u} #↑{x | f ↑x ∈ t} = lift.{v, u} #↑((fun x => f ↑x) ⁻¹' t)

tactic: rfl
state_before: case h.e'_4
α✝ β✝ : Type u
c : Cardinal.{?u.232487}
α : Type u
β : Type v
f : α → β
s : Set α
t : Set β
h : t ⊆ range fun x => f ↑x
⊢ lift.{v, u} #↑{x | f ↑x ∈ t} = lift.{v, u} #↑((fun x => f ↑x) ⁻¹' t)
state_after: no goals
Theorem: MeasureTheory.Measure.mapₗ_mk_apply_of_aemeasurable
File: Mathlib/MeasureTheory/Measure/MeasureSpace.lean

tactic: simp [map, hf]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t : Set α
f : α → β
hf : AEMeasurable f μ
⊢ (mapₗ (AEMeasurable.mk f hf)) μ = map f μ
state_after: no goals
Theorem: List.range'_1_concat
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

tactic: simp [range'_concat]
state_before: s n : Nat
⊢ range' s (n + 1) = range' s n ++ [s + n]
state_after: no goals
Theorem: iterateFrobeniusEquiv_zero_apply
File: Mathlib/FieldTheory/Perfect.lean

tactic: rw [iterateFrobeniusEquiv_def, pow_zero, pow_one]
state_before: R : Type u_1
p m n : ℕ
inst✝² : CommSemiring R
inst✝¹ : ExpChar R p
inst✝ : PerfectRing R p
x : R
⊢ (iterateFrobeniusEquiv R p 0) x = x
state_after: no goals
Theorem: Field.primitive_element_iff_minpoly_degree_eq
File: Mathlib/FieldTheory/PrimitiveElement.lean

tactic: rw [degree_eq_iff_natDegree_eq, primitive_element_iff_minpoly_natDegree_eq]
state_before: F✝ : Type u_1
E✝ : Type u_2
inst✝⁸ : Field F✝
inst✝⁷ : Field E✝
inst✝⁶ : Algebra F✝ E✝
inst✝⁵ : FiniteDimensional F✝ E✝
inst✝⁴ : IsSeparable F✝ E✝
F : Type u_3
E : Type u_4
inst✝³ : Field F
inst✝² : Field E
inst✝¹ : Algebra F E
inst✝ : FiniteDimensional F E
α : E
⊢ F⟮α⟯ = ⊤ ↔ (minpoly F α).degree = ↑(finrank F E)
state_after: F✝ : Type u_1
E✝ : Type u_2
inst✝⁸ : Field F✝
inst✝⁷ : Field E✝
inst✝⁶ : Algebra F✝ E✝
inst✝⁵ : FiniteDimensional F✝ E✝
inst✝⁴ : IsSeparable F✝ E✝
F : Type u_3
E : Type u_4
inst✝³ : Field F
inst✝² : Field E
inst✝¹ : Algebra F E
inst✝ : FiniteDimensional F E
α : E
⊢ minpoly F α ≠ 0

tactic: exact minpoly.ne_zero_of_finite F α
state_before: F✝ : Type u_1
E✝ : Type u_2
inst✝⁸ : Field F✝
inst✝⁷ : Field E✝
inst✝⁶ : Algebra F✝ E✝
inst✝⁵ : FiniteDimensional F✝ E✝
inst✝⁴ : IsSeparable F✝ E✝
F : Type u_3
E : Type u_4
inst✝³ : Field F
inst✝² : Field E
inst✝¹ : Algebra F E
inst✝ : FiniteDimensional F E
α : E
⊢ minpoly F α ≠ 0
state_after: no goals
Theorem: MeasureTheory.IsSetSemiring.disjoint_sUnion_diffFinset₀
File: Mathlib/MeasureTheory/SetSemiring.lean

tactic: rw [← hC.diff_sUnion_eq_sUnion_diffFinset₀]
state_before: α : Type u_1
C : Set (Set α)
s t : Set α
I : Finset (Set α)
hC : IsSetSemiring C
hs : s ∈ C
hI : ↑I ⊆ C
⊢ Disjoint (⋃₀ ↑I) (⋃₀ ↑(hC.diffFinset₀ hs hI))
state_after: α : Type u_1
C : Set (Set α)
s t : Set α
I : Finset (Set α)
hC : IsSetSemiring C
hs : s ∈ C
hI : ↑I ⊆ C
⊢ Disjoint (⋃₀ ↑I) (s \ ⋃₀ ↑I)

tactic: exact Set.disjoint_sdiff_right
state_before: α : Type u_1
C : Set (Set α)
s t : Set α
I : Finset (Set α)
hC : IsSetSemiring C
hs : s ∈ C
hI : ↑I ⊆ C
⊢ Disjoint (⋃₀ ↑I) (s \ ⋃₀ ↑I)
state_after: no goals
Theorem: UniqueFactorizationMonoid.dvd_of_dvd_mul_right_of_no_prime_factors
File: Mathlib/RingTheory/UniqueFactorizationDomain.lean

tactic: simpa [mul_comm b c] using dvd_of_dvd_mul_left_of_no_prime_factors ha @no_factors
state_before: α : Type u_1
R : Type u_2
inst✝¹ : CancelCommMonoidWithZero R
inst✝ : UniqueFactorizationMonoid R
a b c : R
ha : a ≠ 0
no_factors : ∀ {d : R}, d ∣ a → d ∣ b → ¬Prime d
⊢ a ∣ b * c → a ∣ c
state_after: no goals
Theorem: connectedComponents_preimage_image
File: Mathlib/Topology/Connected/Basic.lean

tactic: simp only [connectedComponents_preimage_singleton, preimage_iUnion₂, image_eq_iUnion]
state_before: α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝ : TopologicalSpace α
s t u v U : Set α
⊢ ConnectedComponents.mk ⁻¹' (ConnectedComponents.mk '' U) = ⋃ x ∈ U, connectedComponent x
state_after: no goals
Theorem: ArithmeticFunction.mul_apply_one
File: Mathlib/NumberTheory/ArithmeticFunction.lean

tactic: simp
state_before: R : Type u_1
inst✝ : Semiring R
f g : ArithmeticFunction R
⊢ (f * g) 1 = f 1 * g 1
state_after: no goals
Theorem: NumberField.mixedEmbedding.norm_eq_norm
File: Mathlib/NumberTheory/NumberField/CanonicalEmbedding/Basic.lean

tactic: simp_rw [mixedEmbedding.norm_apply, normAtPlace_apply, prod_eq_abs_norm]
state_before: K : Type u_1
inst✝¹ : Field K
inst✝ : NumberField K
x : K
⊢ mixedEmbedding.norm ((mixedEmbedding K) x) = ↑|(Algebra.norm ℚ) x|
state_after: no goals
Theorem: Finset.sorted_last_eq_max'
File: Mathlib/Data/Finset/Sort.lean

tactic: rw [length_sort] at h
state_before: α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
s : Finset α
h : (sort (fun x x_1 => x ≤ x_1) s).length - 1 < (sort (fun x x_1 => x ≤ x_1) s).length
⊢ s.Nonempty
state_after: α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
s : Finset α
h : s.card - 1 < s.card
⊢ s.Nonempty

tactic: exact card_pos.1 (lt_of_le_of_lt bot_le h)
state_before: α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
s : Finset α
h : s.card - 1 < s.card
⊢ s.Nonempty
state_after: no goals
Theorem: dvd_iff_exists_eq_mul_left
File: Mathlib/Algebra/Divisibility/Basic.lean

tactic: rintro ⟨c, rfl⟩
state_before: α : Type u_1
inst✝ : CommSemigroup α
a b c : α
⊢ (∃ c, b = c * a) → a ∣ b
state_after: case intro
α : Type u_1
inst✝ : CommSemigroup α
a c✝ c : α
⊢ a ∣ c * a

tactic: exact ⟨c, mul_comm _ _⟩
state_before: case intro
α : Type u_1
inst✝ : CommSemigroup α
a c✝ c : α
⊢ a ∣ c * a
state_after: no goals
Theorem: inv_norm_smul_mem_closed_unit_ball
File: Mathlib/Analysis/NormedSpace/Real.lean

tactic: simp only [mem_closedBall_zero_iff, norm_smul, norm_inv, norm_norm, ← div_eq_inv_mul,
  div_self_le_one]
state_before: E : Type u_1
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace ℝ E
x : E
⊢ ‖x‖⁻¹ • x ∈ closedBall 0 1
state_after: no goals
Theorem: Subgroup.inf_relindex_right
File: Mathlib/GroupTheory/Index.lean

tactic: rw [relindex, relindex, inf_subgroupOf_right]
state_before: G : Type u_1
inst✝ : Group G
H K L : Subgroup G
⊢ (H ⊓ K).relindex K = H.relindex K
state_after: no goals
Theorem: CategoryTheory.ShiftedHom.comp_mk₀
File: Mathlib/CategoryTheory/Shift/ShiftedHom.lean

tactic: rw [hm₀, zero_add]
state_before: C : Type u_1
inst✝² : Category.{?u.20745, u_1} C
M : Type u_2
inst✝¹ : AddMonoid M
inst✝ : HasShift C M
X Y Z T : C
a : M
f : ShiftedHom X Y a
m₀ : M
hm₀ : m₀ = 0
g : Y ⟶ Z
⊢ m₀ + a = a
state_after: no goals

tactic: subst hm₀
state_before: C : Type u_1
inst✝² : Category.{u_3, u_1} C
M : Type u_2
inst✝¹ : AddMonoid M
inst✝ : HasShift C M
X Y Z T : C
a : M
f : ShiftedHom X Y a
m₀ : M
hm₀ : m₀ = 0
g : Y ⟶ Z
⊢ f.comp (mk₀ m₀ hm₀ g) ⋯ = f ≫ (shiftFunctor C a).map g
state_after: C : Type u_1
inst✝² : Category.{u_3, u_1} C
M : Type u_2
inst✝¹ : AddMonoid M
inst✝ : HasShift C M
X Y Z T : C
a : M
f : ShiftedHom X Y a
g : Y ⟶ Z
⊢ f.comp (mk₀ 0 ⋯ g) ⋯ = f ≫ (shiftFunctor C a).map g

tactic: simp only [comp, shiftFunctorAdd'_zero_add_inv_app, mk₀, shiftFunctorZero',
  eqToIso_refl, Iso.refl_trans, ← Functor.map_comp, assoc, Iso.inv_hom_id_app,
  Functor.id_obj, comp_id]
state_before: C : Type u_1
inst✝² : Category.{u_3, u_1} C
M : Type u_2
inst✝¹ : AddMonoid M
inst✝ : HasShift C M
X Y Z T : C
a : M
f : ShiftedHom X Y a
g : Y ⟶ Z
⊢ f.comp (mk₀ 0 ⋯ g) ⋯ = f ≫ (shiftFunctor C a).map g
state_after: no goals
Theorem: Nat.setOf_pow_dvd_eq_Icc_factorization
File: Mathlib/Data/Nat/Factorization/Basic.lean

tactic: ext
state_before: a b m n✝ p✝ n p : ℕ
pp : Prime p
hn : n ≠ 0
⊢ {i | i ≠ 0 ∧ p ^ i ∣ n} = Set.Icc 1 (n.factorization p)
state_after: case h
a b m n✝ p✝ n p : ℕ
pp : Prime p
hn : n ≠ 0
x✝ : ℕ
⊢ x✝ ∈ {i | i ≠ 0 ∧ p ^ i ∣ n} ↔ x✝ ∈ Set.Icc 1 (n.factorization p)

tactic: simp [Nat.lt_succ_iff, one_le_iff_ne_zero, pp.pow_dvd_iff_le_factorization hn]
state_before: case h
a b m n✝ p✝ n p : ℕ
pp : Prime p
hn : n ≠ 0
x✝ : ℕ
⊢ x✝ ∈ {i | i ≠ 0 ∧ p ^ i ∣ n} ↔ x✝ ∈ Set.Icc 1 (n.factorization p)
state_after: no goals
Theorem: FirstOrder.Language.Equiv.refl_apply
File: Mathlib/ModelTheory/Basic.lean

tactic: simp [refl]
state_before: L : Language
L' : Language
M : Type w
N : Type w'
inst✝³ : L.Structure M
inst✝² : L.Structure N
P : Type u_1
inst✝¹ : L.Structure P
Q : Type u_2
inst✝ : L.Structure Q
x : M
⊢ (refl L M) x = x
state_after: L : Language
L' : Language
M : Type w
N : Type w'
inst✝³ : L.Structure M
inst✝² : L.Structure N
P : Type u_1
inst✝¹ : L.Structure P
Q : Type u_2
inst✝ : L.Structure Q
x : M
⊢ { toEquiv := _root_.Equiv.refl M, map_fun' := ⋯, map_rel' := ⋯ } x = x

tactic: rfl
state_before: L : Language
L' : Language
M : Type w
N : Type w'
inst✝³ : L.Structure M
inst✝² : L.Structure N
P : Type u_1
inst✝¹ : L.Structure P
Q : Type u_2
inst✝ : L.Structure Q
x : M
⊢ { toEquiv := _root_.Equiv.refl M, map_fun' := ⋯, map_rel' := ⋯ } x = x
state_after: no goals
Theorem: LiouvilleWith.rat_sub_iff
File: Mathlib/NumberTheory/Liouville/LiouvilleWith.lean

tactic: simp [sub_eq_add_neg]
state_before: p q x y : ℝ
r : ℚ
m : ℤ
n : ℕ
⊢ LiouvilleWith p (↑r - x) ↔ LiouvilleWith p x
state_after: no goals
Theorem: Matrix.posSemidef_conjTranspose_mul_self
File: Mathlib/LinearAlgebra/Matrix/PosDef.lean

tactic: refine ⟨isHermitian_transpose_mul_self _, fun x => ?_⟩
state_before: m : Type u_1
n : Type u_2
R : Type u_3
𝕜 : Type u_4
inst✝⁶ : Fintype m
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : PartialOrder R
inst✝² : StarRing R
inst✝¹ : StarOrderedRing R
inst✝ : RCLike 𝕜
A : Matrix m n R
⊢ (Aᴴ * A).PosSemidef
state_after: m : Type u_1
n : Type u_2
R : Type u_3
𝕜 : Type u_4
inst✝⁶ : Fintype m
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : PartialOrder R
inst✝² : StarRing R
inst✝¹ : StarOrderedRing R
inst✝ : RCLike 𝕜
A : Matrix m n R
x : n → R
⊢ 0 ≤ star x ⬝ᵥ (Aᴴ * A) *ᵥ x

tactic: rw [← mulVec_mulVec, dotProduct_mulVec, vecMul_conjTranspose, star_star]
state_before: m : Type u_1
n : Type u_2
R : Type u_3
𝕜 : Type u_4
inst✝⁶ : Fintype m
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : PartialOrder R
inst✝² : StarRing R
inst✝¹ : StarOrderedRing R
inst✝ : RCLike 𝕜
A : Matrix m n R
x : n → R
⊢ 0 ≤ star x ⬝ᵥ (Aᴴ * A) *ᵥ x
state_after: m : Type u_1
n : Type u_2
R : Type u_3
𝕜 : Type u_4
inst✝⁶ : Fintype m
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : PartialOrder R
inst✝² : StarRing R
inst✝¹ : StarOrderedRing R
inst✝ : RCLike 𝕜
A : Matrix m n R
x : n → R
⊢ 0 ≤ star (A *ᵥ x) ⬝ᵥ A *ᵥ x

tactic: exact Finset.sum_nonneg fun i _ => star_mul_self_nonneg _
state_before: m : Type u_1
n : Type u_2
R : Type u_3
𝕜 : Type u_4
inst✝⁶ : Fintype m
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : PartialOrder R
inst✝² : StarRing R
inst✝¹ : StarOrderedRing R
inst✝ : RCLike 𝕜
A : Matrix m n R
x : n → R
⊢ 0 ≤ star (A *ᵥ x) ⬝ᵥ A *ᵥ x
state_after: no goals
Theorem: Basis.coe_sumCoords_of_fintype
File: Mathlib/LinearAlgebra/Basis.lean

tactic: ext m
state_before: ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
inst✝⁵ : Semiring R
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
inst✝² : AddCommMonoid M'
inst✝¹ : Module R M'
b b₁ : Basis ι R M
i : ι
c : R
x : M
inst✝ : Fintype ι
⊢ ⇑b.sumCoords = ⇑(∑ i : ι, b.coord i)
state_after: case h
ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
inst✝⁵ : Semiring R
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
inst✝² : AddCommMonoid M'
inst✝¹ : Module R M'
b b₁ : Basis ι R M
i : ι
c : R
x : M
inst✝ : Fintype ι
m : M
⊢ b.sumCoords m = (∑ i : ι, b.coord i) m

tactic: simp only [sumCoords, Finsupp.sum_fintype, LinearMap.id_coe, LinearEquiv.coe_coe, coord_apply,
  id, Fintype.sum_apply, imp_true_iff, Finsupp.coe_lsum, LinearMap.coe_comp, comp_apply,
  LinearMap.coeFn_sum]
state_before: case h
ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
inst✝⁵ : Semiring R
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
inst✝² : AddCommMonoid M'
inst✝¹ : Module R M'
b b₁ : Basis ι R M
i : ι
c : R
x : M
inst✝ : Fintype ι
m : M
⊢ b.sumCoords m = (∑ i : ι, b.coord i) m
state_after: no goals
Theorem: isClosed_sInter
File: Mathlib/Topology/Basic.lean

tactic: simpa only [← isOpen_compl_iff, compl_sInter, sUnion_image] using isOpen_biUnion
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
s : Set (Set X)
⊢ (∀ t ∈ s, IsClosed t) → IsClosed (⋂₀ s)
state_after: no goals
Theorem: interior_Icc
File: Mathlib/Topology/Order/DenselyOrdered.lean

tactic: rw [← Ici_inter_Iic, interior_inter, interior_Ici, interior_Iic, Ioi_inter_Iio]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝⁵ : TopologicalSpace α
inst✝⁴ : LinearOrder α
inst✝³ : OrderTopology α
inst✝² : DenselyOrdered α
a✝ b✝ : α
s : Set α
inst✝¹ : NoMinOrder α
inst✝ : NoMaxOrder α
a b : α
⊢ interior (Icc a b) = Ioo a b
state_after: no goals
Theorem: Mathlib.Tactic.Abel.unfold_sub
File: Mathlib/Tactic/Abel.lean

tactic: rw [sub_eq_add_neg, h]
state_before: α : Type u_1
inst✝ : SubtractionMonoid α
a b c : α
h : a + -b = c
⊢ a - b = c
state_after: no goals
Theorem: ENNReal.tendsto_const_mul_rpow_nhds_zero_of_pos
File: Mathlib/Analysis/SpecialFunctions/Pow/Continuity.lean

tactic: convert ENNReal.Tendsto.const_mul (ENNReal.continuous_rpow_const.tendsto 0) _
state_before: c : ℝ≥0∞
hc : c ≠ ⊤
y : ℝ
hy : 0 < y
⊢ Tendsto (fun x => c * x ^ y) (𝓝 0) (𝓝 0)
state_after: case h.e'_5.h.e'_3
c : ℝ≥0∞
hc : c ≠ ⊤
y : ℝ
hy : 0 < y
⊢ 0 = c * 0 ^ y

case convert_3
c : ℝ≥0∞
hc : c ≠ ⊤
y : ℝ
hy : 0 < y
⊢ 0 ^ y ≠ 0 ∨ c ≠ ⊤

tactic: simp [hy]
state_before: case h.e'_5.h.e'_3
c : ℝ≥0∞
hc : c ≠ ⊤
y : ℝ
hy : 0 < y
⊢ 0 = c * 0 ^ y
state_after: no goals

tactic: exact Or.inr hc
state_before: case convert_3
c : ℝ≥0∞
hc : c ≠ ⊤
y : ℝ
hy : 0 < y
⊢ 0 ^ y ≠ 0 ∨ c ≠ ⊤
state_after: no goals
Theorem: HomologicalComplex.homotopyCofiber.ext_from_X'
File: Mathlib/Algebra/Homology/HomotopyCofiber.lean

tactic: rw [← cancel_epi (XIso φ i hi).inv]
state_before: C : Type u_1
inst✝³ : Category.{u_3, u_1} C
inst✝² : Preadditive C
ι : Type u_2
c : ComplexShape ι
F G K : HomologicalComplex C c
φ : F ⟶ G
inst✝¹ : HasHomotopyCofiber φ
inst✝ : DecidableRel c.Rel
i : ι
hi : ¬c.Rel i (c.next i)
A : C
f g : X φ i ⟶ A
h : inrX φ i ≫ f = inrX φ i ≫ g
⊢ f = g
state_after: C : Type u_1
inst✝³ : Category.{u_3, u_1} C
inst✝² : Preadditive C
ι : Type u_2
c : ComplexShape ι
F G K : HomologicalComplex C c
φ : F ⟶ G
inst✝¹ : HasHomotopyCofiber φ
inst✝ : DecidableRel c.Rel
i : ι
hi : ¬c.Rel i (c.next i)
A : C
f g : X φ i ⟶ A
h : inrX φ i ≫ f = inrX φ i ≫ g
⊢ (XIso φ i hi).inv ≫ f = (XIso φ i hi).inv ≫ g

tactic: simpa only [inrX, dif_neg hi] using h
state_before: C : Type u_1
inst✝³ : Category.{u_3, u_1} C
inst✝² : Preadditive C
ι : Type u_2
c : ComplexShape ι
F G K : HomologicalComplex C c
φ : F ⟶ G
inst✝¹ : HasHomotopyCofiber φ
inst✝ : DecidableRel c.Rel
i : ι
hi : ¬c.Rel i (c.next i)
A : C
f g : X φ i ⟶ A
h : inrX φ i ≫ f = inrX φ i ≫ g
⊢ (XIso φ i hi).inv ≫ f = (XIso φ i hi).inv ≫ g
state_after: no goals
Theorem: NumberField.mixedEmbedding.normAtPlace_add_le
File: Mathlib/NumberTheory/NumberField/CanonicalEmbedding/Basic.lean

tactic: rw [normAtPlace, MonoidWithZeroHom.coe_mk, ZeroHom.coe_mk]
state_before: K : Type u_1
inst✝ : Field K
w : InfinitePlace K
x y : ({ w // w.IsReal } → ℝ) × ({ w // w.IsComplex } → ℂ)
⊢ (normAtPlace w) (x + y) ≤ (normAtPlace w) x + (normAtPlace w) y
state_after: K : Type u_1
inst✝ : Field K
w : InfinitePlace K
x y : ({ w // w.IsReal } → ℝ) × ({ w // w.IsComplex } → ℂ)
⊢ (if hw : w.IsReal then ‖(x + y).1 ⟨w, hw⟩‖ else ‖(x + y).2 ⟨w, ⋯⟩‖) ≤
    (if hw : w.IsReal then ‖x.1 ⟨w, hw⟩‖ else ‖x.2 ⟨w, ⋯⟩‖) + if hw : w.IsReal then ‖y.1 ⟨w, hw⟩‖ else ‖y.2 ⟨w, ⋯⟩‖

tactic: split_ifs <;> exact norm_add_le _ _
state_before: K : Type u_1
inst✝ : Field K
w : InfinitePlace K
x y : ({ w // w.IsReal } → ℝ) × ({ w // w.IsComplex } → ℂ)
⊢ (if hw : w.IsReal then ‖(x + y).1 ⟨w, hw⟩‖ else ‖(x + y).2 ⟨w, ⋯⟩‖) ≤
    (if hw : w.IsReal then ‖x.1 ⟨w, hw⟩‖ else ‖x.2 ⟨w, ⋯⟩‖) + if hw : w.IsReal then ‖y.1 ⟨w, hw⟩‖ else ‖y.2 ⟨w, ⋯⟩‖
state_after: no goals