tasksource/leandojo huggingface dataset:
Theorem: Set.not_injOn_infinite_finite_image
File: Mathlib/Data/Set/Finite.lean

tactic: have : Finite (f '' s) := finite_coe_iff.mpr h_fin
state_before: α : Type u
β : Type v
ι : Sort w
γ : Type x
f : α → β
s : Set α
h_inf : Set.Infinite s
h_fin : Set.Finite (f '' s)
⊢ ¬InjOn f s

tactic: have : Infinite s := infinite_coe_iff.mpr h_inf
state_before: α : Type u
β : Type v
ι : Sort w
γ : Type x
f : α → β
s : Set α
h_inf : Set.Infinite s
h_fin : Set.Finite (f '' s)
this : Finite ↑(f '' s)
⊢ ¬InjOn f s

tactic: have h := not_injective_infinite_finite
          ((f '' s).codRestrict (s.restrict f) fun x => ⟨x, x.property, rfl⟩)
state_before: α : Type u
β : Type v
ι : Sort w
γ : Type x
f : α → β
s : Set α
h_inf : Set.Infinite s
h_fin : Set.Finite (f '' s)
this✝ : Finite ↑(f '' s)
this : Infinite ↑s
⊢ ¬InjOn f s

tactic: contrapose! h
state_before: α : Type u
β : Type v
ι : Sort w
γ : Type x
f : α → β
s : Set α
h_inf : Set.Infinite s
h_fin : Set.Finite (f '' s)
this✝ : Finite ↑(f '' s)
this : Infinite ↑s
h : ¬Injective (codRestrict (restrict s f) (f '' s) (_ : ∀ (x : ↑s), ∃ a, a ∈ s ∧ f a = restrict s f x))
⊢ ¬InjOn f s

tactic: rw [injective_codRestrict, ← injOn_iff_injective]
state_before: α : Type u
β : Type v
ι : Sort w
γ : Type x
f : α → β
s : Set α
h_inf : Set.Infinite s
h_fin : Set.Finite (f '' s)
this✝ : Finite ↑(f '' s)
this : Infinite ↑s
h : ¬¬InjOn f s
⊢ Injective (codRestrict (restrict s f) (f '' s) (_ : ∀ (x : ↑s), ∃ a, a ∈ s ∧ f a = restrict s f x))

tactic: rwa [not_not] at h
state_before: α : Type u
β : Type v
ι : Sort w
γ : Type x
f : α → β
s : Set α
h_inf : Set.Infinite s
h_fin : Set.Finite (f '' s)
this✝ : Finite ↑(f '' s)
this : Infinite ↑s
h : ¬¬InjOn f s
⊢ InjOn f s
Theorem: Convex.set_average_mem
File: Mathlib/Analysis/Convex/Integral.lean

tactic: haveI : Fact (μ t < ∞) := ⟨ht.lt_top⟩
state_before: α : Type u_2
E : Type u_1
F : Type ?u.367774
m0 : MeasurableSpace α
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : CompleteSpace E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
μ : MeasureTheory.Measure α
s : Set E
t : Set α
f : α → E
g : E → ℝ
C : ℝ
hs : Convex ℝ s
hsc : IsClosed s
h0 : ↑↑μ t ≠ 0
ht : ↑↑μ t ≠ ⊤
hfs : ∀ᵐ (x : α) ∂Measure.restrict μ t, f x ∈ s
hfi : IntegrableOn f t
⊢ (⨍ (x : α) in t, f x ∂μ) ∈ s

tactic: refine' hs.average_mem hsc _ hfs hfi
state_before: α : Type u_2
E : Type u_1
F : Type ?u.367774
m0 : MeasurableSpace α
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : CompleteSpace E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
μ : MeasureTheory.Measure α
s : Set E
t : Set α
f : α → E
g : E → ℝ
C : ℝ
hs : Convex ℝ s
hsc : IsClosed s
h0 : ↑↑μ t ≠ 0
ht : ↑↑μ t ≠ ⊤
hfs : ∀ᵐ (x : α) ∂Measure.restrict μ t, f x ∈ s
hfi : IntegrableOn f t
this : Fact (↑↑μ t < ⊤)
⊢ (⨍ (x : α) in t, f x ∂μ) ∈ s

