1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: isPrimePow_pow_iff
File: Mathlib/Data/Nat/Factorization/PrimePow.lean

tactic: simp only [isPrimePow_iff_unique_prime_dvd]
state_before: R : Type u_1
inst✝ : CommMonoidWithZero R
n✝ p : R
k✝ n k : ℕ
hk : k ≠ 0
⊢ IsPrimePow (n ^ k) ↔ IsPrimePow n
state_after: R : Type u_1
inst✝ : CommMonoidWithZero R
n✝ p : R
k✝ n k : ℕ
hk : k ≠ 0
⊢ (∃! p, Nat.Prime p ∧ p ∣ n ^ k) ↔ ∃! p, Nat.Prime p ∧ p ∣ n

tactic: apply existsUnique_congr
state_before: R : Type u_1
inst✝ : CommMonoidWithZero R
n✝ p : R
k✝ n k : ℕ
hk : k ≠ 0
⊢ (∃! p, Nat.Prime p ∧ p ∣ n ^ k) ↔ ∃! p, Nat.Prime p ∧ p ∣ n
state_after: case h
R : Type u_1
inst✝ : CommMonoidWithZero R
n✝ p : R
k✝ n k : ℕ
hk : k ≠ 0
⊢ ∀ (a : ℕ), Nat.Prime a ∧ a ∣ n ^ k ↔ Nat.Prime a ∧ a ∣ n

tactic: simp only [and_congr_right_iff]
state_before: case h
R : Type u_1
inst✝ : CommMonoidWithZero R
n✝ p : R
k✝ n k : ℕ
hk : k ≠ 0
⊢ ∀ (a : ℕ), Nat.Prime a ∧ a ∣ n ^ k ↔ Nat.Prime a ∧ a ∣ n
state_after: case h
R : Type u_1
inst✝ : CommMonoidWithZero R
n✝ p : R
k✝ n k : ℕ
hk : k ≠ 0
⊢ ∀ (a : ℕ), Nat.Prime a → (a ∣ n ^ k ↔ a ∣ n)

tactic: intro p hp
state_before: case h
R : Type u_1
inst✝ : CommMonoidWithZero R
n✝ p : R
k✝ n k : ℕ
hk : k ≠ 0
⊢ ∀ (a : ℕ), Nat.Prime a → (a ∣ n ^ k ↔ a ∣ n)
state_after: case h
R : Type u_1
inst✝ : CommMonoidWithZero R
n✝ p✝ : R
k✝ n k : ℕ
hk : k ≠ 0
p : ℕ
hp : Nat.Prime p
⊢ p ∣ n ^ k ↔ p ∣ n

tactic: exact ⟨hp.dvd_of_dvd_pow, fun t => t.trans (dvd_pow_self _ hk)⟩
state_before: case h
R : Type u_1
inst✝ : CommMonoidWithZero R
n✝ p✝ : R
k✝ n k : ℕ
hk : k ≠ 0
p : ℕ
hp : Nat.Prime p
⊢ p ∣ n ^ k ↔ p ∣ n
state_after: no goals
Theorem: isLocalizedModule_iff_isLocalization'
File: Mathlib/Algebra/Module/LocalizedModule.lean

