1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: RingHom.FinitePresentation.comp
File: Mathlib/RingTheory/FinitePresentation.lean

tactic: simp [Algebra.smul_def, mul_assoc]
state_before: A : Type u_1
B : Type u_2
C : Type u_3
inst✝² : CommRing A
inst✝¹ : CommRing B
inst✝ : CommRing C
g : B →+* C
f : A →+* B
hg : g.FinitePresentation
hf : f.FinitePresentation
ins1 : Algebra A B := f.toAlgebra
ins2 : Algebra B C := g.toAlgebra
ins3 : Algebra A C := (g.comp f).toAlgebra
a : A
b : B
c : C
⊢ (a • b) • c = a • b • c
state_after: A : Type u_1
B : Type u_2
C : Type u_3
inst✝² : CommRing A
inst✝¹ : CommRing B
inst✝ : CommRing C
g : B →+* C
f : A →+* B
hg : g.FinitePresentation
hf : f.FinitePresentation
ins1 : Algebra A B := f.toAlgebra
ins2 : Algebra B C := g.toAlgebra
ins3 : Algebra A C := (g.comp f).toAlgebra
a : A
b : B
c : C
⊢ (algebraMap B C) ((algebraMap A B) a) * ((algebraMap B C) b * c) = (algebraMap A C) a * ((algebraMap B C) b * c)

tactic: rfl
state_before: A : Type u_1
B : Type u_2
C : Type u_3
inst✝² : CommRing A
inst✝¹ : CommRing B
inst✝ : CommRing C
g : B →+* C
f : A →+* B
hg : g.FinitePresentation
hf : f.FinitePresentation
ins1 : Algebra A B := f.toAlgebra
ins2 : Algebra B C := g.toAlgebra
ins3 : Algebra A C := (g.comp f).toAlgebra
a : A
b : B
c : C
⊢ (algebraMap B C) ((algebraMap A B) a) * ((algebraMap B C) b * c) = (algebraMap A C) a * ((algebraMap B C) b * c)
state_after: no goals
Theorem: QuotientGroup.rangeKerLift_injective
File: Mathlib/GroupTheory/QuotientGroup.lean

tactic: rw [leftRel_apply, ← ker_rangeRestrict, mem_ker, φ.rangeRestrict.map_mul, ← h,
  φ.rangeRestrict.map_inv, inv_mul_self]
state_before: G : Type u
inst✝² : Group G
N : Subgroup G
nN : N.Normal
H : Type v
inst✝¹ : Group H
M : Type x
inst✝ : Monoid M
φ : G →* H
a✝ b✝ : G ⧸ φ.ker
a b : G
h : φ.rangeRestrict a = φ.rangeRestrict b
⊢ Setoid.r a b
state_after: no goals
Theorem: Fin.succ_succAbove_zero
File: Mathlib/Data/Fin/Basic.lean

