tasksource/leandojo huggingface dataset:
Theorem: Equiv.Perm.sign_bij
File: Mathlib/GroupTheory/Perm/Sign.lean

tactic: simp
state_before: α : Type u
β : Type v
inst✝³ : DecidableEq α
inst✝² : Fintype α
inst✝¹ : DecidableEq β
inst✝ : Fintype β
f : Perm α
g : Perm β
i : (x : α) → ↑f x ≠ x → β
h : ∀ (x : α) (hx : ↑f x ≠ x) (hx' : ↑f (↑f x) ≠ ↑f x), i (↑f x) hx' = ↑g (i x hx)
hi : ∀ (x₁ x₂ : α) (hx₁ : ↑f x₁ ≠ x₁) (hx₂ : ↑f x₂ ≠ x₂), i x₁ hx₁ = i x₂ hx₂ → x₁ = x₂
hg : ∀ (y : β), ↑g y ≠ y → ∃ x hx, i x hx = y
⊢ ∀ (x : α), ↑f x ≠ x ↔ ↑f (↑f x) ≠ ↑f x

tactic: simp
state_before: α : Type u
β : Type v
inst✝³ : DecidableEq α
inst✝² : Fintype α
inst✝¹ : DecidableEq β
inst✝ : Fintype β
f : Perm α
g : Perm β
i : (x : α) → ↑f x ≠ x → β
h : ∀ (x : α) (hx : ↑f x ≠ x) (hx' : ↑f (↑f x) ≠ ↑f x), i (↑f x) hx' = ↑g (i x hx)
hi : ∀ (x₁ x₂ : α) (hx₁ : ↑f x₁ ≠ x₁) (hx₂ : ↑f x₂ ≠ x₂), i x₁ hx₁ = i x₂ hx₂ → x₁ = x₂
hg : ∀ (y : β), ↑g y ≠ y → ∃ x hx, i x hx = y
⊢ ∀ (x : β), ↑g x ≠ x ↔ ↑g (↑g x) ≠ ↑g x

tactic: have : f (f x) ≠ f x := mt (fun h => f.injective h) x.2
state_before: α : Type u
β : Type v
inst✝³ : DecidableEq α
inst✝² : Fintype α
inst✝¹ : DecidableEq β
inst✝ : Fintype β
f : Perm α
g : Perm β
i : (x : α) → ↑f x ≠ x → β
h : ∀ (x : α) (hx : ↑f x ≠ x) (hx' : ↑f (↑f x) ≠ ↑f x), i (↑f x) hx' = ↑g (i x hx)
hi : ∀ (x₁ x₂ : α) (hx₁ : ↑f x₁ ≠ x₁) (hx₂ : ↑f x₂ ≠ x₂), i x₁ hx₁ = i x₂ hx₂ → x₁ = x₂
hg : ∀ (y : β), ↑g y ≠ y → ∃ x hx, i x hx = y
x : { x // ↑f x ≠ x }
⊢ ↑g (i ↑x (_ : ↑f ↑x ≠ ↑x)) ≠ i ↑x (_ : ↑f ↑x ≠ ↑x)

tactic: rw [← h _ x.2 this]
state_before: α : Type u
β : Type v
inst✝³ : DecidableEq α
inst✝² : Fintype α
inst✝¹ : DecidableEq β
inst✝ : Fintype β
f : Perm α
g : Perm β
i : (x : α) → ↑f x ≠ x → β
h : ∀ (x : α) (hx : ↑f x ≠ x) (hx' : ↑f (↑f x) ≠ ↑f x), i (↑f x) hx' = ↑g (i x hx)
hi : ∀ (x₁ x₂ : α) (hx₁ : ↑f x₁ ≠ x₁) (hx₂ : ↑f x₂ ≠ x₂), i x₁ hx₁ = i x₂ hx₂ → x₁ = x₂
hg : ∀ (y : β), ↑g y ≠ y → ∃ x hx, i x hx = y
x : { x // ↑f x ≠ x }
this : ↑f (↑f ↑x) ≠ ↑f ↑x
⊢ ↑g (i ↑x (_ : ↑f ↑x ≠ ↑x)) ≠ i ↑x (_ : ↑f ↑x ≠ ↑x)

tactic: exact mt (hi _ _ this x.2) x.2
state_before: α : Type u
β : Type v
inst✝³ : DecidableEq α
inst✝² : Fintype α
inst✝¹ : DecidableEq β
inst✝ : Fintype β
f : Perm α
g : Perm β
i : (x : α) → ↑f x ≠ x → β
h : ∀ (x : α) (hx : ↑f x ≠ x) (hx' : ↑f (↑f x) ≠ ↑f x), i (↑f x) hx' = ↑g (i x hx)
hi : ∀ (x₁ x₂ : α) (hx₁ : ↑f x₁ ≠ x₁) (hx₂ : ↑f x₂ ≠ x₂), i x₁ hx₁ = i x₂ hx₂ → x₁ = x₂
hg : ∀ (y : β), ↑g y ≠ y → ∃ x hx, i x hx = y
x : { x // ↑f x ≠ x }
this : ↑f (↑f ↑x) ≠ ↑f ↑x
⊢ i (↑f ↑x) this ≠ i ↑x (_ : ↑f ↑x ≠ ↑x)
Theorem: NNReal.le_of_forall_lt_one_mul_le
File: Mathlib/Data/Real/NNReal.lean

tactic: have hx : x ≠ 0 := pos_iff_ne_zero.1 (lt_of_le_of_lt (zero_le _) ha)
state_before: x y : ℝ≥0
h : ∀ (a : ℝ≥0), a < 1 → a * x ≤ y
a : ℝ≥0
ha : a < x
⊢ a ≤ y

tactic: have hx' : x⁻¹ ≠ 0 := by rwa [Ne.def, inv_eq_zero]
state_before: x y : ℝ≥0
h : ∀ (a : ℝ≥0), a < 1 → a * x ≤ y
a : ℝ≥0
ha : a < x
hx : x ≠ 0
⊢ a ≤ y

tactic: have : a * x⁻¹ < 1 := by rwa [← lt_inv_iff_mul_lt hx', inv_inv]
state_before: x y : ℝ≥0
h : ∀ (a : ℝ≥0), a < 1 → a * x ≤ y
a : ℝ≥0
ha : a < x
hx : x ≠ 0
hx' : x⁻¹ ≠ 0
⊢ a ≤ y

tactic: have : a * x⁻¹ * x ≤ y := h _ this
state_before: x y : ℝ≥0
h : ∀ (a : ℝ≥0), a < 1 → a * x ≤ y
a : ℝ≥0
ha : a < x
hx : x ≠ 0
hx' : x⁻¹ ≠ 0
this : a * x⁻¹ < 1
⊢ a ≤ y

tactic: rwa [mul_assoc, inv_mul_cancel hx, mul_one] at this
state_before: x y : ℝ≥0
h : ∀ (a : ℝ≥0), a < 1 → a * x ≤ y
a : ℝ≥0
ha : a < x
hx : x ≠ 0
hx' : x⁻¹ ≠ 0
this✝ : a * x⁻¹ < 1
this : a * x⁻¹ * x ≤ y
⊢ a ≤ y

tactic: rwa [Ne.def, inv_eq_zero]
state_before: x y : ℝ≥0
h : ∀ (a : ℝ≥0), a < 1 → a * x ≤ y
a : ℝ≥0
ha : a < x
hx : x ≠ 0
⊢ x⁻¹ ≠ 0

tactic: rwa [← lt_inv_iff_mul_lt hx', inv_inv]
state_before: x y : ℝ≥0
h : ∀ (a : ℝ≥0), a < 1 → a * x ≤ y
a : ℝ≥0
ha : a < x
hx : x ≠ 0
hx' : x⁻¹ ≠ 0
⊢ a * x⁻¹ < 1
Theorem: Real.volume_Icc_pi_toReal
File: Mathlib/MeasureTheory/Measure/Lebesgue/Basic.lean

tactic: simp only [volume_Icc_pi, ENNReal.toReal_prod, ENNReal.toReal_ofReal (sub_nonneg.2 (h _))]
state_before: ι : Type u_1
inst✝ : Fintype ι
a b : ι → ℝ
h : a ≤ b
⊢ ENNReal.toReal (↑↑volume (Icc a b)) = ∏ i : ι, (b i - a i)
Theorem: CategoryTheory.Limits.colimit.post_post
File: Mathlib/CategoryTheory/Limits/HasLimits.lean

tactic: ext j
state_before: J : Type u₁
inst✝⁶ : Category J
K : Type u₂
inst✝⁵ : Category K
C : Type u
inst✝⁴ : Category C
F : J ⥤ C
D : Type u'
inst✝³ : Category D
inst✝² : HasColimit F
G : C ⥤ D
inst✝¹ : HasColimit (F ⋙ G)
E : Type u''
inst✝ : Category E
H : D ⥤ E
h : HasColimit ((F ⋙ G) ⋙ H)
⊢ post (F ⋙ G) H ≫ H.map (post F G) = post F (G ⋙ H)

tactic: rw [← assoc, colimit.ι_post, ← H.map_comp, colimit.ι_post]
state_before: case w
J : Type u₁
inst✝⁶ : Category J
K : Type u₂
inst✝⁵ : Category K
C : Type u
inst✝⁴ : Category C
F : J ⥤ C
D : Type u'
inst✝³ : Category D
inst✝² : HasColimit F
G : C ⥤ D
inst✝¹ : HasColimit (F ⋙ G)
E : Type u''
inst✝ : Category E
H : D ⥤ E
h : HasColimit ((F ⋙ G) ⋙ H)
j : J
⊢ ι ((F ⋙ G) ⋙ H) j ≫ post (F ⋙ G) H ≫ H.map (post F G) = ι ((F ⋙ G) ⋙ H) j ≫ post F (G ⋙ H)

tactic: haveI : HasColimit (F ⋙  G ⋙  H) := h
state_before: case w
J : Type u₁
inst✝⁶ : Category J
K : Type u₂
inst✝⁵ : Category K
C : Type u
inst✝⁴ : Category C
F : J ⥤ C
D : Type u'
inst✝³ : Category D
inst✝² : HasColimit F
G : C ⥤ D
inst✝¹ : HasColimit (F ⋙ G)
E : Type u''
inst✝ : Category E
H : D ⥤ E
h : HasColimit ((F ⋙ G) ⋙ H)
j : J
⊢ H.map (G.map (ι F j)) = ι ((F ⋙ G) ⋙ H) j ≫ post F (G ⋙ H)

tactic: exact (colimit.ι_post F (G ⋙ H) j).symm
state_before: case w
J : Type u₁
inst✝⁶ : Category J
K : Type u₂
inst✝⁵ : Category K
C : Type u
inst✝⁴ : Category C
F : J ⥤ C
D : Type u'
inst✝³ : Category D
inst✝² : HasColimit F
G : C ⥤ D
inst✝¹ : HasColimit (F ⋙ G)
E : Type u''
inst✝ : Category E
H : D ⥤ E
h : HasColimit ((F ⋙ G) ⋙ H)
j : J
this : HasColimit (F ⋙ G ⋙ H)
⊢ H.map (G.map (ι F j)) = ι ((F ⋙ G) ⋙ H) j ≫ post F (G ⋙ H)
Theorem: Module.End.eigenspace_restrict_le_eigenspace
File: Mathlib/LinearAlgebra/Eigenspace/Basic.lean

tactic: rintro a ⟨x, hx, rfl⟩
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
p : Submodule R M
hfp : ∀ (x : M), x ∈ p → ↑f x ∈ p
μ : R
⊢ Submodule.map (Submodule.subtype p) (eigenspace (LinearMap.restrict f hfp) μ) ≤ eigenspace f μ

tactic: simp only [SetLike.mem_coe, mem_eigenspace_iff, LinearMap.restrict_apply] at hx ⊢
state_before: case intro.intro
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
p : Submodule R M
hfp : ∀ (x : M), x ∈ p → ↑f x ∈ p
μ : R
x : { x // x ∈ p }
hx : x ∈ ↑(eigenspace (LinearMap.restrict f hfp) μ)
⊢ ↑(Submodule.subtype p) x ∈ eigenspace f μ

tactic: exact congr_arg Subtype.val hx
state_before: case intro.intro
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
p : Submodule R M
hfp : ∀ (x : M), x ∈ p → ↑f x ∈ p
μ : R
x : { x // x ∈ p }
hx : { val := ↑f ↑x, property := (_ : ↑f ↑x ∈ p) } = μ • x
⊢ ↑f (↑(Submodule.subtype p) x) = μ • ↑(Submodule.subtype p) x
Theorem: AddCircle.liftIco_eq_lift_Icc
File: Mathlib/Topology/Instances/AddCircle.lean

tactic: rintro _ _ ⟨_⟩
state_before: 𝕜 : Type ?u.337557
B : Type ?u.337560
inst✝³ : LinearOrderedAddCommGroup 𝕜
inst✝² : TopologicalSpace 𝕜
inst✝¹ : OrderTopology 𝕜
p a : 𝕜
hp : Fact (0 < p)
inst✝ : Archimedean 𝕜
f : 𝕜 → B
h : f a = f (a + p)
⊢ ∀ (a_1 b : ↑(Icc a (a + p))), EndpointIdent p a a_1 b → restrict (Icc a (a + p)) f a_1 = restrict (Icc a (a + p)) f b

tactic: exact h
state_before: case mk
𝕜 : Type ?u.337557
B : Type ?u.337560
inst✝³ : LinearOrderedAddCommGroup 𝕜
inst✝² : TopologicalSpace 𝕜
inst✝¹ : OrderTopology 𝕜
p a : 𝕜
hp : Fact (0 < p)
inst✝ : Archimedean 𝕜
f : 𝕜 → B
h : f a = f (a + p)
⊢ restrict (Icc a (a + p)) f { val := a, property := (_ : a ∈ Icc a (a + p)) } =
    restrict (Icc a (a + p)) f { val := a + p, property := (_ : a + p ∈ Icc a (a + p)) }
Theorem: Nat.dvd_lcm_left
File: Std/Data/Nat/Gcd.lean

tactic: rw [← Nat.mul_div_assoc m (Nat.gcd_dvd_right m n)]
state_before: m n : Nat
⊢ lcm m n = m * (n / gcd m n)

tactic: rfl
state_before: m n : Nat
⊢ lcm m n = m * n / gcd m n
Theorem: mul_mem_ball_mul_iff
File: Mathlib/Analysis/Normed/Group/Basic.lean

tactic: simp only [mem_ball, dist_eq_norm_div, mul_div_mul_right_eq_div]
state_before: 𝓕 : Type ?u.1001640
𝕜 : Type ?u.1001643
α : Type ?u.1001646
ι : Type ?u.1001649
κ : Type ?u.1001652
E : Type u_1
F : Type ?u.1001658
G : Type ?u.1001661
inst✝¹ : SeminormedCommGroup E
inst✝ : SeminormedCommGroup F
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
c : E
⊢ a * c ∈ ball (b * c) r ↔ a ∈ ball b r
Theorem: LinearMap.isNilpotent_mulRight_iff
File: Mathlib/RingTheory/Nilpotent.lean

tactic: constructor <;> rintro ⟨n, hn⟩ <;> use n <;>
    simp only [mulRight_eq_zero_iff, pow_mulRight] at hn⊢ <;>
  exact hn
state_before: R S : Type u
x y : R
A : Type v
inst✝² : CommSemiring R
inst✝¹ : Semiring A
inst✝ : Algebra R A
a : A
⊢ IsNilpotent (mulRight R a) ↔ IsNilpotent a
Theorem: Polynomial.aeval_algebraMap_eq_zero_iff
File: Mathlib/RingTheory/Polynomial/Tower.lean

tactic: rw [aeval_algebraMap_apply, Algebra.algebraMap_eq_smul_one, smul_eq_zero,
  iff_false_intro (one_ne_zero' B), or_false_iff]
state_before: R : Type u_3
A : Type u_1
B : Type u_2
inst✝⁸ : CommSemiring R
inst✝⁷ : CommSemiring A
inst✝⁶ : Semiring B
inst✝⁵ : Algebra R A
inst✝⁴ : Algebra A B
inst✝³ : Algebra R B
inst✝² : IsScalarTower R A B
inst✝¹ : NoZeroSMulDivisors A B
inst✝ : Nontrivial B
x : A
p : R[X]
⊢ ↑(aeval (↑(algebraMap A B) x)) p = 0 ↔ ↑(aeval x) p = 0
Theorem: Multiset.gcd_add
File: Mathlib/Algebra/GCDMonoid/Multiset.lean

tactic: simp [gcd]
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
s₁ s₂ : Multiset α
⊢ gcd (s₁ + s₂) = fold GCDMonoid.gcd (GCDMonoid.gcd 0 0) (s₁ + s₂)
Theorem: IndexedPartition.proj_fiber
File: Mathlib/Data/Setoid/Partition.lean

tactic: ext y
state_before: ι : Type u_1
α : Type u_2
s : ι → Set α
hs : IndexedPartition s
x✝ : IndexedPartition.Quotient hs
x : α
⊢ proj hs ⁻¹' {Quotient.mk'' x} = s (↑(equivQuotient hs).symm (Quotient.mk'' x))

tactic: simp only [Set.mem_preimage, Set.mem_singleton_iff, hs.mem_iff_index_eq]
state_before: case h
ι : Type u_1
α : Type u_2
s : ι → Set α
hs : IndexedPartition s
x✝ : IndexedPartition.Quotient hs
x y : α
⊢ y ∈ proj hs ⁻¹' {Quotient.mk'' x} ↔ y ∈ s (↑(equivQuotient hs).symm (Quotient.mk'' x))

tactic: exact Quotient.eq''
state_before: case h
ι : Type u_1
α : Type u_2
s : ι → Set α
hs : IndexedPartition s
x✝ : IndexedPartition.Quotient hs
x y : α
⊢ proj hs y = Quotient.mk'' x ↔ index hs y = ↑(equivQuotient hs).symm (Quotient.mk'' x)
Theorem: toIocDiv_zsmul_sub_self
File: Mathlib/Algebra/Order/ToIntervalMod.lean

tactic: rw [toIocMod, neg_sub]
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a✝ b✝ c : α
n : ℤ
a b : α
⊢ toIocDiv hp a b • p - b = -toIocMod hp a b
Theorem: Cardinal.lift_bit1
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: simp [bit1]
state_before: α β : Type u
a : Cardinal
⊢ lift (bit1 a) = bit1 (lift a)
Theorem: Antitone.cauchySeq_alternating_series_of_tendsto_zero
File: Mathlib/Analysis/SpecificLimits/Normed.lean

tactic: simp_rw [mul_comm]
state_before: α : Type ?u.1865526
β : Type ?u.1865529
ι : Type ?u.1865532
E : Type ?u.1865535
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
b : ℝ
f : ℕ → ℝ
z : ℕ → E
hfa : Antitone f
hf0 : Tendsto f atTop (𝓝 0)
⊢ CauchySeq fun n => ∑ i in Finset.range (n + 1), (-1) ^ i * f i

tactic: exact hfa.cauchySeq_series_mul_of_tendsto_zero_of_bounded hf0 norm_sum_neg_one_pow_le
state_before: α : Type ?u.1865526
β : Type ?u.1865529
ι : Type ?u.1865532
E : Type ?u.1865535
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
b : ℝ
f : ℕ → ℝ
z : ℕ → E
hfa : Antitone f
hf0 : Tendsto f atTop (𝓝 0)
⊢ CauchySeq fun n => ∑ x in Finset.range (n + 1), f x * (-1) ^ x
Theorem: Matrix.cons_mulVec
File: Mathlib/Data/Matrix/Notation.lean

tactic: ext i
state_before: α : Type u
o n m : ℕ
m' : Type uₘ
n' : Type uₙ
o' : Type uₒ
a b : ℕ
inst✝¹ : Semiring α
inst✝ : Fintype n'
v : n' → α
A : Fin m → n' → α
w : n' → α
⊢ mulVec (↑of (vecCons v A)) w = vecCons (v ⬝ᵥ w) (mulVec (↑of A) w)

tactic: refine' Fin.cases _ _ i <;> simp [mulVec]
state_before: case h
α : Type u
o n m : ℕ
m' : Type uₘ
n' : Type uₙ
o' : Type uₒ
a b : ℕ
inst✝¹ : Semiring α
inst✝ : Fintype n'
v : n' → α
A : Fin m → n' → α
w : n' → α
i : Fin (Nat.succ m)
⊢ mulVec (↑of (vecCons v A)) w i = vecCons (v ⬝ᵥ w) (mulVec (↑of A) w) i
Theorem: Nat.add_lt_of_lt_sub
File: src/lean/Init/Data/Nat/Basic.lean

tactic: have hle : b ≤ c := by
  apply Nat.ge_of_not_lt
  intro hgt
  apply Nat.not_lt_zero a
  rw [Nat.sub_eq_zero_of_le (Nat.le_of_lt hgt)] at h
  exact h
state_before: a b c : Nat
h : a < c - b
⊢ a + b < c

tactic: have : a.succ + b ≤ c := add_le_of_le_sub hle h
state_before: a b c : Nat
h : a < c - b
hle : b ≤ c
⊢ a + b < c

tactic: simp [Nat.succ_add] at this
state_before: a b c : Nat
h : a < c - b
hle : b ≤ c
this : succ a + b ≤ c
⊢ a + b < c

tactic: exact this
state_before: a b c : Nat
h : a < c - b
hle : b ≤ c
this : succ (a + b) ≤ c
⊢ a + b < c

tactic: apply Nat.ge_of_not_lt
state_before: a b c : Nat
h : a < c - b
⊢ b ≤ c

tactic: intro hgt
state_before: case h
a b c : Nat
h : a < c - b
⊢ ¬c < b

tactic: apply Nat.not_lt_zero a
state_before: case h
a b c : Nat
h : a < c - b
hgt : c < b
⊢ False

tactic: rw [Nat.sub_eq_zero_of_le (Nat.le_of_lt hgt)] at h
state_before: case h
a b c : Nat
h : a < c - b
hgt : c < b
⊢ a < 0

tactic: exact h
state_before: case h
a b c : Nat
h : a < 0
hgt : c < b
⊢ a < 0
Theorem: CategoryTheory.Bicategory.whiskerLeft_eqToHom
File: Mathlib/CategoryTheory/Bicategory/Strict.lean

tactic: cases η
state_before: B : Type u
inst✝ : Bicategory B
a b c : B
f : a ⟶ b
g h : b ⟶ c
η : g = h
⊢ f ◁ eqToHom η = eqToHom (_ : f ≫ g = f ≫ h)

tactic: simp only [whiskerLeft_id, eqToHom_refl]
state_before: case refl
B : Type u
inst✝ : Bicategory B
a b c : B
f : a ⟶ b
g : b ⟶ c
⊢ f ◁ eqToHom (_ : g = g) = eqToHom (_ : f ≫ g = f ≫ g)
Theorem: Subfield.coe_sSup_of_directedOn
File: Mathlib/FieldTheory/Subfield.lean

tactic: simp [mem_sSup_of_directedOn Sne hS]
state_before: K : Type u
L : Type v
M : Type w
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Field M
S : Set (Subfield K)
Sne : Set.Nonempty S
hS : DirectedOn (fun x x_1 => x ≤ x_1) S
x : K
⊢ x ∈ ↑(sSup S) ↔ x ∈ ⋃ (s : Subfield K) (_ : s ∈ S), ↑s
Theorem: DiscreteValuationRing.irreducible_iff_uniformizer
File: Mathlib/RingTheory/DiscreteValuationRing/Basic.lean

tactic: rwa [h, span_singleton_eq_bot]
state_before: R : Type u
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : DiscreteValuationRing R
ϖ : R
h : maximalIdeal R = span {ϖ}
e : ϖ = 0
⊢ maximalIdeal R = ⊥
Theorem: EReal.coe_ennreal_mul
File: Mathlib/Data/Real/EReal.lean

tactic: rw [mul_comm, coe_ennreal_top_mul, EReal.mul_comm, coe_ennreal_top]
state_before: x : ℝ≥0
⊢ ↑(↑x * ⊤) = ↑↑x * ↑⊤

tactic: simp only [← ENNReal.coe_mul, coe_nnreal_eq_coe_real, NNReal.coe_mul, EReal.coe_mul]
state_before: x y : ℝ≥0
⊢ ↑(↑x * ↑y) = ↑↑x * ↑↑y
Theorem: Multiset.countp_map
File: Mathlib/Data/Multiset/Basic.lean

tactic: refine' Multiset.induction_on s _ fun a t IH => _
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.327024
p✝ : α → Prop
inst✝¹ : DecidablePred p✝
f : α → β
s : Multiset α
p : β → Prop
inst✝ : DecidablePred p
⊢ countp p (map f s) = ↑card (filter (fun a => p (f a)) s)

tactic: rw [map_zero, countp_zero, filter_zero, card_zero]
state_before: case refine'_1
α : Type u_1
β : Type u_2
γ : Type ?u.327024
p✝ : α → Prop
inst✝¹ : DecidablePred p✝
f : α → β
s : Multiset α
p : β → Prop
inst✝ : DecidablePred p
⊢ countp p (map f 0) = ↑card (filter (fun a => p (f a)) 0)

tactic: rw [map_cons, countp_cons, IH, filter_cons, card_add, apply_ite card, card_zero, card_singleton,
  add_comm]
state_before: case refine'_2
α : Type u_1
β : Type u_2
γ : Type ?u.327024
p✝ : α → Prop
inst✝¹ : DecidablePred p✝
f : α → β
s : Multiset α
p : β → Prop
inst✝ : DecidablePred p
a : α
t : Multiset α
IH : countp p (map f t) = ↑card (filter (fun a => p (f a)) t)
⊢ countp p (map f (a ::ₘ t)) = ↑card (filter (fun a => p (f a)) (a ::ₘ t))
Theorem: WittVector.map_teichmullerFun
File: Mathlib/RingTheory/WittVector/Teichmuller.lean

tactic: ext n
state_before: p : ℕ
R : Type u_1
S : Type u_2
hp : Fact (Nat.Prime p)
inst✝¹ : CommRing R
inst✝ : CommRing S
f : R →+* S
r : R
⊢ ↑(map f) (teichmullerFun p r) = teichmullerFun p (↑f r)

tactic: cases n
state_before: case h
p : ℕ
R : Type u_1
S : Type u_2
hp : Fact (Nat.Prime p)
inst✝¹ : CommRing R
inst✝ : CommRing S
f : R →+* S
r : R
n : ℕ
⊢ coeff (↑(map f) (teichmullerFun p r)) n = coeff (teichmullerFun p (↑f r)) n

tactic: rfl
state_before: case h.zero
p : ℕ
R : Type u_1
S : Type u_2
hp : Fact (Nat.Prime p)
inst✝¹ : CommRing R
inst✝ : CommRing S
f : R →+* S
r : R
⊢ coeff (↑(map f) (teichmullerFun p r)) Nat.zero = coeff (teichmullerFun p (↑f r)) Nat.zero

tactic: exact f.map_zero
state_before: case h.succ
p : ℕ
R : Type u_1
S : Type u_2
hp : Fact (Nat.Prime p)
inst✝¹ : CommRing R
inst✝ : CommRing S
f : R →+* S
r : R
n✝ : ℕ
⊢ coeff (↑(map f) (teichmullerFun p r)) (Nat.succ n✝) = coeff (teichmullerFun p (↑f r)) (Nat.succ n✝)
Theorem: Polynomial.ofFinsupp_eq_one
File: Mathlib/Data/Polynomial/Basic.lean

tactic: rw [← ofFinsupp_one, ofFinsupp_inj]
state_before: R : Type u
a✝ b : R
m n : ℕ
inst✝ : Semiring R
p q : R[X]
a : AddMonoidAlgebra R ℕ
⊢ { toFinsupp := a } = 1 ↔ a = 1
Theorem: smul_add_smul_lt_smul_add_smul
File: Mathlib/Algebra/Order/Module.lean

tactic: obtain ⟨b, rfl⟩ := exists_add_of_le hab.le
state_before: k : Type u_2
M : Type u_1
N : Type ?u.70650
inst✝⁵ : OrderedRing k
inst✝⁴ : OrderedAddCommGroup M
inst✝³ : Module k M
inst✝² : OrderedSMul k M
a✝ b✝ : M
c✝ : k
inst✝¹ : CovariantClass M M (fun x x_1 => x + x_1) fun x x_1 => x < x_1
inst✝ : ContravariantClass M M (fun x x_1 => x + x_1) fun x x_1 => x < x_1
a b : k
c d : M
hab : a < b
hcd : c < d
⊢ a • d + b • c < a • c + b • d

tactic: obtain ⟨d, rfl⟩ := exists_add_of_le hcd.le
state_before: case intro
k : Type u_2
M : Type u_1
N : Type ?u.70650
inst✝⁵ : OrderedRing k
inst✝⁴ : OrderedAddCommGroup M
inst✝³ : Module k M
inst✝² : OrderedSMul k M
a✝ b✝ : M
c✝ : k
inst✝¹ : CovariantClass M M (fun x x_1 => x + x_1) fun x x_1 => x < x_1
inst✝ : ContravariantClass M M (fun x x_1 => x + x_1) fun x x_1 => x < x_1
a : k
c d : M
hcd : c < d
b : k
hab : a < a + b
⊢ a • d + (a + b) • c < a • c + (a + b) • d

tactic: rw [smul_add, add_right_comm, smul_add, ← add_assoc, add_smul _ _ d]
state_before: case intro.intro
k : Type u_2
M : Type u_1
N : Type ?u.70650
inst✝⁵ : OrderedRing k
inst✝⁴ : OrderedAddCommGroup M
inst✝³ : Module k M
inst✝² : OrderedSMul k M
a✝ b✝ : M
c✝ : k
inst✝¹ : CovariantClass M M (fun x x_1 => x + x_1) fun x x_1 => x < x_1
inst✝ : ContravariantClass M M (fun x x_1 => x + x_1) fun x x_1 => x < x_1
a : k
c : M
b : k
hab : a < a + b
d : M
hcd : c < c + d
⊢ a • (c + d) + (a + b) • c < a • c + (a + b) • (c + d)

tactic: rw [lt_add_iff_pos_right] at hab hcd
state_before: case intro.intro
k : Type u_2
M : Type u_1
N : Type ?u.70650
inst✝⁵ : OrderedRing k
inst✝⁴ : OrderedAddCommGroup M
inst✝³ : Module k M
inst✝² : OrderedSMul k M
a✝ b✝ : M
c✝ : k
inst✝¹ : CovariantClass M M (fun x x_1 => x + x_1) fun x x_1 => x < x_1
inst✝ : ContravariantClass M M (fun x x_1 => x + x_1) fun x x_1 => x < x_1
a : k
c : M
b : k
hab : a < a + b
d : M
hcd : c < c + d
⊢ a • c + (a + b) • c + a • d < a • c + (a + b) • c + (a • d + b • d)

tactic: exact add_lt_add_left (lt_add_of_pos_right _ <| smul_pos hab hcd) _
state_before: case intro.intro
k : Type u_2
M : Type u_1
N : Type ?u.70650
inst✝⁵ : OrderedRing k
inst✝⁴ : OrderedAddCommGroup M
inst✝³ : Module k M
inst✝² : OrderedSMul k M
a✝ b✝ : M
c✝ : k
inst✝¹ : CovariantClass M M (fun x x_1 => x + x_1) fun x x_1 => x < x_1
inst✝ : ContravariantClass M M (fun x x_1 => x + x_1) fun x x_1 => x < x_1
a : k
c : M
b : k
hab : 0 < b
d : M
hcd : 0 < d
⊢ a • c + (a + b) • c + a • d < a • c + (a + b) • c + (a • d + b • d)
Theorem: SimpleGraph.Connected.dist_eq_zero_iff
File: Mathlib/Combinatorics/SimpleGraph/Metric.lean

tactic: simp [hconn u v]
state_before: V : Type u_1
G : SimpleGraph V
hconn : Connected G
u v : V
⊢ dist G u v = 0 ↔ u = v
Theorem: lipschitzOnWith_iff_dist_le_mul
File: Mathlib/Topology/MetricSpace/Lipschitz.lean

tactic: simp only [LipschitzOnWith, edist_nndist, dist_nndist]
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
K : ℝ≥0
s : Set α
f : α → β
⊢ LipschitzOnWith K f s ↔ ∀ (x : α), x ∈ s → ∀ (y : α), y ∈ s → dist (f x) (f y) ≤ ↑K * dist x y

tactic: norm_cast
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
K : ℝ≥0
s : Set α
f : α → β
⊢ (∀ ⦃x : α⦄, x ∈ s → ∀ ⦃y : α⦄, y ∈ s → ↑(nndist (f x) (f y)) ≤ ↑K * ↑(nndist x y)) ↔
    ∀ (x : α), x ∈ s → ∀ (y : α), y ∈ s → ↑(nndist (f x) (f y)) ≤ ↑K * ↑(nndist x y)
Theorem: PiTensorProduct.lift_comp_reindex
File: Mathlib/LinearAlgebra/PiTensorProduct.lean

tactic: refine ext ?_
state_before: ι : Type u_1
ι₂ : Type u_2
ι₃ : Type ?u.440725
R : Type u_3
inst✝⁷ : CommSemiring R
R₁ : Type ?u.440734
R₂ : Type ?u.440737
s : ι → Type ?u.440742
inst✝⁶ : (i : ι) → AddCommMonoid (s i)
inst✝⁵ : (i : ι) → Module R (s i)
M : Type u_4
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
E : Type u_5
inst✝² : AddCommMonoid E
inst✝¹ : Module R E
F : Type ?u.441195
inst✝ : AddCommMonoid F
φ✝ : MultilinearMap R s E
e : ι ≃ ι₂
φ : MultilinearMap R (fun x => M) E
⊢ LinearMap.comp (↑lift φ) ↑(reindex R M e) = ↑lift (domDomCongr e.symm φ)

tactic: ext
state_before: ι : Type u_1
ι₂ : Type u_2
ι₃ : Type ?u.440725
R : Type u_3
inst✝⁷ : CommSemiring R
R₁ : Type ?u.440734
R₂ : Type ?u.440737
s : ι → Type ?u.440742
inst✝⁶ : (i : ι) → AddCommMonoid (s i)
inst✝⁵ : (i : ι) → Module R (s i)
M : Type u_4
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
E : Type u_5
inst✝² : AddCommMonoid E
inst✝¹ : Module R E
F : Type ?u.441195
inst✝ : AddCommMonoid F
φ✝ : MultilinearMap R s E
e : ι ≃ ι₂
φ : MultilinearMap R (fun x => M) E
⊢ LinearMap.compMultilinearMap (LinearMap.comp (↑lift φ) ↑(reindex R M e)) (tprod R) =
    LinearMap.compMultilinearMap (↑lift (domDomCongr e.symm φ)) (tprod R)

tactic: simp
state_before: case H
ι : Type u_1
ι₂ : Type u_2
ι₃ : Type ?u.440725
R : Type u_3
inst✝⁷ : CommSemiring R
R₁ : Type ?u.440734
R₂ : Type ?u.440737
s : ι → Type ?u.440742
inst✝⁶ : (i : ι) → AddCommMonoid (s i)
inst✝⁵ : (i : ι) → Module R (s i)
M : Type u_4
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
E : Type u_5
inst✝² : AddCommMonoid E
inst✝¹ : Module R E
F : Type ?u.441195
inst✝ : AddCommMonoid F
φ✝ : MultilinearMap R s E
e : ι ≃ ι₂
φ : MultilinearMap R (fun x => M) E
x✝ : ι → M
⊢ ↑(LinearMap.compMultilinearMap (LinearMap.comp (↑lift φ) ↑(reindex R M e)) (tprod R)) x✝ =
    ↑(LinearMap.compMultilinearMap (↑lift (domDomCongr e.symm φ)) (tprod R)) x✝
Theorem: Set.mulIndicator_eq_self
File: Mathlib/Algebra/IndicatorFunction.lean

tactic: simp only [funext_iff, subset_def, mem_mulSupport, mulIndicator_apply_eq_self, not_imp_comm]
state_before: α : Type u_1
β : Type ?u.3073
ι : Type ?u.3076
M : Type u_2
N : Type ?u.3082
inst✝¹ : One M
inst✝ : One N
s t : Set α
f g : α → M
a : α
⊢ mulIndicator s f = f ↔ mulSupport f ⊆ s
Theorem: IsCyclic.exists_monoid_generator
File: Mathlib/GroupTheory/SpecificGroups/Cyclic.lean

tactic: simp_rw [mem_powers_iff_mem_zpowers]
state_before: α : Type u
a : α
inst✝² : Group α
inst✝¹ : Finite α
inst✝ : IsCyclic α
⊢ ∃ x, ∀ (y : α), y ∈ Submonoid.powers x

tactic: exact IsCyclic.exists_generator
state_before: α : Type u
a : α
inst✝² : Group α
inst✝¹ : Finite α
inst✝ : IsCyclic α
⊢ ∃ x, ∀ (y : α), y ∈ zpowers x
Theorem: PrimeSpectrum.basicOpen_mul_le_right
File: Mathlib/AlgebraicGeometry/PrimeSpectrum/Basic.lean

tactic: rw [basicOpen_mul f g]
state_before: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
f g : R
⊢ basicOpen (f * g) ≤ basicOpen g

tactic: exact inf_le_right
state_before: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
f g : R
⊢ basicOpen f ⊓ basicOpen g ≤ basicOpen g
Theorem: catalan_zero
File: Mathlib/Combinatorics/Catalan.lean

tactic: rw [catalan]
state_before: ⊢ catalan 0 = 1