1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Filter.Germ.min_def
File: Mathlib/Order/Filter/FilterProduct.lean

tactic: rcases le_total (a : β*) b with h | h
state_before: α : Type u
β : Type v
φ : Ultrafilter α
K : LinearOrder β
x y : (↑φ).Germ β
a b : α → β
⊢ min ↑a ↑b = map₂ min ↑a ↑b
state_after: case inl
α : Type u
β : Type v
φ : Ultrafilter α
K : LinearOrder β
x y : (↑φ).Germ β
a b : α → β
h : ↑a ≤ ↑b
⊢ min ↑a ↑b = map₂ min ↑a ↑b

case inr
α : Type u
β : Type v
φ : Ultrafilter α
K : LinearOrder β
x y : (↑φ).Germ β
a b : α → β
h : ↑b ≤ ↑a
⊢ min ↑a ↑b = map₂ min ↑a ↑b

tactic: rw [min_eq_left h, map₂_coe, coe_eq]
state_before: case inl
α : Type u
β : Type v
φ : Ultrafilter α
K : LinearOrder β
x y : (↑φ).Germ β
a b : α → β
h : ↑a ≤ ↑b
⊢ min ↑a ↑b = map₂ min ↑a ↑b
state_after: case inl
α : Type u
β : Type v
φ : Ultrafilter α
K : LinearOrder β
x y : (↑φ).Germ β
a b : α → β
h : ↑a ≤ ↑b
⊢ a =ᶠ[↑φ] fun x => min (a x) (b x)

tactic: exact h.mono fun i hi => (min_eq_left hi).symm
state_before: case inl
α : Type u
β : Type v
φ : Ultrafilter α
K : LinearOrder β
x y : (↑φ).Germ β
a b : α → β
h : ↑a ≤ ↑b
⊢ a =ᶠ[↑φ] fun x => min (a x) (b x)
state_after: no goals

tactic: rw [min_eq_right h, map₂_coe, coe_eq]
state_before: case inr
α : Type u
β : Type v
φ : Ultrafilter α
K : LinearOrder β
x y : (↑φ).Germ β
a b : α → β
h : ↑b ≤ ↑a
⊢ min ↑a ↑b = map₂ min ↑a ↑b
state_after: case inr
α : Type u
β : Type v
φ : Ultrafilter α
K : LinearOrder β
x y : (↑φ).Germ β
a b : α → β
h : ↑b ≤ ↑a
⊢ b =ᶠ[↑φ] fun x => min (a x) (b x)

tactic: exact h.mono fun i hi => (min_eq_right hi).symm
state_before: case inr
α : Type u
β : Type v
φ : Ultrafilter α
K : LinearOrder β
x y : (↑φ).Germ β
a b : α → β
h : ↑b ≤ ↑a
⊢ b =ᶠ[↑φ] fun x => min (a x) (b x)
state_after: no goals
Theorem: IsUpperSet.sdiff_of_isLowerSet
File: Mathlib/Order/UpperLower/Basic.lean

tactic: aesop
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝¹ : LE α
inst✝ : LE β
s t : Set α
a : α
hs : IsUpperSet s
ht : IsLowerSet t
⊢ ∀ b ∈ s, ∀ c ∈ t, b ≤ c → b ∈ t
state_after: no goals
Theorem: EMetric.le_infEdist
File: Mathlib/Topology/MetricSpace/HausdorffDistance.lean

tactic: simp only [infEdist, le_iInf_iff]
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x y : α
s t : Set α
Φ : α → β
d : ℝ≥0∞
⊢ d ≤ infEdist x s ↔ ∀ y ∈ s, d ≤ edist x y
state_after: no goals
Theorem: infClosed_univ
File: Mathlib/Order/SupClosed.lean

tactic: simp [InfClosed]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : SemilatticeInf α
inst✝ : SemilatticeInf β
ι : Sort u_4
S : Set (Set α)
f : ι → Set α
s t : Set α
a : α
⊢ InfClosed univ
state_after: no goals
Theorem: midpoint_sub_add
File: Mathlib/LinearAlgebra/AffineSpace/Midpoint.lean

tactic: rw [sub_eq_add_neg, ← vadd_eq_add, ← vadd_eq_add, ← midpoint_vadd_midpoint]
state_before: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : Ring R
inst✝⁶ : Invertible 2
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x✝ y✝ z : P
x y : V
⊢ midpoint R (x - y) (x + y) = x
state_after: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : Ring R
inst✝⁶ : Invertible 2
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x✝ y✝ z : P
x y : V
⊢ midpoint R x x +ᵥ midpoint R (-y) y = x