tactic: simp only [castSucc_zero', succ_pos]
state_before: n✝ m : ℕ
p : Fin (n✝ + 1)
i✝ j : Fin n✝
n : ℕ
inst✝ : NeZero n
i : Fin n
⊢ castSucc 0 < i.succ
state_after: no goals
Theorem: AlgebraicTopology.DoldKan.PInfty_on_Γ₀_splitting_summand_eq_self
File: Mathlib/AlgebraicTopology/DoldKan/FunctorGamma.lean

tactic: rw [PInfty_f]
state_before: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
K✝ K' : ChainComplex C ℕ
f : K✝ ⟶ K'
Δ Δ' Δ'' : SimplexCategory
inst✝ : HasFiniteCoproducts C
K : ChainComplex C ℕ
n : ℕ
⊢ ((Γ₀.splitting K).cofan { unop := [n] }).inj (Splitting.IndexSet.id { unop := [n] }) ≫ PInfty.f n =
    ((Γ₀.splitting K).cofan { unop := [n] }).inj (Splitting.IndexSet.id { unop := [n] })
state_after: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
K✝ K' : ChainComplex C ℕ
f : K✝ ⟶ K'
Δ Δ' Δ'' : SimplexCategory
inst✝ : HasFiniteCoproducts C
K : ChainComplex C ℕ
n : ℕ
⊢ ((Γ₀.splitting K).cofan { unop := [n] }).inj (Splitting.IndexSet.id { unop := [n] }) ≫ (P n).f n =
    ((Γ₀.splitting K).cofan { unop := [n] }).inj (Splitting.IndexSet.id { unop := [n] })

tactic: rcases n with _|n
state_before: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
K✝ K' : ChainComplex C ℕ
f : K✝ ⟶ K'
Δ Δ' Δ'' : SimplexCategory
inst✝ : HasFiniteCoproducts C
K : ChainComplex C ℕ
n : ℕ
⊢ ((Γ₀.splitting K).cofan { unop := [n] }).inj (Splitting.IndexSet.id { unop := [n] }) ≫ (P n).f n =
    ((Γ₀.splitting K).cofan { unop := [n] }).inj (Splitting.IndexSet.id { unop := [n] })
state_after: case zero
C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
K✝ K' : ChainComplex C ℕ
f : K✝ ⟶ K'
Δ Δ' Δ'' : SimplexCategory
inst✝ : HasFiniteCoproducts C
K : ChainComplex C ℕ
⊢ ((Γ₀.splitting K).cofan { unop := [0] }).inj (Splitting.IndexSet.id { unop := [0] }) ≫ (P 0).f 0 =
    ((Γ₀.splitting K).cofan { unop := [0] }).inj (Splitting.IndexSet.id { unop := [0] })

case succ
C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
K✝ K' : ChainComplex C ℕ
f : K✝ ⟶ K'
Δ Δ' Δ'' : SimplexCategory
inst✝ : HasFiniteCoproducts C
K : ChainComplex C ℕ
n : ℕ
⊢ ((Γ₀.splitting K).cofan { unop := [n + 1] }).inj (Splitting.IndexSet.id { unop := [n + 1] }) ≫ (P (n + 1)).f (n + 1) =
    ((Γ₀.splitting K).cofan { unop := [n + 1] }).inj (Splitting.IndexSet.id { unop := [n + 1] })

tactic: simpa only [P_f_0_eq] using comp_id _
state_before: case zero
C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
K✝ K' : ChainComplex C ℕ
f : K✝ ⟶ K'
Δ Δ' Δ'' : SimplexCategory
inst✝ : HasFiniteCoproducts C
K : ChainComplex C ℕ
⊢ ((Γ₀.splitting K).cofan { unop := [0] }).inj (Splitting.IndexSet.id { unop := [0] }) ≫ (P 0).f 0 =
    ((Γ₀.splitting K).cofan { unop := [0] }).inj (Splitting.IndexSet.id { unop := [0] })
state_after: no goals

tactic: exact (HigherFacesVanish.on_Γ₀_summand_id K n).comp_P_eq_self
state_before: case succ
C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
K✝ K' : ChainComplex C ℕ
f : K✝ ⟶ K'
Δ Δ' Δ'' : SimplexCategory
inst✝ : HasFiniteCoproducts C
K : ChainComplex C ℕ
n : ℕ
⊢ ((Γ₀.splitting K).cofan { unop := [n + 1] }).inj (Splitting.IndexSet.id { unop := [n + 1] }) ≫ (P (n + 1)).f (n + 1) =
    ((Γ₀.splitting K).cofan { unop := [n + 1] }).inj (Splitting.IndexSet.id { unop := [n + 1] })
state_after: no goals
Theorem: ProbabilityTheory.cond_eq_zero_of_meas_eq_zero
File: Mathlib/Probability/ConditionalProbability.lean

tactic: simp [hμs]
state_before: Ω : Type u_1
Ω' : Type u_2
α : Type u_3
m : MeasurableSpace Ω
m' : MeasurableSpace Ω'
μ : Measure Ω
s t : Set Ω
hμs : μ s = 0
⊢ μ[|s] = 0
state_after: no goals
Theorem: mul_lt_iff_lt_one_right'
File: Mathlib/Algebra/Order/Monoid/Unbundled/Basic.lean

tactic: rw [one_mul]
state_before: α : Type u_1
β : Type u_2
inst✝³ : MulOneClass α
inst✝² : LT α
inst✝¹ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x < x_1
inst✝ : ContravariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x < x_1
a b : α
⊢ a * b < b ↔ a * b < 1 * b
state_after: no goals
Theorem: Set.prod_eq_empty_iff
File: Mathlib/Data/Set/Prod.lean

tactic: simp only [not_nonempty_iff_eq_empty.symm, prod_nonempty_iff, not_and_or]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
s s₁ s₂ : Set α
t t₁ t₂ : Set β
a : α
b : β
⊢ s ×ˢ t = ∅ ↔ s = ∅ ∨ t = ∅
state_after: no goals
Theorem: MeasureTheory.NullMeasurableSet.of_preimage_snd
File: Mathlib/MeasureTheory/Constructions/Prod/Basic.lean

tactic: rwa [univ_prod]
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁷ : MeasurableSpace α
inst✝⁶ : MeasurableSpace α'
inst✝⁵ : MeasurableSpace β
inst✝⁴ : MeasurableSpace β'
inst✝³ : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝² : NormedAddCommGroup E
inst✝¹ : SFinite ν
inst✝ : NeZero μ
t : Set β
h : NullMeasurableSet (Prod.snd ⁻¹' t) (μ.prod ν)
⊢ NullMeasurableSet (?m.120450 ×ˢ t) (?m.120447.prod ν)
state_after: no goals
Theorem: Polynomial.toSubring_one
File: Mathlib/RingTheory/Polynomial/Basic.lean

tactic: rw [coeff_toSubring', coeff_one, coeff_one, apply_ite Subtype.val, ZeroMemClass.coe_zero,
  OneMemClass.coe_one]
state_before: R : Type u
S : Type u_1
inst✝¹ : Ring R
inst✝ : Semiring S
f : R →+* S
x : S
p : R[X]
T : Subring R
hp : ↑p.coeffs ⊆ ↑T
i : ℕ
⊢ ↑((toSubring 1 T ⋯).coeff i) = ↑(coeff 1 i)
state_after: no goals
Theorem: Polynomial.eval₂_at_intCast
File: Mathlib/Algebra/Polynomial/Eval.lean

tactic: convert eval₂_at_apply (p := p) f n
state_before: R : Type u
S✝ : Type v
T : Type w
ι : Type y
a b : R
m n✝ : ℕ
inst✝¹ : Ring R
p q r : R[X]
S : Type u_1
inst✝ : Ring S
f : R →+* S
n : ℤ
⊢ eval₂ f (↑n) p = f (eval (↑n) p)
state_after: case h.e'_2.h.e'_6
R : Type u
S✝ : Type v
T : Type w
ι : Type y
a b : R
m n✝ : ℕ
inst✝¹ : Ring R
p q r : R[X]
S : Type u_1
inst✝ : Ring S
f : R →+* S
n : ℤ
⊢ ↑n = f ↑n

tactic: simp
state_before: case h.e'_2.h.e'_6
R : Type u
S✝ : Type v
T : Type w
ι : Type y
a b : R
m n✝ : ℕ
inst✝¹ : Ring R
p q r : R[X]
S : Type u_1
inst✝ : Ring S
f : R →+* S
n : ℤ
⊢ ↑n = f ↑n
state_after: no goals
Theorem: map_uniformity_set_coe
File: Mathlib/Topology/UniformSpace/Basic.lean

tactic: rw [uniformity_setCoe, map_comap, range_prod_map, Subtype.range_val]
state_before: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort u_1
s : Set α
inst✝ : UniformSpace α
⊢ map (Prod.map Subtype.val Subtype.val) (𝓤 ↑s) = 𝓤 α ⊓ 𝓟 (s ×ˢ s)
state_after: no goals
Theorem: IsCoprime.dvd_of_dvd_mul_left
File: Mathlib/RingTheory/Coprime/Basic.lean

tactic: let ⟨a, b, H⟩ := H1
state_before: R : Type u
inst✝ : CommSemiring R
x y z : R
H1 : IsCoprime x y
H2 : x ∣ y * z
⊢ x ∣ z
state_after: R : Type u
inst✝ : CommSemiring R
x y z : R
H1 : IsCoprime x y
H2 : x ∣ y * z
a b : R
H : a * x + b * y = 1
⊢ x ∣ z

tactic: rw [← one_mul z, ← H, add_mul, mul_right_comm, mul_assoc b]
state_before: R : Type u
inst✝ : CommSemiring R
x y z : R
H1 : IsCoprime x y
H2 : x ∣ y * z
a b : R
H : a * x + b * y = 1
⊢ x ∣ z
state_after: R : Type u
inst✝ : CommSemiring R
x y z : R
H1 : IsCoprime x y
H2 : x ∣ y * z
a b : R
H : a * x + b * y = 1
⊢ x ∣ a * z * x + b * (y * z)

tactic: exact dvd_add (dvd_mul_left _ _) (H2.mul_left _)
state_before: R : Type u
inst✝ : CommSemiring R
x y z : R
H1 : IsCoprime x y
H2 : x ∣ y * z
a b : R
H : a * x + b * y = 1
⊢ x ∣ a * z * x + b * (y * z)
state_after: no goals
Theorem: ENNReal.mul_rpow_of_ne_zero
File: Mathlib/Analysis/SpecialFunctions/Pow/NNReal.lean

tactic: simp [*, mul_rpow_eq_ite]
state_before: x y : ℝ≥0∞
hx : x ≠ 0
hy : y ≠ 0
z : ℝ
⊢ (x * y) ^ z = x ^ z * y ^ z
state_after: no goals
Theorem: CategoryTheory.Limits.IsTerminal.mono_from
File: Mathlib/CategoryTheory/Limits/Shapes/Terminal.lean

tactic: haveI := t.isSplitMono_from f
state_before: C : Type u₁
inst✝ : Category.{v₁, u₁} C
X Y : C
t : IsTerminal X
f : X ⟶ Y
⊢ Mono f
state_after: C : Type u₁
inst✝ : Category.{v₁, u₁} C
X Y : C
t : IsTerminal X
f : X ⟶ Y
this : IsSplitMono f
⊢ Mono f

tactic: infer_instance
state_before: C : Type u₁
inst✝ : Category.{v₁, u₁} C
X Y : C
t : IsTerminal X
f : X ⟶ Y
this : IsSplitMono f
⊢ Mono f
state_after: no goals
Theorem: Polynomial.trailingDegree_C_mul_X_pow
File: Mathlib/Algebra/Polynomial/Degree/TrailingDegree.lean

tactic: rw [C_mul_X_pow_eq_monomial, trailingDegree_monomial ha]
state_before: R : Type u
S : Type v
a b : R
n✝ m : ℕ
inst✝ : Semiring R
p q r : R[X]
n : ℕ
ha : a ≠ 0
⊢ (C a * X ^ n).trailingDegree = ↑n
state_after: no goals
Theorem: LinearMap.eventually_iInf_range_pow_eq
File: Mathlib/RingTheory/Artinian.lean

tactic: obtain ⟨n, hn : ∀ m, n ≤ m → LinearMap.range (f ^ n) = LinearMap.range (f ^ m)⟩ :=
  monotone_stabilizes f.iterateRange
state_before: R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : IsArtinian R M
f : Module.End R M
⊢ ∀ᶠ (n : ℕ) in atTop, ⨅ m, range (f ^ m) = range (f ^ n)
state_after: case intro
R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : IsArtinian R M
f : Module.End R M
n : ℕ
hn : ∀ (m : ℕ), n ≤ m → range (f ^ n) = range (f ^ m)
⊢ ∀ᶠ (n : ℕ) in atTop, ⨅ m, range (f ^ m) = range (f ^ n)

tactic: refine eventually_atTop.mpr ⟨n, fun l hl ↦ le_antisymm (iInf_le _ _) (le_iInf fun m ↦ ?_)⟩
state_before: case intro
R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : IsArtinian R M
f : Module.End R M
n : ℕ
hn : ∀ (m : ℕ), n ≤ m → range (f ^ n) = range (f ^ m)
⊢ ∀ᶠ (n : ℕ) in atTop, ⨅ m, range (f ^ m) = range (f ^ n)
state_after: case intro
R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : IsArtinian R M
f : Module.End R M
n : ℕ
hn : ∀ (m : ℕ), n ≤ m → range (f ^ n) = range (f ^ m)
l : ℕ
hl : l ≥ n
m : ℕ
⊢ range (f ^ l) ≤ range (f ^ m)

tactic: rcases le_or_lt l m with h | h
state_before: case intro
R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : IsArtinian R M
f : Module.End R M
n : ℕ
hn : ∀ (m : ℕ), n ≤ m → range (f ^ n) = range (f ^ m)
l : ℕ
hl : l ≥ n
m : ℕ
⊢ range (f ^ l) ≤ range (f ^ m)
state_after: case intro.inl
R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : IsArtinian R M
f : Module.End R M
n : ℕ
hn : ∀ (m : ℕ), n ≤ m → range (f ^ n) = range (f ^ m)
l : ℕ
hl : l ≥ n
m : ℕ
h : l ≤ m
⊢ range (f ^ l) ≤ range (f ^ m)

case intro.inr
R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : IsArtinian R M
f : Module.End R M
n : ℕ
hn : ∀ (m : ℕ), n ≤ m → range (f ^ n) = range (f ^ m)
l : ℕ
hl : l ≥ n
m : ℕ
h : m < l
⊢ range (f ^ l) ≤ range (f ^ m)

tactic: rw [← hn _ (hl.trans h), hn _ hl]
state_before: case intro.inl
R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : IsArtinian R M
f : Module.End R M
n : ℕ
hn : ∀ (m : ℕ), n ≤ m → range (f ^ n) = range (f ^ m)
l : ℕ
hl : l ≥ n
m : ℕ
h : l ≤ m
⊢ range (f ^ l) ≤ range (f ^ m)
state_after: no goals

tactic: exact f.iterateRange.monotone h.le
state_before: case intro.inr
R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : IsArtinian R M
f : Module.End R M
n : ℕ
hn : ∀ (m : ℕ), n ≤ m → range (f ^ n) = range (f ^ m)
l : ℕ
hl : l ≥ n
m : ℕ
h : m < l
⊢ range (f ^ l) ≤ range (f ^ m)
state_after: no goals
Theorem: CategoryTheory.shiftFunctorZero_hom_app_shift
File: Mathlib/CategoryTheory/Shift/Basic.lean

tactic: rw [← shiftFunctorAdd'_zero_add_inv_app n X, shiftFunctorComm_eq C n 0 n (add_zero n)]
state_before: C : Type u
A : Type u_1
inst✝² : Category.{v, u} C
inst✝¹ : AddCommMonoid A
inst✝ : HasShift C A
X Y : C
f : X ⟶ Y
n : A
⊢ (shiftFunctorZero C A).hom.app ((shiftFunctor C n).obj X) =
    (shiftFunctorComm C n 0).hom.app X ≫ (shiftFunctor C n).map ((shiftFunctorZero C A).hom.app X)
state_after: C : Type u
A : Type u_1
inst✝² : Category.{v, u} C
inst✝¹ : AddCommMonoid A
inst✝ : HasShift C A
X Y : C
f : X ⟶ Y
n : A
⊢ (shiftFunctorZero C A).hom.app ((shiftFunctor C n).obj X) =
    ((shiftFunctorAdd' C n 0 n ⋯).symm ≪≫ shiftFunctorAdd' C 0 n n ⋯).hom.app X ≫ (shiftFunctorAdd' C 0 n n ⋯).inv.app X

tactic: dsimp
state_before: C : Type u
A : Type u_1
inst✝² : Category.{v, u} C
inst✝¹ : AddCommMonoid A
inst✝ : HasShift C A
X Y : C
f : X ⟶ Y
n : A
⊢ (shiftFunctorZero C A).hom.app ((shiftFunctor C n).obj X) =
    ((shiftFunctorAdd' C n 0 n ⋯).symm ≪≫ shiftFunctorAdd' C 0 n n ⋯).hom.app X ≫ (shiftFunctorAdd' C 0 n n ⋯).inv.app X
state_after: C : Type u
A : Type u_1
inst✝² : Category.{v, u} C
inst✝¹ : AddCommMonoid A
inst✝ : HasShift C A
X Y : C
f : X ⟶ Y
n : A
⊢ (shiftFunctorZero C A).hom.app ((shiftFunctor C n).obj X) =
    ((shiftFunctorAdd' C n 0 n ⋯).inv.app X ≫ (shiftFunctorAdd' C 0 n n ⋯).hom.app X) ≫
      (shiftFunctorAdd' C 0 n n ⋯).inv.app X

tactic: rw [Category.assoc, Iso.hom_inv_id_app, Category.comp_id, shiftFunctorAdd'_add_zero_inv_app]
state_before: C : Type u
A : Type u_1
inst✝² : Category.{v, u} C
inst✝¹ : AddCommMonoid A
inst✝ : HasShift C A
X Y : C
f : X ⟶ Y
n : A
⊢ (shiftFunctorZero C A).hom.app ((shiftFunctor C n).obj X) =
    ((shiftFunctorAdd' C n 0 n ⋯).inv.app X ≫ (shiftFunctorAdd' C 0 n n ⋯).hom.app X) ≫
      (shiftFunctorAdd' C 0 n n ⋯).inv.app X
state_after: no goals
Theorem: CategoryTheory.ChosenFiniteProducts.associator_inv_fst
File: Mathlib/CategoryTheory/ChosenFiniteProducts.lean

tactic: erw [lift_fst_assoc, lift_fst]
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : ChosenFiniteProducts C
X Y Z : C
⊢ (α_ X Y Z).inv ≫ fst (X ⊗ Y) Z ≫ fst X Y = fst X (Y ⊗ Z)
state_after: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : ChosenFiniteProducts C
X Y Z : C
⊢ Limits.BinaryFan.fst (product X (product Y Z).cone.pt).cone = fst X (Y ⊗ Z)

tactic: rfl
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : ChosenFiniteProducts C
X Y Z : C
⊢ Limits.BinaryFan.fst (product X (product Y Z).cone.pt).cone = fst X (Y ⊗ Z)
state_after: no goals
Theorem: Filter.map_comap_setCoe_val
File: Mathlib/Order/Filter/Basic.lean

tactic: rw [map_comap, Subtype.range_val]
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
l f✝ f₁ f₂ : Filter α
g g₁ g₂ : Filter β
m : α → β
m' : β → γ
s✝ : Set α
t : Set β
f : Filter β
s : Set β
⊢ map Subtype.val (comap Subtype.val f) = f ⊓ 𝓟 s
state_after: no goals
Theorem: dvd_geom_sum₂_iff_of_dvd_sub'
File: Mathlib/NumberTheory/Multiplicity.lean

tactic: rw [geom_sum₂_comm, dvd_geom_sum₂_iff_of_dvd_sub]
state_before: R : Type u_1
n : ℕ
inst✝ : CommRing R
a b x✝ y✝ x y p : R
h : p ∣ x - y
⊢ p ∣ ∑ i ∈ range n, x ^ i * y ^ (n - 1 - i) ↔ p ∣ ↑n * x ^ (n - 1)
state_after: R : Type u_1
n : ℕ
inst✝ : CommRing R
a b x✝ y✝ x y p : R
h : p ∣ x - y
⊢ p ∣ y - x

tactic: simpa using h.neg_right
state_before: R : Type u_1
n : ℕ
inst✝ : CommRing R
a b x✝ y✝ x y p : R
h : p ∣ x - y
⊢ p ∣ y - x
state_after: no goals
Theorem: WittVector.isUnit_of_coeff_zero_ne_zero
File: Mathlib/RingTheory/WittVector/DiscreteValuationRing.lean

tactic: let y : kˣ := Units.mk0 (x.coeff 0) hx
state_before: p : ℕ
hp : Fact (Nat.Prime p)
k : Type u_1
inst✝¹ : Field k
inst✝ : CharP k p
x : 𝕎 k
hx : x.coeff 0 ≠ 0
⊢ IsUnit x
state_after: p : ℕ
hp : Fact (Nat.Prime p)
k : Type u_1
inst✝¹ : Field k
inst✝ : CharP k p
x : 𝕎 k
hx : x.coeff 0 ≠ 0
y : kˣ := Units.mk0 (x.coeff 0) hx
⊢ IsUnit x

tactic: have hy : x.coeff 0 = y := rfl
state_before: p : ℕ
hp : Fact (Nat.Prime p)
k : Type u_1
inst✝¹ : Field k
inst✝ : CharP k p
x : 𝕎 k
hx : x.coeff 0 ≠ 0
y : kˣ := Units.mk0 (x.coeff 0) hx
⊢ IsUnit x
state_after: p : ℕ
hp : Fact (Nat.Prime p)
k : Type u_1
inst✝¹ : Field k
inst✝ : CharP k p
x : 𝕎 k
hx : x.coeff 0 ≠ 0
y : kˣ := Units.mk0 (x.coeff 0) hx
hy : x.coeff 0 = ↑y
⊢ IsUnit x

tactic: exact (mkUnit hy).isUnit
state_before: p : ℕ
hp : Fact (Nat.Prime p)
k : Type u_1
inst✝¹ : Field k
inst✝ : CharP k p
x : 𝕎 k
hx : x.coeff 0 ≠ 0
y : kˣ := Units.mk0 (x.coeff 0) hx
hy : x.coeff 0 = ↑y
⊢ IsUnit x
state_after: no goals
Theorem: Left.mul_nonneg
File: Mathlib/Algebra/Order/GroupWithZero/Unbundled.lean

tactic: simpa only [mul_zero] using mul_le_mul_of_nonneg_left hb ha
state_before: α : Type u_1
a b c d : α
inst✝² : MulZeroClass α
inst✝¹ : Preorder α
inst✝ : PosMulMono α
ha : 0 ≤ a
hb : 0 ≤ b
⊢ 0 ≤ a * b
state_after: no goals
Theorem: Set.Iic.isCompactElement
File: Mathlib/Order/CompactlyGenerated/Intervals.lean

tactic: simp only [CompleteLattice.isCompactElement_iff, Finset.sup_eq_iSup] at h ⊢
state_before: ι : Type u_1
α : Type u_2
inst✝ : CompleteLattice α
a : α
b : ↑(Iic a)
h : CompleteLattice.IsCompactElement ↑b
⊢ CompleteLattice.IsCompactElement b
state_after: ι : Type u_1
α : Type u_2
inst✝ : CompleteLattice α
a : α
b : ↑(Iic a)
h : ∀ (ι : Type u_2) (s : ι → α), ↑b ≤ iSup s → ∃ t, ↑b ≤ ⨆ a ∈ t, s a
⊢ ∀ (ι : Type u_2) (s : ι → ↑(Iic a)), b ≤ iSup s → ∃ t, b ≤ ⨆ a_2 ∈ t, s a_2

tactic: intro ι s hb
state_before: ι : Type u_1
α : Type u_2
inst✝ : CompleteLattice α
a : α
b : ↑(Iic a)
h : ∀ (ι : Type u_2) (s : ι → α), ↑b ≤ iSup s → ∃ t, ↑b ≤ ⨆ a ∈ t, s a
⊢ ∀ (ι : Type u_2) (s : ι → ↑(Iic a)), b ≤ iSup s → ∃ t, b ≤ ⨆ a_2 ∈ t, s a_2
state_after: ι✝ : Type u_1
α : Type u_2
inst✝ : CompleteLattice α
a : α
b : ↑(Iic a)
h : ∀ (ι : Type u_2) (s : ι → α), ↑b ≤ iSup s → ∃ t, ↑b ≤ ⨆ a ∈ t, s a
ι : Type u_2
s : ι → ↑(Iic a)
hb : b ≤ iSup s
⊢ ∃ t, b ≤ ⨆ a_1 ∈ t, s a_1

tactic: replace hb : (b : α) ≤ iSup ((↑) ∘ s) := le_trans hb <| (coe_iSup s) ▸ le_refl _
state_before: ι✝ : Type u_1
α : Type u_2
inst✝ : CompleteLattice α
a : α
b : ↑(Iic a)
h : ∀ (ι : Type u_2) (s : ι → α), ↑b ≤ iSup s → ∃ t, ↑b ≤ ⨆ a ∈ t, s a
ι : Type u_2
s : ι → ↑(Iic a)
hb : b ≤ iSup s
⊢ ∃ t, b ≤ ⨆ a_1 ∈ t, s a_1
state_after: ι✝ : Type u_1
α : Type u_2
inst✝ : CompleteLattice α
a : α
b : ↑(Iic a)
h : ∀ (ι : Type u_2) (s : ι → α), ↑b ≤ iSup s → ∃ t, ↑b ≤ ⨆ a ∈ t, s a
ι : Type u_2
s : ι → ↑(Iic a)
hb : ↑b ≤ iSup (Subtype.val ∘ s)
⊢ ∃ t, b ≤ ⨆ a_1 ∈ t, s a_1

tactic: obtain ⟨t, ht⟩ := h ι ((↑) ∘ s) hb
state_before: ι✝ : Type u_1
α : Type u_2
inst✝ : CompleteLattice α
a : α
b : ↑(Iic a)
h : ∀ (ι : Type u_2) (s : ι → α), ↑b ≤ iSup s → ∃ t, ↑b ≤ ⨆ a ∈ t, s a
ι : Type u_2
s : ι → ↑(Iic a)
hb : ↑b ≤ iSup (Subtype.val ∘ s)
⊢ ∃ t, b ≤ ⨆ a_1 ∈ t, s a_1
state_after: case intro
ι✝ : Type u_1
α : Type u_2
inst✝ : CompleteLattice α
a : α
b : ↑(Iic a)
h : ∀ (ι : Type u_2) (s : ι → α), ↑b ≤ iSup s → ∃ t, ↑b ≤ ⨆ a ∈ t, s a
ι : Type u_2
s : ι → ↑(Iic a)
hb : ↑b ≤ iSup (Subtype.val ∘ s)
t : Finset ι
ht : ↑b ≤ ⨆ a_1 ∈ t, (Subtype.val ∘ s) a_1
⊢ ∃ t, b ≤ ⨆ a_1 ∈ t, s a_1

tactic: exact ⟨t, (by simpa using ht : (b : α) ≤ _)⟩
state_before: case intro
ι✝ : Type u_1
α : Type u_2
inst✝ : CompleteLattice α
a : α
b : ↑(Iic a)
h : ∀ (ι : Type u_2) (s : ι → α), ↑b ≤ iSup s → ∃ t, ↑b ≤ ⨆ a ∈ t, s a
ι : Type u_2
s : ι → ↑(Iic a)
hb : ↑b ≤ iSup (Subtype.val ∘ s)
t : Finset ι
ht : ↑b ≤ ⨆ a_1 ∈ t, (Subtype.val ∘ s) a_1
⊢ ∃ t, b ≤ ⨆ a_1 ∈ t, s a_1
state_after: no goals

tactic: simpa using ht
state_before: ι✝ : Type u_1
α : Type u_2
inst✝ : CompleteLattice α
a : α
b : ↑(Iic a)
h : ∀ (ι : Type u_2) (s : ι → α), ↑b ≤ iSup s → ∃ t, ↑b ≤ ⨆ a ∈ t, s a
ι : Type u_2
s : ι → ↑(Iic a)
hb : ↑b ≤ iSup (Subtype.val ∘ s)
t : Finset ι
ht : ↑b ≤ ⨆ a_1 ∈ t, (Subtype.val ∘ s) a_1
⊢ ↑b ≤ (fun a_1 => ↑a_1) (⨆ a_1 ∈ t, s a_1)
state_after: no goals
Theorem: Rat.mkRat_add_mkRat
File: .lake/packages/batteries/Batteries/Data/Rat/Lemmas.lean

tactic: rw [← normalize_eq_mkRat z₁, ← normalize_eq_mkRat z₂, normalize_add_normalize, normalize_eq_mkRat]
state_before: n₁ n₂ : Int
d₁ d₂ : Nat
z₁ : d₁ ≠ 0
z₂ : d₂ ≠ 0
⊢ mkRat n₁ d₁ + mkRat n₂ d₂ = mkRat (n₁ * ↑d₂ + n₂ * ↑d₁) (d₁ * d₂)
state_after: no goals
Theorem: Real.cos_eq_one_iff_of_lt_of_lt
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

tactic: rcases (cos_eq_one_iff _).1 h with ⟨n, rfl⟩
state_before: x : ℝ
hx₁ : -(2 * π) < x
hx₂ : x < 2 * π
h : cos x = 1
⊢ x = 0
state_after: case intro
n : ℤ
hx₁ : -(2 * π) < ↑n * (2 * π)
hx₂ : ↑n * (2 * π) < 2 * π
h : cos (↑n * (2 * π)) = 1
⊢ ↑n * (2 * π) = 0

tactic: rw [mul_lt_iff_lt_one_left two_pi_pos] at hx₂
state_before: case intro
n : ℤ
hx₁ : -(2 * π) < ↑n * (2 * π)
hx₂ : ↑n * (2 * π) < 2 * π
h : cos (↑n * (2 * π)) = 1
⊢ ↑n * (2 * π) = 0
state_after: case intro
n : ℤ
hx₁ : -(2 * π) < ↑n * (2 * π)
hx₂ : ↑n < 1
h : cos (↑n * (2 * π)) = 1
⊢ ↑n * (2 * π) = 0

tactic: rw [neg_lt, neg_mul_eq_neg_mul, mul_lt_iff_lt_one_left two_pi_pos] at hx₁
state_before: case intro
n : ℤ
hx₁ : -(2 * π) < ↑n * (2 * π)
hx₂ : ↑n < 1
h : cos (↑n * (2 * π)) = 1
⊢ ↑n * (2 * π) = 0
state_after: case intro
n : ℤ
hx₁ : -↑n < 1
hx₂ : ↑n < 1
h : cos (↑n * (2 * π)) = 1
⊢ ↑n * (2 * π) = 0

tactic: norm_cast at hx₁ hx₂
state_before: case intro
n : ℤ
hx₁ : -↑n < 1
hx₂ : ↑n < 1
h : cos (↑n * (2 * π)) = 1
⊢ ↑n * (2 * π) = 0
state_after: case intro
n : ℤ
h : cos (↑n * (2 * π)) = 1
hx₁ : -n < 1
hx₂ : n < 1
⊢ ↑n * (2 * π) = 0

tactic: obtain rfl : n = 0 := le_antisymm (by omega) (by omega)
state_before: case intro
n : ℤ
h : cos (↑n * (2 * π)) = 1
hx₁ : -n < 1
hx₂ : n < 1
⊢ ↑n * (2 * π) = 0
state_after: case intro
h : cos (↑0 * (2 * π)) = 1
hx₁ : -0 < 1
hx₂ : 0 < 1
⊢ ↑0 * (2 * π) = 0

tactic: simp
state_before: case intro
h : cos (↑0 * (2 * π)) = 1
hx₁ : -0 < 1
hx₂ : 0 < 1
⊢ ↑0 * (2 * π) = 0
state_after: no goals

tactic: omega
state_before: n : ℤ
h : cos (↑n * (2 * π)) = 1
hx₁ : -n < 1
hx₂ : n < 1
⊢ n ≤ 0
state_after: no goals

tactic: omega
state_before: n : ℤ
h : cos (↑n * (2 * π)) = 1
hx₁ : -n < 1
hx₂ : n < 1
⊢ 0 ≤ n
state_after: no goals

tactic: simp [h]
state_before: x : ℝ
hx₁ : -(2 * π) < x
hx₂ : x < 2 * π
h : x = 0
⊢ cos x = 1
state_after: no goals
Theorem: AmpleSet.image
File: Mathlib/Analysis/Convex/AmpleSet.lean

tactic: rw [h x hx, image_univ, L.surjective.range_eq]
state_before: F : Type u_1
inst✝⁵ : AddCommGroup F
inst✝⁴ : Module ℝ F
inst✝³ : TopologicalSpace F
E : Type u_2
inst✝² : AddCommGroup E
inst✝¹ : Module ℝ E
inst✝ : TopologicalSpace E
s : Set E
h : AmpleSet s
L : E ≃ᵃL[ℝ] F
x : E
hx : x ∈ s
⊢ ⇑L '' (convexHull ℝ) (connectedComponentIn s x) = univ
state_after: no goals
Theorem: Finset.coe_eq_univ
File: Mathlib/Data/Fintype/Basic.lean

tactic: rw [← coe_univ, coe_inj]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Fintype α
s t : Finset α
⊢ ↑s = Set.univ ↔ s = univ
state_after: no goals