tactic: convert isLocalizedModule_iff_isLocalization (S := S) (A := R) (Aₛ := R')
state_before: R : Type u_1
inst✝¹³ : CommSemiring R
S : Submonoid R
M : Type u_2
M' : Type u_3
M'' : Type u_4
inst✝¹² : AddCommMonoid M
inst✝¹¹ : AddCommMonoid M'
inst✝¹⁰ : AddCommMonoid M''
A : Type u_5
inst✝⁹ : CommSemiring A
inst✝⁸ : Algebra R A
inst✝⁷ : Module A M'
inst✝⁶ : IsLocalization S A
inst✝⁵ : Module R M
inst✝⁴ : Module R M'
inst✝³ : Module R M''
inst✝² : IsScalarTower R A M'
f : M →ₗ[R] M'
g : M →ₗ[R] M''
R' : Type u_6
inst✝¹ : CommSemiring R'
inst✝ : Algebra R R'
⊢ IsLocalizedModule S (Algebra.ofId R R').toLinearMap ↔ IsLocalization S R'
state_after: case h.e'_2.h.e'_3
R : Type u_1
inst✝¹³ : CommSemiring R
S : Submonoid R
M : Type u_2
M' : Type u_3
M'' : Type u_4
inst✝¹² : AddCommMonoid M
inst✝¹¹ : AddCommMonoid M'
inst✝¹⁰ : AddCommMonoid M''
A : Type u_5
inst✝⁹ : CommSemiring A
inst✝⁸ : Algebra R A
inst✝⁷ : Module A M'
inst✝⁶ : IsLocalization S A
inst✝⁵ : Module R M
inst✝⁴ : Module R M'
inst✝³ : Module R M''
inst✝² : IsScalarTower R A M'
f : M →ₗ[R] M'
g : M →ₗ[R] M''
R' : Type u_6
inst✝¹ : CommSemiring R'
inst✝ : Algebra R R'
⊢ S = Algebra.algebraMapSubmonoid R S

tactic: exact (Submonoid.map_id S).symm
state_before: case h.e'_2.h.e'_3
R : Type u_1
inst✝¹³ : CommSemiring R
S : Submonoid R
M : Type u_2
M' : Type u_3
M'' : Type u_4
inst✝¹² : AddCommMonoid M
inst✝¹¹ : AddCommMonoid M'
inst✝¹⁰ : AddCommMonoid M''
A : Type u_5
inst✝⁹ : CommSemiring A
inst✝⁸ : Algebra R A
inst✝⁷ : Module A M'
inst✝⁶ : IsLocalization S A
inst✝⁵ : Module R M
inst✝⁴ : Module R M'
inst✝³ : Module R M''
inst✝² : IsScalarTower R A M'
f : M →ₗ[R] M'
g : M →ₗ[R] M''
R' : Type u_6
inst✝¹ : CommSemiring R'
inst✝ : Algebra R R'
⊢ S = Algebra.algebraMapSubmonoid R S
state_after: no goals
Theorem: HasDerivAtFilter.hasGradientAtFilter
File: Mathlib/Analysis/Calculus/Gradient/Basic.lean

tactic: have : ContinuousLinearMap.smulRight (1 : 𝕜 →L[𝕜] 𝕜) g' = (toDual 𝕜 𝕜) (starRingEnd 𝕜 g') := by
  ext; simp
state_before: 𝕜 : Type u_1
F : Type u_2
inst✝³ : RCLike 𝕜
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 F
inst✝ : CompleteSpace F
f : F → 𝕜
f' x : F
s : Set F
L : Filter F
g : 𝕜 → 𝕜
g' u : 𝕜
L' : Filter 𝕜
h : HasDerivAtFilter g g' u L'
⊢ HasGradientAtFilter g ((starRingEnd 𝕜) g') u L'
state_after: 𝕜 : Type u_1
F : Type u_2
inst✝³ : RCLike 𝕜
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 F
inst✝ : CompleteSpace F
f : F → 𝕜
f' x : F
s : Set F
L : Filter F
g : 𝕜 → 𝕜
g' u : 𝕜
L' : Filter 𝕜
h : HasDerivAtFilter g g' u L'
this : ContinuousLinearMap.smulRight 1 g' = (toDual 𝕜 𝕜) ((starRingEnd 𝕜) g')
⊢ HasGradientAtFilter g ((starRingEnd 𝕜) g') u L'

tactic: rwa [HasGradientAtFilter, ← this]
state_before: 𝕜 : Type u_1
F : Type u_2
inst✝³ : RCLike 𝕜
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 F
inst✝ : CompleteSpace F
f : F → 𝕜
f' x : F
s : Set F
L : Filter F
g : 𝕜 → 𝕜
g' u : 𝕜
L' : Filter 𝕜
h : HasDerivAtFilter g g' u L'
this : ContinuousLinearMap.smulRight 1 g' = (toDual 𝕜 𝕜) ((starRingEnd 𝕜) g')
⊢ HasGradientAtFilter g ((starRingEnd 𝕜) g') u L'
state_after: no goals

tactic: ext
state_before: 𝕜 : Type u_1
F : Type u_2
inst✝³ : RCLike 𝕜
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 F
inst✝ : CompleteSpace F
f : F → 𝕜
f' x : F
s : Set F
L : Filter F
g : 𝕜 → 𝕜
g' u : 𝕜
L' : Filter 𝕜
h : HasDerivAtFilter g g' u L'
⊢ ContinuousLinearMap.smulRight 1 g' = (toDual 𝕜 𝕜) ((starRingEnd 𝕜) g')
state_after: case h
𝕜 : Type u_1
F : Type u_2
inst✝³ : RCLike 𝕜
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 F
inst✝ : CompleteSpace F
f : F → 𝕜
f' x : F
s : Set F
L : Filter F
g : 𝕜 → 𝕜
g' u : 𝕜
L' : Filter 𝕜
h : HasDerivAtFilter g g' u L'
⊢ (ContinuousLinearMap.smulRight 1 g') 1 = ((toDual 𝕜 𝕜) ((starRingEnd 𝕜) g')) 1

