tasksource/leandojo huggingface dataset:
Theorem: Submodule.mul_one
File: Mathlib/Algebra/Algebra/Operations.lean

tactic: conv_lhs => rw [one_eq_span, ← span_eq M]
state_before: ι : Sort uι
R : Type u
inst✝² : CommSemiring R
A : Type v
inst✝¹ : Semiring A
inst✝ : Algebra R A
S T : Set A
M N P Q : Submodule R A
m n : A
⊢ M * 1 = M

tactic: erw [span_mul_span, mul_one, span_eq]
state_before: ι : Sort uι
R : Type u
inst✝² : CommSemiring R
A : Type v
inst✝¹ : Semiring A
inst✝ : Algebra R A
S T : Set A
M N P Q : Submodule R A
m n : A
⊢ span R ↑M * span R {1} = M
Theorem: UniqueFactorizationMonoid.normalizedFactors_one
File: Mathlib/RingTheory/UniqueFactorizationDomain.lean

tactic: cases' subsingleton_or_nontrivial α with h h
state_before: α : Type u_1
inst✝³ : CancelCommMonoidWithZero α
inst✝² : DecidableEq α
inst✝¹ : NormalizationMonoid α
inst✝ : UniqueFactorizationMonoid α
⊢ normalizedFactors 1 = 0

tactic: dsimp [normalizedFactors, factors]
state_before: case inl
α : Type u_1
inst✝³ : CancelCommMonoidWithZero α
inst✝² : DecidableEq α
inst✝¹ : NormalizationMonoid α
inst✝ : UniqueFactorizationMonoid α
h : Subsingleton α
⊢ normalizedFactors 1 = 0

tactic: simp [Subsingleton.elim (1:α) 0]
state_before: case inl
α : Type u_1
inst✝³ : CancelCommMonoidWithZero α
inst✝² : DecidableEq α
inst✝¹ : NormalizationMonoid α
inst✝ : UniqueFactorizationMonoid α
h : Subsingleton α
⊢ Multiset.map (↑normalize)
      (if h : 1 = 0 then 0 else Classical.choose (_ : ∃ f, (∀ (b : α), b ∈ f → Prime b) ∧ Multiset.prod f ~ᵤ 1)) =
    0

tactic: rw [← Multiset.rel_zero_right]
state_before: case inr
α : Type u_1
inst✝³ : CancelCommMonoidWithZero α
inst✝² : DecidableEq α
inst✝¹ : NormalizationMonoid α
inst✝ : UniqueFactorizationMonoid α
h : Nontrivial α
⊢ normalizedFactors 1 = 0

tactic: apply factors_unique irreducible_of_normalized_factor
state_before: case inr
α : Type u_1
inst✝³ : CancelCommMonoidWithZero α
inst✝² : DecidableEq α
inst✝¹ : NormalizationMonoid α
inst✝ : UniqueFactorizationMonoid α
h : Nontrivial α
⊢ Multiset.Rel ?m.597280 (normalizedFactors 1) 0

α : Type u_1
inst✝³ : CancelCommMonoidWithZero α
inst✝² : DecidableEq α
inst✝¹ : NormalizationMonoid α
inst✝ : UniqueFactorizationMonoid α
h : Nontrivial α
⊢ Type ?u.597277

α : Type u_1
inst✝³ : CancelCommMonoidWithZero α
inst✝² : DecidableEq α
inst✝¹ : NormalizationMonoid α
inst✝ : UniqueFactorizationMonoid α
h : Nontrivial α
⊢ α → ?m.597279 → Prop

tactic: intro x hx
state_before: case inr.hg
α : Type u_1
inst✝³ : CancelCommMonoidWithZero α
inst✝² : DecidableEq α
inst✝¹ : NormalizationMonoid α
inst✝ : UniqueFactorizationMonoid α
h : Nontrivial α
⊢ ∀ (x : α), x ∈ 0 → Irreducible x

tactic: exfalso
state_before: case inr.hg
α : Type u_1
inst✝³ : CancelCommMonoidWithZero α
inst✝² : DecidableEq α
inst✝¹ : NormalizationMonoid α
inst✝ : UniqueFactorizationMonoid α
h : Nontrivial α
x : α
hx : x ∈ 0
⊢ Irreducible x

tactic: apply Multiset.not_mem_zero x hx
state_before: case inr.hg.h
α : Type u_1
inst✝³ : CancelCommMonoidWithZero α
inst✝² : DecidableEq α
inst✝¹ : NormalizationMonoid α
inst✝ : UniqueFactorizationMonoid α
h : Nontrivial α
x : α
hx : x ∈ 0
⊢ False

