1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: CategoryTheory.Abelian.pseudoEqual_trans
File: Mathlib/CategoryTheory/Abelian/Pseudoelements.lean

tactic: intro f g h ⟨R, p, q, ep, Eq, comm⟩ ⟨R', p', q', ep', eq', comm'⟩
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : Abelian C
P : C
⊢ Transitive (PseudoEqual P)
state_after: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : Abelian C
P : C
f g h : Over P
R : C
p : R ⟶ f.left
q : R ⟶ g.left
ep : Epi p
Eq : Epi q
comm : p ≫ f.hom = q ≫ g.hom
R' : C
p' : R' ⟶ g.left
q' : R' ⟶ h.left
ep' : Epi p'
eq' : Epi q'
comm' : p' ≫ g.hom = q' ≫ h.hom
⊢ PseudoEqual P f h

tactic: refine ⟨pullback q p', pullback.fst ≫ p, pullback.snd ≫ q', epi_comp _ _, epi_comp _ _, ?_⟩
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : Abelian C
P : C
f g h : Over P
R : C
p : R ⟶ f.left
q : R ⟶ g.left
ep : Epi p
Eq : Epi q
comm : p ≫ f.hom = q ≫ g.hom
R' : C
p' : R' ⟶ g.left
q' : R' ⟶ h.left
ep' : Epi p'
eq' : Epi q'
comm' : p' ≫ g.hom = q' ≫ h.hom
⊢ PseudoEqual P f h
state_after: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : Abelian C
P : C
f g h : Over P
R : C
p : R ⟶ f.left
q : R ⟶ g.left
ep : Epi p
Eq : Epi q
comm : p ≫ f.hom = q ≫ g.hom
R' : C
p' : R' ⟶ g.left
q' : R' ⟶ h.left
ep' : Epi p'
eq' : Epi q'
comm' : p' ≫ g.hom = q' ≫ h.hom
⊢ (pullback.fst ≫ p) ≫ f.hom = (pullback.snd ≫ q') ≫ h.hom

tactic: rw [Category.assoc, comm, ← Category.assoc, pullback.condition, Category.assoc, comm',
  Category.assoc]
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : Abelian C
P : C
f g h : Over P
R : C
p : R ⟶ f.left
q : R ⟶ g.left
ep : Epi p
Eq : Epi q
comm : p ≫ f.hom = q ≫ g.hom
R' : C
p' : R' ⟶ g.left
q' : R' ⟶ h.left
ep' : Epi p'
eq' : Epi q'
comm' : p' ≫ g.hom = q' ≫ h.hom
⊢ (pullback.fst ≫ p) ≫ f.hom = (pullback.snd ≫ q') ≫ h.hom
state_after: no goals
Theorem: IsUnit.exists_right_inv
File: Mathlib/Algebra/Group/Units.lean

tactic: rcases h with ⟨⟨a, b, hab, _⟩, rfl⟩
state_before: α : Type u
M : Type u_1
N : Type u_2
inst✝ : Monoid M
a b : M
h : IsUnit a
⊢ ∃ b, a * b = 1
state_after: case intro.mk
α : Type u
M : Type u_1
N : Type u_2
inst✝ : Monoid M
b✝ a b : M
hab : a * b = 1
inv_val✝ : b * a = 1
⊢ ∃ b_1, ↑{ val := a, inv := b, val_inv := hab, inv_val := inv_val✝ } * b_1 = 1

tactic: exact ⟨b, hab⟩
state_before: case intro.mk
α : Type u
M : Type u_1
N : Type u_2
inst✝ : Monoid M
b✝ a b : M
hab : a * b = 1
inv_val✝ : b * a = 1
⊢ ∃ b_1, ↑{ val := a, inv := b, val_inv := hab, inv_val := inv_val✝ } * b_1 = 1
state_after: no goals
Theorem: Finset.biUnion_singleton_eq_self
File: Mathlib/Data/Finset/Union.lean

tactic: simp only [mem_biUnion, mem_singleton, exists_prop, exists_eq_right']
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s s₁ s₂ : Finset α
t t₁ t₂ : α → Finset β
inst✝¹ : DecidableEq β
inst✝ : DecidableEq α
x : α
⊢ x ∈ s.biUnion singleton ↔ x ∈ s
state_after: no goals
Theorem: RingHom.map_range
File: Mathlib/Algebra/Ring/Subring/Basic.lean

tactic: simpa only [range_eq_map] using (⊤ : Subring R).map_map g f
state_before: R : Type u
S : Type v
T : Type w
inst✝² : Ring R
inst✝¹ : Ring S
inst✝ : Ring T
g : S →+* T
f : R →+* S
⊢ Subring.map g f.range = (g.comp f).range
state_after: no goals
Theorem: Bimod.RightUnitorBimod.inv_hom_id
File: Mathlib/CategoryTheory/Monoidal/Bimod.lean

tactic: dsimp [hom, inv]
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
⊢ inv P ≫ hom P = 𝟙 P.X
state_after: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
⊢ ((ρ_ P.X).inv ≫ P.X ◁ S.one ≫ coequalizer.π (P.actRight ▷ S.X) ((α_ P.X S.X S.X).hom ≫ P.X ◁ S.mul)) ≫
      coequalizer.desc P.actRight ⋯ =
    𝟙 P.X

tactic: slice_lhs 3 4 => rw [coequalizer.π_desc]
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
⊢ ((ρ_ P.X).inv ≫ P.X ◁ S.one ≫ coequalizer.π (P.actRight ▷ S.X) ((α_ P.X S.X S.X).hom ≫ P.X ◁ S.mul)) ≫
      coequalizer.desc P.actRight ⋯ =
    𝟙 P.X
state_after: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
⊢ (ρ_ P.X).inv ≫ P.X ◁ S.one ≫ P.actRight = 𝟙 P.X

tactic: rw [actRight_one, Iso.inv_hom_id]
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
⊢ (ρ_ P.X).inv ≫ P.X ◁ S.one ≫ P.actRight = 𝟙 P.X
state_after: no goals
Theorem: MeasureTheory.integral_of_hasDerivAt_of_tendsto
File: Mathlib/MeasureTheory/Integral/IntegralEqImproper.lean

tactic: rw [← integral_univ, ← Set.Iic_union_Ioi (a := 0),
  integral_union (Iic_disjoint_Ioi le_rfl) measurableSet_Ioi hf'.integrableOn hf'.integrableOn,
  integral_Iic_of_hasDerivAt_of_tendsto' (fun x _ ↦ hderiv x) hf'.integrableOn hbot,
  integral_Ioi_of_hasDerivAt_of_tendsto' (fun x _ ↦ hderiv x) hf'.integrableOn htop]
state_before: E : Type u_1
f f' : ℝ → E
g g' : ℝ → ℝ
a b l : ℝ
m n : E
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
hderiv : ∀ (x : ℝ), HasDerivAt f (f' x) x
hf' : Integrable f' volume
hbot : Tendsto f atBot (𝓝 m)
htop : Tendsto f atTop (𝓝 n)
⊢ ∫ (x : ℝ), f' x = n - m
state_after: E : Type u_1
f f' : ℝ → E
g g' : ℝ → ℝ
a b l : ℝ
m n : E
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
hderiv : ∀ (x : ℝ), HasDerivAt f (f' x) x
hf' : Integrable f' volume
hbot : Tendsto f atBot (𝓝 m)
htop : Tendsto f atTop (𝓝 n)
⊢ f 0 - m + (n - f 0) = n - m

tactic: abel
state_before: E : Type u_1
f f' : ℝ → E
g g' : ℝ → ℝ
a b l : ℝ
m n : E
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
hderiv : ∀ (x : ℝ), HasDerivAt f (f' x) x
hf' : Integrable f' volume
hbot : Tendsto f atBot (𝓝 m)
htop : Tendsto f atTop (𝓝 n)
⊢ f 0 - m + (n - f 0) = n - m
state_after: no goals
Theorem: MeasureTheory.OuterMeasure.smul_boundedBy
File: Mathlib/MeasureTheory/OuterMeasure/OfFunction.lean

tactic: simp only [boundedBy , smul_ofFunction hc]
state_before: α : Type u_1
m : Set α → ℝ≥0∞
c : ℝ≥0∞
hc : c ≠ ⊤
⊢ c • boundedBy m = boundedBy (c • m)
state_after: α : Type u_1
m : Set α → ℝ≥0∞
c : ℝ≥0∞
hc : c ≠ ⊤
⊢ OuterMeasure.ofFunction (c • fun s => ⨆ (_ : s.Nonempty), m s) ⋯ =
    OuterMeasure.ofFunction (fun s => ⨆ (_ : s.Nonempty), (c • m) s) ⋯

tactic: congr 1 with s : 1
state_before: α : Type u_1
m : Set α → ℝ≥0∞
c : ℝ≥0∞
hc : c ≠ ⊤
⊢ OuterMeasure.ofFunction (c • fun s => ⨆ (_ : s.Nonempty), m s) ⋯ =
    OuterMeasure.ofFunction (fun s => ⨆ (_ : s.Nonempty), (c • m) s) ⋯
state_after: case e_m.h
α : Type u_1
m : Set α → ℝ≥0∞
c : ℝ≥0∞
hc : c ≠ ⊤
s : Set α
⊢ (c • fun s => ⨆ (_ : s.Nonempty), m s) s = ⨆ (_ : s.Nonempty), (c • m) s

tactic: rcases s.eq_empty_or_nonempty with (rfl | hs) <;> simp [*]
state_before: case e_m.h
α : Type u_1
m : Set α → ℝ≥0∞
c : ℝ≥0∞
hc : c ≠ ⊤
s : Set α
⊢ (c • fun s => ⨆ (_ : s.Nonempty), m s) s = ⨆ (_ : s.Nonempty), (c • m) s
state_after: no goals
Theorem: toIocDiv_apply_right
File: Mathlib/Algebra/Order/ToIntervalMod.lean

tactic: simp [hp]
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a✝ b c : α
n : ℤ
a : α
⊢ a + p - 0 • p ∈ Set.Ioc a (a + p)
state_after: no goals
Theorem: Finset.card_le_one_iff
File: Mathlib/Data/Finset/Card.lean

tactic: rw [card_le_one]
state_before: α : Type u_1
β : Type u_2
R : Type u_3
s t u : Finset α
f : α → β
n : ℕ
⊢ s.card ≤ 1 ↔ ∀ {a b : α}, a ∈ s → b ∈ s → a = b
state_after: α : Type u_1
β : Type u_2
R : Type u_3
s t u : Finset α
f : α → β
n : ℕ
⊢ (∀ a ∈ s, ∀ b ∈ s, a = b) ↔ ∀ {a b : α}, a ∈ s → b ∈ s → a = b

tactic: tauto
state_before: α : Type u_1
β : Type u_2
R : Type u_3
s t u : Finset α
f : α → β
n : ℕ
⊢ (∀ a ∈ s, ∀ b ∈ s, a = b) ↔ ∀ {a b : α}, a ∈ s → b ∈ s → a = b
state_after: no goals
Theorem: convexJoin_union_left
File: Mathlib/Analysis/Convex/Join.lean

tactic: simp_rw [convexJoin, mem_union, iUnion_or, iUnion_union_distrib]
state_before: ι : Sort u_1
𝕜 : Type u_2
E : Type u_3
inst✝² : OrderedSemiring 𝕜
inst✝¹ : AddCommMonoid E
inst✝ : Module 𝕜 E
s t✝ s₁✝ s₂✝ t₁ t₂ u : Set E
x y : E
s₁ s₂ t : Set E
⊢ convexJoin 𝕜 (s₁ ∪ s₂) t = convexJoin 𝕜 s₁ t ∪ convexJoin 𝕜 s₂ t
state_after: no goals
Theorem: SemiconjBy.tprod
File: Mathlib/RingTheory/PiTensorProduct.lean

tactic: rw [SemiconjBy, tprod_mul_tprod, tprod_mul_tprod, ha]
state_before: ι : Type u_1
R' : Type u_2
R : Type u_3
A : ι → Type u_4
inst✝⁴ : CommSemiring R
inst✝³ : (i : ι) → NonUnitalNonAssocSemiring (A i)
inst✝² : (i : ι) → Module R (A i)
inst✝¹ : ∀ (i : ι), SMulCommClass R (A i) (A i)
inst✝ : ∀ (i : ι), IsScalarTower R (A i) (A i)
a₁ a₂ a₃ : (i : ι) → A i
ha : SemiconjBy a₁ a₂ a₃
⊢ SemiconjBy ((PiTensorProduct.tprod R) a₁) ((PiTensorProduct.tprod R) a₂) ((PiTensorProduct.tprod R) a₃)
state_after: no goals
Theorem: AdjoinRoot.algEquivOfEq_toAlgHom
File: Mathlib/FieldTheory/Adjoin.lean

tactic: rw [h_eq, aeval_eq, mk_self]
state_before: K : Type ?u.597863
L : Type ?u.597866
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
p q : K[X]
hp : p ≠ 0
h_eq : p = q
⊢ (aeval (root q)) p = 0
state_after: no goals
Theorem: CategoryTheory.Limits.PushoutCocone.epi_inr_of_is_pushout_of_epi
File: Mathlib/CategoryTheory/Limits/Shapes/Pullbacks.lean

tactic: simp [← cancel_epi f, t.condition_assoc, i]
state_before: C : Type u
inst✝² : Category.{v, u} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
W✝ X Y Z : C
f : X ⟶ Y
g : X ⟶ Z
t : PushoutCocone f g
ht : IsColimit t
inst✝ : Epi f
W : C
h k : t.pt ⟶ W
i : t.inr ≫ h = t.inr ≫ k
⊢ t.inl ≫ h = t.inl ≫ k
state_after: no goals
Theorem: Dilation.antilipschitz
File: Mathlib/Topology/MetricSpace/Dilation.lean

tactic: have hr : ratio f ≠ 0 := ratio_ne_zero f
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
F : Type u_4
G : Type u_5
inst✝⁶ : PseudoEMetricSpace α
inst✝⁵ : PseudoEMetricSpace β
inst✝⁴ : PseudoEMetricSpace γ
inst✝³ : FunLike F α β
inst✝² : DilationClass F α β
inst✝¹ : FunLike G β γ
inst✝ : DilationClass G β γ
f : F
g : G
x✝ y✝ z : α
s : Set α
x y : α
⊢ edist x y ≤ ↑(ratio f)⁻¹ * edist (f x) (f y)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
F : Type u_4
G : Type u_5
inst✝⁶ : PseudoEMetricSpace α
inst✝⁵ : PseudoEMetricSpace β
inst✝⁴ : PseudoEMetricSpace γ
inst✝³ : FunLike F α β
inst✝² : DilationClass F α β
inst✝¹ : FunLike G β γ
inst✝ : DilationClass G β γ
f : F
g : G
x✝ y✝ z : α
s : Set α
x y : α
hr : ratio f ≠ 0
⊢ edist x y ≤ ↑(ratio f)⁻¹ * edist (f x) (f y)

tactic: exact mod_cast
  (ENNReal.mul_le_iff_le_inv (ENNReal.coe_ne_zero.2 hr) ENNReal.coe_ne_top).1 (edist_eq f x y).ge
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
F : Type u_4
G : Type u_5
inst✝⁶ : PseudoEMetricSpace α
inst✝⁵ : PseudoEMetricSpace β
inst✝⁴ : PseudoEMetricSpace γ
inst✝³ : FunLike F α β
inst✝² : DilationClass F α β
inst✝¹ : FunLike G β γ
inst✝ : DilationClass G β γ
f : F
g : G
x✝ y✝ z : α
s : Set α
x y : α
hr : ratio f ≠ 0
⊢ edist x y ≤ ↑(ratio f)⁻¹ * edist (f x) (f y)
state_after: no goals
Theorem: Turing.PartrecToTM2.supports_insert
File: Mathlib/Computability/TMToPartrec.lean

tactic: simp [Supports]
state_before: K S : Finset Λ'
q : Λ'
⊢ Supports (insert q K) S ↔ TM2.SupportsStmt S (tr q) ∧ Supports K S
state_after: no goals
Theorem: PosNum.natSize_pos
File: Mathlib/Data/Num/Lemmas.lean

tactic: cases n <;> apply Nat.succ_pos
state_before: α : Type u_1
n : PosNum
⊢ 0 < n.natSize
state_after: no goals
Theorem: Real.inner_le_Lp_mul_Lq
File: Mathlib/Analysis/MeanInequalities.lean

tactic: have :=
  NNReal.coe_le_coe.2
    (NNReal.inner_le_Lp_mul_Lq s (fun i => ⟨_, abs_nonneg (f i)⟩) (fun i => ⟨_, abs_nonneg (g i)⟩)
      hpq)
state_before: ι : Type u
s : Finset ι
f g : ι → ℝ
p q : ℝ
hpq : p.IsConjExponent q
⊢ ∑ i ∈ s, f i * g i ≤ (∑ i ∈ s, |f i| ^ p) ^ (1 / p) * (∑ i ∈ s, |g i| ^ q) ^ (1 / q)
state_after: ι : Type u
s : Finset ι
f g : ι → ℝ
p q : ℝ
hpq : p.IsConjExponent q
this :
  ↑(∑ i ∈ s, (fun i => ⟨|f i|, ⋯⟩) i * (fun i => ⟨|g i|, ⋯⟩) i) ≤
    ↑((∑ i ∈ s, (fun i => ⟨|f i|, ⋯⟩) i ^ p) ^ (1 / p) * (∑ i ∈ s, (fun i => ⟨|g i|, ⋯⟩) i ^ q) ^ (1 / q))
⊢ ∑ i ∈ s, f i * g i ≤ (∑ i ∈ s, |f i| ^ p) ^ (1 / p) * (∑ i ∈ s, |g i| ^ q) ^ (1 / q)

tactic: push_cast at this
state_before: ι : Type u
s : Finset ι
f g : ι → ℝ
p q : ℝ
hpq : p.IsConjExponent q
this :
  ↑(∑ i ∈ s, (fun i => ⟨|f i|, ⋯⟩) i * (fun i => ⟨|g i|, ⋯⟩) i) ≤
    ↑((∑ i ∈ s, (fun i => ⟨|f i|, ⋯⟩) i ^ p) ^ (1 / p) * (∑ i ∈ s, (fun i => ⟨|g i|, ⋯⟩) i ^ q) ^ (1 / q))
⊢ ∑ i ∈ s, f i * g i ≤ (∑ i ∈ s, |f i| ^ p) ^ (1 / p) * (∑ i ∈ s, |g i| ^ q) ^ (1 / q)
state_after: ι : Type u
s : Finset ι
f g : ι → ℝ
p q : ℝ
hpq : p.IsConjExponent q
this : ∑ x ∈ s, |f x| * |g x| ≤ (∑ x ∈ s, |f x| ^ p) ^ (1 / p) * (∑ x ∈ s, |g x| ^ q) ^ (1 / q)
⊢ ∑ i ∈ s, f i * g i ≤ (∑ i ∈ s, |f i| ^ p) ^ (1 / p) * (∑ i ∈ s, |g i| ^ q) ^ (1 / q)

tactic: refine le_trans (sum_le_sum fun i _ => ?_) this
state_before: ι : Type u
s : Finset ι
f g : ι → ℝ
p q : ℝ
hpq : p.IsConjExponent q
this : ∑ x ∈ s, |f x| * |g x| ≤ (∑ x ∈ s, |f x| ^ p) ^ (1 / p) * (∑ x ∈ s, |g x| ^ q) ^ (1 / q)
⊢ ∑ i ∈ s, f i * g i ≤ (∑ i ∈ s, |f i| ^ p) ^ (1 / p) * (∑ i ∈ s, |g i| ^ q) ^ (1 / q)
state_after: ι : Type u
s : Finset ι
f g : ι → ℝ
p q : ℝ
hpq : p.IsConjExponent q
this : ∑ x ∈ s, |f x| * |g x| ≤ (∑ x ∈ s, |f x| ^ p) ^ (1 / p) * (∑ x ∈ s, |g x| ^ q) ^ (1 / q)
i : ι
x✝ : i ∈ s
⊢ f i * g i ≤ |f i| * |g i|

tactic: simp only [← abs_mul, le_abs_self]
state_before: ι : Type u
s : Finset ι
f g : ι → ℝ
p q : ℝ
hpq : p.IsConjExponent q
this : ∑ x ∈ s, |f x| * |g x| ≤ (∑ x ∈ s, |f x| ^ p) ^ (1 / p) * (∑ x ∈ s, |g x| ^ q) ^ (1 / q)
i : ι
x✝ : i ∈ s
⊢ f i * g i ≤ |f i| * |g i|
state_after: no goals
Theorem: Submodule.finrank_add_finrank_le_of_disjoint
File: Mathlib/LinearAlgebra/FiniteDimensional.lean

tactic: rw [← Submodule.finrank_sup_add_finrank_inf_eq s t, hdisjoint.eq_bot, finrank_bot, add_zero]
state_before: K : Type u
V : Type v
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
s t : Submodule K V
hdisjoint : Disjoint s t
⊢ finrank K ↥s + finrank K ↥t ≤ finrank K V
state_after: K : Type u
V : Type v
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
s t : Submodule K V
hdisjoint : Disjoint s t
⊢ finrank K ↥(s ⊔ t) ≤ finrank K V

tactic: exact Submodule.finrank_le _
state_before: K : Type u
V : Type v
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
s t : Submodule K V
hdisjoint : Disjoint s t
⊢ finrank K ↥(s ⊔ t) ≤ finrank K V
state_after: no goals
Theorem: Ordinal.natCast_le
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: rw [← Cardinal.ord_nat, ← Cardinal.ord_nat, Cardinal.ord_le_ord, Cardinal.natCast_le]
state_before: m n : ℕ
⊢ ↑m ≤ ↑n ↔ m ≤ n
state_after: no goals
Theorem: Submonoid.LocalizationMap.sec_zero_fst
File: Mathlib/GroupTheory/MonoidLocalization.lean

tactic: rw [LocalizationMap.sec_spec', mul_zero]
state_before: M : Type u_1
inst✝² : CommMonoidWithZero M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoidWithZero N
P : Type u_3
inst✝ : CommMonoidWithZero P
f : S.LocalizationMap N
⊢ f.toMap (f.sec 0).1 = 0
state_after: no goals
Theorem: one_div_le_one_div_of_neg_of_le
File: Mathlib/Algebra/Order/Field/Basic.lean

tactic: rwa [div_le_iff_of_neg' hb, ← div_eq_mul_one_div, div_le_one_of_neg (h.trans_lt hb)]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedField α
a b c d : α
n : ℤ
hb : b < 0
h : a ≤ b
⊢ 1 / b ≤ 1 / a
state_after: no goals
Theorem: Option.map_pmap
File: Mathlib/Data/Option/Basic.lean

tactic: cases x <;> simp only [map_none', map_some', pmap]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
p : α → Prop
f✝ : (a : α) → p a → β
x✝ : Option α
g : β → γ
f : (a : α) → p a → β
x : Option α
H : ∀ (a : α), a ∈ x → p a
⊢ Option.map g (pmap f x H) = pmap (fun a h => g (f a h)) x H
state_after: no goals
Theorem: IsRingHom.map_neg
File: Mathlib/Deprecated/Ring.lean

tactic: rw [hf.map_add]
state_before: α : Type u
β : Type v
inst✝¹ : Ring α
inst✝ : Ring β
f : α → β
hf✝ : IsRingHom f
x y : α
hf : IsRingHom f
⊢ f (-x) = f (-x + x) - f x
state_after: α : Type u
β : Type v
inst✝¹ : Ring α
inst✝ : Ring β
f : α → β
hf✝ : IsRingHom f
x y : α
hf : IsRingHom f
⊢ f (-x) = f (-x) + f x - f x

tactic: simp
state_before: α : Type u
β : Type v
inst✝¹ : Ring α
inst✝ : Ring β
f : α → β
hf✝ : IsRingHom f
x y : α
hf : IsRingHom f
⊢ f (-x) = f (-x) + f x - f x
state_after: no goals

tactic: simp [hf.map_zero]
state_before: α : Type u
β : Type v
inst✝¹ : Ring α
inst✝ : Ring β
f : α → β
hf✝ : IsRingHom f
x y : α
hf : IsRingHom f
⊢ f (-x + x) - f x = -f x
state_after: no goals
Theorem: one_div_pow_le_one_div_pow_of_le
File: Mathlib/Algebra/Order/Field/Basic.lean

tactic: refine (one_div_le_one_div ?_ ?_).mpr (pow_le_pow_right a1 mn) <;>
  exact pow_pos (zero_lt_one.trans_le a1) _
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedSemifield α
a b c d e : α
m✝ n✝ : ℤ
a1 : 1 ≤ a
m n : ℕ
mn : m ≤ n
⊢ 1 / a ^ n ≤ 1 / a ^ m
state_after: no goals
Theorem: List.ofFn_fin_append
File: Mathlib/Data/List/OfFn.lean

tactic: simp_rw [ofFn_add, Fin.append_left, Fin.append_right]
state_before: α : Type u
m n : ℕ
a : Fin m → α
b : Fin n → α
⊢ ofFn (Fin.append a b) = ofFn a ++ ofFn b
state_after: no goals
Theorem: Representation.mem_invariants
File: Mathlib/RepresentationTheory/Invariants.lean

tactic: rfl
state_before: k : Type u_1
G : Type u_2
V : Type u_3
inst✝³ : CommSemiring k
inst✝² : Group G
inst✝¹ : AddCommMonoid V
inst✝ : Module k V
ρ : Representation k G V
v : V
⊢ v ∈ ρ.invariants ↔ ∀ (g : G), (ρ g) v = v
state_after: no goals
Theorem: Finset.prod_add_prod_eq
File: Mathlib/Algebra/BigOperators/Ring.lean

tactic: classical
  simp_rw [prod_eq_mul_prod_diff_singleton hi, ← h1, right_distrib]
  congr 2 <;> apply prod_congr rfl <;> simpa
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
κ : ι → Type u_5
s✝ s₁ s₂ : Finset ι
i✝ : ι
a : α
f✝ g✝ : ι → α
inst✝ : CommSemiring α
s : Finset ι
i : ι
f g h : ι → α
hi : i ∈ s
h1 : g i + h i = f i
h2 : ∀ j ∈ s, j ≠ i → g j = f j
h3 : ∀ j ∈ s, j ≠ i → h j = f j
⊢ ∏ i ∈ s, g i + ∏ i ∈ s, h i = ∏ i ∈ s, f i
state_after: no goals

tactic: simp_rw [prod_eq_mul_prod_diff_singleton hi, ← h1, right_distrib]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
κ : ι → Type u_5
s✝ s₁ s₂ : Finset ι
i✝ : ι
a : α
f✝ g✝ : ι → α
inst✝ : CommSemiring α
s : Finset ι
i : ι
f g h : ι → α
hi : i ∈ s
h1 : g i + h i = f i
h2 : ∀ j ∈ s, j ≠ i → g j = f j
h3 : ∀ j ∈ s, j ≠ i → h j = f j
⊢ ∏ i ∈ s, g i + ∏ i ∈ s, h i = ∏ i ∈ s, f i
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
κ : ι → Type u_5
s✝ s₁ s₂ : Finset ι
i✝ : ι
a : α
f✝ g✝ : ι → α
inst✝ : CommSemiring α
s : Finset ι
i : ι
f g h : ι → α
hi : i ∈ s
h1 : g i + h i = f i
h2 : ∀ j ∈ s, j ≠ i → g j = f j
h3 : ∀ j ∈ s, j ≠ i → h j = f j
⊢ g i * ∏ i ∈ s \ {i}, g i + h i * ∏ i ∈ s \ {i}, h i = g i * ∏ i ∈ s \ {i}, f i + h i * ∏ i ∈ s \ {i}, f i

tactic: congr 2 <;> apply prod_congr rfl <;> simpa
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
κ : ι → Type u_5
s✝ s₁ s₂ : Finset ι
i✝ : ι
a : α
f✝ g✝ : ι → α
inst✝ : CommSemiring α
s : Finset ι
i : ι
f g h : ι → α
hi : i ∈ s
h1 : g i + h i = f i
h2 : ∀ j ∈ s, j ≠ i → g j = f j
h3 : ∀ j ∈ s, j ≠ i → h j = f j
⊢ g i * ∏ i ∈ s \ {i}, g i + h i * ∏ i ∈ s \ {i}, h i = g i * ∏ i ∈ s \ {i}, f i + h i * ∏ i ∈ s \ {i}, f i
state_after: no goals
Theorem: List.tfae_cons_of_mem
File: Mathlib/Data/List/TFAE.lean

tactic: simp
state_before: a b : Prop
l : List Prop
h : b ∈ l
H : (a :: l).TFAE
⊢ a ∈ a :: l
state_after: no goals

tactic: rintro ⟨ab, H⟩ p (_ | ⟨_, hp⟩) q (_ | ⟨_, hq⟩)
state_before: a b : Prop
l : List Prop
h : b ∈ l
⊢ (a ↔ b) ∧ l.TFAE → (a :: l).TFAE
state_after: case intro.head.head
a b : Prop
l : List Prop
h : b ∈ l
ab : a ↔ b
H : l.TFAE
⊢ a ↔ a

case intro.head.tail
a b : Prop
l : List Prop
h : b ∈ l
ab : a ↔ b
H : l.TFAE
q : Prop
hq : Mem q l
⊢ a ↔ q

case intro.tail.head
a b : Prop
l : List Prop
h : b ∈ l
ab : a ↔ b
H : l.TFAE
p : Prop
hp : Mem p l
⊢ p ↔ a

case intro.tail.tail
a b : Prop
l : List Prop
h : b ∈ l
ab : a ↔ b
H : l.TFAE
p : Prop
hp : Mem p l
q : Prop
hq : Mem q l
⊢ p ↔ q

tactic: rfl
state_before: case intro.head.head
a b : Prop
l : List Prop
h : b ∈ l
ab : a ↔ b
H : l.TFAE
⊢ a ↔ a
state_after: no goals

tactic: exact ab.trans (H _ h _ hq)
state_before: case intro.head.tail
a b : Prop
l : List Prop
h : b ∈ l
ab : a ↔ b
H : l.TFAE
q : Prop
hq : Mem q l
⊢ a ↔ q
state_after: no goals

tactic: exact (ab.trans (H _ h _ hp)).symm
state_before: case intro.tail.head
a b : Prop
l : List Prop
h : b ∈ l
ab : a ↔ b
H : l.TFAE
p : Prop
hp : Mem p l
⊢ p ↔ a
state_after: no goals

tactic: exact H _ hp _ hq
state_before: case intro.tail.tail
a b : Prop
l : List Prop
h : b ∈ l
ab : a ↔ b
H : l.TFAE
p : Prop
hp : Mem p l
q : Prop
hq : Mem q l
⊢ p ↔ q
state_after: no goals
Theorem: Polynomial.eval₂_gcd_eq_zero
File: Mathlib/Algebra/Polynomial/FieldDivision.lean

tactic: rw [EuclideanDomain.gcd_eq_gcd_ab f g, Polynomial.eval₂_add, Polynomial.eval₂_mul,
  Polynomial.eval₂_mul, hf, hg, zero_mul, zero_mul, zero_add]
state_before: R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n : ℕ
inst✝² : Field R
p q : R[X]
inst✝¹ : CommSemiring k
inst✝ : DecidableEq R
ϕ : R →+* k
f g : R[X]
α : k
hf : eval₂ ϕ α f = 0
hg : eval₂ ϕ α g = 0
⊢ eval₂ ϕ α (EuclideanDomain.gcd f g) = 0
state_after: no goals
Theorem: EuclideanGeometry.left_ne_of_oangle_ne_zero
File: Mathlib/Geometry/Euclidean/Angle/Oriented/Affine.lean

tactic: rw [← @vsub_ne_zero V]
state_before: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
hd2 : Fact (finrank ℝ V = 2)
inst✝ : Module.Oriented ℝ V (Fin 2)
p₁ p₂ p₃ : P
h : ∡ p₁ p₂ p₃ ≠ 0
⊢ p₁ ≠ p₂
state_after: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
hd2 : Fact (finrank ℝ V = 2)
inst✝ : Module.Oriented ℝ V (Fin 2)
p₁ p₂ p₃ : P
h : ∡ p₁ p₂ p₃ ≠ 0
⊢ p₁ -ᵥ p₂ ≠ 0

tactic: exact o.left_ne_zero_of_oangle_ne_zero h
state_before: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
hd2 : Fact (finrank ℝ V = 2)
inst✝ : Module.Oriented ℝ V (Fin 2)
p₁ p₂ p₃ : P
h : ∡ p₁ p₂ p₃ ≠ 0
⊢ p₁ -ᵥ p₂ ≠ 0
state_after: no goals
Theorem: Polynomial.degree_le_mul_left
File: Mathlib/Algebra/Polynomial/RingDivision.lean

tactic: classical
exact if hp : p = 0 then by simp only [hp, zero_mul, le_refl]
else by
  rw [degree_mul, degree_eq_natDegree hp, degree_eq_natDegree hq];
    exact WithBot.coe_le_coe.2 (Nat.le_add_right _ _)
state_before: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : Semiring R
inst✝ : NoZeroDivisors R
p✝ q p : R[X]
hq : q ≠ 0
⊢ p.degree ≤ (p * q).degree
state_after: no goals

tactic: exact if hp : p = 0 then by simp only [hp, zero_mul, le_refl]
else by
  rw [degree_mul, degree_eq_natDegree hp, degree_eq_natDegree hq];
    exact WithBot.coe_le_coe.2 (Nat.le_add_right _ _)
state_before: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : Semiring R
inst✝ : NoZeroDivisors R
p✝ q p : R[X]
hq : q ≠ 0
⊢ p.degree ≤ (p * q).degree
state_after: no goals

tactic: simp only [hp, zero_mul, le_refl]
state_before: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : Semiring R
inst✝ : NoZeroDivisors R
p✝ q p : R[X]
hq : q ≠ 0
hp : p = 0
⊢ p.degree ≤ (p * q).degree
state_after: no goals

tactic: rw [degree_mul, degree_eq_natDegree hp, degree_eq_natDegree hq]
state_before: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : Semiring R
inst✝ : NoZeroDivisors R
p✝ q p : R[X]
hq : q ≠ 0
hp : ¬p = 0
⊢ p.degree ≤ (p * q).degree
state_after: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : Semiring R
inst✝ : NoZeroDivisors R
p✝ q p : R[X]
hq : q ≠ 0
hp : ¬p = 0
⊢ ↑p.natDegree ≤ ↑p.natDegree + ↑q.natDegree

tactic: exact WithBot.coe_le_coe.2 (Nat.le_add_right _ _)
state_before: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : Semiring R
inst✝ : NoZeroDivisors R
p✝ q p : R[X]
hq : q ≠ 0
hp : ¬p = 0
⊢ ↑p.natDegree ≤ ↑p.natDegree + ↑q.natDegree
state_after: no goals