tactic: simp
state_before: case h
𝕜 : Type u_1
F : Type u_2
inst✝³ : RCLike 𝕜
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 F
inst✝ : CompleteSpace F
f : F → 𝕜
f' x : F
s : Set F
L : Filter F
g : 𝕜 → 𝕜
g' u : 𝕜
L' : Filter 𝕜
h : HasDerivAtFilter g g' u L'
⊢ (ContinuousLinearMap.smulRight 1 g') 1 = ((toDual 𝕜 𝕜) ((starRingEnd 𝕜) g')) 1
state_after: no goals
Theorem: pow_pos_iff
File: Mathlib/Algebra/Order/GroupWithZero/Canonical.lean

tactic: simp_rw [zero_lt_iff, pow_ne_zero_iff hn]
state_before: α : Type u_1
inst✝¹ : LinearOrderedCommMonoidWithZero α
a b c d x y z : α
n : ℕ
inst✝ : NoZeroDivisors α
hn : n ≠ 0
⊢ 0 < a ^ n ↔ 0 < a
state_after: no goals
Theorem: IsAdjoinRoot.map_eq_zero_iff
File: Mathlib/RingTheory/IsAdjoinRoot.lean

tactic: rw [← h.mem_ker_map, RingHom.mem_ker]
state_before: R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : Ring S
f : R[X]
inst✝ : Algebra R S
h : IsAdjoinRoot S f
p : R[X]
⊢ h.map p = 0 ↔ f ∣ p
state_after: no goals
Theorem: Equiv.Perm.sign_prod_list_swap
File: Mathlib/GroupTheory/Perm/Sign.lean

tactic: have h₁ : l.map sign = List.replicate l.length (-1) :=
  List.eq_replicate.2
    ⟨by simp, fun u hu =>
      let ⟨g, hg⟩ := List.mem_map.1 hu
      hg.2 ▸ (hl _ hg.1).sign_eq⟩
state_before: α : Type u
inst✝¹ : DecidableEq α
β : Type v
inst✝ : Fintype α
l : List (Perm α)
hl : ∀ g ∈ l, g.IsSwap
⊢ sign l.prod = (-1) ^ l.length
state_after: α : Type u
inst✝¹ : DecidableEq α
β : Type v
inst✝ : Fintype α
l : List (Perm α)
hl : ∀ g ∈ l, g.IsSwap
h₁ : List.map (⇑sign) l = List.replicate l.length (-1)
⊢ sign l.prod = (-1) ^ l.length

tactic: rw [← List.prod_replicate, ← h₁, List.prod_hom _ (@sign α _ _)]
state_before: α : Type u
inst✝¹ : DecidableEq α
β : Type v
inst✝ : Fintype α
l : List (Perm α)
hl : ∀ g ∈ l, g.IsSwap
h₁ : List.map (⇑sign) l = List.replicate l.length (-1)
⊢ sign l.prod = (-1) ^ l.length
state_after: no goals

tactic: simp
state_before: α : Type u
inst✝¹ : DecidableEq α
β : Type v
inst✝ : Fintype α
l : List (Perm α)
hl : ∀ g ∈ l, g.IsSwap
⊢ (List.map (⇑sign) l).length = l.length
state_after: no goals
Theorem: MultilinearMap.domDomRestrict_aux_right
File: Mathlib/LinearAlgebra/Multilinear/Basic.lean