tactic: apply normalizedFactors_prod one_ne_zero
state_before: case inr.h
α : Type u_1
inst✝³ : CancelCommMonoidWithZero α
inst✝² : DecidableEq α
inst✝¹ : NormalizationMonoid α
inst✝ : UniqueFactorizationMonoid α
h : Nontrivial α
⊢ Multiset.prod (normalizedFactors 1) ~ᵤ Multiset.prod 0
Theorem: Stream'.tail_drop
File: Mathlib/Data/Stream/Init.lean

tactic: simp
state_before: α : Type u
β : Type v
δ : Type w
n : ℕ
s : Stream' α
⊢ tail (drop n s) = drop n (tail s)
Theorem: ContinuousLinearMap.op_norm_bound_of_ball_bound
File: Mathlib/Analysis/NormedSpace/IsROrC.lean

tactic: apply ContinuousLinearMap.op_norm_le_bound
state_before: 𝕜 : Type u_1
inst✝² : IsROrC 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
r : ℝ
r_pos : 0 < r
c : ℝ
f : E →L[𝕜] 𝕜
h : ∀ (z : E), z ∈ closedBall 0 r → ‖↑f z‖ ≤ c
⊢ ‖f‖ ≤ c / r

tactic: apply LinearMap.bound_of_ball_bound' r_pos
state_before: case hM
𝕜 : Type u_1
inst✝² : IsROrC 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
r : ℝ
r_pos : 0 < r
c : ℝ
f : E →L[𝕜] 𝕜
h : ∀ (z : E), z ∈ closedBall 0 r → ‖↑f z‖ ≤ c
⊢ ∀ (x : E), ‖↑f x‖ ≤ c / r * ‖x‖

tactic: exact fun z hz => h z hz
state_before: case hM.h
𝕜 : Type u_1
inst✝² : IsROrC 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
r : ℝ
r_pos : 0 < r
c : ℝ
f : E →L[𝕜] 𝕜
h : ∀ (z : E), z ∈ closedBall 0 r → ‖↑f z‖ ≤ c
⊢ ∀ (z : E), z ∈ closedBall 0 r → ‖↑↑f z‖ ≤ c

tactic: apply div_nonneg _ r_pos.le
state_before: case hMp
𝕜 : Type u_1
inst✝² : IsROrC 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
r : ℝ
r_pos : 0 < r
c : ℝ
f : E →L[𝕜] 𝕜
h : ∀ (z : E), z ∈ closedBall 0 r → ‖↑f z‖ ≤ c
⊢ 0 ≤ c / r

tactic: exact
  (norm_nonneg _).trans
    (h 0 (by simp only [norm_zero, mem_closedBall, dist_zero_left, r_pos.le]))
state_before: 𝕜 : Type u_1
inst✝² : IsROrC 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
r : ℝ
r_pos : 0 < r
c : ℝ
f : E →L[𝕜] 𝕜
h : ∀ (z : E), z ∈ closedBall 0 r → ‖↑f z‖ ≤ c
⊢ 0 ≤ c

tactic: simp only [norm_zero, mem_closedBall, dist_zero_left, r_pos.le]
state_before: 𝕜 : Type u_1
inst✝² : IsROrC 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
r : ℝ
r_pos : 0 < r
c : ℝ
f : E →L[𝕜] 𝕜
h : ∀ (z : E), z ∈ closedBall 0 r → ‖↑f z‖ ≤ c
⊢ 0 ∈ closedBall 0 r
Theorem: MeasureTheory.average_union
File: Mathlib/MeasureTheory/Integral/Average.lean

tactic: haveI := Fact.mk hsμ.lt_top
state_before: α : Type u_1
E : Type u_2
F : Type ?u.213640
m0 : MeasurableSpace α
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : CompleteSpace E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
μ : Measure α
s✝ : Set E
f : α → E
s t : Set α
hd : AEDisjoint μ s t
ht : NullMeasurableSet t
hsμ : ↑↑μ s ≠ ⊤
htμ : ↑↑μ t ≠ ⊤
hfs : IntegrableOn f s
hft : IntegrableOn f t
⊢ (⨍ (x : α) in s ∪ t, f x ∂μ) =
    ((ENNReal.toReal (↑↑μ s) / (ENNReal.toReal (↑↑μ s) + ENNReal.toReal (↑↑μ t))) • ⨍ (x : α) in s, f x ∂μ) +
      (ENNReal.toReal (↑↑μ t) / (ENNReal.toReal (↑↑μ s) + ENNReal.toReal (↑↑μ t))) • ⨍ (x : α) in t, f x ∂μ