tactic: rwa [Ne.def, restrict_eq_zero]
state_before: α : Type u_2
E : Type u_1
F : Type ?u.367774
m0 : MeasurableSpace α
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : CompleteSpace E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
μ : MeasureTheory.Measure α
s : Set E
t : Set α
f : α → E
g : E → ℝ
C : ℝ
hs : Convex ℝ s
hsc : IsClosed s
h0 : ↑↑μ t ≠ 0
ht : ↑↑μ t ≠ ⊤
hfs : ∀ᵐ (x : α) ∂Measure.restrict μ t, f x ∈ s
hfi : IntegrableOn f t
this : Fact (↑↑μ t < ⊤)
⊢ Measure.restrict μ t ≠ 0
Theorem: Int.not_even_iff
File: Mathlib/Data/Int/Parity.lean

tactic: rw [even_iff, emod_two_ne_zero]
state_before: m n : ℤ
⊢ ¬Even n ↔ n % 2 = 1
Theorem: Real.rpow_sub_int
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: simpa using rpow_add_int hx y (-n)
state_before: x✝ y✝ z x : ℝ
hx : x ≠ 0
y : ℝ
n : ℕ
⊢ x ^ (y - ↑n) = x ^ y / x ^ n
Theorem: Set.Countable.exists_pos_hasSum_le
File: Mathlib/Analysis/SpecificLimits/Basic.lean