tactic: simp
state_before: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : Ring R
inst✝⁶ : Invertible 2
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x✝ y✝ z : P
x y : V
⊢ midpoint R x x +ᵥ midpoint R (-y) y = x
state_after: no goals
Theorem: CategoryTheory.Adjunction.homEquiv_naturality_left_symm
File: Mathlib/CategoryTheory/Adjunction/Basic.lean

tactic: rw [homEquiv_counit, F.map_comp, assoc, adj.homEquiv_counit.symm]
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
G : D ⥤ C
adj : F ⊣ G
X' X : C
Y Y' : D
f : X' ⟶ X
g : X ⟶ G.obj Y
⊢ (adj.homEquiv X' Y).symm (f ≫ g) = F.map f ≫ (adj.homEquiv X Y).symm g
state_after: no goals
Theorem: Module.End.HasEigenvector.pow_apply
File: Mathlib/LinearAlgebra/Eigenspace/Basic.lean

tactic: induction n <;> simp [*, pow_succ f, hv.apply_eq_smul, smul_smul, pow_succ' μ]
state_before: K R : Type v
V M : Type w
inst✝⁵ : CommRing R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f : End R M
μ : R
v : M
hv : f.HasEigenvector μ v
n : ℕ
⊢ (f ^ n) v = μ ^ n • v
state_after: no goals
Theorem: Cardinal.mk_real
File: Mathlib/Data/Real/Cardinality.lean

tactic: apply le_antisymm
state_before: c : ℝ
f g : ℕ → Bool
n : ℕ
⊢ #ℝ = 𝔠
state_after: case a
c : ℝ
f g : ℕ → Bool
n : ℕ
⊢ #ℝ ≤ 𝔠

case a
c : ℝ
f g : ℕ → Bool
n : ℕ
⊢ 𝔠 ≤ #ℝ

tactic: rw [Real.equivCauchy.cardinal_eq]
state_before: case a
c : ℝ
f g : ℕ → Bool
n : ℕ
⊢ #ℝ ≤ 𝔠
state_after: case a
c : ℝ
f g : ℕ → Bool
n : ℕ
⊢ #(CauSeq.Completion.Cauchy abs) ≤ 𝔠

tactic: apply mk_quotient_le.trans
state_before: case a
c : ℝ
f g : ℕ → Bool
n : ℕ
⊢ #(CauSeq.Completion.Cauchy abs) ≤ 𝔠
state_after: case a
c : ℝ
f g : ℕ → Bool
n : ℕ
⊢ #(CauSeq ℚ abs) ≤ 𝔠

tactic: apply (mk_subtype_le _).trans_eq
state_before: case a
c : ℝ
f g : ℕ → Bool
n : ℕ
⊢ #(CauSeq ℚ abs) ≤ 𝔠
state_after: case a
c : ℝ
f g : ℕ → Bool
n : ℕ
⊢ #(ℕ → ℚ) = 𝔠

tactic: rw [← power_def, mk_nat, mkRat, aleph0_power_aleph0]
state_before: case a
c : ℝ
f g : ℕ → Bool
n : ℕ
⊢ #(ℕ → ℚ) = 𝔠
state_after: no goals

tactic: convert mk_le_of_injective (cantorFunction_injective _ _)
state_before: case a
c : ℝ
f g : ℕ → Bool
n : ℕ
⊢ 𝔠 ≤ #ℝ
state_after: case h.e'_3
c : ℝ
f g : ℕ → Bool
n : ℕ
⊢ 𝔠 = #(ℕ → Bool)

case a.convert_1
c : ℝ
f g : ℕ → Bool
n : ℕ
⊢ ℝ

case a.convert_2
c : ℝ
f g : ℕ → Bool
n : ℕ
⊢ 0 < ?a.convert_1✝

case a.convert_3
c : ℝ
f g : ℕ → Bool
n : ℕ
⊢ ?a.convert_1✝ < 1 / 2

tactic: rw [← power_def, mk_bool, mk_nat, two_power_aleph0]
state_before: case h.e'_3
c : ℝ
f g : ℕ → Bool
n : ℕ
⊢ 𝔠 = #(ℕ → Bool)
state_after: no goals

tactic: exact 1 / 3
state_before: case a.convert_1
c : ℝ
f g : ℕ → Bool
n : ℕ
⊢ ℝ
state_after: no goals

tactic: norm_num
state_before: case a.convert_2
c : ℝ
f g : ℕ → Bool
n : ℕ
⊢ 0 < 1 / 3
state_after: no goals

tactic: norm_num
state_before: case a.convert_3
c : ℝ
f g : ℕ → Bool
n : ℕ
⊢ 1 / 3 < 1 / 2
state_after: no goals
Theorem: hasEigenvector_toLin_diagonal
File: Mathlib/LinearAlgebra/Eigenspace/Matrix.lean

tactic: simp [diagonal]
state_before: R : Type u_1
n : Type u_2
M : Type u_3
inst✝⁵ : DecidableEq n
inst✝⁴ : Fintype n
inst✝³ : CommRing R
inst✝² : Nontrivial R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
d : n → R
i : n
b : Basis n R M
⊢ ((toLin b b) (diagonal d)) (b i) = d i • b i
state_after: no goals
Theorem: PNat.card_fintype_Ioo
File: Mathlib/Data/PNat/Interval.lean

tactic: rw [← card_Ioo, Fintype.card_ofFinset]
state_before: a b : ℕ+
⊢ Fintype.card ↑(Set.Ioo a b) = ↑b - ↑a - 1
state_after: no goals
Theorem: nhds_basis_uniformity'
File: Mathlib/Topology/UniformSpace/Basic.lean

tactic: rw [nhds_eq_comap_uniformity]
state_before: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort u_1
inst✝ : UniformSpace α
p : ι → Prop
s : ι → Set (α × α)
h : (𝓤 α).HasBasis p s
x : α
⊢ (𝓝 x).HasBasis p fun i => ball x (s i)
state_after: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort u_1
inst✝ : UniformSpace α
p : ι → Prop
s : ι → Set (α × α)
h : (𝓤 α).HasBasis p s
x : α
⊢ (comap (Prod.mk x) (𝓤 α)).HasBasis p fun i => ball x (s i)

tactic: exact h.comap (Prod.mk x)
state_before: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort u_1
inst✝ : UniformSpace α
p : ι → Prop
s : ι → Set (α × α)
h : (𝓤 α).HasBasis p s
x : α
⊢ (comap (Prod.mk x) (𝓤 α)).HasBasis p fun i => ball x (s i)
state_after: no goals
Theorem: Ordering.Compares.ne_lt
File: Mathlib/Order/Compare.lean

tactic: injection h
state_before: α : Type u_1
β : Type u_2
inst✝ : Preorder α
a b : α
h✝ : eq.Compares a b
x✝ : b ≤ a
h : eq = lt
⊢ False
state_after: no goals

tactic: injection h
state_before: α : Type u_1
β : Type u_2
inst✝ : Preorder α
a b : α
h✝ : gt.Compares a b
x✝ : b ≤ a
h : gt = lt
⊢ False
state_after: no goals
Theorem: Polynomial.map_expand_pow_char
File: Mathlib/Algebra/Polynomial/Expand.lean

tactic: induction' n with _ n_ih
state_before: R : Type u
inst✝² : CommSemiring R
S : Type v
inst✝¹ : CommSemiring S
p q : ℕ
inst✝ : ExpChar R p
f : R[X]
n : ℕ
⊢ map (frobenius R p ^ n) ((expand R (p ^ n)) f) = f ^ p ^ n
state_after: case zero
R : Type u
inst✝² : CommSemiring R
S : Type v
inst✝¹ : CommSemiring S
p q : ℕ
inst✝ : ExpChar R p
f : R[X]
⊢ map (frobenius R p ^ 0) ((expand R (p ^ 0)) f) = f ^ p ^ 0

case succ
R : Type u
inst✝² : CommSemiring R
S : Type v
inst✝¹ : CommSemiring S
p q : ℕ
inst✝ : ExpChar R p
f : R[X]
n✝ : ℕ
n_ih : map (frobenius R p ^ n✝) ((expand R (p ^ n✝)) f) = f ^ p ^ n✝
⊢ map (frobenius R p ^ (n✝ + 1)) ((expand R (p ^ (n✝ + 1))) f) = f ^ p ^ (n✝ + 1)

tactic: symm
state_before: case succ
R : Type u
inst✝² : CommSemiring R
S : Type v
inst✝¹ : CommSemiring S
p q : ℕ
inst✝ : ExpChar R p
f : R[X]
n✝ : ℕ
n_ih : map (frobenius R p ^ n✝) ((expand R (p ^ n✝)) f) = f ^ p ^ n✝
⊢ map (frobenius R p ^ (n✝ + 1)) ((expand R (p ^ (n✝ + 1))) f) = f ^ p ^ (n✝ + 1)
state_after: case succ
R : Type u
inst✝² : CommSemiring R
S : Type v
inst✝¹ : CommSemiring S
p q : ℕ
inst✝ : ExpChar R p
f : R[X]
n✝ : ℕ
n_ih : map (frobenius R p ^ n✝) ((expand R (p ^ n✝)) f) = f ^ p ^ n✝
⊢ f ^ p ^ (n✝ + 1) = map (frobenius R p ^ (n✝ + 1)) ((expand R (p ^ (n✝ + 1))) f)

tactic: rw [pow_succ, pow_mul, ← n_ih, ← expand_char, pow_succ', RingHom.mul_def, ← map_map, mul_comm,
  expand_mul, ← map_expand]
state_before: case succ
R : Type u
inst✝² : CommSemiring R
S : Type v
inst✝¹ : CommSemiring S
p q : ℕ
inst✝ : ExpChar R p
f : R[X]
n✝ : ℕ
n_ih : map (frobenius R p ^ n✝) ((expand R (p ^ n✝)) f) = f ^ p ^ n✝
⊢ f ^ p ^ (n✝ + 1) = map (frobenius R p ^ (n✝ + 1)) ((expand R (p ^ (n✝ + 1))) f)
state_after: no goals

tactic: simp [RingHom.one_def]
state_before: case zero
R : Type u
inst✝² : CommSemiring R
S : Type v
inst✝¹ : CommSemiring S
p q : ℕ
inst✝ : ExpChar R p
f : R[X]
⊢ map (frobenius R p ^ 0) ((expand R (p ^ 0)) f) = f ^ p ^ 0
state_after: no goals
Theorem: CategoryTheory.Arrow.inv_right
File: Mathlib/CategoryTheory/Comma/Arrow.lean

tactic: rw [← Comma.comp_right, IsIso.hom_inv_id, id_right]
state_before: T : Type u
inst✝¹ : Category.{v, u} T
f g : Arrow T
sq : f ⟶ g
inst✝ : IsIso sq
⊢ sq.right ≫ (inv sq).right = 𝟙 f.right
state_after: no goals
Theorem: SetTheory.PGame.zero_le_add_left_neg
File: Mathlib/SetTheory/Game/PGame.lean

tactic: rw [← neg_le_neg_iff, neg_zero]
state_before: xl xr : Type u
x : PGame
⊢ 0 ≤ -x + x
state_after: xl xr : Type u
x : PGame
⊢ -(-x + x) ≤ 0

tactic: exact neg_add_le.trans (add_left_neg_le_zero _)
state_before: xl xr : Type u
x : PGame
⊢ -(-x + x) ≤ 0
state_after: no goals
Theorem: BoxIntegral.Box.volume_apply'
File: Mathlib/Analysis/BoxIntegral/Partition/Measure.lean

tactic: rw [coe_eq_pi, Real.volume_pi_Ioc_toReal I.lower_le_upper]
state_before: ι : Type u_1
inst✝ : Fintype ι
I : Box ι
⊢ (volume ↑I).toReal = ∏ i : ι, (I.upper i - I.lower i)
state_after: no goals
Theorem: WittVector.zero_coeff
File: Mathlib/RingTheory/WittVector/Defs.lean

tactic: simp only [wittZero_eq_zero, AlgHom.map_zero]
state_before: p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝ : CommRing R
n : ℕ
⊢ (aeval (Function.uncurry fun i => (![] i).coeff)) (wittZero p n) = 0
state_after: no goals
Theorem: Real.Angle.sign_pi_add
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Angle.lean

tactic: rw [add_comm, sign_add_pi]
state_before: θ : Angle
⊢ (↑π + θ).sign = -θ.sign
state_after: no goals
Theorem: Submonoid.mul_leftInvEquiv
File: Mathlib/GroupTheory/Submonoid/Inverses.lean

tactic: simp only [leftInvEquiv_apply, fromCommLeftInv, mul_fromLeftInv]
state_before: M : Type u_1
inst✝ : CommMonoid M
S : Submonoid M
hS : S ≤ IsUnit.submonoid M
x : ↥S.leftInv
⊢ ↑x * ↑((S.leftInvEquiv hS) x) = 1
state_after: no goals
Theorem: constantCoeff_wittStructureInt_zero
File: Mathlib/RingTheory/WittVector/StructurePolynomial.lean

tactic: have inj : Function.Injective (Int.castRingHom ℚ) := by intro m n; exact Int.cast_inj.mp
state_before: p : ℕ
R : Type u_1
idx : Type u_2
inst✝ : CommRing R
hp : Fact (Nat.Prime p)
Φ : MvPolynomial idx ℤ
⊢ constantCoeff (wittStructureInt p Φ 0) = constantCoeff Φ
state_after: p : ℕ
R : Type u_1
idx : Type u_2
inst✝ : CommRing R
hp : Fact (Nat.Prime p)
Φ : MvPolynomial idx ℤ
inj : Function.Injective ⇑(Int.castRingHom ℚ)
⊢ constantCoeff (wittStructureInt p Φ 0) = constantCoeff Φ

tactic: apply inj
state_before: p : ℕ
R : Type u_1
idx : Type u_2
inst✝ : CommRing R
hp : Fact (Nat.Prime p)
Φ : MvPolynomial idx ℤ
inj : Function.Injective ⇑(Int.castRingHom ℚ)
⊢ constantCoeff (wittStructureInt p Φ 0) = constantCoeff Φ
state_after: case a
p : ℕ
R : Type u_1
idx : Type u_2
inst✝ : CommRing R
hp : Fact (Nat.Prime p)
Φ : MvPolynomial idx ℤ
inj : Function.Injective ⇑(Int.castRingHom ℚ)
⊢ (Int.castRingHom ℚ) (constantCoeff (wittStructureInt p Φ 0)) = (Int.castRingHom ℚ) (constantCoeff Φ)

tactic: rw [← constantCoeff_map, map_wittStructureInt, constantCoeff_wittStructureRat_zero,
  constantCoeff_map]
state_before: case a
p : ℕ
R : Type u_1
idx : Type u_2
inst✝ : CommRing R
hp : Fact (Nat.Prime p)
Φ : MvPolynomial idx ℤ
inj : Function.Injective ⇑(Int.castRingHom ℚ)
⊢ (Int.castRingHom ℚ) (constantCoeff (wittStructureInt p Φ 0)) = (Int.castRingHom ℚ) (constantCoeff Φ)
state_after: no goals

tactic: intro m n
state_before: p : ℕ
R : Type u_1
idx : Type u_2
inst✝ : CommRing R
hp : Fact (Nat.Prime p)
Φ : MvPolynomial idx ℤ
⊢ Function.Injective ⇑(Int.castRingHom ℚ)
state_after: p : ℕ
R : Type u_1
idx : Type u_2
inst✝ : CommRing R
hp : Fact (Nat.Prime p)
Φ : MvPolynomial idx ℤ
m n : ℤ
⊢ (Int.castRingHom ℚ) m = (Int.castRingHom ℚ) n → m = n

tactic: exact Int.cast_inj.mp
state_before: p : ℕ
R : Type u_1
idx : Type u_2
inst✝ : CommRing R
hp : Fact (Nat.Prime p)
Φ : MvPolynomial idx ℤ
m n : ℤ
⊢ (Int.castRingHom ℚ) m = (Int.castRingHom ℚ) n → m = n
state_after: no goals
Theorem: Matrix.PosDef.transpose
File: Mathlib/LinearAlgebra/Matrix/PosDef.lean

tactic: refine ⟨IsHermitian.transpose hM.1, fun x hx => ?_⟩
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 𝕜
M : Matrix n n R
hM : M.PosDef
⊢ Mᵀ.PosDef
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 𝕜
M : Matrix n n R
hM : M.PosDef
x : n → R
hx : x ≠ 0
⊢ 0 < star x ⬝ᵥ Mᵀ *ᵥ x

tactic: convert hM.2 (star x) (star_ne_zero.2 hx) using 1
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 𝕜
M : Matrix n n R
hM : M.PosDef
x : n → R
hx : x ≠ 0
⊢ 0 < star x ⬝ᵥ Mᵀ *ᵥ x
state_after: case h.e'_4
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 𝕜
M : Matrix n n R
hM : M.PosDef
x : n → R
hx : x ≠ 0
⊢ star x ⬝ᵥ Mᵀ *ᵥ x = star (star x) ⬝ᵥ M *ᵥ star x

tactic: rw [mulVec_transpose, Matrix.dotProduct_mulVec, star_star, dotProduct_comm]
state_before: case h.e'_4
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 𝕜
M : Matrix n n R
hM : M.PosDef
x : n → R
hx : x ≠ 0
⊢ star x ⬝ᵥ Mᵀ *ᵥ x = star (star x) ⬝ᵥ M *ᵥ star x
state_after: no goals
Theorem: div_eq_div_iff_mul_eq_mul
File: Mathlib/Algebra/Group/Basic.lean

tactic: rw [div_eq_iff_eq_mul, div_mul_eq_mul_div, eq_comm, div_eq_iff_eq_mul']
state_before: α : Type u_1
β : Type u_2
G : Type u_3
M : Type u_4
inst✝ : CommGroup G
a b c d : G
⊢ a / b = c / d ↔ a * d = c * b
state_after: α : Type u_1
β : Type u_2
G : Type u_3
M : Type u_4
inst✝ : CommGroup G
a b c d : G
⊢ c * b = d * a ↔ a * d = c * b

tactic: simp only [mul_comm, eq_comm]
state_before: α : Type u_1
β : Type u_2
G : Type u_3
M : Type u_4
inst✝ : CommGroup G
a b c d : G
⊢ c * b = d * a ↔ a * d = c * b
state_after: no goals
Theorem: eventually_nhdsWithin_pos_mul_left
File: Mathlib/Topology/Algebra/Order/Field.lean

tactic: rw [← nhdsWithin_pos_comap_mul_left hx]
state_before: 𝕜 : Type u_1
α : Type u_2
inst✝² : LinearOrderedField 𝕜
inst✝¹ : TopologicalSpace 𝕜
inst✝ : OrderTopology 𝕜
l : Filter α
f g : α → 𝕜
x : 𝕜
hx : 0 < x
p : 𝕜 → Prop
h : ∀ᶠ (ε : 𝕜) in 𝓝[>] 0, p ε
⊢ ∀ᶠ (ε : 𝕜) in 𝓝[>] 0, p (x * ε)
state_after: 𝕜 : Type u_1
α : Type u_2
inst✝² : LinearOrderedField 𝕜
inst✝¹ : TopologicalSpace 𝕜
inst✝ : OrderTopology 𝕜
l : Filter α
f g : α → 𝕜
x : 𝕜
hx : 0 < x
p : 𝕜 → Prop
h : ∀ᶠ (ε : 𝕜) in 𝓝[>] 0, p ε
⊢ ∀ᶠ (ε : 𝕜) in comap (fun x_1 => x * x_1) (𝓝[>] 0), p (x * ε)

tactic: exact h.comap fun ε => x * ε
state_before: 𝕜 : Type u_1
α : Type u_2
inst✝² : LinearOrderedField 𝕜
inst✝¹ : TopologicalSpace 𝕜
inst✝ : OrderTopology 𝕜
l : Filter α
f g : α → 𝕜
x : 𝕜
hx : 0 < x
p : 𝕜 → Prop
h : ∀ᶠ (ε : 𝕜) in 𝓝[>] 0, p ε
⊢ ∀ᶠ (ε : 𝕜) in comap (fun x_1 => x * x_1) (𝓝[>] 0), p (x * ε)
state_after: no goals
Theorem: ChainComplex.mk'_d_1_0
File: Mathlib/Algebra/Homology/HomologicalComplex.lean

tactic: change ite (1 = 0 + 1) (𝟙 X₁ ≫ d₀) 0 = d₀
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : HasZeroMorphisms V
X₀ X₁ X₂ : V
d₀ : X₁ ⟶ X₀
d₁ : X₂ ⟶ X₁
s : d₁ ≫ d₀ = 0
succ : (S : ShortComplex V) → (X₃ : V) ×' (d₂ : X₃ ⟶ S.X₁) ×' d₂ ≫ S.f = 0
succ' : {X₀ X₁ : V} → (f : X₁ ⟶ X₀) → (X₂ : V) ×' (d : X₂ ⟶ X₁) ×' d ≫ f = 0
⊢ (mk' X₀ X₁ d₀ fun {X₀ X₁} => succ').d 1 0 = d₀
state_after: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : HasZeroMorphisms V
X₀ X₁ X₂ : V
d₀ : X₁ ⟶ X₀
d₁ : X₂ ⟶ X₁
s : d₁ ≫ d₀ = 0
succ : (S : ShortComplex V) → (X₃ : V) ×' (d₂ : X₃ ⟶ S.X₁) ×' d₂ ≫ S.f = 0
succ' : {X₀ X₁ : V} → (f : X₁ ⟶ X₀) → (X₂ : V) ×' (d : X₂ ⟶ X₁) ×' d ≫ f = 0
⊢ (if 1 = 0 + 1 then 𝟙 X₁ ≫ d₀ else 0) = d₀

tactic: rw [if_pos rfl, Category.id_comp]
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : HasZeroMorphisms V
X₀ X₁ X₂ : V
d₀ : X₁ ⟶ X₀
d₁ : X₂ ⟶ X₁
s : d₁ ≫ d₀ = 0
succ : (S : ShortComplex V) → (X₃ : V) ×' (d₂ : X₃ ⟶ S.X₁) ×' d₂ ≫ S.f = 0
succ' : {X₀ X₁ : V} → (f : X₁ ⟶ X₀) → (X₂ : V) ×' (d : X₂ ⟶ X₁) ×' d ≫ f = 0
⊢ (if 1 = 0 + 1 then 𝟙 X₁ ≫ d₀ else 0) = d₀
state_after: no goals
Theorem: Polynomial.comp_X
File: Mathlib/Algebra/Polynomial/Eval.lean

tactic: simp only [comp, eval₂_def, C_mul_X_pow_eq_monomial]
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝ : Semiring R
p q r : R[X]
⊢ p.comp X = p
state_after: R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝ : Semiring R
p q r : R[X]
⊢ (p.sum fun e a => (monomial e) a) = p

tactic: exact sum_monomial_eq _
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝ : Semiring R
p q r : R[X]
⊢ (p.sum fun e a => (monomial e) a) = p
state_after: no goals
Theorem: CategoryTheory.CommSq.left_adjoint_hasLift_iff
File: Mathlib/CategoryTheory/LiftingProperties/Adjunction.lean

tactic: simp only [HasLift.iff]
state_before: C : Type u_1
D : Type u_2
inst✝¹ : Category.{u_4, u_1} C
inst✝ : Category.{u_3, u_2} D
G : C ⥤ D
F : D ⥤ C
A B : C
X Y : D
i : A ⟶ B
p : X ⟶ Y
u : A ⟶ F.obj X
v : B ⟶ F.obj Y
sq : CommSq u i (F.map p) v
adj : G ⊣ F
⊢ ⋯.HasLift ↔ sq.HasLift
state_after: C : Type u_1
D : Type u_2
inst✝¹ : Category.{u_4, u_1} C
inst✝ : Category.{u_3, u_2} D
G : C ⥤ D
F : D ⥤ C
A B : C
X Y : D
i : A ⟶ B
p : X ⟶ Y
u : A ⟶ F.obj X
v : B ⟶ F.obj Y
sq : CommSq u i (F.map p) v
adj : G ⊣ F
⊢ Nonempty ⋯.LiftStruct ↔ Nonempty sq.LiftStruct

tactic: exact Equiv.nonempty_congr (sq.leftAdjointLiftStructEquiv adj).symm
state_before: C : Type u_1
D : Type u_2
inst✝¹ : Category.{u_4, u_1} C
inst✝ : Category.{u_3, u_2} D
G : C ⥤ D
F : D ⥤ C
A B : C
X Y : D
i : A ⟶ B
p : X ⟶ Y
u : A ⟶ F.obj X
v : B ⟶ F.obj Y
sq : CommSq u i (F.map p) v
adj : G ⊣ F
⊢ Nonempty ⋯.LiftStruct ↔ Nonempty sq.LiftStruct
state_after: no goals
Theorem: MonotoneOn.mapsTo_Ici
File: Mathlib/Order/Interval/Set/Image.lean

tactic: aesop
state_before: α : Type u_1
β : Type u_2
f : α → β
inst✝¹ : Preorder α
inst✝ : Preorder β
a b : α
h : MonotoneOn f (Ici a)
x✝¹ : α
x✝ : x✝¹ ∈ Ici a
⊢ f x✝¹ ∈ Ici (f a)
state_after: no goals
Theorem: minpoly.prime_of_isIntegrallyClosed
File: Mathlib/FieldTheory/Minpoly/IsIntegrallyClosed.lean

tactic: refine
  ⟨(minpoly.monic hx).ne_zero,
    ⟨fun h_contra => (ne_of_lt (minpoly.degree_pos hx)) (degree_eq_zero_of_isUnit h_contra).symm,
      fun a b h => or_iff_not_imp_left.mpr fun h' => ?_⟩⟩
state_before: R : Type u_1
S : Type u_2
inst✝⁶ : CommRing R
inst✝⁵ : CommRing S
inst✝⁴ : IsDomain R
inst✝³ : Algebra R S
inst✝² : IsDomain S
inst✝¹ : NoZeroSMulDivisors R S
inst✝ : IsIntegrallyClosed R
x : S
hx : IsIntegral R x
⊢ Prime (minpoly R x)
state_after: R : Type u_1
S : Type u_2
inst✝⁶ : CommRing R
inst✝⁵ : CommRing S
inst✝⁴ : IsDomain R
inst✝³ : Algebra R S
inst✝² : IsDomain S
inst✝¹ : NoZeroSMulDivisors R S
inst✝ : IsIntegrallyClosed R
x : S
hx : IsIntegral R x
a b : R[X]
h : minpoly R x ∣ a * b
h' : ¬minpoly R x ∣ a
⊢ minpoly R x ∣ b

tactic: rw [← minpoly.isIntegrallyClosed_dvd_iff hx] at h' h ⊢
state_before: R : Type u_1
S : Type u_2
inst✝⁶ : CommRing R
inst✝⁵ : CommRing S
inst✝⁴ : IsDomain R
inst✝³ : Algebra R S
inst✝² : IsDomain S
inst✝¹ : NoZeroSMulDivisors R S
inst✝ : IsIntegrallyClosed R
x : S
hx : IsIntegral R x
a b : R[X]
h : minpoly R x ∣ a * b
h' : ¬minpoly R x ∣ a
⊢ minpoly R x ∣ b
state_after: R : Type u_1
S : Type u_2
inst✝⁶ : CommRing R
inst✝⁵ : CommRing S
inst✝⁴ : IsDomain R
inst✝³ : Algebra R S
inst✝² : IsDomain S
inst✝¹ : NoZeroSMulDivisors R S
inst✝ : IsIntegrallyClosed R
x : S
hx : IsIntegral R x
a b : R[X]
h : (Polynomial.aeval x) (a * b) = 0
h' : ¬(Polynomial.aeval x) a = 0
⊢ (Polynomial.aeval x) b = 0

tactic: rw [aeval_mul] at h
state_before: R : Type u_1
S : Type u_2
inst✝⁶ : CommRing R
inst✝⁵ : CommRing S
inst✝⁴ : IsDomain R
inst✝³ : Algebra R S
inst✝² : IsDomain S
inst✝¹ : NoZeroSMulDivisors R S
inst✝ : IsIntegrallyClosed R
x : S
hx : IsIntegral R x
a b : R[X]
h : (Polynomial.aeval x) (a * b) = 0
h' : ¬(Polynomial.aeval x) a = 0
⊢ (Polynomial.aeval x) b = 0
state_after: R : Type u_1
S : Type u_2
inst✝⁶ : CommRing R
inst✝⁵ : CommRing S
inst✝⁴ : IsDomain R
inst✝³ : Algebra R S
inst✝² : IsDomain S
inst✝¹ : NoZeroSMulDivisors R S
inst✝ : IsIntegrallyClosed R
x : S
hx : IsIntegral R x
a b : R[X]
h : (Polynomial.aeval x) a * (Polynomial.aeval x) b = 0
h' : ¬(Polynomial.aeval x) a = 0
⊢ (Polynomial.aeval x) b = 0

tactic: exact eq_zero_of_ne_zero_of_mul_left_eq_zero h' h
state_before: R : Type u_1
S : Type u_2
inst✝⁶ : CommRing R
inst✝⁵ : CommRing S
inst✝⁴ : IsDomain R
inst✝³ : Algebra R S
inst✝² : IsDomain S
inst✝¹ : NoZeroSMulDivisors R S
inst✝ : IsIntegrallyClosed R
x : S
hx : IsIntegral R x
a b : R[X]
h : (Polynomial.aeval x) a * (Polynomial.aeval x) b = 0
h' : ¬(Polynomial.aeval x) a = 0
⊢ (Polynomial.aeval x) b = 0
state_after: no goals
Theorem: Finset.subset_set_biUnion_of_mem
File: Mathlib/Data/Finset/Lattice.lean

tactic: simp only [h, iSup_pos, le_refl]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
s : Finset α
f : α → Set β
x : α
h : x ∈ s
⊢ f x ≤ ⨆ (_ : x ∈ s), f x
state_after: no goals