tasksource/leandojo huggingface dataset:
Theorem: PSigma.ext
File: Mathlib/Data/Sigma/Basic.lean

tactic: cases x₀
state_before: α : Sort u_1
β : α → Sort u_2
x₀ x₁ : PSigma β
h₀ : x₀.fst = x₁.fst
h₁ : HEq x₀.snd x₁.snd
⊢ x₀ = x₁

tactic: cases x₁
state_before: case mk
α : Sort u_1
β : α → Sort u_2
x₁ : PSigma β
fst✝ : α
snd✝ : β fst✝
h₀ : { fst := fst✝, snd := snd✝ }.fst = x₁.fst
h₁ : HEq { fst := fst✝, snd := snd✝ }.snd x₁.snd
⊢ { fst := fst✝, snd := snd✝ } = x₁

tactic: cases h₀
state_before: case mk.mk
α : Sort u_1
β : α → Sort u_2
fst✝¹ : α
snd✝¹ : β fst✝¹
fst✝ : α
snd✝ : β fst✝
h₀ : { fst := fst✝¹, snd := snd✝¹ }.fst = { fst := fst✝, snd := snd✝ }.fst
h₁ : HEq { fst := fst✝¹, snd := snd✝¹ }.snd { fst := fst✝, snd := snd✝ }.snd
⊢ { fst := fst✝¹, snd := snd✝¹ } = { fst := fst✝, snd := snd✝ }

tactic: cases h₁
state_before: case mk.mk.refl
α : Sort u_1
β : α → Sort u_2
fst✝ : α
snd✝¹ snd✝ : β fst✝
h₁ : HEq { fst := fst✝, snd := snd✝¹ }.snd { fst := fst✝, snd := snd✝ }.snd
⊢ { fst := fst✝, snd := snd✝¹ } = { fst := fst✝, snd := snd✝ }

tactic: rfl
state_before: case mk.mk.refl.refl
α : Sort u_1
β : α → Sort u_2
fst✝ : α
snd✝ : β fst✝
⊢ { fst := fst✝, snd := snd✝ } = { fst := fst✝, snd := snd✝ }
Theorem: Associates.count_of_coprime
File: Mathlib/RingTheory/UniqueFactorizationDomain.lean

tactic: rw [or_iff_not_imp_left, ← Ne.def]
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
dec_irr : (p : Associates α) → Decidable (Irreducible p)
inst✝ : UniqueFactorizationMonoid α
dec : DecidableEq α
dec' : DecidableEq (Associates α)
a : Associates α
ha : a ≠ 0
b : Associates α
hb : b ≠ 0
hab : ∀ (d : Associates α), d ∣ a → d ∣ b → ¬Prime d
p : Associates α
hp : Irreducible p
⊢ count p (factors a) = 0 ∨ count p (factors b) = 0

tactic: intro hca
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
dec_irr : (p : Associates α) → Decidable (Irreducible p)
inst✝ : UniqueFactorizationMonoid α
dec : DecidableEq α
dec' : DecidableEq (Associates α)
a : Associates α
ha : a ≠ 0
b : Associates α
hb : b ≠ 0
hab : ∀ (d : Associates α), d ∣ a → d ∣ b → ¬Prime d
p : Associates α
hp : Irreducible p
⊢ count p (factors a) ≠ 0 → count p (factors b) = 0

tactic: contrapose! hab with hcb
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
dec_irr : (p : Associates α) → Decidable (Irreducible p)
inst✝ : UniqueFactorizationMonoid α
dec : DecidableEq α
dec' : DecidableEq (Associates α)
a : Associates α
ha : a ≠ 0
b : Associates α
hb : b ≠ 0
hab : ∀ (d : Associates α), d ∣ a → d ∣ b → ¬Prime d
p : Associates α
hp : Irreducible p
hca : count p (factors a) ≠ 0
⊢ count p (factors b) = 0

tactic: exact
  ⟨p, le_of_count_ne_zero ha hp hca, le_of_count_ne_zero hb hp hcb, irreducible_iff_prime.mp hp⟩
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
dec_irr : (p : Associates α) → Decidable (Irreducible p)
inst✝ : UniqueFactorizationMonoid α
dec : DecidableEq α
dec' : DecidableEq (Associates α)
a : Associates α
ha : a ≠ 0
b : Associates α
hb : b ≠ 0
p : Associates α
hp : Irreducible p
hca : count p (factors a) ≠ 0
hcb : count p (factors b) ≠ 0
⊢ ∃ d, d ∣ a ∧ d ∣ b ∧ Prime d
Theorem: Function.mulSupport_eq_empty_iff
File: Mathlib/Algebra/Support.lean