tactic: haveI := Fact.mk htμ.lt_top
state_before: α : Type u_1
E : Type u_2
F : Type ?u.213640
m0 : MeasurableSpace α
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : CompleteSpace E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
μ : Measure α
s✝ : Set E
f : α → E
s t : Set α
hd : AEDisjoint μ s t
ht : NullMeasurableSet t
hsμ : ↑↑μ s ≠ ⊤
htμ : ↑↑μ t ≠ ⊤
hfs : IntegrableOn f s
hft : IntegrableOn f t
this : Fact (↑↑μ s < ⊤)
⊢ (⨍ (x : α) in s ∪ t, f x ∂μ) =
    ((ENNReal.toReal (↑↑μ s) / (ENNReal.toReal (↑↑μ s) + ENNReal.toReal (↑↑μ t))) • ⨍ (x : α) in s, f x ∂μ) +
      (ENNReal.toReal (↑↑μ t) / (ENNReal.toReal (↑↑μ s) + ENNReal.toReal (↑↑μ t))) • ⨍ (x : α) in t, f x ∂μ

tactic: rw [restrict_union₀ hd ht, average_add_measure hfs hft, restrict_apply_univ, restrict_apply_univ]
state_before: α : Type u_1
E : Type u_2
F : Type ?u.213640
m0 : MeasurableSpace α
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : CompleteSpace E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
μ : Measure α
s✝ : Set E
f : α → E
s t : Set α
hd : AEDisjoint μ s t
ht : NullMeasurableSet t
hsμ : ↑↑μ s ≠ ⊤
htμ : ↑↑μ t ≠ ⊤
hfs : IntegrableOn f s
hft : IntegrableOn f t
this✝ : Fact (↑↑μ s < ⊤)
this : Fact (↑↑μ t < ⊤)
⊢ (⨍ (x : α) in s ∪ t, f x ∂μ) =
    ((ENNReal.toReal (↑↑μ s) / (ENNReal.toReal (↑↑μ s) + ENNReal.toReal (↑↑μ t))) • ⨍ (x : α) in s, f x ∂μ) +
      (ENNReal.toReal (↑↑μ t) / (ENNReal.toReal (↑↑μ s) + ENNReal.toReal (↑↑μ t))) • ⨍ (x : α) in t, f x ∂μ
Theorem: Int.sign_eq_ediv_abs
File: Mathlib/Data/Int/Order/Basic.lean

tactic: simp [az]
state_before: a✝ b : ℤ
n : ℕ
a : ℤ
az : a = 0
⊢ sign a = a / abs a
Theorem: Subalgebra.rank_top
File: Mathlib/LinearAlgebra/Finrank.lean