tactic: simpa only [dite_not] using domDomRestrict_aux _ z (fun j ↦ x ⟨j.1, not_not.mp j.2⟩) i c
state_before: R : Type uR
S : Type uS
ι : Type uι
n : ℕ
M : Fin n.succ → Type v
M₁ : ι → Type v₁
M₂ : Type v₂
M₃ : Type v₃
M' : Type v'
inst✝¹³ : Semiring R
inst✝¹² : (i : Fin n.succ) → AddCommMonoid (M i)
inst✝¹¹ : (i : ι) → AddCommMonoid (M₁ i)
inst✝¹⁰ : AddCommMonoid M₂
inst✝⁹ : AddCommMonoid M₃
inst✝⁸ : AddCommMonoid M'
inst✝⁷ : (i : Fin n.succ) → Module R (M i)
inst✝⁶ : (i : ι) → Module R (M₁ i)
inst✝⁵ : Module R M₂
inst✝⁴ : Module R M₃
inst✝³ : Module R M'
f f' : MultilinearMap R M₁ M₂
inst✝² : DecidableEq ι
P : ι → Prop
inst✝¹ : DecidablePred P
inst✝ : DecidableEq { a // ¬P a }
x : (i : { a // P a }) → M₁ ↑i
z : (i : { a // ¬P a }) → M₁ ↑i
i : { a // ¬P a }
c : M₁ ↑i
⊢ (fun j => if h : P j then x ⟨j, h⟩ else update z i c ⟨j, h⟩) =
    update (fun j => if h : P j then x ⟨j, h⟩ else z ⟨j, h⟩) (↑i) c
state_after: no goals
Theorem: LinearMap.BilinForm.le_flip_dualSubmodule
File: Mathlib/LinearAlgebra/BilinearForm/DualLattice.lean

tactic: show (∀ (x : M), x ∈ N₁ → _) ↔ ∀ (x : M), x ∈ N₂ → _
state_before: R : Type u_1
S : Type u_3
M : Type u_2
inst✝⁶ : CommRing R
inst✝⁵ : Field S
inst✝⁴ : AddCommGroup M
inst✝³ : Algebra R S
inst✝² : Module R M
inst✝¹ : Module S M
inst✝ : IsScalarTower R S M
B : BilinForm S M
N₁ N₂ : Submodule R M
⊢ N₁ ≤ B.flip.dualSubmodule N₂ ↔ N₂ ≤ B.dualSubmodule N₁
state_after: R : Type u_1
S : Type u_3
M : Type u_2
inst✝⁶ : CommRing R
inst✝⁵ : Field S
inst✝⁴ : AddCommGroup M
inst✝³ : Algebra R S
inst✝² : Module R M
inst✝¹ : Module S M
inst✝ : IsScalarTower R S M
B : BilinForm S M
N₁ N₂ : Submodule R M
⊢ (∀ x ∈ N₁, x ∈ B.flip.dualSubmodule N₂) ↔ ∀ x ∈ N₂, x ∈ B.dualSubmodule N₁

tactic: simp only [mem_dualSubmodule, Submodule.mem_one, flip_apply]
state_before: R : Type u_1
S : Type u_3
M : Type u_2
inst✝⁶ : CommRing R
inst✝⁵ : Field S
inst✝⁴ : AddCommGroup M
inst✝³ : Algebra R S
inst✝² : Module R M
inst✝¹ : Module S M
inst✝ : IsScalarTower R S M
B : BilinForm S M
N₁ N₂ : Submodule R M
⊢ (∀ x ∈ N₁, x ∈ B.flip.dualSubmodule N₂) ↔ ∀ x ∈ N₂, x ∈ B.dualSubmodule N₁
state_after: R : Type u_1
S : Type u_3
M : Type u_2
inst✝⁶ : CommRing R
inst✝⁵ : Field S
inst✝⁴ : AddCommGroup M
inst✝³ : Algebra R S
inst✝² : Module R M
inst✝¹ : Module S M
inst✝ : IsScalarTower R S M
B : BilinForm S M
N₁ N₂ : Submodule R M
⊢ (∀ x ∈ N₁, ∀ y ∈ N₂, ∃ y_1, (algebraMap R S) y_1 = (B y) x) ↔
    ∀ x ∈ N₂, ∀ y ∈ N₁, ∃ y_1, (algebraMap R S) y_1 = (B x) y

tactic: exact forall₂_swap
state_before: R : Type u_1
S : Type u_3
M : Type u_2
inst✝⁶ : CommRing R
inst✝⁵ : Field S
inst✝⁴ : AddCommGroup M
inst✝³ : Algebra R S
inst✝² : Module R M
inst✝¹ : Module S M
inst✝ : IsScalarTower R S M
B : BilinForm S M
N₁ N₂ : Submodule R M
⊢ (∀ x ∈ N₁, ∀ y ∈ N₂, ∃ y_1, (algebraMap R S) y_1 = (B y) x) ↔
    ∀ x ∈ N₂, ∀ y ∈ N₁, ∃ y_1, (algebraMap R S) y_1 = (B x) y
state_after: no goals
Theorem: cauchy_prod_iff
File: Mathlib/Topology/UniformSpace/Cauchy.lean

tactic: simp_rw [instUniformSpaceProd, ← cauchy_comap_uniformSpace, ← cauchy_inf_uniformSpace]
state_before: α : Type u
β : Type v
uniformSpace : UniformSpace α
inst✝ : UniformSpace β
F : Filter (α × β)
⊢ Cauchy F ↔ Cauchy (map Prod.fst F) ∧ Cauchy (map Prod.snd F)
state_after: no goals
Theorem: Nat.lt_mul_iff_one_lt_left
File: Mathlib/Data/Nat/Defs.lean

tactic: simpa using Nat.mul_lt_mul_right (b := 1) hb
state_before: a b c d m n k : ℕ
p q : ℕ → Prop
hb : 0 < b
⊢ b < a * b ↔ 1 < a
state_after: no goals
Theorem: Irrational.of_zpow
File: Mathlib/Data/Real/Irrational.lean

tactic: rw [zpow_natCast] at h
state_before: q : ℚ
x y : ℝ
n : ℕ
h : Irrational (x ^ ↑n)
⊢ Irrational x
state_after: q : ℚ
x y : ℝ
n : ℕ
h : Irrational (x ^ n)
⊢ Irrational x

tactic: exact h.of_pow _
state_before: q : ℚ
x y : ℝ
n : ℕ
h : Irrational (x ^ n)
⊢ Irrational x
state_after: no goals

tactic: rw [zpow_negSucc] at h
state_before: q : ℚ
x y : ℝ
n : ℕ
h : Irrational (x ^ -[n+1])
⊢ Irrational x
state_after: q : ℚ
x y : ℝ
n : ℕ
h : Irrational (x ^ (n + 1))⁻¹
⊢ Irrational x

tactic: exact h.of_inv.of_pow _
state_before: q : ℚ
x y : ℝ
n : ℕ
h : Irrational (x ^ (n + 1))⁻¹
⊢ Irrational x
state_after: no goals
Theorem: neg_inv
File: Mathlib/Algebra/Field/Basic.lean

tactic: rw [inv_eq_one_div, inv_eq_one_div, div_neg_eq_neg_div]
state_before: α : Type u_1
β : Type u_2
K : Type u_3
inst✝¹ : DivisionMonoid K
inst✝ : HasDistribNeg K
a b : K
⊢ -a⁻¹ = (-a)⁻¹
state_after: no goals
Theorem: WeierstrassCurve.Projective.eval_polynomialZ
File: Mathlib/AlgebraicGeometry/EllipticCurve/Projective.lean

tactic: rw [polynomialZ_eq]
state_before: R : Type u
inst✝ : CommRing R
W : Projective R
P : Fin 3 → R
⊢ (eval P) W.polynomialZ =
    P 1 ^ 2 + W.a₁ * P 0 * P 1 + 2 * W.a₃ * P 1 * P 2 - (W.a₂ * P 0 ^ 2 + 2 * W.a₄ * P 0 * P 2 + 3 * W.a₆ * P 2 ^ 2)
state_after: R : Type u
inst✝ : CommRing R
W : Projective R
P : Fin 3 → R
⊢ (eval P)
      (X 1 ^ 2 + C W.a₁ * X 0 * X 1 + C (2 * W.a₃) * X 1 * X 2 -
        (C W.a₂ * X 0 ^ 2 + C (2 * W.a₄) * X 0 * X 2 + C (3 * W.a₆) * X 2 ^ 2)) =
    P 1 ^ 2 + W.a₁ * P 0 * P 1 + 2 * W.a₃ * P 1 * P 2 - (W.a₂ * P 0 ^ 2 + 2 * W.a₄ * P 0 * P 2 + 3 * W.a₆ * P 2 ^ 2)

tactic: eval_simp
state_before: R : Type u
inst✝ : CommRing R
W : Projective R
P : Fin 3 → R
⊢ (eval P)
      (X 1 ^ 2 + C W.a₁ * X 0 * X 1 + C (2 * W.a₃) * X 1 * X 2 -
        (C W.a₂ * X 0 ^ 2 + C (2 * W.a₄) * X 0 * X 2 + C (3 * W.a₆) * X 2 ^ 2)) =
    P 1 ^ 2 + W.a₁ * P 0 * P 1 + 2 * W.a₃ * P 1 * P 2 - (W.a₂ * P 0 ^ 2 + 2 * W.a₄ * P 0 * P 2 + 3 * W.a₆ * P 2 ^ 2)
state_after: no goals
Theorem: GenLoop.to_from
File: Mathlib/Topology/Homotopy/HomotopyGroup.lean

tactic: simp_rw [toLoop, fromLoop, ContinuousMap.comp_assoc,
  toContinuousMap_comp_symm, ContinuousMap.comp_id]
state_before: N : Type u_1
X : Type u_2
inst✝¹ : TopologicalSpace X
x : X
inst✝ : DecidableEq N
i : N
p : Ω (↑(Ω^ { j // j ≠ i } X x)) const
⊢ toLoop i (fromLoop i p) = p
state_after: N : Type u_1
X : Type u_2
inst✝¹ : TopologicalSpace X
x : X
inst✝ : DecidableEq N
i : N
p : Ω (↑(Ω^ { j // j ≠ i } X x)) const
⊢ { toFun := fun t => ⟨({ toFun := Subtype.val, continuous_toFun := ⋯ }.comp p.toContinuousMap).uncurry.curry t, ⋯⟩,
      continuous_toFun := ⋯, source' := ⋯, target' := ⋯ } =
    p

tactic: ext
state_before: N : Type u_1
X : Type u_2
inst✝¹ : TopologicalSpace X
x : X
inst✝ : DecidableEq N
i : N
p : Ω (↑(Ω^ { j // j ≠ i } X x)) const
⊢ { toFun := fun t => ⟨({ toFun := Subtype.val, continuous_toFun := ⋯ }.comp p.toContinuousMap).uncurry.curry t, ⋯⟩,
      continuous_toFun := ⋯, source' := ⋯, target' := ⋯ } =
    p
state_after: case a.h.H
N : Type u_1
X : Type u_2
inst✝¹ : TopologicalSpace X
x : X
inst✝ : DecidableEq N
i : N
p : Ω (↑(Ω^ { j // j ≠ i } X x)) const
x✝ : ↑I
y✝ : { j // j ≠ i } → ↑I
⊢ ({ toFun := fun t => ⟨({ toFun := Subtype.val, continuous_toFun := ⋯ }.comp p.toContinuousMap).uncurry.curry t, ⋯⟩,
          continuous_toFun := ⋯, source' := ⋯, target' := ⋯ }
        x✝)
      y✝ =
    (p x✝) y✝

tactic: rfl
state_before: case a.h.H
N : Type u_1
X : Type u_2
inst✝¹ : TopologicalSpace X
x : X
inst✝ : DecidableEq N
i : N
p : Ω (↑(Ω^ { j // j ≠ i } X x)) const
x✝ : ↑I
y✝ : { j // j ≠ i } → ↑I
⊢ ({ toFun := fun t => ⟨({ toFun := Subtype.val, continuous_toFun := ⋯ }.comp p.toContinuousMap).uncurry.curry t, ⋯⟩,
          continuous_toFun := ⋯, source' := ⋯, target' := ⋯ }
        x✝)
      y✝ =
    (p x✝) y✝
state_after: no goals
Theorem: Localization.mulEquivOfQuotient_mk
File: Mathlib/GroupTheory/MonoidLocalization.lean

tactic: rw [mk_eq_monoidOf_mk'_apply]
state_before: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
f : S.LocalizationMap N
x : M
y : ↥S
⊢ (mulEquivOfQuotient f) (mk x y) = f.mk' x y
state_after: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
f : S.LocalizationMap N
x : M
y : ↥S
⊢ (mulEquivOfQuotient f) ((monoidOf S).mk' x y) = f.mk' x y

tactic: exact mulEquivOfQuotient_mk' _ _
state_before: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
f : S.LocalizationMap N
x : M
y : ↥S
⊢ (mulEquivOfQuotient f) ((monoidOf S).mk' x y) = f.mk' x y
state_after: no goals
Theorem: AddSubmonoid.iSup_eq_mrange_dfinsupp_sumAddHom
File: Mathlib/Data/DFinsupp/Basic.lean

tactic: apply le_antisymm
state_before: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝¹ : DecidableEq ι
inst✝ : AddCommMonoid γ
S : ι → AddSubmonoid γ
⊢ iSup S = AddMonoidHom.mrange (sumAddHom fun i => (S i).subtype)
state_after: case a
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝¹ : DecidableEq ι
inst✝ : AddCommMonoid γ
S : ι → AddSubmonoid γ
⊢ iSup S ≤ AddMonoidHom.mrange (sumAddHom fun i => (S i).subtype)

case a
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝¹ : DecidableEq ι
inst✝ : AddCommMonoid γ
S : ι → AddSubmonoid γ
⊢ AddMonoidHom.mrange (sumAddHom fun i => (S i).subtype) ≤ iSup S

tactic: apply iSup_le _
state_before: case a
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝¹ : DecidableEq ι
inst✝ : AddCommMonoid γ
S : ι → AddSubmonoid γ
⊢ iSup S ≤ AddMonoidHom.mrange (sumAddHom fun i => (S i).subtype)
state_after: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝¹ : DecidableEq ι
inst✝ : AddCommMonoid γ
S : ι → AddSubmonoid γ
⊢ ∀ (i : ι), S i ≤ AddMonoidHom.mrange (sumAddHom fun i => (S i).subtype)

tactic: intro i y hy
state_before: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝¹ : DecidableEq ι
inst✝ : AddCommMonoid γ
S : ι → AddSubmonoid γ
⊢ ∀ (i : ι), S i ≤ AddMonoidHom.mrange (sumAddHom fun i => (S i).subtype)
state_after: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝¹ : DecidableEq ι
inst✝ : AddCommMonoid γ
S : ι → AddSubmonoid γ
i : ι
y : γ
hy : y ∈ S i
⊢ y ∈ AddMonoidHom.mrange (sumAddHom fun i => (S i).subtype)

tactic: exact ⟨DFinsupp.single i ⟨y, hy⟩, DFinsupp.sumAddHom_single _ _ _⟩
state_before: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝¹ : DecidableEq ι
inst✝ : AddCommMonoid γ
S : ι → AddSubmonoid γ
i : ι
y : γ
hy : y ∈ S i
⊢ y ∈ AddMonoidHom.mrange (sumAddHom fun i => (S i).subtype)
state_after: no goals

tactic: rintro x ⟨v, rfl⟩
state_before: case a
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝¹ : DecidableEq ι
inst✝ : AddCommMonoid γ
S : ι → AddSubmonoid γ
⊢ AddMonoidHom.mrange (sumAddHom fun i => (S i).subtype) ≤ iSup S
state_after: case a.intro
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝¹ : DecidableEq ι
inst✝ : AddCommMonoid γ
S : ι → AddSubmonoid γ
v : Π₀ (i : ι), ↥(S i)
⊢ (sumAddHom fun i => (S i).subtype) v ∈ iSup S

tactic: exact dfinsupp_sumAddHom_mem _ v _ fun i _ => (le_iSup S i : S i ≤ _) (v i).prop
state_before: case a.intro
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝¹ : DecidableEq ι
inst✝ : AddCommMonoid γ
S : ι → AddSubmonoid γ
v : Π₀ (i : ι), ↥(S i)
⊢ (sumAddHom fun i => (S i).subtype) v ∈ iSup S
state_after: no goals
Theorem: Multiset.prod_eq_zero
File: Mathlib/Algebra/BigOperators/Ring/Multiset.lean

tactic: rcases Multiset.exists_cons_of_mem h with ⟨s', hs'⟩
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : CommMonoidWithZero α
s : Multiset α
h : 0 ∈ s
⊢ s.prod = 0
state_after: case intro
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : CommMonoidWithZero α
s : Multiset α
h : 0 ∈ s
s' : Multiset α
hs' : s = 0 ::ₘ s'
⊢ s.prod = 0

tactic: simp [hs', Multiset.prod_cons]
state_before: case intro
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : CommMonoidWithZero α
s : Multiset α
h : 0 ∈ s
s' : Multiset α
hs' : s = 0 ::ₘ s'
⊢ s.prod = 0
state_after: no goals
Theorem: List.pairwise_le_finRange
File: Mathlib/Data/List/Range.lean

tactic: simp
state_before: α : Type u
n : ℕ
⊢ ∀ x ∈ range n, x < n
state_after: no goals

tactic: simp
state_before: α : Type u
n : ℕ
⊢ ∀ ⦃x : ℕ⦄ (hx : x < n) ⦃y : ℕ⦄ (hy : y < n), x ≤ y → ⟨x, hx⟩ ≤ ⟨y, hy⟩
state_after: no goals
Theorem: LieModule.zero_weightSpace_eq_top_of_nilpotent'
File: Mathlib/Algebra/Lie/Weights/Basic.lean

tactic: ext
state_before: K : Type u_1
R : Type u_2
L : Type u_3
M : Type u_4
inst✝⁸ : CommRing R
inst✝⁷ : LieRing L
inst✝⁶ : LieAlgebra R L
inst✝⁵ : LieAlgebra.IsNilpotent R L
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : LieRingModule L M
inst✝¹ : LieModule R L M
inst✝ : IsNilpotent R L M
⊢ weightSpace M 0 = ⊤
state_after: case h
K : Type u_1
R : Type u_2
L : Type u_3
M : Type u_4
inst✝⁸ : CommRing R
inst✝⁷ : LieRing L
inst✝⁶ : LieAlgebra R L
inst✝⁵ : LieAlgebra.IsNilpotent R L
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : LieRingModule L M
inst✝¹ : LieModule R L M
inst✝ : IsNilpotent R L M
m✝ : M
⊢ m✝ ∈ weightSpace M 0 ↔ m✝ ∈ ⊤

tactic: simp [weightSpace, weightSpaceOf]
state_before: case h
K : Type u_1
R : Type u_2
L : Type u_3
M : Type u_4
inst✝⁸ : CommRing R
inst✝⁷ : LieRing L
inst✝⁶ : LieAlgebra R L
inst✝⁵ : LieAlgebra.IsNilpotent R L
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : LieRingModule L M
inst✝¹ : LieModule R L M
inst✝ : IsNilpotent R L M
m✝ : M
⊢ m✝ ∈ weightSpace M 0 ↔ m✝ ∈ ⊤
state_after: no goals
Theorem: LinearMap.ker_comp_eq_of_commute_of_disjoint_ker
File: Mathlib/LinearAlgebra/FiniteDimensional.lean

tactic: suffices ∀ x, f x = 0 → f (g x) = 0 by rw [ker_comp, comap_eq_sup_ker_of_disjoint _ h']; simpa
state_before: K : Type u
V : Type v
inst✝⁵ : DivisionRing K
inst✝⁴ : AddCommGroup V
inst✝³ : Module K V
V₂ : Type v'
inst✝² : AddCommGroup V₂
inst✝¹ : Module K V₂
inst✝ : FiniteDimensional K V
f g : V →ₗ[K] V
h : Commute f g
h' : Disjoint (ker f) (ker g)
⊢ ker (f ∘ₗ g) = ker f ⊔ ker g
state_after: K : Type u
V : Type v
inst✝⁵ : DivisionRing K
inst✝⁴ : AddCommGroup V
inst✝³ : Module K V
V₂ : Type v'
inst✝² : AddCommGroup V₂
inst✝¹ : Module K V₂
inst✝ : FiniteDimensional K V
f g : V →ₗ[K] V
h : Commute f g
h' : Disjoint (ker f) (ker g)
⊢ ∀ (x : V), f x = 0 → f (g x) = 0

tactic: intro x hx
state_before: K : Type u
V : Type v
inst✝⁵ : DivisionRing K
inst✝⁴ : AddCommGroup V
inst✝³ : Module K V
V₂ : Type v'
inst✝² : AddCommGroup V₂
inst✝¹ : Module K V₂
inst✝ : FiniteDimensional K V
f g : V →ₗ[K] V
h : Commute f g
h' : Disjoint (ker f) (ker g)
⊢ ∀ (x : V), f x = 0 → f (g x) = 0
state_after: K : Type u
V : Type v
inst✝⁵ : DivisionRing K
inst✝⁴ : AddCommGroup V
inst✝³ : Module K V
V₂ : Type v'
inst✝² : AddCommGroup V₂
inst✝¹ : Module K V₂
inst✝ : FiniteDimensional K V
f g : V →ₗ[K] V
h : Commute f g
h' : Disjoint (ker f) (ker g)
x : V
hx : f x = 0
⊢ f (g x) = 0

tactic: rw [← comp_apply, ← mul_eq_comp, h.eq, mul_apply, hx, _root_.map_zero]
state_before: K : Type u
V : Type v
inst✝⁵ : DivisionRing K
inst✝⁴ : AddCommGroup V
inst✝³ : Module K V
V₂ : Type v'
inst✝² : AddCommGroup V₂
inst✝¹ : Module K V₂
inst✝ : FiniteDimensional K V
f g : V →ₗ[K] V
h : Commute f g
h' : Disjoint (ker f) (ker g)
x : V
hx : f x = 0
⊢ f (g x) = 0
state_after: no goals

tactic: rw [ker_comp, comap_eq_sup_ker_of_disjoint _ h']
state_before: K : Type u
V : Type v
inst✝⁵ : DivisionRing K
inst✝⁴ : AddCommGroup V
inst✝³ : Module K V
V₂ : Type v'
inst✝² : AddCommGroup V₂
inst✝¹ : Module K V₂
inst✝ : FiniteDimensional K V
f g : V →ₗ[K] V
h : Commute f g
h' : Disjoint (ker f) (ker g)
this : ∀ (x : V), f x = 0 → f (g x) = 0
⊢ ker (f ∘ₗ g) = ker f ⊔ ker g
state_after: K : Type u
V : Type v
inst✝⁵ : DivisionRing K
inst✝⁴ : AddCommGroup V
inst✝³ : Module K V
V₂ : Type v'
inst✝² : AddCommGroup V₂
inst✝¹ : Module K V₂
inst✝ : FiniteDimensional K V
f g : V →ₗ[K] V
h : Commute f g
h' : Disjoint (ker f) (ker g)
this : ∀ (x : V), f x = 0 → f (g x) = 0
⊢ ∀ x ∈ ker f, g x ∈ ker f

tactic: simpa
state_before: K : Type u
V : Type v
inst✝⁵ : DivisionRing K
inst✝⁴ : AddCommGroup V
inst✝³ : Module K V
V₂ : Type v'
inst✝² : AddCommGroup V₂
inst✝¹ : Module K V₂
inst✝ : FiniteDimensional K V
f g : V →ₗ[K] V
h : Commute f g
h' : Disjoint (ker f) (ker g)
this : ∀ (x : V), f x = 0 → f (g x) = 0
⊢ ∀ x ∈ ker f, g x ∈ ker f
state_after: no goals
Theorem: Finset.sum_multiset_singleton
File: Mathlib/Algebra/BigOperators/Group/Finset.lean

tactic: simp only [sum_eq_multiset_sum, Multiset.sum_map_singleton]
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f g : α → β
s : Finset α
⊢ ∑ x ∈ s, {x} = s.val
state_after: no goals