tasksource/leandojo huggingface dataset:
Theorem: finprod_mem_comm
File: Mathlib/Algebra/BigOperators/Finprod.lean

tactic: lift s to Finset α using hs
state_before: α : Type u_1
β : Type u_2
ι : Type ?u.376189
G : Type ?u.376192
M : Type u_3
N : Type ?u.376198
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f✝ g : α → M
a b : α
s✝ t✝ s : Set α
t : Set β
f : α → β → M
hs : Set.Finite s
ht : Set.Finite t
⊢ (∏ᶠ (i : α) (_ : i ∈ s) (j : β) (_ : j ∈ t), f i j) = ∏ᶠ (j : β) (_ : j ∈ t) (i : α) (_ : i ∈ s), f i j

tactic: lift t to Finset β using ht
state_before: case intro
α : Type u_1
β : Type u_2
ι : Type ?u.376189
G : Type ?u.376192
M : Type u_3
N : Type ?u.376198
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f✝ g : α → M
a b : α
s✝ t✝ : Set α
t : Set β
f : α → β → M
ht : Set.Finite t
s : Finset α
⊢ (∏ᶠ (i : α) (_ : i ∈ ↑s) (j : β) (_ : j ∈ t), f i j) = ∏ᶠ (j : β) (_ : j ∈ t) (i : α) (_ : i ∈ ↑s), f i j

tactic: simp only [finprod_mem_coe_finset]
state_before: case intro.intro
α : Type u_1
β : Type u_2
ι : Type ?u.376189
G : Type ?u.376192
M : Type u_3
N : Type ?u.376198
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f✝ g : α → M
a b : α
s✝ t✝ : Set α
f : α → β → M
s : Finset α
t : Finset β
⊢ (∏ᶠ (i : α) (_ : i ∈ ↑s) (j : β) (_ : j ∈ ↑t), f i j) = ∏ᶠ (j : β) (_ : j ∈ ↑t) (i : α) (_ : i ∈ ↑s), f i j

tactic: exact Finset.prod_comm
state_before: case intro.intro
α : Type u_1
β : Type u_2
ι : Type ?u.376189
G : Type ?u.376192
M : Type u_3
N : Type ?u.376198
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f✝ g : α → M
a b : α
s✝ t✝ : Set α
f : α → β → M
s : Finset α
t : Finset β
⊢ ∏ i in s, ∏ i_1 in t, f i i_1 = ∏ i in t, ∏ i_1 in s, f i_1 i
Theorem: zpow_bit1_neg_iff
File: Mathlib/Algebra/Order/Field/Power.lean

tactic: rw [bit1, zpow_add_one₀ h.ne]
state_before: α : Type u_1
inst✝ : LinearOrderedField α
a b c d : α
n : ℤ
h : a < 0
⊢ a ^ bit1 n < 0

tactic: exact mul_neg_of_pos_of_neg (zpow_bit0_pos h.ne _) h
state_before: α : Type u_1
inst✝ : LinearOrderedField α
a b c d : α
n : ℤ
h : a < 0
⊢ a ^ bit0 n * a < 0
Theorem: IsSelfAdjoint.conj_orthogonalProjection
File: Mathlib/Analysis/InnerProductSpace/Adjoint.lean