tactic: rw [subalgebra_top_rank_eq_submodule_top_rank]
state_before: K : Type u
V : Type v
F : Type u_2
E : Type u_1
inst✝² : CommRing F
inst✝¹ : Ring E
inst✝ : Algebra F E
⊢ Module.rank F { x // x ∈ ⊤ } = Module.rank F E

tactic: exact _root_.rank_top F E
state_before: K : Type u
V : Type v
F : Type u_2
E : Type u_1
inst✝² : CommRing F
inst✝¹ : Ring E
inst✝ : Algebra F E
⊢ Module.rank F { x // x ∈ ⊤ } = Module.rank F E
Theorem: chartedSpaceSelf_prod
File: Mathlib/Geometry/Manifold/ChartedSpace.lean

tactic: ext1
state_before: H : Type u
H' : Type u_1
M : Type ?u.51637
M' : Type ?u.51640
M'' : Type ?u.51643
inst✝⁵ : TopologicalSpace H
inst✝⁴ : TopologicalSpace M
inst✝³ : ChartedSpace H M
inst✝² : TopologicalSpace H'
inst✝¹ : TopologicalSpace M'
inst✝ : ChartedSpace H' M'
x : M × M'
⊢ prodChartedSpace H H H' H' = chartedSpaceSelf (H × H')

tactic: simp [prodChartedSpace, atlas, ChartedSpace.atlas]
state_before: case atlas
H : Type u
H' : Type u_1
M : Type ?u.51637
M' : Type ?u.51640
M'' : Type ?u.51643
inst✝⁵ : TopologicalSpace H
inst✝⁴ : TopologicalSpace M
inst✝³ : ChartedSpace H M
inst✝² : TopologicalSpace H'
inst✝¹ : TopologicalSpace M'
inst✝ : ChartedSpace H' M'
x : M × M'
⊢ ChartedSpace.atlas = ChartedSpace.atlas

tactic: ext1
state_before: case chartAt
H : Type u
H' : Type u_1
M : Type ?u.51637
M' : Type ?u.51640
M'' : Type ?u.51643
inst✝⁵ : TopologicalSpace H
inst✝⁴ : TopologicalSpace M
inst✝³ : ChartedSpace H M
inst✝² : TopologicalSpace H'
inst✝¹ : TopologicalSpace M'
inst✝ : ChartedSpace H' M'
x : M × M'
⊢ ChartedSpace.chartAt = ChartedSpace.chartAt

tactic: simp only [prodChartedSpace_chartAt, chartAt_self_eq, refl_prod_refl]
state_before: case chartAt.h
H : Type u
H' : Type u_1
M : Type ?u.51637
M' : Type ?u.51640
M'' : Type ?u.51643
inst✝⁵ : TopologicalSpace H
inst✝⁴ : TopologicalSpace M
inst✝³ : ChartedSpace H M
inst✝² : TopologicalSpace H'
inst✝¹ : TopologicalSpace M'
inst✝ : ChartedSpace H' M'
x : M × M'
x✝ : H × H'
⊢ ChartedSpace.chartAt x✝ = ChartedSpace.chartAt x✝

tactic: rfl
state_before: case chartAt.h
H : Type u
H' : Type u_1
M : Type ?u.51637
M' : Type ?u.51640
M'' : Type ?u.51643
inst✝⁵ : TopologicalSpace H
inst✝⁴ : TopologicalSpace M
inst✝³ : ChartedSpace H M
inst✝² : TopologicalSpace H'
inst✝¹ : TopologicalSpace M'
inst✝ : ChartedSpace H' M'
x : M × M'
x✝ : H × H'
⊢ LocalHomeomorph.refl (H × H') = LocalHomeomorph.refl (ModelProd H H')
Theorem: Matrix.transvection_mul_apply_of_ne
File: Mathlib/LinearAlgebra/Matrix/Transvection.lean

tactic: simp [transvection, Matrix.add_mul, ha]
state_before: n : Type u_1
p : Type ?u.16503
R : Type u₂
𝕜 : Type ?u.16508
inst✝⁴ : Field 𝕜
inst✝³ : DecidableEq n
inst✝² : DecidableEq p
inst✝¹ : CommRing R
i j : n
inst✝ : Fintype n
a b : n
ha : a ≠ i
c : R
M : Matrix n n R
⊢ (transvection i j c ⬝ M) a b = M a b
Theorem: Matrix.det_units_conj
File: Mathlib/LinearAlgebra/Matrix/Determinant.lean

tactic: rw [det_mul_right_comm, ← mul_eq_mul, ← mul_eq_mul, Units.mul_inv, one_mul]
state_before: m : Type u_1
n : Type ?u.907427
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : Fintype m
R : Type v
inst✝ : CommRing R
M : (Matrix m m R)ˣ
N : Matrix m m R
⊢ det (↑M ⬝ N ⬝ ↑M⁻¹) = det N
Theorem: Module.Ray.units_smul_of_neg
File: Mathlib/LinearAlgebra/Ray.lean

tactic: rw [← neg_inj, neg_neg, ← neg_units_smul, units_smul_of_pos]
state_before: R : Type u_1
inst✝⁴ : StrictOrderedCommRing R
M : Type u_2
N : Type ?u.193734
inst✝³ : AddCommGroup M
inst✝² : AddCommGroup N
inst✝¹ : Module R M
inst✝ : Module R N
x y : M
u : Rˣ
hu : ↑u < 0
v : Ray R M
⊢ u • v = -v

tactic: rwa [Units.val_neg, Right.neg_pos_iff]
state_before: case hu
R : Type u_1
inst✝⁴ : StrictOrderedCommRing R
M : Type u_2
N : Type ?u.193734
inst✝³ : AddCommGroup M
inst✝² : AddCommGroup N
inst✝¹ : Module R M
inst✝ : Module R N
x y : M
u : Rˣ
hu : ↑u < 0
v : Ray R M
⊢ 0 < ↑(-u)
Theorem: IsSimpleGroup.isSimpleGroup_of_surjective
File: Mathlib/GroupTheory/Subgroup/Simple.lean

tactic: refine' (iH.comap f).eq_bot_or_eq_top.imp (fun h => _) fun h => _
state_before: G : Type u_2
inst✝⁴ : Group G
A : Type ?u.1231
inst✝³ : AddGroup A
H✝ : Type u_1
inst✝² : Group H✝
inst✝¹ : IsSimpleGroup G
inst✝ : Nontrivial H✝
f : G →* H✝
hf : Function.Surjective ↑f
H : Subgroup H✝
iH : Normal H
⊢ H = ⊥ ∨ H = ⊤

tactic: rw [← map_bot f, ← h, map_comap_eq_self_of_surjective hf]
state_before: case refine'_1
G : Type u_2
inst✝⁴ : Group G
A : Type ?u.1231
inst✝³ : AddGroup A
H✝ : Type u_1
inst✝² : Group H✝
inst✝¹ : IsSimpleGroup G
inst✝ : Nontrivial H✝
f : G →* H✝
hf : Function.Surjective ↑f
H : Subgroup H✝
iH : Normal H
h : comap f H = ⊥
⊢ H = ⊥

tactic: rw [← comap_top f] at h
state_before: case refine'_2
G : Type u_2
inst✝⁴ : Group G
A : Type ?u.1231
inst✝³ : AddGroup A
H✝ : Type u_1
inst✝² : Group H✝
inst✝¹ : IsSimpleGroup G
inst✝ : Nontrivial H✝
f : G →* H✝
hf : Function.Surjective ↑f
H : Subgroup H✝
iH : Normal H
h : comap f H = ⊤
⊢ H = ⊤

tactic: exact comap_injective hf h
state_before: case refine'_2
G : Type u_2
inst✝⁴ : Group G
A : Type ?u.1231
inst✝³ : AddGroup A
H✝ : Type u_1
inst✝² : Group H✝
inst✝¹ : IsSimpleGroup G
inst✝ : Nontrivial H✝
f : G →* H✝
hf : Function.Surjective ↑f
H : Subgroup H✝
iH : Normal H
h : comap f H = comap f ⊤
⊢ H = ⊤
Theorem: dvd_add
File: Mathlib/Algebra/Ring/Divisibility.lean

tactic: simp [left_distrib, hd, he]
state_before: α : Type u_1
β : Type ?u.23
inst✝² : Add α
inst✝¹ : Semigroup α
inst✝ : LeftDistribClass α
a b c : α
h₁ : a ∣ b
h₂ : a ∣ c
d : α
hd : b = a * d
e : α
he : c = a * e
⊢ a * (d + e) = b + c
Theorem: Set.Ioc_add_bij
File: Mathlib/Data/Set/Intervals/Monoid.lean

tactic: rw [← Ioi_inter_Iic, ← Ioi_inter_Iic]
state_before: M : Type u_1
inst✝¹ : OrderedCancelAddCommMonoid M
inst✝ : ExistsAddOfLE M
a b c d : M
⊢ BijOn (fun x => x + d) (Ioc a b) (Ioc (a + d) (b + d))

tactic: exact
  (Ioi_add_bij a d).inter_mapsTo (fun x hx => add_le_add_right hx _) fun x hx =>
    le_of_add_le_add_right hx.2
state_before: M : Type u_1
inst✝¹ : OrderedCancelAddCommMonoid M
inst✝ : ExistsAddOfLE M
a b c d : M
⊢ BijOn (fun x => x + d) (Ioi a ∩ Iic b) (Ioi (a + d) ∩ Iic (b + d))
Theorem: Rat.add_den_dvd
File: Mathlib/Data/Rat/Lemmas.lean

tactic: rw [add_def, normalize_eq]
state_before: q₁ q₂ : ℚ
⊢ (q₁ + q₂).den ∣ q₁.den * q₂.den

tactic: apply Nat.div_dvd_of_dvd
state_before: q₁ q₂ : ℚ
⊢ (mk'
        ((q₁.num * ↑q₂.den + q₂.num * ↑q₁.den) /
          ↑(Nat.gcd (Int.natAbs (q₁.num * ↑q₂.den + q₂.num * ↑q₁.den)) (q₁.den * q₂.den)))
        (q₁.den * q₂.den / Nat.gcd (Int.natAbs (q₁.num * ↑q₂.den + q₂.num * ↑q₁.den)) (q₁.den * q₂.den))).den ∣
    q₁.den * q₂.den

tactic: apply Nat.gcd_dvd_right
state_before: case h
q₁ q₂ : ℚ
⊢ Nat.gcd (Int.natAbs (q₁.num * ↑q₂.den + q₂.num * ↑q₁.den)) (q₁.den * q₂.den) ∣ q₁.den * q₂.den
Theorem: Set.preimage_const_sub_Ico
File: Mathlib/Data/Set/Pointwise/Interval.lean

tactic: simp [← Ioi_inter_Iic, ← Ici_inter_Iio, inter_comm]
state_before: α : Type u_1
inst✝ : OrderedAddCommGroup α
a b c : α
⊢ (fun x => a - x) ⁻¹' Ico b c = Ioc (a - c) (a - b)
Theorem: mul_eq_mul_of_div_eq_div
File: Mathlib/Algebra/GroupWithZero/Units/Lemmas.lean

tactic: rw [← mul_one a, ← div_self hb, ← mul_comm_div, h, div_mul_eq_mul_div, div_mul_cancel _ hd]
state_before: α : Type ?u.12337
M₀ : Type ?u.12340
G₀ : Type u_1
M₀' : Type ?u.12346
G₀' : Type ?u.12349
F : Type ?u.12352
F' : Type ?u.12355
inst✝¹ : MonoidWithZero M₀
inst✝ : CommGroupWithZero G₀
a✝ b✝ c✝ d✝ a b c d : G₀
hb : b ≠ 0
hd : d ≠ 0
h : a / b = c / d
⊢ a * d = c * b
Theorem: DistribMulActionHom.id_comp
File: Mathlib/Algebra/Hom/GroupAction.lean

tactic: rw [comp_apply, id_apply]
state_before: M' : Type ?u.176380
X : Type ?u.176383
inst✝²³ : SMul M' X
Y : Type ?u.176390
inst✝²² : SMul M' Y
Z : Type ?u.176397
inst✝²¹ : SMul M' Z
M : Type u_1
inst✝²⁰ : Monoid M
A : Type u_2
inst✝¹⁹ : AddMonoid A
inst✝¹⁸ : DistribMulAction M A
A' : Type ?u.176438
inst✝¹⁷ : AddGroup A'
inst✝¹⁶ : DistribMulAction M A'
B : Type u_3
inst✝¹⁵ : AddMonoid B
inst✝¹⁴ : DistribMulAction M B
B' : Type ?u.176740
inst✝¹³ : AddGroup B'
inst✝¹² : DistribMulAction M B'
C : Type ?u.177016
inst✝¹¹ : AddMonoid C
inst✝¹⁰ : DistribMulAction M C
R : Type ?u.177042
inst✝⁹ : Semiring R
inst✝⁸ : MulSemiringAction M R
R' : Type ?u.177069
inst✝⁷ : Ring R'
inst✝⁶ : MulSemiringAction M R'
S : Type ?u.177265
inst✝⁵ : Semiring S
inst✝⁴ : MulSemiringAction M S
S' : Type ?u.177292
inst✝³ : Ring S'
inst✝² : MulSemiringAction M S'
T : Type ?u.177488
inst✝¹ : Semiring T
inst✝ : MulSemiringAction M T
f : A →+[M] B
x : A
⊢ ↑(comp (DistribMulActionHom.id M) f) x = ↑f x
Theorem: MvQPF.supp_map
File: Mathlib/Data/QPF/Multivariate/Basic.lean

tactic: rw [← abs_repr x]
state_before: n : ℕ
F : TypeVec n → Type u_1
inst✝ : MvFunctor F
q : MvQPF F
h : IsUniform
α β : TypeVec n
g : α ⟹ β
x : F α
i : Fin2 n
⊢ supp (g <$$> x) i = g i '' supp x i

tactic: cases' repr x with a f
state_before: n : ℕ
F : TypeVec n → Type u_1
inst✝ : MvFunctor F
q : MvQPF F
h : IsUniform
α β : TypeVec n
g : α ⟹ β
x : F α
i : Fin2 n
⊢ supp (g <$$> abs (repr x)) i = g i '' supp (abs (repr x)) i

tactic: rw [← abs_map, MvPFunctor.map_eq]
state_before: case mk
n : ℕ
F : TypeVec n → Type u_1
inst✝ : MvFunctor F
q : MvQPF F
h : IsUniform
α β : TypeVec n
g : α ⟹ β
x : F α
i : Fin2 n
a : (P F).A
f : MvPFunctor.B (P F) a ⟹ α
⊢ supp (g <$$> abs { fst := a, snd := f }) i = g i '' supp (abs { fst := a, snd := f }) i

tactic: rw [supp_eq_of_isUniform h, supp_eq_of_isUniform h, ← image_comp]
state_before: case mk
n : ℕ
F : TypeVec n → Type u_1
inst✝ : MvFunctor F
q : MvQPF F
h : IsUniform
α β : TypeVec n
g : α ⟹ β
x : F α
i : Fin2 n
a : (P F).A
f : MvPFunctor.B (P F) a ⟹ α
⊢ supp (abs { fst := a, snd := g ⊚ f }) i = g i '' supp (abs { fst := a, snd := f }) i

tactic: rfl
state_before: case mk
n : ℕ
F : TypeVec n → Type u_1
inst✝ : MvFunctor F
q : MvQPF F
h : IsUniform
α β : TypeVec n
g : α ⟹ β
x : F α
i : Fin2 n
a : (P F).A
f : MvPFunctor.B (P F) a ⟹ α
⊢ (g ⊚ f) i '' univ = g i ∘ f i '' univ
Theorem: nhdsWithin_insert_of_ne
File: Mathlib/Topology/Separation.lean

tactic: refine' le_antisymm (Filter.le_def.2 fun t ht => _) (nhdsWithin_mono x <| subset_insert y s)
state_before: α : Type u
β : Type v
inst✝¹ : TopologicalSpace α
inst✝ : T1Space α
x y : α
s : Set α
hxy : x ≠ y
⊢ 𝓝[insert y s] x = 𝓝[s] x

tactic: obtain ⟨o, ho, hxo, host⟩ := mem_nhdsWithin.mp ht
state_before: α : Type u
β : Type v
inst✝¹ : TopologicalSpace α
inst✝ : T1Space α
x y : α
s : Set α
hxy : x ≠ y
t : Set α
ht : t ∈ 𝓝[s] x
⊢ t ∈ 𝓝[insert y s] x

tactic: refine' mem_nhdsWithin.mpr ⟨o \ {y}, ho.sdiff isClosed_singleton, ⟨hxo, hxy⟩, _⟩
state_before: case intro.intro.intro
α : Type u
β : Type v
inst✝¹ : TopologicalSpace α
inst✝ : T1Space α
x y : α
s : Set α
hxy : x ≠ y
t : Set α
ht : t ∈ 𝓝[s] x
o : Set α
ho : IsOpen o
hxo : x ∈ o
host : o ∩ s ⊆ t
⊢ t ∈ 𝓝[insert y s] x

tactic: rw [inter_insert_of_not_mem <| not_mem_diff_of_mem (mem_singleton y)]
state_before: case intro.intro.intro
α : Type u
β : Type v
inst✝¹ : TopologicalSpace α
inst✝ : T1Space α
x y : α
s : Set α
hxy : x ≠ y
t : Set α
ht : t ∈ 𝓝[s] x
o : Set α
ho : IsOpen o
hxo : x ∈ o
host : o ∩ s ⊆ t
⊢ o \ {y} ∩ insert y s ⊆ t

tactic: exact (inter_subset_inter (diff_subset _ _) Subset.rfl).trans host
state_before: case intro.intro.intro
α : Type u
β : Type v
inst✝¹ : TopologicalSpace α
inst✝ : T1Space α
x y : α
s : Set α
hxy : x ≠ y
t : Set α
ht : t ∈ 𝓝[s] x
o : Set α
ho : IsOpen o
hxo : x ∈ o
host : o ∩ s ⊆ t
⊢ o \ {y} ∩ s ⊆ t
Theorem: Set.exists_set_mem_of_union_eq_top
File: Mathlib/Data/Set/Lattice.lean

tactic: have p : x ∈ ⊤ := Set.mem_univ x
state_before: α : Type ?u.55712
β : Type u_2
γ : Type ?u.55718
ι✝ : Sort ?u.55721
ι' : Sort ?u.55724
ι₂ : Sort ?u.55727
κ : ι✝ → Sort ?u.55732
κ₁ : ι✝ → Sort ?u.55737
κ₂ : ι✝ → Sort ?u.55742
κ' : ι' → Sort ?u.55747
ι : Type u_1
t : Set ι
s : ι → Set β
w : (⋃ (i : ι) (_ : i ∈ t), s i) = ⊤
x : β
⊢ ∃ i, i ∈ t ∧ x ∈ s i

tactic: rw [← w, Set.mem_iUnion] at p
state_before: α : Type ?u.55712
β : Type u_2
γ : Type ?u.55718
ι✝ : Sort ?u.55721
ι' : Sort ?u.55724
ι₂ : Sort ?u.55727
κ : ι✝ → Sort ?u.55732
κ₁ : ι✝ → Sort ?u.55737
κ₂ : ι✝ → Sort ?u.55742
κ' : ι' → Sort ?u.55747
ι : Type u_1
t : Set ι
s : ι → Set β
w : (⋃ (i : ι) (_ : i ∈ t), s i) = ⊤
x : β
p : x ∈ ⊤
⊢ ∃ i, i ∈ t ∧ x ∈ s i

tactic: simpa using p
state_before: α : Type ?u.55712
β : Type u_2
γ : Type ?u.55718
ι✝ : Sort ?u.55721
ι' : Sort ?u.55724
ι₂ : Sort ?u.55727
κ : ι✝ → Sort ?u.55732
κ₁ : ι✝ → Sort ?u.55737
κ₂ : ι✝ → Sort ?u.55742
κ' : ι' → Sort ?u.55747
ι : Type u_1
t : Set ι
s : ι → Set β
w : (⋃ (i : ι) (_ : i ∈ t), s i) = ⊤
x : β
p : ∃ i, x ∈ ⋃ (_ : i ∈ t), s i
⊢ ∃ i, i ∈ t ∧ x ∈ s i
Theorem: Complex.abs_I
File: Mathlib/Data/Complex/Basic.lean

tactic: simp [Complex.abs]
state_before: ⊢ ↑abs I = 1
Theorem: CategoryTheory.Abelian.tfae_mono
File: Mathlib/CategoryTheory/Abelian/Exact.lean

tactic: tfae_have 3 → 2
state_before: C : Type u₁
inst✝¹ : Category C
inst✝ : Abelian C
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
⊢ TFAE [Mono f, kernel.ι f = 0, Exact 0 f]

tactic: tfae_have 1 → 3
state_before: C : Type u₁
inst✝¹ : Category C
inst✝ : Abelian C
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
tfae_3_to_2 : Exact 0 f → kernel.ι f = 0
⊢ TFAE [Mono f, kernel.ι f = 0, Exact 0 f]

tactic: tfae_have 2 → 1
state_before: C : Type u₁
inst✝¹ : Category C
inst✝ : Abelian C
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
tfae_3_to_2 : Exact 0 f → kernel.ι f = 0
tfae_1_to_3 : Mono f → Exact 0 f
⊢ TFAE [Mono f, kernel.ι f = 0, Exact 0 f]

tactic: tfae_finish
state_before: C : Type u₁
inst✝¹ : Category C
inst✝ : Abelian C
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
tfae_3_to_2 : Exact 0 f → kernel.ι f = 0
tfae_1_to_3 : Mono f → Exact 0 f
tfae_2_to_1 : kernel.ι f = 0 → Mono f
⊢ TFAE [Mono f, kernel.ι f = 0, Exact 0 f]

tactic: exact kernel_ι_eq_zero_of_exact_zero_left Z
state_before: case tfae_3_to_2
C : Type u₁
inst✝¹ : Category C
inst✝ : Abelian C
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
⊢ Exact 0 f → kernel.ι f = 0

tactic: intros
state_before: case tfae_1_to_3
C : Type u₁
inst✝¹ : Category C
inst✝ : Abelian C
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
tfae_3_to_2 : Exact 0 f → kernel.ι f = 0
⊢ Mono f → Exact 0 f

tactic: exact exact_zero_left_of_mono Z
state_before: case tfae_1_to_3
C : Type u₁
inst✝¹ : Category C
inst✝ : Abelian C
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
tfae_3_to_2 : Exact 0 f → kernel.ι f = 0
✝ : Mono f
⊢ Exact 0 f

tactic: exact mono_of_kernel_ι_eq_zero _
state_before: case tfae_2_to_1
C : Type u₁
inst✝¹ : Category C
inst✝ : Abelian C
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
tfae_3_to_2 : Exact 0 f → kernel.ι f = 0
tfae_1_to_3 : Mono f → Exact 0 f
⊢ kernel.ι f = 0 → Mono f
Theorem: Basis.mem_submodule_iff'
File: Mathlib/LinearAlgebra/Basis.lean

tactic: simp [Finsupp.sum_fintype, Finsupp.equivFunOnFinite]
state_before: ι : Type u_3
ι' : Type ?u.717103
R : Type u_1
R₂ : Type ?u.717109
K : Type ?u.717112
M : Type u_2
M' : Type ?u.717118
M'' : Type ?u.717121
V : Type u
V' : Type ?u.717126
inst✝⁸ : Semiring R
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
inst✝⁵ : AddCommMonoid M'
inst✝⁴ : Module R M'
inst✝³ : Fintype ι
b✝ : Basis ι R M
S : Type ?u.717227
inst✝² : Semiring S
inst✝¹ : Module S M'
inst✝ : SMulCommClass R S M'
P : Submodule R M
b : Basis ι R { x // x ∈ P }
x : M
c : ι → R
⊢ (x = Finsupp.sum (↑Finsupp.equivFunOnFinite.symm c) fun i x => x • ↑(↑b i)) ↔ x = ∑ i : ι, c i • ↑(↑b i)
Theorem: ENNReal.coe_div
File: Mathlib/Data/Real/ENNReal.lean

tactic: rw [div_eq_mul_inv, div_eq_mul_inv, coe_mul, coe_inv hr]
state_before: α : Type ?u.219623
β : Type ?u.219626
a b c d : ℝ≥0∞
r p q : ℝ≥0
hr : r ≠ 0
⊢ ↑(p / r) = ↑p / ↑r
Theorem: Polynomial.pow_rootMultiplicity_not_dvd
File: Mathlib/Data/Polynomial/RingDivision.lean

tactic: rw [← rootMultiplicity_le_iff p0]
state_before: R : Type u
S : Type v
T : Type w
a✝ b : R
n : ℕ
inst✝ : CommRing R
p : R[X]
p0 : p ≠ 0
a : R
⊢ ¬(X - ↑C a) ^ (rootMultiplicity a p + 1) ∣ p
Theorem: CircleDeg1Lift.lt_iterate_pos_iff
File: Mathlib/Dynamics/Circle/RotationNumber/TranslationNumber.lean

tactic: simpa only [not_le] using not_congr (f.iterate_pos_le_iff hn)
state_before: f g : CircleDeg1Lift
x : ℝ
m : ℤ
n : ℕ
hn : 0 < n
⊢ x + ↑n * ↑m < (↑f^[n]) x ↔ x + ↑m < ↑f x