tactic: simp_rw [← subset_empty_iff, mulSupport_subset_iff', funext_iff]
state_before: α : Type u_1
β : Type ?u.5450
A : Type ?u.5453
B : Type ?u.5456
M : Type u_2
N : Type ?u.5462
P : Type ?u.5465
R : Type ?u.5468
S : Type ?u.5471
G : Type ?u.5474
M₀ : Type ?u.5477
G₀ : Type ?u.5480
ι : Sort ?u.5483
inst✝² : One M
inst✝¹ : One N
inst✝ : One P
f : α → M
⊢ mulSupport f = ∅ ↔ f = 1

tactic: simp
state_before: α : Type u_1
β : Type ?u.5450
A : Type ?u.5453
B : Type ?u.5456
M : Type u_2
N : Type ?u.5462
P : Type ?u.5465
R : Type ?u.5468
S : Type ?u.5471
G : Type ?u.5474
M₀ : Type ?u.5477
G₀ : Type ?u.5480
ι : Sort ?u.5483
inst✝² : One M
inst✝¹ : One N
inst✝ : One P
f : α → M
⊢ (∀ (x : α), ¬x ∈ ∅ → f x = 1) ↔ ∀ (a : α), f a = OfNat.ofNat 1 a
Theorem: Polynomial.degree_eq_natDegree
File: Mathlib/Data/Polynomial/Degree/Definitions.lean

tactic: let ⟨n, hn⟩ := not_forall.1 (mt Option.eq_none_iff_forall_not_mem.2 (mt degree_eq_bot.1 hp))
state_before: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p q r : R[X]
hp : p ≠ 0
⊢ degree p = ↑(natDegree p)

tactic: have hn : degree p = some n := Classical.not_not.1 hn
state_before: R : Type u
S : Type v
a b c d : R
n✝ m : ℕ
inst✝ : Semiring R
p q r : R[X]
hp : p ≠ 0
n : ℕ
hn : ¬¬n ∈ degree p
⊢ degree p = ↑(natDegree p)

tactic: rw [natDegree, hn]
state_before: R : Type u
S : Type v
a b c d : R
n✝ m : ℕ
inst✝ : Semiring R
p q r : R[X]
hp : p ≠ 0
n : ℕ
hn✝ : ¬¬n ∈ degree p
hn : degree p = Option.some n
⊢ degree p = ↑(natDegree p)

tactic: rfl
state_before: R : Type u
S : Type v
a b c d : R
n✝ m : ℕ
inst✝ : Semiring R
p q r : R[X]
hp : p ≠ 0
n : ℕ
hn✝ : ¬¬n ∈ degree p
hn : degree p = Option.some n
⊢ Option.some n = ↑(WithBot.unbot' 0 (Option.some n))
Theorem: vectorSpan_insert_eq_vectorSpan
File: Mathlib/LinearAlgebra/AffineSpace/AffineSubspace.lean

tactic: simp_rw [← direction_affineSpan, affineSpan_insert_eq_affineSpan _ h]
state_before: k : Type u_2
V : Type u_3
P : Type u_1
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
ι : Type ?u.494322
p : P
ps : Set P
h : p ∈ affineSpan k ps
⊢ vectorSpan k (insert p ps) = vectorSpan k ps
Theorem: LiouvilleWith.rat_sub_iff
File: Mathlib/NumberTheory/Liouville/LiouvilleWith.lean

tactic: simp [sub_eq_add_neg]
state_before: p q x y : ℝ
r : ℚ
m : ℤ
n : ℕ
⊢ LiouvilleWith p (↑r - x) ↔ LiouvilleWith p x
Theorem: zpow_injective
File: Mathlib/Algebra/Order/Field/Power.lean

tactic: rcases h₁.lt_or_lt with (H | H)
state_before: α : Type u_1
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
h₀ : 0 < a
h₁ : a ≠ 1
⊢ Injective ((fun x x_1 => x ^ x_1) a)

tactic: exact (zpow_strictAnti h₀ H).injective
state_before: case inl
α : Type u_1
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
h₀ : 0 < a
h₁ : a ≠ 1
H : a < 1
⊢ Injective ((fun x x_1 => x ^ x_1) a)

tactic: exact (zpow_strictMono H).injective
state_before: case inr
α : Type u_1
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
h₀ : 0 < a
h₁ : a ≠ 1
H : 1 < a
⊢ Injective ((fun x x_1 => x ^ x_1) a)
Theorem: Real.tan_mul_cos
File: Mathlib/Data/Complex/Exponential.lean

tactic: rw [tan_eq_sin_div_cos, div_mul_cancel _ hx]
state_before: x✝ y x : ℝ
hx : cos x ≠ 0
⊢ tan x * cos x = sin x
Theorem: CategoryTheory.Limits.imageSubobjectIso_comp_image_map
File: Mathlib/CategoryTheory/Subobject/Limits.lean

tactic: erw [← Iso.comp_inv_eq, Category.assoc, ← (imageSubobjectIso f).eq_inv_comp,
  image_map_comp_imageSubobjectIso_inv sq]
state_before: C : Type u
inst✝⁴ : Category C
X✝ Y✝ Z✝ : C
f✝ : X✝ ⟶ Y✝
inst✝³ : HasImage f✝
W X Y Z : C
f : W ⟶ X
inst✝² : HasImage f
g : Y ⟶ Z
inst✝¹ : HasImage g
sq : Arrow.mk f ⟶ Arrow.mk g
inst✝ : HasImageMap sq
⊢ (imageSubobjectIso (Arrow.mk f).hom).hom ≫ image.map sq = imageSubobjectMap sq ≫ (imageSubobjectIso g).hom
Theorem: LinearMap.compMultilinearMap_domDomCongr
File: Mathlib/LinearAlgebra/Multilinear/Basic.lean

tactic: ext
state_before: R : Type u
ι : Type u'
n : ℕ
M : Fin (Nat.succ n) → Type v
M₁ : ι → Type v₁
M₂ : Type v₂
M₃ : Type v₃
M' : Type v'
inst✝⁸ : Semiring R
inst✝⁷ : (i : ι) → AddCommMonoid (M₁ i)
inst✝⁶ : AddCommMonoid M₂
inst✝⁵ : AddCommMonoid M₃
inst✝⁴ : AddCommMonoid M'
inst✝³ : (i : ι) → Module R (M₁ i)
inst✝² : Module R M₂
inst✝¹ : Module R M₃
inst✝ : Module R M'
ι₁ : Type u_1
ι₂ : Type u_2
σ : ι₁ ≃ ι₂
g : M₂ →ₗ[R] M₃
f : MultilinearMap R (fun x => M') M₂
⊢ MultilinearMap.domDomCongr σ (compMultilinearMap g f) = compMultilinearMap g (MultilinearMap.domDomCongr σ f)

tactic: simp [MultilinearMap.domDomCongr]
state_before: case H
R : Type u
ι : Type u'
n : ℕ
M : Fin (Nat.succ n) → Type v
M₁ : ι → Type v₁
M₂ : Type v₂
M₃ : Type v₃
M' : Type v'
inst✝⁸ : Semiring R
inst✝⁷ : (i : ι) → AddCommMonoid (M₁ i)
inst✝⁶ : AddCommMonoid M₂
inst✝⁵ : AddCommMonoid M₃
inst✝⁴ : AddCommMonoid M'
inst✝³ : (i : ι) → Module R (M₁ i)
inst✝² : Module R M₂
inst✝¹ : Module R M₃
inst✝ : Module R M'
ι₁ : Type u_1
ι₂ : Type u_2
σ : ι₁ ≃ ι₂
g : M₂ →ₗ[R] M₃
f : MultilinearMap R (fun x => M') M₂
x✝ : ι₂ → M'
⊢ ↑(MultilinearMap.domDomCongr σ (compMultilinearMap g f)) x✝ =
    ↑(compMultilinearMap g (MultilinearMap.domDomCongr σ f)) x✝
Theorem: MeasureTheory.ExistsSeqTendstoAe.exists_nat_measure_lt_two_inv
File: Mathlib/MeasureTheory/Function/ConvergenceInMeasure.lean

tactic: specialize hfg ((2⁻¹ : ℝ) ^ n) (by simp only [Real.rpow_nat_cast, inv_pos, zero_lt_two, pow_pos])
state_before: α : Type u_1
ι : Type ?u.11195
E : Type u_2
m : MeasurableSpace α
μ : Measure α
inst✝ : MetricSpace E
f : ℕ → α → E
g : α → E
hfg : TendstoInMeasure μ f atTop g
n : ℕ
⊢ ∃ N, ∀ (m_1 : ℕ), m_1 ≥ N → ↑↑μ {x | 2⁻¹ ^ n ≤ dist (f m_1 x) (g x)} ≤ 2⁻¹ ^ n

tactic: rw [ENNReal.tendsto_atTop_zero] at hfg
state_before: α : Type u_1
ι : Type ?u.11195
E : Type u_2
m : MeasurableSpace α
μ : Measure α
inst✝ : MetricSpace E
f : ℕ → α → E
g : α → E
n : ℕ
hfg : Tendsto (fun i => ↑↑μ {x | 2⁻¹ ^ n ≤ dist (f i x) (g x)}) atTop (𝓝 0)
⊢ ∃ N, ∀ (m_1 : ℕ), m_1 ≥ N → ↑↑μ {x | 2⁻¹ ^ n ≤ dist (f m_1 x) (g x)} ≤ 2⁻¹ ^ n

tactic: exact hfg ((2 : ℝ≥0∞)⁻¹ ^ n) (pos_iff_ne_zero.mpr fun h_zero => by simpa using pow_eq_zero h_zero)
state_before: α : Type u_1
ι : Type ?u.11195
E : Type u_2
m : MeasurableSpace α
μ : Measure α
inst✝ : MetricSpace E
f : ℕ → α → E
g : α → E
n : ℕ
hfg : ∀ (ε : ℝ≥0∞), ε > 0 → ∃ N, ∀ (n_1 : ℕ), n_1 ≥ N → ↑↑μ {x | 2⁻¹ ^ n ≤ dist (f n_1 x) (g x)} ≤ ε
⊢ ∃ N, ∀ (m_1 : ℕ), m_1 ≥ N → ↑↑μ {x | 2⁻¹ ^ n ≤ dist (f m_1 x) (g x)} ≤ 2⁻¹ ^ n

tactic: simp only [Real.rpow_nat_cast, inv_pos, zero_lt_two, pow_pos]
state_before: α : Type u_1
ι : Type ?u.11195
E : Type u_2
m : MeasurableSpace α
μ : Measure α
inst✝ : MetricSpace E
f : ℕ → α → E
g : α → E
hfg : TendstoInMeasure μ f atTop g
n : ℕ
⊢ 0 < 2⁻¹ ^ n

tactic: simpa using pow_eq_zero h_zero
state_before: α : Type u_1
ι : Type ?u.11195
E : Type u_2
m : MeasurableSpace α
μ : Measure α
inst✝ : MetricSpace E
f : ℕ → α → E
g : α → E
n : ℕ
hfg : ∀ (ε : ℝ≥0∞), ε > 0 → ∃ N, ∀ (n_1 : ℕ), n_1 ≥ N → ↑↑μ {x | 2⁻¹ ^ n ≤ dist (f n_1 x) (g x)} ≤ ε
h_zero : 2⁻¹ ^ n = 0
⊢ False
Theorem: Fin.zero_mul
File: Mathlib/Data/Fin/Basic.lean

tactic: simp [eq_iff_veq, mul_def]
state_before: n m : ℕ
inst✝ : NeZero n
k : Fin n
⊢ 0 * k = 0
Theorem: MeasureTheory.OuterMeasure.iInf_apply
File: Mathlib/MeasureTheory/Measure/OuterMeasure.lean

tactic: rw [iInf, sInf_apply (range_nonempty m)]
state_before: α : Type u_2
ι : Sort u_1
inst✝ : Nonempty ι
m : ι → OuterMeasure α
s : Set α
⊢ ↑(⨅ (i : ι), m i) s = ⨅ (t : ℕ → Set α) (_ : s ⊆ iUnion t), ∑' (n : ℕ), ⨅ (i : ι), ↑(m i) (t n)

tactic: simp only [iInf_range]
state_before: α : Type u_2
ι : Sort u_1
inst✝ : Nonempty ι
m : ι → OuterMeasure α
s : Set α
⊢ (⨅ (t : ℕ → Set α) (_ : s ⊆ iUnion t), ∑' (n : ℕ), ⨅ (μ : OuterMeasure α) (_ : μ ∈ range m), ↑μ (t n)) =
    ⨅ (t : ℕ → Set α) (_ : s ⊆ iUnion t), ∑' (n : ℕ), ⨅ (i : ι), ↑(m i) (t n)
Theorem: ContDiff.sum
File: Mathlib/Analysis/Calculus/ContDiff.lean

tactic: simp only [← contDiffOn_univ] at *
state_before: 𝕜 : Type u_2
inst✝¹⁰ : NontriviallyNormedField 𝕜
D : Type uD
inst✝⁹ : NormedAddCommGroup D
inst✝⁸ : NormedSpace 𝕜 D
E : Type uE
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type uF
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type uG
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
X : Type ?u.1891722
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s✝ s₁ t u : Set E
f✝ f₁ : E → F
g : F → G
x x₀ : E
c : F
b : E × F → G
m n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
ι : Type u_1
f : ι → E → F
s : Finset ι
h : ∀ (i : ι), i ∈ s → ContDiff 𝕜 n fun x => f i x
⊢ ContDiff 𝕜 n fun x => ∑ i in s, f i x

tactic: exact ContDiffOn.sum h
state_before: 𝕜 : Type u_2
inst✝¹⁰ : NontriviallyNormedField 𝕜
D : Type uD
inst✝⁹ : NormedAddCommGroup D
inst✝⁸ : NormedSpace 𝕜 D
E : Type uE
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type uF
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type uG
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
X : Type ?u.1891722
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s✝ s₁ t u : Set E
f✝ f₁ : E → F
g : F → G
x x₀ : E
c : F
b : E × F → G
m n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
ι : Type u_1
f : ι → E → F
s : Finset ι
h : ∀ (i : ι), i ∈ s → ContDiffOn 𝕜 n (fun x => f i x) univ
⊢ ContDiffOn 𝕜 n (fun x => ∑ i in s, f i x) univ
Theorem: Polynomial.monomial_mul_X
File: Mathlib/Data/Polynomial/Basic.lean

tactic: erw [monomial_mul_monomial, mul_one]
state_before: R : Type u
a b : R
m n✝ : ℕ
inst✝ : Semiring R
p q : R[X]
n : ℕ
r : R
⊢ ↑(monomial n) r * X = ↑(monomial (n + 1)) r
Theorem: StrictConvexOn.secant_strict_mono_aux2
File: Mathlib/Analysis/Convex/Slope.lean

tactic: have hxy' : 0 < y - x := by linarith
state_before: 𝕜 : Type u_1
inst✝ : LinearOrderedField 𝕜
s : Set 𝕜
f : 𝕜 → 𝕜
hf : StrictConvexOn 𝕜 s f
x y z : 𝕜
hx : x ∈ s
hz : z ∈ s
hxy : x < y
hyz : y < z
⊢ (f y - f x) / (y - x) < (f z - f x) / (z - x)

tactic: have hxz' : 0 < z - x := by linarith
state_before: 𝕜 : Type u_1
inst✝ : LinearOrderedField 𝕜
s : Set 𝕜
f : 𝕜 → 𝕜
hf : StrictConvexOn 𝕜 s f
x y z : 𝕜
hx : x ∈ s
hz : z ∈ s
hxy : x < y
hyz : y < z
hxy' : 0 < y - x
⊢ (f y - f x) / (y - x) < (f z - f x) / (z - x)

tactic: rw [div_lt_div_iff hxy' hxz']
state_before: 𝕜 : Type u_1
inst✝ : LinearOrderedField 𝕜
s : Set 𝕜
f : 𝕜 → 𝕜
hf : StrictConvexOn 𝕜 s f
x y z : 𝕜
hx : x ∈ s
hz : z ∈ s
hxy : x < y
hyz : y < z
hxy' : 0 < y - x
hxz' : 0 < z - x
⊢ (f y - f x) / (y - x) < (f z - f x) / (z - x)

tactic: linarith only [hf.secant_strict_mono_aux1 hx hz hxy hyz]
state_before: 𝕜 : Type u_1
inst✝ : LinearOrderedField 𝕜
s : Set 𝕜
f : 𝕜 → 𝕜
hf : StrictConvexOn 𝕜 s f
x y z : 𝕜
hx : x ∈ s
hz : z ∈ s
hxy : x < y
hyz : y < z
hxy' : 0 < y - x
hxz' : 0 < z - x
⊢ (f y - f x) * (z - x) < (f z - f x) * (y - x)

tactic: linarith
state_before: 𝕜 : Type u_1
inst✝ : LinearOrderedField 𝕜
s : Set 𝕜
f : 𝕜 → 𝕜
hf : StrictConvexOn 𝕜 s f
x y z : 𝕜
hx : x ∈ s
hz : z ∈ s
hxy : x < y
hyz : y < z
⊢ 0 < y - x

tactic: linarith
state_before: 𝕜 : Type u_1
inst✝ : LinearOrderedField 𝕜
s : Set 𝕜
f : 𝕜 → 𝕜
hf : StrictConvexOn 𝕜 s f
x y z : 𝕜
hx : x ∈ s
hz : z ∈ s
hxy : x < y
hyz : y < z
hxy' : 0 < y - x
⊢ 0 < z - x
Theorem: Set.Finite.toFinset_subset_toFinset
File: Mathlib/Data/Set/Finite.lean

tactic: simp only [← Finset.coe_subset, Finite.coe_toFinset]
state_before: α : Type u
β : Type v
ι : Sort w
γ : Type x
s t : Set α
a : α
hs : Set.Finite s
ht : Set.Finite t
⊢ Finite.toFinset hs ⊆ Finite.toFinset ht ↔ s ⊆ t
Theorem: LinearMap.ker_eq_bot_of_inverse
File: Mathlib/LinearAlgebra/Basic.lean

tactic: rw [← id_apply (R := R) m, ← h, comp_apply, hm, g.map_zero]
state_before: R : Type u_2
R₁ : Type ?u.1227019
R₂ : Type u_1
R₃ : Type ?u.1227025
R₄ : Type ?u.1227028
S : Type ?u.1227031
K : Type ?u.1227034
K₂ : Type ?u.1227037
M : Type u_3
M' : Type ?u.1227043
M₁ : Type ?u.1227046
M₂ : Type u_4
M₃ : Type ?u.1227052
M₄ : Type ?u.1227055
N : Type ?u.1227058
N₂ : Type ?u.1227061
ι : Type ?u.1227064
V : Type ?u.1227067
V₂ : Type ?u.1227070
inst✝¹¹ : Semiring R
inst✝¹⁰ : Semiring R₂
inst✝⁹ : Semiring R₃
inst✝⁸ : AddCommMonoid M
inst✝⁷ : AddCommMonoid M₂
inst✝⁶ : AddCommMonoid M₃
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
inst✝⁵ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝⁴ : Module R M
inst✝³ : Module R₂ M₂
inst✝² : Module R₃ M₃
σ₂₁ : R₂ →+* R
τ₁₂ : R →+* R₂
τ₂₃ : R₂ →+* R₃
τ₁₃ : R →+* R₃
inst✝¹ : RingHomCompTriple τ₁₂ τ₂₃ τ₁₃
F : Type ?u.1227480
sc : SemilinearMapClass F τ₁₂ M M₂
τ₂₁ : R₂ →+* R
inst✝ : RingHomInvPair τ₁₂ τ₂₁
f : M →ₛₗ[τ₁₂] M₂
g : M₂ →ₛₗ[τ₂₁] M
h : comp g f = id
m : M
hm : ↑f m = 0
⊢ m = 0
Theorem: toIcoDiv_zsmul_sub_toIcoMod
File: Mathlib/Algebra/Order/ToIntervalMod.lean

tactic: rw [add_comm, toIcoMod_add_toIcoDiv_zsmul]
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a✝ b✝ c : α
n : ℤ
a b : α
⊢ toIcoDiv hp a b • p + toIcoMod hp a b = b
Theorem: List.mem_foldr_sup_support_iff
File: Mathlib/Data/Finsupp/BigOperators.lean

tactic: simp only [Finset.sup_eq_union, List.foldr_map, Finsupp.mem_support_iff, exists_prop]
state_before: ι : Type u_2
M : Type u_1
inst✝¹ : DecidableEq ι
inst✝ : Zero M
l : List (ι →₀ M)
x : ι
⊢ x ∈ foldr ((fun x x_1 => x ⊔ x_1) ∘ Finsupp.support) ∅ l ↔ ∃ f x_1, x ∈ f.support

tactic: induction' l with hd tl IH
state_before: ι : Type u_2
M : Type u_1
inst✝¹ : DecidableEq ι
inst✝ : Zero M
l : List (ι →₀ M)
x : ι
⊢ x ∈ foldr ((fun x x_1 => x ∪ x_1) ∘ Finsupp.support) ∅ l ↔ ∃ f, f ∈ l ∧ ↑f x ≠ 0

tactic: simp
state_before: case nil
ι : Type u_2
M : Type u_1
inst✝¹ : DecidableEq ι
inst✝ : Zero M
x : ι
⊢ x ∈ foldr ((fun x x_1 => x ∪ x_1) ∘ Finsupp.support) ∅ [] ↔ ∃ f, f ∈ [] ∧ ↑f x ≠ 0

tactic: simp only [foldr, Function.comp_apply, Finset.mem_union, Finsupp.mem_support_iff, ne_eq, IH,
  find?, mem_cons, exists_eq_or_imp]
state_before: case cons
ι : Type u_2
M : Type u_1
inst✝¹ : DecidableEq ι
inst✝ : Zero M
x : ι
hd : ι →₀ M
tl : List (ι →₀ M)
IH : x ∈ foldr ((fun x x_1 => x ∪ x_1) ∘ Finsupp.support) ∅ tl ↔ ∃ f, f ∈ tl ∧ ↑f x ≠ 0
⊢ x ∈ foldr ((fun x x_1 => x ∪ x_1) ∘ Finsupp.support) ∅ (hd :: tl) ↔ ∃ f, f ∈ hd :: tl ∧ ↑f x ≠ 0
Theorem: Ordinal.iterate_le_nfp
File: Mathlib/SetTheory/Ordinal/FixedPoint.lean

tactic: rw [← sup_iterate_eq_nfp]
state_before: f✝ : Ordinal → Ordinal
f : Ordinal → Ordinal
a : Ordinal
n : ℕ
⊢ (f^[n]) a ≤ nfp f a

tactic: exact le_sup _ n
state_before: f✝ : Ordinal → Ordinal
f : Ordinal → Ordinal
a : Ordinal
n : ℕ
⊢ (f^[n]) a ≤ (fun a => sup fun n => (f^[n]) a) a
Theorem: Applicative.pure_seq_eq_map'
File: Mathlib/Control/Applicative.lean

tactic: ext
state_before: F : Type u → Type v
inst✝¹ : Applicative F
inst✝ : LawfulApplicative F
α β γ σ : Type u
f : α → β
⊢ (fun x x_1 => Seq.seq x fun x => x_1) (pure f) = (fun x x_1 => x <$> x_1) f

tactic: simp [functor_norm]
state_before: case h
F : Type u → Type v
inst✝¹ : Applicative F
inst✝ : LawfulApplicative F
α β γ σ : Type u
f : α → β
x✝ : F α
⊢ (fun x x_1 => Seq.seq x fun x => x_1) (pure f) x✝ = (fun x x_1 => x <$> x_1) f x✝
Theorem: HomologicalComplex.xPrevIso_comp_dTo
File: Mathlib/Algebra/Homology/HomologicalComplex.lean

tactic: simp [C.dTo_eq r]
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category V
inst✝ : HasZeroMorphisms V
c : ComplexShape ι
C : HomologicalComplex V c
i j : ι
r : ComplexShape.Rel c i j
⊢ (xPrevIso C r).inv ≫ dTo C j = d C i j
Theorem: LinearMap.ofIsCompl_add
File: Mathlib/LinearAlgebra/Projection.lean

tactic: simp
state_before: R : Type u_2
inst✝⁹ : Ring R
E : Type u_1
inst✝⁸ : AddCommGroup E
inst✝⁷ : Module R E
F : Type u_3
inst✝⁶ : AddCommGroup F
inst✝⁵ : Module R F
G : Type ?u.281059
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
p q : Submodule R E
S : Type ?u.282022
inst✝² : Semiring S
M : Type ?u.282028
inst✝¹ : AddCommMonoid M
inst✝ : Module S M
m : Submodule S M
h : IsCompl p q
φ₁ φ₂ : { x // x ∈ p } →ₗ[R] F
ψ₁ ψ₂ : { x // x ∈ q } →ₗ[R] F
⊢ ∀ (u : { x // x ∈ p }), ↑(φ₁ + φ₂) u = ↑(ofIsCompl h φ₁ ψ₁ + ofIsCompl h φ₂ ψ₂) ↑u

tactic: simp
state_before: R : Type u_2
inst✝⁹ : Ring R
E : Type u_1
inst✝⁸ : AddCommGroup E
inst✝⁷ : Module R E
F : Type u_3
inst✝⁶ : AddCommGroup F
inst✝⁵ : Module R F
G : Type ?u.281059
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
p q : Submodule R E
S : Type ?u.282022
inst✝² : Semiring S
M : Type ?u.282028
inst✝¹ : AddCommMonoid M
inst✝ : Module S M
m : Submodule S M
h : IsCompl p q
φ₁ φ₂ : { x // x ∈ p } →ₗ[R] F
ψ₁ ψ₂ : { x // x ∈ q } →ₗ[R] F
⊢ ∀ (u : { x // x ∈ q }), ↑(ψ₁ + ψ₂) u = ↑(ofIsCompl h φ₁ ψ₁ + ofIsCompl h φ₂ ψ₂) ↑u
Theorem: EMetric.hausdorffEdist_image
File: Mathlib/Topology/MetricSpace/HausdorffDistance.lean

tactic: simp only [hausdorffEdist_def, iSup_image, infEdist_image h]
state_before: ι : Sort ?u.44562
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x y : α
s t u : Set α
Φ : α → β
h : Isometry Φ
⊢ hausdorffEdist (Φ '' s) (Φ '' t) = hausdorffEdist s t
Theorem: Composition.sizeUpTo_succ
File: Mathlib/Combinatorics/Composition.lean

tactic: simp only [sizeUpTo]
state_before: n : ℕ
c : Composition n
i : ℕ
h : i < length c
⊢ sizeUpTo c (i + 1) = sizeUpTo c i + nthLe c.blocks i h

tactic: rw [sum_take_succ _ _ h]
state_before: n : ℕ
c : Composition n
i : ℕ
h : i < length c
⊢ sum (take (i + 1) c.blocks) = sum (take i c.blocks) + nthLe c.blocks i h
Theorem: Filter.principal_eq_iff_eq
File: Mathlib/Order/Filter/Basic.lean

tactic: simp only [le_antisymm_iff, le_principal_iff, mem_principal]
state_before: α : Type u
β : Type v
γ : Type w
δ : Type ?u.78074
ι : Sort x
f g : Filter α
s✝ t✝ s t : Set α
⊢ 𝓟 s = 𝓟 t ↔ s = t

tactic: rfl
state_before: α : Type u
β : Type v
γ : Type w
δ : Type ?u.78074
ι : Sort x
f g : Filter α
s✝ t✝ s t : Set α
⊢ s ⊆ t ∧ t ⊆ s ↔ s ≤ t ∧ t ≤ s
Theorem: CategoryTheory.Limits.biproduct.map_lift_mapBiprod
File: Mathlib/CategoryTheory/Limits/Preserves/Shapes/Biproducts.lean

tactic: apply biproduct.hom_ext
state_before: C : Type u₁
inst✝⁶ : Category C
D : Type u₂
inst✝⁵ : Category D
inst✝⁴ : HasZeroMorphisms C
inst✝³ : HasZeroMorphisms D
F : C ⥤ D
inst✝² : PreservesZeroMorphisms F
J : Type w₁
f : J → C
inst✝¹ : HasBiproduct f
inst✝ : PreservesBiproduct f F
W : C
g : (j : J) → W ⟶ f j
⊢ F.map (lift g) ≫ (mapBiproduct F f).hom = lift fun j => F.map (g j)

tactic: intro j'
state_before: case w
C : Type u₁
inst✝⁶ : Category C
D : Type u₂
inst✝⁵ : Category D
inst✝⁴ : HasZeroMorphisms C
inst✝³ : HasZeroMorphisms D
F : C ⥤ D
inst✝² : PreservesZeroMorphisms F
J : Type w₁
f : J → C
inst✝¹ : HasBiproduct f
inst✝ : PreservesBiproduct f F
W : C
g : (j : J) → W ⟶ f j
⊢ ∀ (j : J), (F.map (lift g) ≫ (mapBiproduct F f).hom) ≫ π (F.obj ∘ f) j = (lift fun j => F.map (g j)) ≫ π (F.obj ∘ f) j

tactic: dsimp [Function.comp]
state_before: case w
C : Type u₁
inst✝⁶ : Category C
D : Type u₂
inst✝⁵ : Category D
inst✝⁴ : HasZeroMorphisms C
inst✝³ : HasZeroMorphisms D
F : C ⥤ D
inst✝² : PreservesZeroMorphisms F
J : Type w₁
f : J → C
inst✝¹ : HasBiproduct f
inst✝ : PreservesBiproduct f F
W : C
g : (j : J) → W ⟶ f j
j' : J
⊢ (F.map (lift g) ≫ (mapBiproduct F f).hom) ≫ π (F.obj ∘ f) j' = (lift fun j => F.map (g j)) ≫ π (F.obj ∘ f) j'

tactic: haveI : HasBiproduct fun j => F.obj (f j) := hasBiproduct_of_preserves F f
state_before: case w
C : Type u₁
inst✝⁶ : Category C
D : Type u₂
inst✝⁵ : Category D
inst✝⁴ : HasZeroMorphisms C
inst✝³ : HasZeroMorphisms D
F : C ⥤ D
inst✝² : PreservesZeroMorphisms F
J : Type w₁
f : J → C
inst✝¹ : HasBiproduct f
inst✝ : PreservesBiproduct f F
W : C
g : (j : J) → W ⟶ f j
j' : J
⊢ (F.map (lift g) ≫ (mapBiproduct F f).hom) ≫ π (fun x => F.obj (f x)) j' =
    (lift fun j => F.map (g j)) ≫ π (fun x => F.obj (f x)) j'

tactic: simp only [mapBiproduct_hom, Category.assoc, biproduct.lift_π, ← F.map_comp]
state_before: case w
C : Type u₁
inst✝⁶ : Category C
D : Type u₂
inst✝⁵ : Category D
inst✝⁴ : HasZeroMorphisms C
inst✝³ : HasZeroMorphisms D
F : C ⥤ D
inst✝² : PreservesZeroMorphisms F
J : Type w₁
f : J → C
inst✝¹ : HasBiproduct f
inst✝ : PreservesBiproduct f F
W : C
g : (j : J) → W ⟶ f j
j' : J
this : HasBiproduct fun j => F.obj (f j)
⊢ (F.map (lift g) ≫ (mapBiproduct F f).hom) ≫ π (fun x => F.obj (f x)) j' =
    (lift fun j => F.map (g j)) ≫ π (fun x => F.obj (f x)) j'