tactic: rw [← ContinuousLinearMap.comp_assoc]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.1404059
G : Type ?u.1404062
inst✝⁹ : IsROrC 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : InnerProductSpace 𝕜 G
inst✝² : CompleteSpace E
inst✝¹ : CompleteSpace F
T : E →L[𝕜] E
hT : IsSelfAdjoint T
U : Submodule 𝕜 E
inst✝ : CompleteSpace { x // x ∈ U }
⊢ IsSelfAdjoint
    (comp (Submodule.subtypeL U)
      (comp (orthogonalProjection U) (comp T (comp (Submodule.subtypeL U) (orthogonalProjection U)))))

tactic: nth_rw 1 [← (orthogonalProjection_isSelfAdjoint U).adjoint_eq]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.1404059
G : Type ?u.1404062
inst✝⁹ : IsROrC 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : InnerProductSpace 𝕜 G
inst✝² : CompleteSpace E
inst✝¹ : CompleteSpace F
T : E →L[𝕜] E
hT : IsSelfAdjoint T
U : Submodule 𝕜 E
inst✝ : CompleteSpace { x // x ∈ U }
⊢ IsSelfAdjoint
    (comp (comp (Submodule.subtypeL U) (orthogonalProjection U))
      (comp T (comp (Submodule.subtypeL U) (orthogonalProjection U))))

tactic: refine' hT.adjoint_conj _
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.1404059
G : Type ?u.1404062
inst✝⁹ : IsROrC 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : InnerProductSpace 𝕜 G
inst✝² : CompleteSpace E
inst✝¹ : CompleteSpace F
T : E →L[𝕜] E
hT : IsSelfAdjoint T
U : Submodule 𝕜 E
inst✝ : CompleteSpace { x // x ∈ U }
⊢ IsSelfAdjoint
    (comp (↑adjoint (comp (Submodule.subtypeL U) (orthogonalProjection U)))
      (comp T (comp (Submodule.subtypeL U) (orthogonalProjection U))))
Theorem: Finset.prod_Ico_eq_prod_range
File: Mathlib/Algebra/BigOperators/Intervals.lean

tactic: by_cases h : m ≤ n
state_before: α : Type u
β : Type v
γ : Type w
s₂ s₁ s : Finset α
a : α
g f✝ : α → β
inst✝ : CommMonoid β
f : ℕ → β
m n : ℕ
⊢ ∏ k in Ico m n, f k = ∏ k in range (n - m), f (m + k)

tactic: rw [← Nat.Ico_zero_eq_range, prod_Ico_add, zero_add, tsub_add_cancel_of_le h]
state_before: case pos
α : Type u
β : Type v
γ : Type w
s₂ s₁ s : Finset α
a : α
g f✝ : α → β
inst✝ : CommMonoid β
f : ℕ → β
m n : ℕ
h : m ≤ n
⊢ ∏ k in Ico m n, f k = ∏ k in range (n - m), f (m + k)

tactic: replace h : n ≤ m := le_of_not_ge h
state_before: case neg
α : Type u
β : Type v
γ : Type w
s₂ s₁ s : Finset α
a : α
g f✝ : α → β
inst✝ : CommMonoid β
f : ℕ → β
m n : ℕ
h : ¬m ≤ n
⊢ ∏ k in Ico m n, f k = ∏ k in range (n - m), f (m + k)

tactic: rw [Ico_eq_empty_of_le h, tsub_eq_zero_iff_le.mpr h, range_zero, prod_empty, prod_empty]
state_before: case neg
α : Type u
β : Type v
γ : Type w
s₂ s₁ s : Finset α
a : α
g f✝ : α → β
inst✝ : CommMonoid β
f : ℕ → β
m n : ℕ
h : n ≤ m
⊢ ∏ k in Ico m n, f k = ∏ k in range (n - m), f (m + k)
Theorem: Polynomial.coeff_neg
File: Mathlib/Data/Polynomial/Basic.lean

tactic: rcases p with ⟨⟩
state_before: R : Type u
a b : R
m n✝ : ℕ
inst✝ : Ring R
p : R[X]
n : ℕ
⊢ coeff (-p) n = -coeff p n

tactic: rw [← ofFinsupp_neg, coeff, coeff]
state_before: case ofFinsupp
R : Type u
a b : R
m n✝ : ℕ
inst✝ : Ring R
n : ℕ
toFinsupp✝ : AddMonoidAlgebra R ℕ
⊢ coeff (-{ toFinsupp := toFinsupp✝ }) n = -coeff { toFinsupp := toFinsupp✝ } n

tactic: apply Finsupp.neg_apply
state_before: case ofFinsupp
R : Type u
a b : R
m n✝ : ℕ
inst✝ : Ring R
n : ℕ
toFinsupp✝ : AddMonoidAlgebra R ℕ
⊢ (match (motive := R[X] → ℕ → R) { toFinsupp := -toFinsupp✝ } with
      | { toFinsupp := p } => ↑p)
      n =
    -(match (motive := R[X] → ℕ → R) { toFinsupp := toFinsupp✝ } with
        | { toFinsupp := p } => ↑p)
        n
Theorem: Polynomial.eraseLead_ne_zero
File: Mathlib/Data/Polynomial/EraseLead.lean

tactic: rw [Ne, ← card_support_eq_zero, eraseLead_support]
state_before: R : Type u_1
inst✝ : Semiring R
f : R[X]
f0 : 2 ≤ card (support f)
⊢ eraseLead f ≠ 0

tactic: exact
  (zero_lt_one.trans_le <| (tsub_le_tsub_right f0 1).trans Finset.pred_card_le_card_erase).ne.symm
state_before: R : Type u_1
inst✝ : Semiring R
f : R[X]
f0 : 2 ≤ card (support f)
⊢ ¬card (Finset.erase (support f) (natDegree f)) = 0
Theorem: MeasureTheory.integral_indicatorConstLp
File: Mathlib/MeasureTheory/Integral/SetIntegral.lean

tactic: rw [integral_univ]
state_before: α : Type u_1
β : Type ?u.130399
E : Type u_2
F : Type ?u.130405
inst✝³ : MeasurableSpace α
inst✝² : NormedAddCommGroup E
f g : α → E
s t : Set α
μ ν : Measure α
l l' : Filter α
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
p : ℝ≥0∞
ht : MeasurableSet t
hμt : ↑↑μ t ≠ ⊤
x : E
⊢ (∫ (a : α), ↑↑(indicatorConstLp p ht hμt x) a ∂μ) = ∫ (a : α) in univ, ↑↑(indicatorConstLp p ht hμt x) a ∂μ

tactic: rw [inter_univ]
state_before: α : Type u_1
β : Type ?u.130399
E : Type u_2
F : Type ?u.130405
inst✝³ : MeasurableSpace α
inst✝² : NormedAddCommGroup E
f g : α → E
s t : Set α
μ ν : Measure α
l l' : Filter α
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
p : ℝ≥0∞
ht : MeasurableSet t
hμt : ↑↑μ t ≠ ⊤
x : E
⊢ ENNReal.toReal (↑↑μ (t ∩ univ)) • x = ENNReal.toReal (↑↑μ t) • x
Theorem: intervalIntegral.integral_comp_add_mul
File: Mathlib/MeasureTheory/Integral/IntervalIntegral.lean

tactic: rw [← integral_comp_add_left, ← integral_comp_mul_left _ hc]
state_before: ι : Type ?u.14882101
𝕜 : Type ?u.14882104
E : Type u_1
F : Type ?u.14882110
A : Type ?u.14882113
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d✝ : ℝ
f : ℝ → E
hc : c ≠ 0
d : ℝ
⊢ (∫ (x : ℝ) in a..b, f (d + c * x)) = c⁻¹ • ∫ (x : ℝ) in d + c * a..d + c * b, f x
Theorem: MeasureTheory.integral_comp_rpow_Ioi_of_pos
File: Mathlib/MeasureTheory/Integral/IntegralEqImproper.lean

tactic: convert integral_comp_rpow_Ioi g hp.ne'
state_before: E : Type u_1
f : ℝ → E
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
g : ℝ → E
p : ℝ
hp : 0 < p
⊢ (∫ (x : ℝ) in Ioi 0, (p * x ^ (p - 1)) • g (x ^ p)) = ∫ (y : ℝ) in Ioi 0, g y

tactic: funext
state_before: case h.e'_2.h.e'_8.h.h.e'_5.h.e'_5
E : Type u_1
f : ℝ → E
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
g : ℝ → E
p : ℝ
hp : 0 < p
x✝ : ℝ
⊢ p = abs p

tactic: congr
state_before: case h.e'_2.h.e'_8.h.h.e'_5.h.e'_5
E : Type u_1
f : ℝ → E
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
g : ℝ → E
p : ℝ
hp : 0 < p
x✝ : ℝ
⊢ p = abs p

tactic: rw [abs_of_nonneg hp.le]
state_before: case h.e'_2.h.e'_8.h.h.e'_5.h.e'_5
E : Type u_1
f : ℝ → E
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
g : ℝ → E
p : ℝ
hp : 0 < p
x✝ : ℝ
⊢ p = abs p
Theorem: RingHom.is_integral_of_mem_closure
File: Mathlib/RingTheory/IntegralClosure.lean

tactic: letI : Algebra R S := f.toAlgebra
state_before: R : Type u_1
A : Type ?u.638506
B : Type ?u.638509
S : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : CommRing B
inst✝² : CommRing S
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f : R →+* S
x y z : S
hx : IsIntegralElem f x
hy : IsIntegralElem f y
hz : z ∈ Subring.closure {x, y}
⊢ IsIntegralElem f z

tactic: have := (FG_adjoin_singleton_of_integral x hx).mul (FG_adjoin_singleton_of_integral y hy)
state_before: R : Type u_1
A : Type ?u.638506
B : Type ?u.638509
S : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : CommRing B
inst✝² : CommRing S
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f : R →+* S
x y z : S
hx : IsIntegralElem f x
hy : IsIntegralElem f y
hz : z ∈ Subring.closure {x, y}
this : Algebra R S := toAlgebra f
⊢ IsIntegralElem f z

tactic: rw [← Algebra.adjoin_union_coe_submodule, Set.singleton_union] at this
state_before: R : Type u_1
A : Type ?u.638506
B : Type ?u.638509
S : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : CommRing B
inst✝² : CommRing S
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f : R →+* S
x y z : S
hx : IsIntegralElem f x
hy : IsIntegralElem f y
hz : z ∈ Subring.closure {x, y}
this✝ : Algebra R S := toAlgebra f
this : FG (↑Subalgebra.toSubmodule (Algebra.adjoin R {x}) * ↑Subalgebra.toSubmodule (Algebra.adjoin R {y}))
⊢ IsIntegralElem f z

tactic: exact
  isIntegral_of_mem_of_FG (Algebra.adjoin R {x, y}) this z
    (Algebra.mem_adjoin_iff.2 <| Subring.closure_mono (Set.subset_union_right _ _) hz)
state_before: R : Type u_1
A : Type ?u.638506
B : Type ?u.638509
S : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : CommRing B
inst✝² : CommRing S
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f : R →+* S
x y z : S
hx : IsIntegralElem f x
hy : IsIntegralElem f y
hz : z ∈ Subring.closure {x, y}
this✝ : Algebra R S := toAlgebra f
this : FG (↑Subalgebra.toSubmodule (Algebra.adjoin R {x, y}))
⊢ IsIntegralElem f z
Theorem: ofAdd_image_zmultiples_eq_zpowers_ofAdd
File: Mathlib/GroupTheory/Subgroup/ZPowers.lean

tactic: symm
state_before: G : Type ?u.36673
inst✝² : Group G
A : Type u_1
inst✝¹ : AddGroup A
N : Type ?u.36685
inst✝ : Group N
x : A
⊢ ↑Multiplicative.ofAdd '' ↑(AddSubgroup.zmultiples x) = ↑(Subgroup.zpowers (↑Multiplicative.ofAdd x))

tactic: rw [Equiv.eq_image_iff_symm_image_eq]
state_before: G : Type ?u.36673
inst✝² : Group G
A : Type u_1
inst✝¹ : AddGroup A
N : Type ?u.36685
inst✝ : Group N
x : A
⊢ ↑(Subgroup.zpowers (↑Multiplicative.ofAdd x)) = ↑Multiplicative.ofAdd '' ↑(AddSubgroup.zmultiples x)

tactic: exact ofMul_image_zpowers_eq_zmultiples_ofMul
state_before: G : Type ?u.36673
inst✝² : Group G
A : Type u_1
inst✝¹ : AddGroup A
N : Type ?u.36685
inst✝ : Group N
x : A
⊢ ↑Multiplicative.ofAdd.symm '' ↑(Subgroup.zpowers (↑Multiplicative.ofAdd x)) = ↑(AddSubgroup.zmultiples x)
Theorem: List.map_uncurry_zip_eq_zipWith
File: Mathlib/Data/List/Zip.lean

tactic: rw [zip]
state_before: α : Type u
β : Type u_1
γ : Type u_2
δ : Type ?u.165705
ε : Type ?u.165708
f : α → β → γ
l : List α
l' : List β
⊢ map (Function.uncurry f) (zip l l') = zipWith f l l'

tactic: induction' l with hd tl hl generalizing l'
state_before: α : Type u
β : Type u_1
γ : Type u_2
δ : Type ?u.165705
ε : Type ?u.165708
f : α → β → γ
l : List α
l' : List β
⊢ map (Function.uncurry f) (zipWith Prod.mk l l') = zipWith f l l'

tactic: simp
state_before: case nil
α : Type u
β : Type u_1
γ : Type u_2
δ : Type ?u.165705
ε : Type ?u.165708
f : α → β → γ
l'✝ l' : List β
⊢ map (Function.uncurry f) (zipWith Prod.mk [] l') = zipWith f [] l'

tactic: cases' l' with hd' tl'
state_before: case cons
α : Type u
β : Type u_1
γ : Type u_2
δ : Type ?u.165705
ε : Type ?u.165708
f : α → β → γ
l'✝ : List β
hd : α
tl : List α
hl : ∀ (l' : List β), map (Function.uncurry f) (zipWith Prod.mk tl l') = zipWith f tl l'
l' : List β
⊢ map (Function.uncurry f) (zipWith Prod.mk (hd :: tl) l') = zipWith f (hd :: tl) l'

tactic: simp
state_before: case cons.nil
α : Type u
β : Type u_1
γ : Type u_2
δ : Type ?u.165705
ε : Type ?u.165708
f : α → β → γ
l' : List β
hd : α
tl : List α
hl : ∀ (l' : List β), map (Function.uncurry f) (zipWith Prod.mk tl l') = zipWith f tl l'
⊢ map (Function.uncurry f) (zipWith Prod.mk (hd :: tl) []) = zipWith f (hd :: tl) []

tactic: simp [hl]
state_before: case cons.cons
α : Type u
β : Type u_1
γ : Type u_2
δ : Type ?u.165705
ε : Type ?u.165708
f : α → β → γ
l' : List β
hd : α
tl : List α
hl : ∀ (l' : List β), map (Function.uncurry f) (zipWith Prod.mk tl l') = zipWith f tl l'
hd' : β
tl' : List β
⊢ map (Function.uncurry f) (zipWith Prod.mk (hd :: tl) (hd' :: tl')) = zipWith f (hd :: tl) (hd' :: tl')
Theorem: Nat.log2_terminates
File: src/lean/Init/Data/Nat/Log2.lean

tactic: decide
state_before: x✝ : 2 ≥ 2
⊢ 2 / 2 < 2

tactic: decide
state_before: x✝ : 3 ≥ 2
⊢ 3 / 2 < 3

tactic: rw [div_eq, if_pos]
state_before: n : Nat
x✝ : n + 4 ≥ 2
⊢ (n + 4) / 2 < n + 4

tactic: refine succ_lt_succ (Nat.lt_trans ?_ (lt_succ_self _))
state_before: n : Nat
x✝ : n + 4 ≥ 2
⊢ (n + 4 - 2) / 2 + 1 < n + 4

case hc
n : Nat
x✝ : n + 4 ≥ 2
⊢ 0 < 2 ∧ 2 ≤ n + 4

tactic: exact log2_terminates (n+2) (by simp_arith)
state_before: n : Nat
x✝ : n + 4 ≥ 2
⊢ (n + 4 - 2) / 2 < n + 2

case hc
n : Nat
x✝ : n + 4 ≥ 2
⊢ 0 < 2 ∧ 2 ≤ n + 4

tactic: simp_arith
state_before: case hc
n : Nat
x✝ : n + 4 ≥ 2
⊢ 0 < 2 ∧ 2 ≤ n + 4

tactic: simp_arith
state_before: n : Nat
x✝ : n + 4 ≥ 2
⊢ n + 2 ≥ 2
Theorem: IsHilbertSum.hasSum_linearIsometryEquiv_symm
File: Mathlib/Analysis/InnerProductSpace/l2Space.lean

tactic: simp [IsHilbertSum.linearIsometryEquiv, OrthogonalFamily.hasSum_linearIsometry]
state_before: ι : Type u_1
𝕜 : Type u_2
inst✝⁴ : IsROrC 𝕜
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
cplt : CompleteSpace E
G : ι → Type u_4
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
V : (i : ι) → G i →ₗᵢ[𝕜] E
F : ι → Submodule 𝕜 E
hV : IsHilbertSum 𝕜 G V
w : { x // x ∈ lp G 2 }
⊢ HasSum (fun i => ↑(V i) (↑w i)) (↑(LinearIsometryEquiv.symm (linearIsometryEquiv hV)) w)
Theorem: Real.abs_sin_eq_sqrt_one_sub_cos_sq
File: Mathlib/Data/Complex/Exponential.lean

tactic: rw [← sin_sq, sqrt_sq_eq_abs]
state_before: x✝ y x : ℝ
⊢ abs' (sin x) = sqrt (1 - cos x ^ 2)
Theorem: MeasureTheory.set_integral_mono_on_ae
File: Mathlib/MeasureTheory/Integral/SetIntegral.lean

tactic: refine' set_integral_mono_ae_restrict hf hg _
state_before: α : Type u_1
β : Type ?u.288198
E : Type ?u.288201
F : Type ?u.288204
inst✝ : MeasurableSpace α
μ : Measure α
f g : α → ℝ
s t : Set α
hf : IntegrableOn f s
hg : IntegrableOn g s
hs : MeasurableSet s
h : ∀ᵐ (x : α) ∂μ, x ∈ s → f x ≤ g x
⊢ (∫ (a : α) in s, f a ∂μ) ≤ ∫ (a : α) in s, g a ∂μ

tactic: rwa [EventuallyLE, ae_restrict_iff' hs]
state_before: α : Type u_1
β : Type ?u.288198
E : Type ?u.288201
F : Type ?u.288204
inst✝ : MeasurableSpace α
μ : Measure α
f g : α → ℝ
s t : Set α
hf : IntegrableOn f s
hg : IntegrableOn g s
hs : MeasurableSet s
h : ∀ᵐ (x : α) ∂μ, x ∈ s → f x ≤ g x
⊢ (fun a => f a) ≤ᵐ[Measure.restrict μ s] fun a => g a
Theorem: AlternatingMap.map_eq_zero_of_not_injective
File: Mathlib/LinearAlgebra/Alternating.lean

tactic: rw [Function.Injective] at hv
state_before: R : Type u_4
inst✝¹⁰ : Semiring R
M : Type u_2
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
N : Type u_3
inst✝⁷ : AddCommMonoid N
inst✝⁶ : Module R N
P : Type ?u.72498
inst✝⁵ : AddCommMonoid P
inst✝⁴ : Module R P
M' : Type ?u.72528
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
N' : Type ?u.72916
inst✝¹ : AddCommGroup N'
inst✝ : Module R N'
ι : Type u_1
ι' : Type ?u.73307
ι'' : Type ?u.73310
f f' : AlternatingMap R M N ι
g g₂ : AlternatingMap R M N' ι
g' : AlternatingMap R M' N' ι
v✝ : ι → M
v' : ι → M'
v : ι → M
hv : ¬Injective v
⊢ ↑f v = 0

tactic: push_neg  at hv
state_before: R : Type u_4
inst✝¹⁰ : Semiring R
M : Type u_2
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
N : Type u_3
inst✝⁷ : AddCommMonoid N
inst✝⁶ : Module R N
P : Type ?u.72498
inst✝⁵ : AddCommMonoid P
inst✝⁴ : Module R P
M' : Type ?u.72528
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
N' : Type ?u.72916
inst✝¹ : AddCommGroup N'
inst✝ : Module R N'
ι : Type u_1
ι' : Type ?u.73307
ι'' : Type ?u.73310
f f' : AlternatingMap R M N ι
g g₂ : AlternatingMap R M N' ι
g' : AlternatingMap R M' N' ι
v✝ : ι → M
v' : ι → M'
v : ι → M
hv : ¬∀ ⦃a₁ a₂ : ι⦄, v a₁ = v a₂ → a₁ = a₂
⊢ ↑f v = 0

tactic: rcases hv with ⟨i₁, i₂, heq, hne⟩
state_before: R : Type u_4
inst✝¹⁰ : Semiring R
M : Type u_2
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
N : Type u_3
inst✝⁷ : AddCommMonoid N
inst✝⁶ : Module R N
P : Type ?u.72498
inst✝⁵ : AddCommMonoid P
inst✝⁴ : Module R P
M' : Type ?u.72528
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
N' : Type ?u.72916
inst✝¹ : AddCommGroup N'
inst✝ : Module R N'
ι : Type u_1
ι' : Type ?u.73307
ι'' : Type ?u.73310
f f' : AlternatingMap R M N ι
g g₂ : AlternatingMap R M N' ι
g' : AlternatingMap R M' N' ι
v✝ : ι → M
v' : ι → M'
v : ι → M
hv : Exists fun ⦃a₁⦄ => Exists fun ⦃a₂⦄ => v a₁ = v a₂ ∧ a₁ ≠ a₂
⊢ ↑f v = 0

tactic: exact f.map_eq_zero_of_eq v heq hne
state_before: case intro.intro.intro
R : Type u_4
inst✝¹⁰ : Semiring R
M : Type u_2
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
N : Type u_3
inst✝⁷ : AddCommMonoid N
inst✝⁶ : Module R N
P : Type ?u.72498
inst✝⁵ : AddCommMonoid P
inst✝⁴ : Module R P
M' : Type ?u.72528
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
N' : Type ?u.72916
inst✝¹ : AddCommGroup N'
inst✝ : Module R N'
ι : Type u_1
ι' : Type ?u.73307
ι'' : Type ?u.73310
f f' : AlternatingMap R M N ι
g g₂ : AlternatingMap R M N' ι
g' : AlternatingMap R M' N' ι
v✝ : ι → M
v' : ι → M'
v : ι → M
i₁ i₂ : ι
heq : v i₁ = v i₂
hne : i₁ ≠ i₂
⊢ ↑f v = 0
Theorem: finAddFlip_apply_castAdd
File: Mathlib/Logic/Equiv/Fin.lean

tactic: simp [finAddFlip]
state_before: m n✝ : ℕ
k : Fin m
n : ℕ
⊢ ↑finAddFlip (↑(Fin.castAdd n) k) = ↑(Fin.natAdd n) k
Theorem: SMulCommClass.of_mul_smul_one
File: Mathlib/GroupTheory/GroupAction/Defs.lean

tactic: rw [← H x z, smul_eq_mul, ← H, smul_eq_mul, mul_assoc]
state_before: M✝ : Type ?u.29809
N✝ : Type ?u.29812
G : Type ?u.29815
A : Type ?u.29818
B : Type ?u.29821
α : Type ?u.29824
β : Type ?u.29827
γ : Type ?u.29830
δ : Type ?u.29833
M : Type u_1
N : Type u_2
inst✝¹ : Monoid N
inst✝ : SMul M N
H : ∀ (x : M) (y : N), y * x • 1 = x • y
x : M
y z : N
⊢ x • y • z = y • x • z
Theorem: Nat.coprime_zero_left
File: Std/Data/Nat/Gcd.lean

tactic: simp [coprime]
state_before: n : Nat
⊢ coprime 0 n ↔ n = 1
Theorem: AlgebraicIndependent.mvPolynomialOptionEquivPolynomialAdjoin_X_none
File: Mathlib/RingTheory/AlgebraicIndependent.lean

tactic: rw [AlgebraicIndependent.mvPolynomialOptionEquivPolynomialAdjoin_apply, aeval_X, Option.elim,
  Polynomial.map_X]
state_before: ι : Type u_1
ι' : Type ?u.1145486
R : Type u_2
K : Type ?u.1145492
A : Type u_3
A' : Type ?u.1145498
A'' : Type ?u.1145501
V : Type u
V' : Type ?u.1145506
x : ι → A
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : CommRing A'
inst✝³ : CommRing A''
inst✝² : Algebra R A
inst✝¹ : Algebra R A'
inst✝ : Algebra R A''
a b : R
hx : AlgebraicIndependent R x
⊢ ↑(mvPolynomialOptionEquivPolynomialAdjoin hx) (X none) = Polynomial.X
Theorem: EuclideanGeometry.angle_eq_arcsin_of_angle_eq_pi_div_two
File: Mathlib/Geometry/Euclidean/Angle/Unoriented/RightAngle.lean

tactic: rw [angle, ← inner_eq_zero_iff_angle_eq_pi_div_two, real_inner_comm, ← neg_eq_zero, ←
  inner_neg_left, neg_vsub_eq_vsub_rev] at h
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p₁ p₂ p₃ : P
h : ∠ p₁ p₂ p₃ = π / 2
h0 : p₁ ≠ p₂ ∨ p₃ ≠ p₂
⊢ ∠ p₂ p₃ p₁ = Real.arcsin (dist p₁ p₂ / dist p₁ p₃)

tactic: rw [← @vsub_ne_zero V, @ne_comm _ p₃, ← @vsub_ne_zero V _ _ _ p₂, or_comm] at h0
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p₁ p₂ p₃ : P
h : inner (p₂ -ᵥ p₃) (p₁ -ᵥ p₂) = 0
h0 : p₁ ≠ p₂ ∨ p₃ ≠ p₂
⊢ ∠ p₂ p₃ p₁ = Real.arcsin (dist p₁ p₂ / dist p₁ p₃)

tactic: rw [angle, dist_eq_norm_vsub V p₁ p₂, dist_eq_norm_vsub V p₁ p₃, ← vsub_add_vsub_cancel p₁ p₂ p₃,
  add_comm, angle_add_eq_arcsin_of_inner_eq_zero h h0]
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p₁ p₂ p₃ : P
h : inner (p₂ -ᵥ p₃) (p₁ -ᵥ p₂) = 0
h0 : p₂ -ᵥ p₃ ≠ 0 ∨ p₁ -ᵥ p₂ ≠ 0
⊢ ∠ p₂ p₃ p₁ = Real.arcsin (dist p₁ p₂ / dist p₁ p₃)
Theorem: CategoryTheory.Limits.cokernelIsoOfEq_trans
File: Mathlib/CategoryTheory/Limits/Shapes/Kernels.lean

tactic: cases w₁
state_before: C : Type u
inst✝⁵ : Category C
inst✝⁴ : HasZeroMorphisms C
X Y : C
f✝ : X ⟶ Y
inst✝³ : HasCokernel f✝
f g h : X ⟶ Y
inst✝² : HasCokernel f
inst✝¹ : HasCokernel g
inst✝ : HasCokernel h
w₁ : f = g
w₂ : g = h
⊢ cokernelIsoOfEq w₁ ≪≫ cokernelIsoOfEq w₂ = cokernelIsoOfEq (_ : f = h)

tactic: cases w₂
state_before: case refl
C : Type u
inst✝⁵ : Category C
inst✝⁴ : HasZeroMorphisms C
X Y : C
f✝ : X ⟶ Y
inst✝³ : HasCokernel f✝
f h : X ⟶ Y
inst✝² : HasCokernel f
inst✝¹ : HasCokernel h
inst✝ : HasCokernel f
w₂ : f = h
⊢ cokernelIsoOfEq (_ : f = f) ≪≫ cokernelIsoOfEq w₂ = cokernelIsoOfEq (_ : f = h)

tactic: ext
state_before: case refl.refl
C : Type u
inst✝⁵ : Category C
inst✝⁴ : HasZeroMorphisms C
X Y : C
f✝ : X ⟶ Y
inst✝³ : HasCokernel f✝
f : X ⟶ Y
inst✝² inst✝¹ inst✝ : HasCokernel f
⊢ cokernelIsoOfEq (_ : f = f) ≪≫ cokernelIsoOfEq (_ : f = f) = cokernelIsoOfEq (_ : f = f)

tactic: simp [cokernelIsoOfEq]
state_before: case refl.refl.w.h
C : Type u
inst✝⁵ : Category C
inst✝⁴ : HasZeroMorphisms C
X Y : C
f✝ : X ⟶ Y
inst✝³ : HasCokernel f✝
f : X ⟶ Y
inst✝² inst✝¹ inst✝ : HasCokernel f
⊢ coequalizer.π f 0 ≫ (cokernelIsoOfEq (_ : f = f) ≪≫ cokernelIsoOfEq (_ : f = f)).hom =
    coequalizer.π f 0 ≫ (cokernelIsoOfEq (_ : f = f)).hom
Theorem: Filter.Tendsto.subseq_mem_entourage
File: Mathlib/Topology/UniformSpace/Cauchy.lean

tactic: rcases mem_atTop_sets.1 (hu (ball_mem_nhds a (symm_le_uniformity <| hV 0))) with ⟨n, hn⟩
state_before: α : Type u
β : Type v
inst✝ : UniformSpace α
V : ℕ → Set (α × α)
hV : ∀ (n : ℕ), V n ∈ 𝓤 α
u : ℕ → α
a : α
hu : Tendsto u atTop (𝓝 a)
⊢ ∃ φ, StrictMono φ ∧ (u (φ 0), a) ∈ V 0 ∧ ∀ (n : ℕ), (u (φ (n + 1)), u (φ n)) ∈ V (n + 1)

tactic: rcases (hu.comp (tendsto_add_atTop_nat n)).cauchySeq.subseq_mem fun n => hV (n + 1) with
  ⟨φ, φ_mono, hφV⟩
state_before: case intro
α : Type u
β : Type v
inst✝ : UniformSpace α
V : ℕ → Set (α × α)
hV : ∀ (n : ℕ), V n ∈ 𝓤 α
u : ℕ → α
a : α
hu : Tendsto u atTop (𝓝 a)
n : ℕ
hn : ∀ (b : ℕ), b ≥ n → b ∈ u ⁻¹' ball a (Prod.swap ⁻¹' V 0)
⊢ ∃ φ, StrictMono φ ∧ (u (φ 0), a) ∈ V 0 ∧ ∀ (n : ℕ), (u (φ (n + 1)), u (φ n)) ∈ V (n + 1)

tactic: exact ⟨fun k => φ k + n, φ_mono.add_const _, hn _ le_add_self, hφV⟩
state_before: case intro.intro.intro
α : Type u
β : Type v
inst✝ : UniformSpace α
V : ℕ → Set (α × α)
hV : ∀ (n : ℕ), V n ∈ 𝓤 α
u : ℕ → α
a : α
hu : Tendsto u atTop (𝓝 a)
n : ℕ
hn : ∀ (b : ℕ), b ≥ n → b ∈ u ⁻¹' ball a (Prod.swap ⁻¹' V 0)
φ : ℕ → ℕ
φ_mono : StrictMono φ
hφV : ∀ (n_1 : ℕ), ((u ∘ fun a => a + n) (φ (n_1 + 1)), (u ∘ fun a => a + n) (φ n_1)) ∈ V (n_1 + 1)
⊢ ∃ φ, StrictMono φ ∧ (u (φ 0), a) ∈ V 0 ∧ ∀ (n : ℕ), (u (φ (n + 1)), u (φ n)) ∈ V (n + 1)
Theorem: Nat.Prime.even_sub_one
File: Mathlib/Data/Nat/Prime.lean

tactic: rw [hn, Nat.add_sub_cancel, two_mul]
state_before: p : ℕ
hp : Prime p
h2 : p ≠ 2
n : ℕ
hn : p = 2 * n + 1
⊢ p - 1 = n + n