tactic: haveI := hs.toEncodable
state_before: α : Type ?u.472618
β : Type ?u.472621
ι✝ : Type ?u.472624
ι : Type u_1
s : Set ι
hs : Set.Countable s
ε : ℝ
hε : 0 < ε
⊢ ∃ ε', (∀ (i : ι), 0 < ε' i) ∧ ∃ c, HasSum (fun i => ε' ↑i) c ∧ c ≤ ε

tactic: rcases posSumOfEncodable hε s with ⟨f, hf0, ⟨c, hfc, hcε⟩⟩
state_before: α : Type ?u.472618
β : Type ?u.472621
ι✝ : Type ?u.472624
ι : Type u_1
s : Set ι
hs : Set.Countable s
ε : ℝ
hε : 0 < ε
this : Encodable ↑s
⊢ ∃ ε', (∀ (i : ι), 0 < ε' i) ∧ ∃ c, HasSum (fun i => ε' ↑i) c ∧ c ≤ ε

tactic: refine' ⟨fun i => if h : i ∈ s then f ⟨i, h⟩ else 1, fun i => _, ⟨c, _, hcε⟩⟩
state_before: case mk.intro.intro.intro
α : Type ?u.472618
β : Type ?u.472621
ι✝ : Type ?u.472624
ι : Type u_1
s : Set ι
hs : Set.Countable s
ε : ℝ
hε : 0 < ε
this : Encodable ↑s
f : ↑s → ℝ
hf0 : ∀ (i : ↑s), 0 < f i
c : ℝ
hfc : HasSum f c
hcε : c ≤ ε
⊢ ∃ ε', (∀ (i : ι), 0 < ε' i) ∧ ∃ c, HasSum (fun i => ε' ↑i) c ∧ c ≤ ε

tactic: conv_rhs => simp
state_before: case mk.intro.intro.intro.refine'_1
α : Type ?u.472618
β : Type ?u.472621
ι✝ : Type ?u.472624
ι : Type u_1
s : Set ι
hs : Set.Countable s
ε : ℝ
hε : 0 < ε
this : Encodable ↑s
f : ↑s → ℝ
hf0 : ∀ (i : ↑s), 0 < f i
c : ℝ
hfc : HasSum f c
hcε : c ≤ ε
i : ι
⊢ 0 < (fun i => if h : i ∈ s then f { val := i, property := h } else 1) i

tactic: split_ifs
state_before: case mk.intro.intro.intro.refine'_1
α : Type ?u.472618
β : Type ?u.472621
ι✝ : Type ?u.472624
ι : Type u_1
s : Set ι
hs : Set.Countable s
ε : ℝ
hε : 0 < ε
this : Encodable ↑s
f : ↑s → ℝ
hf0 : ∀ (i : ↑s), 0 < f i
c : ℝ
hfc : HasSum f c
hcε : c ≤ ε
i : ι
⊢ 0 < if h : i ∈ s then f { val := i, property := h } else 1

tactic: exacts [hf0 _, zero_lt_one]
state_before: case mk.intro.intro.intro.refine'_1.inl
α : Type ?u.472618
β : Type ?u.472621
ι✝ : Type ?u.472624
ι : Type u_1
s : Set ι
hs : Set.Countable s
ε : ℝ
hε : 0 < ε
this : Encodable ↑s
f : ↑s → ℝ
hf0 : ∀ (i : ↑s), 0 < f i
c : ℝ
hfc : HasSum f c
hcε : c ≤ ε
i : ι
h✝ : i ∈ s
⊢ 0 < f { val := i, property := h✝ }

case mk.intro.intro.intro.refine'_1.inr
α : Type ?u.472618
β : Type ?u.472621
ι✝ : Type ?u.472624
ι : Type u_1
s : Set ι
hs : Set.Countable s
ε : ℝ
hε : 0 < ε
this : Encodable ↑s
f : ↑s → ℝ
hf0 : ∀ (i : ↑s), 0 < f i
c : ℝ
hfc : HasSum f c
hcε : c ≤ ε
i : ι
h✝ : ¬i ∈ s
⊢ 0 < 1

tactic: simpa only [Subtype.coe_prop, dif_pos, Subtype.coe_eta]
state_before: case mk.intro.intro.intro.refine'_2
α : Type ?u.472618
β : Type ?u.472621
ι✝ : Type ?u.472624
ι : Type u_1
s : Set ι
hs : Set.Countable s
ε : ℝ
hε : 0 < ε
this : Encodable ↑s
f : ↑s → ℝ
hf0 : ∀ (i : ↑s), 0 < f i
c : ℝ
hfc : HasSum f c
hcε : c ≤ ε
⊢ HasSum (fun i => (fun i => if h : i ∈ s then f { val := i, property := h } else 1) ↑i) c
Theorem: MeasureTheory.integral_prod_symm
File: Mathlib/MeasureTheory/Constructions/Prod/Integral.lean

tactic: simp_rw [← integral_prod_swap f hf.aestronglyMeasurable]
state_before: α : Type u_1
α' : Type ?u.2456513
β : Type u_2
β' : Type ?u.2456519
γ : Type ?u.2456522
E : Type u_3
inst✝¹² : MeasurableSpace α
inst✝¹¹ : MeasurableSpace α'
inst✝¹⁰ : MeasurableSpace β
inst✝⁹ : MeasurableSpace β'
inst✝⁸ : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : SigmaFinite ν
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : CompleteSpace E
inst✝³ : SigmaFinite μ
E' : Type ?u.2456787
inst✝² : NormedAddCommGroup E'
inst✝¹ : CompleteSpace E'
inst✝ : NormedSpace ℝ E'
f : α × β → E
hf : Integrable f
⊢ (∫ (z : α × β), f z ∂Measure.prod μ ν) = ∫ (y : β), ∫ (x : α), f (x, y) ∂μ ∂ν

tactic: exact integral_prod _ hf.swap
state_before: α : Type u_1
α' : Type ?u.2456513
β : Type u_2
β' : Type ?u.2456519
γ : Type ?u.2456522
E : Type u_3
inst✝¹² : MeasurableSpace α
inst✝¹¹ : MeasurableSpace α'
inst✝¹⁰ : MeasurableSpace β
inst✝⁹ : MeasurableSpace β'
inst✝⁸ : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : SigmaFinite ν
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : CompleteSpace E
inst✝³ : SigmaFinite μ
E' : Type ?u.2456787
inst✝² : NormedAddCommGroup E'
inst✝¹ : CompleteSpace E'
inst✝ : NormedSpace ℝ E'
f : α × β → E
hf : Integrable f
⊢ (∫ (z : β × α), f (Prod.swap z) ∂Measure.prod ν μ) = ∫ (y : β), ∫ (x : α), f (x, y) ∂μ ∂ν
Theorem: Equiv.piCongr_apply_apply
File: Mathlib/Logic/Equiv/Basic.lean

tactic: change Eq.ndrec _ _ = _
state_before: α : Sort u_1
β : Sort u_2
W : α → Sort w
Z : β → Sort z
h₁ : α ≃ β
h₂ : (a : α) → W a ≃ Z (↑h₁ a)
f : (a : α) → W a
a : α
⊢ ↑(piCongr h₁ h₂) f (↑h₁ a) = ↑(h₂ a) (f a)

tactic: generalize_proofs hZa
state_before: α : Sort u_1
β : Sort u_2
W : α → Sort w
Z : β → Sort z
h₁ : α ≃ β
h₂ : (a : α) → W a ≃ Z (↑h₁ a)
f : (a : α) → W a
a : α
⊢ (_ : ↑h₁.symm.symm (↑h₁.symm (↑h₁ a)) = ↑h₁ a) ▸ ↑(piCongrRight h₂) f (↑h₁.symm (↑h₁ a)) = ↑(h₂ a) (f a)

tactic: revert hZa
state_before: α : Sort u_1
β : Sort u_2
W : α → Sort w
Z : β → Sort z
h₁ : α ≃ β
h₂ : (a : α) → W a ≃ Z (↑h₁ a)
f : (a : α) → W a
a : α
hZa : ↑h₁.symm.symm (↑h₁.symm (↑h₁ a)) = ↑h₁ a
⊢ hZa ▸ ↑(piCongrRight h₂) f (↑h₁.symm (↑h₁ a)) = ↑(h₂ a) (f a)

tactic: rw [h₁.symm_apply_apply a]
state_before: α : Sort u_1
β : Sort u_2
W : α → Sort w
Z : β → Sort z
h₁ : α ≃ β
h₂ : (a : α) → W a ≃ Z (↑h₁ a)
f : (a : α) → W a
a : α
⊢ ∀ (hZa : ↑h₁.symm.symm (↑h₁.symm (↑h₁ a)) = ↑h₁ a), hZa ▸ ↑(piCongrRight h₂) f (↑h₁.symm (↑h₁ a)) = ↑(h₂ a) (f a)

tactic: simp
state_before: α : Sort u_1
β : Sort u_2
W : α → Sort w
Z : β → Sort z
h₁ : α ≃ β
h₂ : (a : α) → W a ≃ Z (↑h₁ a)
f : (a : α) → W a
a : α
⊢ ∀ (hZa : ↑h₁.symm.symm a = ↑h₁ a), hZa ▸ ↑(piCongrRight h₂) f a = ↑(h₂ a) (f a)

tactic: rfl
state_before: α : Sort u_1
β : Sort u_2
W : α → Sort w
Z : β → Sort z
h₁ : α ≃ β
h₂ : (a : α) → W a ≃ Z (↑h₁ a)
f : (a : α) → W a
a : α
⊢ ↑(piCongrRight h₂) f a = ↑(h₂ a) (f a)
Theorem: Int.gcd_mul_left
File: Mathlib/Data/Int/GCD.lean

tactic: rw [Int.gcd, Int.gcd, natAbs_mul, natAbs_mul]
state_before: i j k : ℤ
⊢ gcd (i * j) (i * k) = natAbs i * gcd j k

tactic: apply Nat.gcd_mul_left
state_before: i j k : ℤ
⊢ Nat.gcd (natAbs i * natAbs j) (natAbs i * natAbs k) = natAbs i * Nat.gcd (natAbs j) (natAbs k)
Theorem: ContinuousMap.Homotopy.trans_apply
File: Mathlib/Topology/Homotopy/Basic.lean

tactic: rw [extend, ContinuousMap.coe_IccExtend, Set.IccExtend_of_mem]
state_before: case inr
F✝ : Type ?u.203878
X : Type u
Y : Type v
Z : Type w
Z' : Type x
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
f₀ f₁ f₂ : C(X, Y)
F : Homotopy f₀ f₁
G : Homotopy f₁ f₂
x : ↑I × X
h✝ : ¬↑x.fst ≤ 1 / 2
⊢ ↑(↑(extend G) (2 * ↑x.fst - 1)) x.snd = ↑G ({ val := 2 * ↑x.fst - 1, property := (_ : 2 * ↑x.fst - 1 ∈ I) }, x.snd)

tactic: rfl
state_before: case inr
F✝ : Type ?u.203878
X : Type u
Y : Type v
Z : Type w
Z' : Type x
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
f₀ f₁ f₂ : C(X, Y)
F : Homotopy f₀ f₁
G : Homotopy f₁ f₂
x : ↑I × X
h✝ : ¬↑x.fst ≤ 1 / 2
⊢ ↑(↑(curry G) { val := 2 * ↑x.fst - 1, property := ?inr.hx }) x.snd =
    ↑G ({ val := 2 * ↑x.fst - 1, property := (_ : 2 * ↑x.fst - 1 ∈ I) }, x.snd)

case inr.hx
F✝ : Type ?u.203878
X : Type u
Y : Type v
Z : Type w
Z' : Type x
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
f₀ f₁ f₂ : C(X, Y)
F : Homotopy f₀ f₁
G : Homotopy f₁ f₂
x : ↑I × X
h✝ : ¬↑x.fst ≤ 1 / 2
⊢ 2 * ↑x.fst - 1 ∈ Set.Icc 0 1
Theorem: QuotientAddGroup.btw_coe_iff
File: Mathlib/Algebra/Order/ToIntervalMod.lean

tactic: rw [btw_coe_iff', toIocMod_sub_eq_sub, toIcoMod_sub_eq_sub, zero_add, sub_le_sub_iff_right]
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a b c : α
n : ℤ
hp' : Fact (0 < p)
x₁ x₂ x₃ : α
⊢ btw ↑x₁ ↑x₂ ↑x₃ ↔ toIcoMod (_ : 0 < p) x₁ x₂ ≤ toIocMod (_ : 0 < p) x₁ x₃
Theorem: PowerBasis.adjoin_eq_top_of_gen_mem_adjoin
File: Mathlib/RingTheory/PowerBasis.lean

tactic: rw [_root_.eq_top_iff, ← B.adjoin_gen_eq_top]
state_before: R : Type u_1
S : Type u_2
T : Type ?u.717680
inst✝⁷ : CommRing R
inst✝⁶ : Ring S
inst✝⁵ : Algebra R S
A : Type ?u.717983
B✝ : Type ?u.717986
inst✝⁴ : CommRing A
inst✝³ : CommRing B✝
inst✝² : IsDomain B✝
inst✝¹ : Algebra A B✝
K : Type ?u.718408
inst✝ : Field K
B : PowerBasis R S
x : S
hx : B.gen ∈ adjoin R {x}
⊢ adjoin R {x} = ⊤

tactic: refine' adjoin_le _
state_before: R : Type u_1
S : Type u_2
T : Type ?u.717680
inst✝⁷ : CommRing R
inst✝⁶ : Ring S
inst✝⁵ : Algebra R S
A : Type ?u.717983
B✝ : Type ?u.717986
inst✝⁴ : CommRing A
inst✝³ : CommRing B✝
inst✝² : IsDomain B✝
inst✝¹ : Algebra A B✝
K : Type ?u.718408
inst✝ : Field K
B : PowerBasis R S
x : S
hx : B.gen ∈ adjoin R {x}
⊢ adjoin R {B.gen} ≤ adjoin R {x}

tactic: simp [hx]
state_before: R : Type u_1
S : Type u_2
T : Type ?u.717680
inst✝⁷ : CommRing R
inst✝⁶ : Ring S
inst✝⁵ : Algebra R S
A : Type ?u.717983
B✝ : Type ?u.717986
inst✝⁴ : CommRing A
inst✝³ : CommRing B✝
inst✝² : IsDomain B✝
inst✝¹ : Algebra A B✝
K : Type ?u.718408
inst✝ : Field K
B : PowerBasis R S
x : S
hx : B.gen ∈ adjoin R {x}
⊢ {B.gen} ⊆ ↑(adjoin R {x})
Theorem: eventually_countable_forall
File: Mathlib/Order/Filter/CountableInter.lean

tactic: simpa only [Filter.Eventually, setOf_forall] using
  @countable_iInter_mem _ _ l _ _ fun i => { x | p x i }
state_before: ι : Sort u_1
α : Type u_2
β : Type ?u.1140
l : Filter α
inst✝¹ : CountableInterFilter l
inst✝ : Countable ι
p : α → ι → Prop
⊢ (∀ᶠ (x : α) in l, ∀ (i : ι), p x i) ↔ ∀ (i : ι), ∀ᶠ (x : α) in l, p x i
Theorem: Set.Nonempty.zero_mul
File: Mathlib/Data/Set/Pointwise/Basic.lean

tactic: simpa [mem_mul] using hs
state_before: F : Type ?u.110255
α : Type u_1
β : Type ?u.110261
γ : Type ?u.110264
inst✝ : MulZeroClass α
s t : Set α
hs : Set.Nonempty s
⊢ 0 ⊆ 0 * s
Theorem: Subgroup.prod_eq_bot_iff
File: Mathlib/GroupTheory/Subgroup/Basic.lean

tactic: simpa only [← Subgroup.toSubmonoid_eq] using Submonoid.prod_eq_bot_iff
state_before: G : Type u_1
G' : Type ?u.308406
inst✝⁴ : Group G
inst✝³ : Group G'
A : Type ?u.308415
inst✝² : AddGroup A
H✝ K✝ : Subgroup G
k : Set G
N : Type u_2
inst✝¹ : Group N
P : Type ?u.308442
inst✝ : Group P
H : Subgroup G
K : Subgroup N
⊢ prod H K = ⊥ ↔ H = ⊥ ∧ K = ⊥
Theorem: Polynomial.prod_roots_eq_coeff_zero_of_monic_of_split
File: Mathlib/Data/Polynomial/Splits.lean

tactic: nth_rw 1 [eq_prod_roots_of_monic_of_splits_id hmo hP]
state_before: F : Type u
K : Type v
L : Type w
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Field F
i : K →+* L
P : K[X]
hmo : Monic P
hP : Splits (RingHom.id K) P
⊢ coeff P 0 = (-1) ^ natDegree P * Multiset.prod (roots P)

tactic: rw [coeff_zero_eq_eval_zero, eval_multiset_prod, Multiset.map_map]
state_before: F : Type u
K : Type v
L : Type w
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Field F
i : K →+* L
P : K[X]
hmo : Monic P
hP : Splits (RingHom.id K) P
⊢ coeff (Multiset.prod (Multiset.map (fun a => X - ↑C a) (roots P))) 0 = (-1) ^ natDegree P * Multiset.prod (roots P)

tactic: simp_rw [Function.comp_apply, eval_sub, eval_X, zero_sub, eval_C]
state_before: F : Type u
K : Type v
L : Type w
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Field F
i : K →+* L
P : K[X]
hmo : Monic P
hP : Splits (RingHom.id K) P
⊢ Multiset.prod (Multiset.map (eval 0 ∘ fun a => X - ↑C a) (roots P)) = (-1) ^ natDegree P * Multiset.prod (roots P)

tactic: conv_lhs =>
  congr
  congr
  ext
  rw [neg_eq_neg_one_mul]
state_before: F : Type u
K : Type v
L : Type w
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Field F
i : K →+* L
P : K[X]
hmo : Monic P
hP : Splits (RingHom.id K) P
⊢ Multiset.prod (Multiset.map (fun x => -x) (roots P)) = (-1) ^ natDegree P * Multiset.prod (roots P)

tactic: simp only [splits_iff_card_roots.1 hP, neg_mul, one_mul, Multiset.prod_map_neg]
state_before: F : Type u
K : Type v
L : Type w
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Field F
i : K →+* L
P : K[X]
hmo : Monic P
hP : Splits (RingHom.id K) P
⊢ Multiset.prod (Multiset.map (fun x => -1 * x) (roots P)) = (-1) ^ natDegree P * Multiset.prod (roots P)
Theorem: Wbtw.trans_sbtw_right
File: Mathlib/Analysis/Convex/Between.lean

tactic: rw [wbtw_comm] at *
state_before: R : Type u_1
V : Type u_2
V' : Type ?u.292206
P : Type u_3
P' : Type ?u.292212
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
w x y z : P
h₁ : Wbtw R w x z
h₂ : Sbtw R x y z
⊢ Sbtw R w y z

tactic: rw [sbtw_comm] at *
state_before: R : Type u_1
V : Type u_2
V' : Type ?u.292206
P : Type u_3
P' : Type ?u.292212
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
w x y z : P
h₁ : Wbtw R z x w
h₂ : Sbtw R x y z
⊢ Sbtw R w y z

tactic: exact h₁.trans_sbtw_left h₂
state_before: R : Type u_1
V : Type u_2
V' : Type ?u.292206
P : Type u_3
P' : Type ?u.292212
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
w x y z : P
h₁ : Wbtw R z x w
h₂ : Sbtw R z y x
⊢ Sbtw R z y w
Theorem: Fin.prod_univ_seven
File: Mathlib/Algebra/BigOperators/Fin.lean

tactic: rw [prod_univ_castSucc, prod_univ_six]
state_before: α : Type ?u.28368
β : Type u_1
inst✝ : CommMonoid β
f : Fin 7 → β
⊢ ∏ i : Fin 7, f i = f 0 * f 1 * f 2 * f 3 * f 4 * f 5 * f 6

tactic: rfl
state_before: α : Type ?u.28368
β : Type u_1
inst✝ : CommMonoid β
f : Fin 7 → β
⊢ f (↑castSucc 0) * f (↑castSucc 1) * f (↑castSucc 2) * f (↑castSucc 3) * f (↑castSucc 4) * f (↑castSucc 5) *
      f (last 6) =
    f 0 * f 1 * f 2 * f 3 * f 4 * f 5 * f 6
Theorem: Part.append_mem_append
File: Mathlib/Data/Part.lean

tactic: simp [append_def]
state_before: α : Type u_1
β : Type ?u.74613
γ : Type ?u.74616
inst✝ : Append α
a b : Part α
ma mb : α
ha : ma ∈ a
hb : mb ∈ b
⊢ ma ++ mb ∈ a ++ b

tactic: aesop
state_before: α : Type u_1
β : Type ?u.74613
γ : Type ?u.74616
inst✝ : Append α
a b : Part α
ma mb : α
ha : ma ∈ a
hb : mb ∈ b
⊢ ∃ a_1, a_1 ∈ a ∧ ∃ a, a ∈ b ∧ a_1 ++ a = ma ++ mb
Theorem: FirstOrder.Language.BoundedFormula.relabelAux_sum_inl
File: Mathlib/ModelTheory/Syntax.lean

tactic: ext x
state_before: L : Language
L' : Language
M : Type w
N : Type ?u.87752
P : Type ?u.87755
inst✝² : Structure L M
inst✝¹ : Structure L N
inst✝ : Structure L P
α : Type u'
β : Type v'
γ : Type ?u.87783
n k : ℕ
⊢ relabelAux Sum.inl k = Sum.map id ↑(natAdd n)

tactic: simp [relabelAux]
state_before: case h.inr
L : Language
L' : Language
M : Type w
N : Type ?u.87752
P : Type ?u.87755
inst✝² : Structure L M
inst✝¹ : Structure L N
inst✝ : Structure L P
α : Type u'
β : Type v'
γ : Type ?u.87783
n k : ℕ
val✝ : Fin k
⊢ relabelAux Sum.inl k (Sum.inr val✝) = Sum.map id (↑(natAdd n)) (Sum.inr val✝)
Theorem: toIocDiv_zsmul_add
File: Mathlib/Algebra/Order/ToIntervalMod.lean

tactic: rw [add_comm, toIocDiv_add_zsmul, add_comm]
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a✝ b✝ c : α
n : ℤ
a b : α
m : ℤ
⊢ toIocDiv hp a (m • p + b) = m + toIocDiv hp a b
Theorem: Equiv.Perm.card_support_swap_mul
File: Mathlib/GroupTheory/Perm/Support.lean

tactic: simp
state_before: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ g f : Perm α
x : α
hx : ↑f x ≠ x
h : support f ⊆ support (swap x (↑f x) * f)
⊢ ¬↑(swap x (↑f x) * f) x ≠ x
Theorem: Zspan.fract_add_zspan
File: Mathlib/Algebra/Module/Zlattice.lean

tactic: rw [add_comm, fract_zspan_add b m h]
state_before: E : Type u_1
ι : Type u_2
K : Type u_3
inst✝⁴ : NormedLinearOrderedField K
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace K E
b : Basis ι K E
inst✝¹ : FloorRing K
inst✝ : Fintype ι
m v : E
h : v ∈ span ℤ (Set.range ↑b)
⊢ fract b (m + v) = fract b m
Theorem: Real.cos_lt_cos_of_nonneg_of_le_pi
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

tactic: linarith [pi_pos]
state_before: x y : ℝ
hx₁ : 0 ≤ x
hy₂ : y ≤ π
hxy : x < y
hx✝ : x ≤ π / 2
hy : π / 2 ≤ y
hx : x < π / 2
⊢ y ≤ π + π / 2

tactic: linarith
state_before: x y : ℝ
hx₁ : 0 ≤ x
hy₂ : y ≤ π
hxy : x < y
hx✝ : x ≤ π / 2
hy : π / 2 ≤ y
hx : x < π / 2
⊢ -(π / 2) < x

tactic: linarith
state_before: x y : ℝ
hx₁ : 0 ≤ x
hy₂ : y ≤ π
hxy : x < y
hx✝ : x ≤ π / 2
hy : π / 2 ≤ y
hx : x = π / 2
⊢ π / 2 < y

tactic: linarith [pi_pos]
state_before: x y : ℝ
hx₁ : 0 ≤ x
hy₂ : y ≤ π
hxy : x < y
hx✝ : x ≤ π / 2
hy : π / 2 ≤ y
hx : x = π / 2
⊢ y < π + π / 2

tactic: rw [hx, cos_pi_div_two]
state_before: x y : ℝ
hx₁ : 0 ≤ x
hy₂ : y ≤ π
hxy : x < y
hx✝ : x ≤ π / 2
hy : π / 2 ≤ y
hx : x = π / 2
⊢ 0 = cos x

tactic: linarith
state_before: x y : ℝ
hx₁ : 0 ≤ x
hy₂ : y ≤ π
hxy : x < y
hx : π / 2 ≤ x
hy : y ≤ π / 2
⊢ cos y < cos x

tactic: rw [← cos_pi_sub, ← cos_pi_sub]
state_before: x y : ℝ
hx₁ : 0 ≤ x
hy₂ : y ≤ π
hxy : x < y
hx : π / 2 ≤ x
hy : π / 2 ≤ y
⊢ -cos x < -cos y

tactic: apply cos_lt_cos_of_nonneg_of_le_pi_div_two <;>
linarith
state_before: x y : ℝ
hx₁ : 0 ≤ x
hy₂ : y ≤ π
hxy : x < y
hx : π / 2 ≤ x
hy : π / 2 ≤ y
⊢ cos (π - x) < cos (π - y)
Theorem: Polynomial.Monic.sub_of_right
File: Mathlib/Data/Polynomial/Monic.lean

tactic: have : (-q).coeff (-q).natDegree = 1 := by
  rw [natDegree_neg, coeff_neg, show q.coeff q.natDegree = -1 from hq, neg_neg]
state_before: R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Ring R
p✝ p q : R[X]
hq : Polynomial.leadingCoeff q = -1
hpq : degree p < degree q
⊢ Monic (p - q)

tactic: rw [sub_eq_add_neg]
state_before: R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Ring R
p✝ p q : R[X]
hq : Polynomial.leadingCoeff q = -1
hpq : degree p < degree q
this : coeff (-q) (natDegree (-q)) = 1
⊢ Monic (p - q)

tactic: apply Monic.add_of_right this
state_before: R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Ring R
p✝ p q : R[X]
hq : Polynomial.leadingCoeff q = -1
hpq : degree p < degree q
this : coeff (-q) (natDegree (-q)) = 1
⊢ Monic (p + -q)

tactic: rwa [degree_neg]
state_before: R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Ring R
p✝ p q : R[X]
hq : Polynomial.leadingCoeff q = -1
hpq : degree p < degree q
this : coeff (-q) (natDegree (-q)) = 1
⊢ degree p < degree (-q)

tactic: rw [natDegree_neg, coeff_neg, show q.coeff q.natDegree = -1 from hq, neg_neg]
state_before: R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Ring R
p✝ p q : R[X]
hq : Polynomial.leadingCoeff q = -1
hpq : degree p < degree q
⊢ coeff (-q) (natDegree (-q)) = 1
Theorem: Multiset.mem_Iio
File: Mathlib/Order/LocallyFinite.lean

tactic: rw [Iio, ← Finset.mem_def, Finset.mem_Iio]
state_before: α : Type u_1
β : Type ?u.34554
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrderBot α
b x : α
⊢ x ∈ Iio b ↔ x < b
Theorem: Set.mulIndicator_finset_biUnion_apply
File: Mathlib/Algebra/IndicatorFunction.lean

tactic: rw [Set.mulIndicator_finset_biUnion I s h]
state_before: α : Type u_2
β : Type ?u.116671
ι✝ : Type ?u.116674
M : Type u_3
N : Type ?u.116680
inst✝ : CommMonoid M
ι : Type u_1
I : Finset ι
s : ι → Set α
f : α → M
h : ∀ (i : ι), i ∈ I → ∀ (j : ι), j ∈ I → i ≠ j → Disjoint (s i) (s j)
x : α
⊢ mulIndicator (⋃ (i : ι) (_ : i ∈ I), s i) f x = ∏ i in I, mulIndicator (s i) f x
Theorem: MeasureTheory.Measure.exists_mem_of_measure_ne_zero_of_ae
File: Mathlib/MeasureTheory/Measure/MeasureSpace.lean

tactic: rw [← μ.restrict_apply_self, ← frequently_ae_mem_iff] at hs
state_before: α : Type u_1
β : Type ?u.319127
γ : Type ?u.319130
δ : Type ?u.319133
ι : Type ?u.319136
R : Type ?u.319139
R' : Type ?u.319142
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t : Set α
hs : ↑↑μ s ≠ 0
p : α → Prop
hp : ∀ᵐ (x : α) ∂restrict μ s, p x
⊢ ∃ x, x ∈ s ∧ p x

tactic: exact (hs.and_eventually hp).exists
state_before: α : Type u_1
β : Type ?u.319127
γ : Type ?u.319130
δ : Type ?u.319133
ι : Type ?u.319136
R : Type ?u.319139
R' : Type ?u.319142
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t : Set α
hs : ∃ᵐ (a : α) ∂restrict μ s, a ∈ s
p : α → Prop
hp : ∀ᵐ (x : α) ∂restrict μ s, p x
⊢ ∃ x, x ∈ s ∧ p x