tasksource/leandojo huggingface dataset:
Theorem: List.rotate_injective
File: Mathlib/Data/List/Rotate.lean

tactic: rintro l l' (h : l.rotate n = l'.rotate n)
state_before: α : Type u
n : ℕ
⊢ Injective fun l => rotate l n

tactic: have hle : l.length = l'.length := (l.length_rotate n).symm.trans (h.symm ▸ l'.length_rotate n)
state_before: α : Type u
n : ℕ
l l' : List α
h : rotate l n = rotate l' n
⊢ l = l'

tactic: rw [rotate_eq_drop_append_take_mod, rotate_eq_drop_append_take_mod] at h
state_before: α : Type u
n : ℕ
l l' : List α
h : rotate l n = rotate l' n
hle : length l = length l'
⊢ l = l'

tactic: obtain ⟨hd, ht⟩ := append_inj h (by simp_all)
state_before: α : Type u
n : ℕ
l l' : List α
h : drop (n % length l) l ++ take (n % length l) l = drop (n % length l') l' ++ take (n % length l') l'
hle : length l = length l'
⊢ l = l'

tactic: rw [← take_append_drop _ l, ht, hd, take_append_drop]
state_before: case intro
α : Type u
n : ℕ
l l' : List α
h : drop (n % length l) l ++ take (n % length l) l = drop (n % length l') l' ++ take (n % length l') l'
hle : length l = length l'
hd : drop (n % length l) l = drop (n % length l') l'
ht : take (n % length l) l = take (n % length l') l'
⊢ l = l'

tactic: simp_all
state_before: α : Type u
n : ℕ
l l' : List α
h : drop (n % length l) l ++ take (n % length l) l = drop (n % length l') l' ++ take (n % length l') l'
hle : length l = length l'
⊢ length (drop (n % length l) l) = length (drop (n % length l') l')
Theorem: List.get?_modifyNth_ne
File: Std/Data/List/Lemmas.lean

tactic: simp only [get?_modifyNth, if_neg h, id_map']
state_before: α : Type u_1
f : α → α
m n : Nat
l : List α
h : m ≠ n
⊢ get? (modifyNth f m l) n = get? l n
Theorem: Complex.interior_reProdIm
File: Mathlib/Analysis/Complex/ReImTopology.lean

tactic: rw [Set.reProdIm, Set.reProdIm, interior_inter, interior_preimage_re, interior_preimage_im]
state_before: s t : Set ℝ
⊢ interior (s ×ℂ t) = interior s ×ℂ interior t
Theorem: Complex.isPrimitiveRoot_exp
File: Mathlib/RingTheory/RootsOfUnity/Complex.lean

tactic: simpa only [Nat.cast_one, one_div] using
  isPrimitiveRoot_exp_of_coprime 1 n h0 n.coprime_one_left
state_before: n : ℕ
h0 : n ≠ 0
⊢ IsPrimitiveRoot (exp (2 * ↑π * I / ↑n)) n
Theorem: LinearMap.adjoint_inner_right
File: Mathlib/Analysis/InnerProductSpace/Adjoint.lean

tactic: rw [← coe_toContinuousLinearMap A, adjoint_eq_toClm_adjoint]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type ?u.1706942
inst✝⁹ : IsROrC 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : InnerProductSpace 𝕜 G
inst✝² : FiniteDimensional 𝕜 E
inst✝¹ : FiniteDimensional 𝕜 F
inst✝ : FiniteDimensional 𝕜 G
A : E →ₗ[𝕜] F
x : E
y : F
⊢ inner x (↑(↑adjoint A) y) = inner (↑A x) y

tactic: exact ContinuousLinearMap.adjoint_inner_right _ x y
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type ?u.1706942
inst✝⁹ : IsROrC 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : InnerProductSpace 𝕜 G
inst✝² : FiniteDimensional 𝕜 E
inst✝¹ : FiniteDimensional 𝕜 F
inst✝ : FiniteDimensional 𝕜 G
A : E →ₗ[𝕜] F
x : E
y : F
⊢ inner x (↑↑(↑ContinuousLinearMap.adjoint (↑toContinuousLinearMap ↑(↑toContinuousLinearMap A))) y) =
    inner (↑↑(↑toContinuousLinearMap A) x) y
Theorem: LiouvilleWith.int_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 (↑m - x) ↔ LiouvilleWith p x
Theorem: UpperSet.map_refl
File: Mathlib/Order/UpperLower/Basic.lean

tactic: ext
state_before: α : Type u_1
β : Type ?u.97471
γ : Type ?u.97474
ι : Sort ?u.97477
κ : ι → Sort ?u.97482
inst✝² : Preorder α
inst✝¹ : Preorder β
inst✝ : Preorder γ
f : α ≃o β
s t : UpperSet α
a : α
b : β
⊢ map (OrderIso.refl α) = OrderIso.refl (UpperSet α)

tactic: simp
state_before: case h.h.a.h
α : Type u_1
β : Type ?u.97471
γ : Type ?u.97474
ι : Sort ?u.97477
κ : ι → Sort ?u.97482
inst✝² : Preorder α
inst✝¹ : Preorder β
inst✝ : Preorder γ
f : α ≃o β
s t : UpperSet α
a : α
b : β
x✝¹ : UpperSet α
x✝ : α
⊢ x✝ ∈ ↑(↑(map (OrderIso.refl α)) x✝¹) ↔ x✝ ∈ ↑(↑(OrderIso.refl (UpperSet α)) x✝¹)
Theorem: Multiset.countp_filter
File: Mathlib/Data/Multiset/Basic.lean

tactic: simp [countp_eq_card_filter]
state_before: α : Type u_1
β : Type ?u.312315
γ : Type ?u.312318
p : α → Prop
inst✝¹ : DecidablePred p
q : α → Prop
inst✝ : DecidablePred q
s : Multiset α
⊢ countp p (filter q s) = countp (fun a => p a ∧ q a) s
Theorem: innerDualCone_iUnion
File: Mathlib/Analysis/Convex/Cone/Dual.lean

tactic: refine' le_antisymm (le_iInf fun i x hx y hy => hx _ <| mem_iUnion_of_mem _ hy) _
state_before: 𝕜 : Type ?u.15183
E : Type ?u.15186
F : Type ?u.15189
G : Type ?u.15192
H : Type u_2
inst✝¹ : NormedAddCommGroup H
inst✝ : InnerProductSpace ℝ H
s t : Set H
ι : Sort u_1
f : ι → Set H
⊢ innerDualCone (⋃ (i : ι), f i) = ⨅ (i : ι), innerDualCone (f i)

tactic: intro x hx y hy
state_before: 𝕜 : Type ?u.15183
E : Type ?u.15186
F : Type ?u.15189
G : Type ?u.15192
H : Type u_2
inst✝¹ : NormedAddCommGroup H
inst✝ : InnerProductSpace ℝ H
s t : Set H
ι : Sort u_1
f : ι → Set H
⊢ (⨅ (i : ι), innerDualCone (f i)) ≤ innerDualCone (⋃ (i : ι), f i)

tactic: rw [ConvexCone.mem_iInf] at hx
state_before: 𝕜 : Type ?u.15183
E : Type ?u.15186
F : Type ?u.15189
G : Type ?u.15192
H : Type u_2
inst✝¹ : NormedAddCommGroup H
inst✝ : InnerProductSpace ℝ H
s t : Set H
ι : Sort u_1
f : ι → Set H
x : H
hx : x ∈ ⨅ (i : ι), innerDualCone (f i)
y : H
hy : y ∈ ⋃ (i : ι), f i
⊢ 0 ≤ inner y x

tactic: obtain ⟨j, hj⟩ := mem_iUnion.mp hy
state_before: 𝕜 : Type ?u.15183
E : Type ?u.15186
F : Type ?u.15189
G : Type ?u.15192
H : Type u_2
inst✝¹ : NormedAddCommGroup H
inst✝ : InnerProductSpace ℝ H
s t : Set H
ι : Sort u_1
f : ι → Set H
x : H
hx : ∀ (i : ι), x ∈ innerDualCone (f i)
y : H
hy : y ∈ ⋃ (i : ι), f i
⊢ 0 ≤ inner y x

tactic: exact hx _ _ hj
state_before: case intro
𝕜 : Type ?u.15183
E : Type ?u.15186
F : Type ?u.15189
G : Type ?u.15192
H : Type u_2
inst✝¹ : NormedAddCommGroup H
inst✝ : InnerProductSpace ℝ H
s t : Set H
ι : Sort u_1
f : ι → Set H
x : H
hx : ∀ (i : ι), x ∈ innerDualCone (f i)
y : H
hy : y ∈ ⋃ (i : ι), f i
j : ι
hj : y ∈ f j
⊢ 0 ≤ inner y x
Theorem: Pmf.toPmf_dirac
File: Mathlib/Probability/ProbabilityMassFunction/Monad.lean

tactic: rw [toPmf_eq_iff_toMeasure_eq, toMeasure_pure]
state_before: α : Type u_1
β : Type ?u.7626
γ : Type ?u.7629
a a' : α
s : Set α
inst✝¹ : MeasurableSpace α
inst✝ : Countable α
h : MeasurableSingletonClass α
⊢ Measure.toPmf (Measure.dirac a) = pure a
Theorem: GroupFilterBasis.nhds_one_eq
File: Mathlib/Topology/Algebra/FilterBasis.lean

tactic: rw [B.nhds_eq]
state_before: G : Type u
inst✝ : Group G
B✝ B : GroupFilterBasis G
⊢ 𝓝 1 = FilterBasis.filter toFilterBasis

tactic: simp only [N, one_mul]
state_before: G : Type u
inst✝ : Group G
B✝ B : GroupFilterBasis G
⊢ N B 1 = FilterBasis.filter toFilterBasis

tactic: exact map_id
state_before: G : Type u
inst✝ : Group G
B✝ B : GroupFilterBasis G
⊢ map (fun y => y) (FilterBasis.filter toFilterBasis) = FilterBasis.filter toFilterBasis
Theorem: CategoryTheory.Limits.biprod.inl_map
File: Mathlib/CategoryTheory/Limits/Shapes/Biproducts.lean

tactic: rw [biprod.map_eq_map']
state_before: J : Type w
C : Type u
inst✝³ : Category C
inst✝² : HasZeroMorphisms C
P Q W X Y Z : C
inst✝¹ : HasBinaryBiproduct W X
inst✝ : HasBinaryBiproduct Y Z
f : W ⟶ Y
g : X ⟶ Z
⊢ inl ≫ map f g = f ≫ inl

tactic: exact IsColimit.ι_map (BinaryBiproduct.isColimit W X) _ _ ⟨WalkingPair.left⟩
state_before: J : Type w
C : Type u
inst✝³ : Category C
inst✝² : HasZeroMorphisms C
P Q W X Y Z : C
inst✝¹ : HasBinaryBiproduct W X
inst✝ : HasBinaryBiproduct Y Z
f : W ⟶ Y
g : X ⟶ Z
⊢ inl ≫ map' f g = f ≫ inl
Theorem: Submodule.lt_top_of_finrank_lt_finrank
File: Mathlib/LinearAlgebra/Finrank.lean

tactic: rw [← finrank_top K V] at lt
state_before: K : Type u
V : Type v
inst✝⁴ : Ring K
inst✝³ : AddCommGroup V
inst✝² : Module K V
V₂ : Type v'
inst✝¹ : AddCommGroup V₂
inst✝ : Module K V₂
s : Submodule K V
lt : finrank K { x // x ∈ s } < finrank K V
⊢ s < ⊤

tactic: exact lt_of_le_of_finrank_lt_finrank le_top lt
state_before: K : Type u
V : Type v
inst✝⁴ : Ring K
inst✝³ : AddCommGroup V
inst✝² : Module K V
V₂ : Type v'
inst✝¹ : AddCommGroup V₂
inst✝ : Module K V₂
s : Submodule K V
lt : finrank K { x // x ∈ s } < finrank K { x // x ∈ ⊤ }
⊢ s < ⊤
Theorem: convexJoin_convexJoin_convexJoin_comm
File: Mathlib/Analysis/Convex/Join.lean

tactic: simp_rw [← convexJoin_assoc, convexJoin_right_comm]
state_before: ι : Sort ?u.72702
𝕜 : Type u_2
E : Type u_1
inst✝² : LinearOrderedField 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
s✝ t✝ u✝ : Set E
x y : E
s t u v : Set E
⊢ convexJoin 𝕜 (convexJoin 𝕜 s t) (convexJoin 𝕜 u v) = convexJoin 𝕜 (convexJoin 𝕜 s u) (convexJoin 𝕜 t v)
Theorem: Matrix.zpow_add
File: Mathlib/LinearAlgebra/Matrix/ZPow.lean

tactic: induction n using Int.induction_on with
| hz => simp
| hp n ihn => simp only [← add_assoc, zpow_add_one ha, ihn, mul_assoc]
| hn n ihn => rw [zpow_sub_one ha, ← mul_assoc, ← ihn, ← zpow_sub_one ha, add_sub_assoc]
state_before: n' : Type u_1
inst✝² : DecidableEq n'
inst✝¹ : Fintype n'
R : Type u_2
inst✝ : CommRing R
A : M
ha : IsUnit (det A)
m n : ℤ
⊢ A ^ (m + n) = A ^ m * A ^ n

tactic: simp
state_before: case hz
n' : Type u_1
inst✝² : DecidableEq n'
inst✝¹ : Fintype n'
R : Type u_2
inst✝ : CommRing R
A : M
ha : IsUnit (det A)
m : ℤ
⊢ A ^ (m + 0) = A ^ m * A ^ 0

tactic: simp only [← add_assoc, zpow_add_one ha, ihn, mul_assoc]
state_before: case hp
n' : Type u_1
inst✝² : DecidableEq n'
inst✝¹ : Fintype n'
R : Type u_2
inst✝ : CommRing R
A : M
ha : IsUnit (det A)
m : ℤ
n : ℕ
ihn : A ^ (m + ↑n) = A ^ m * A ^ ↑n
⊢ A ^ (m + (↑n + 1)) = A ^ m * A ^ (↑n + 1)

tactic: rw [zpow_sub_one ha, ← mul_assoc, ← ihn, ← zpow_sub_one ha, add_sub_assoc]
state_before: case hn
n' : Type u_1
inst✝² : DecidableEq n'
inst✝¹ : Fintype n'
R : Type u_2
inst✝ : CommRing R
A : M
ha : IsUnit (det A)
m : ℤ
n : ℕ
ihn : A ^ (m + -↑n) = A ^ m * A ^ (-↑n)
⊢ A ^ (m + (-↑n - 1)) = A ^ m * A ^ (-↑n - 1)
Theorem: NormedField.punctured_nhds_neBot
File: Mathlib/Analysis/Normed/Field/Basic.lean

tactic: rw [← mem_closure_iff_nhdsWithin_neBot, Metric.mem_closure_iff]
state_before: α : Type u_1
β : Type ?u.375059
γ : Type ?u.375062
ι : Type ?u.375065
inst✝ : NontriviallyNormedField α
x : α
⊢ NeBot (𝓝[{x}ᶜ] x)

tactic: rintro ε ε0
state_before: α : Type u_1
β : Type ?u.375059
γ : Type ?u.375062
ι : Type ?u.375065
inst✝ : NontriviallyNormedField α
x : α
⊢ ∀ (ε : ℝ), ε > 0 → ∃ b, b ∈ {x}ᶜ ∧ dist x b < ε

tactic: rcases exists_norm_lt α ε0 with ⟨b, hb0, hbε⟩
state_before: α : Type u_1
β : Type ?u.375059
γ : Type ?u.375062
ι : Type ?u.375065
inst✝ : NontriviallyNormedField α
x : α
ε : ℝ
ε0 : ε > 0
⊢ ∃ b, b ∈ {x}ᶜ ∧ dist x b < ε

tactic: refine' ⟨x + b, mt (Set.mem_singleton_iff.trans add_right_eq_self).1 <| norm_pos_iff.1 hb0, _⟩
state_before: case intro.intro
α : Type u_1
β : Type ?u.375059
γ : Type ?u.375062
ι : Type ?u.375065
inst✝ : NontriviallyNormedField α
x : α
ε : ℝ
ε0 : ε > 0
b : α
hb0 : 0 < ‖b‖
hbε : ‖b‖ < ε
⊢ ∃ b, b ∈ {x}ᶜ ∧ dist x b < ε

tactic: rwa [dist_comm, dist_eq_norm, add_sub_cancel']
state_before: case intro.intro
α : Type u_1
β : Type ?u.375059
γ : Type ?u.375062
ι : Type ?u.375065
inst✝ : NontriviallyNormedField α
x : α
ε : ℝ
ε0 : ε > 0
b : α
hb0 : 0 < ‖b‖
hbε : ‖b‖ < ε
⊢ dist x (x + b) < ε
Theorem: CategoryTheory.Limits.lift_comp_kernelIsoOfEq_inv
File: Mathlib/CategoryTheory/Limits/Shapes/Kernels.lean

tactic: simp [h, he]
state_before: C : Type u
inst✝⁴ : Category C
inst✝³ : HasZeroMorphisms C
X Y : C
f✝ : X ⟶ Y
inst✝² : HasKernel f✝
Z : C
f g : X ⟶ Y
inst✝¹ : HasKernel f
inst✝ : HasKernel g
h : f = g
e : Z ⟶ X
he : e ≫ g = 0
⊢ e ≫ f = 0

tactic: cases h
state_before: C : Type u
inst✝⁴ : Category C
inst✝³ : HasZeroMorphisms C
X Y : C
f✝ : X ⟶ Y
inst✝² : HasKernel f✝
Z : C
f g : X ⟶ Y
inst✝¹ : HasKernel f
inst✝ : HasKernel g
h : f = g
e : Z ⟶ X
he : e ≫ g = 0
⊢ kernel.lift g e he ≫ (kernelIsoOfEq h).inv = kernel.lift f e (_ : e ≫ f = 0)

tactic: simp
state_before: case refl
C : Type u
inst✝⁴ : Category C
inst✝³ : HasZeroMorphisms C
X Y : C
f✝ : X ⟶ Y
inst✝² : HasKernel f✝
Z : C
f : X ⟶ Y
inst✝¹ : HasKernel f
e : Z ⟶ X
inst✝ : HasKernel f
he : e ≫ f = 0
⊢ kernel.lift f e he ≫ (kernelIsoOfEq (_ : f = f)).inv = kernel.lift f e (_ : e ≫ f = 0)
Theorem: Ordinal.lt_limit
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: simpa only [not_ball, not_le, bex_def] using not_congr (@limit_le _ h a)
state_before: α : Type ?u.91204
β : Type ?u.91207
γ : Type ?u.91210
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
o : Ordinal
h : IsLimit o
a : Ordinal
⊢ a < o ↔ ∃ x, x < o ∧ a < x
Theorem: QuadraticForm.polar_zero_left
File: Mathlib/LinearAlgebra/QuadraticForm/Basic.lean

tactic: simp only [polar, zero_add, QuadraticForm.map_zero, sub_zero, sub_self]
state_before: S : Type ?u.144337
R : Type u_1
R₁ : Type ?u.144343
M : Type u_2
inst✝³ : Ring R
inst✝² : CommRing R₁
inst✝¹ : AddCommGroup M
inst✝ : Module R M
Q : QuadraticForm R M
y : M
⊢ polar (↑Q) 0 y = 0
Theorem: Equiv.Perm.set_support_inv_eq
File: Mathlib/GroupTheory/Perm/Support.lean

tactic: ext x
state_before: α : Type u_1
p q : Perm α
⊢ {x | ↑p⁻¹ x ≠ x} = {x | ↑p x ≠ x}

tactic: simp only [Set.mem_setOf_eq, Ne.def]
state_before: case h
α : Type u_1
p q : Perm α
x : α
⊢ x ∈ {x | ↑p⁻¹ x ≠ x} ↔ x ∈ {x | ↑p x ≠ x}

tactic: rw [inv_def, symm_apply_eq, eq_comm]
state_before: case h
α : Type u_1
p q : Perm α
x : α
⊢ ¬↑p⁻¹ x = x ↔ ¬↑p x = x
Theorem: Equiv.Perm.IsCycle.exists_pow_eq
File: Mathlib/GroupTheory/Perm/Cycle/Basic.lean

tactic: let ⟨n, hn⟩ := hf.exists_zpow_eq hx hy
state_before: ι : Type ?u.377965
α : Type u_1
β : Type ?u.377971
f g : Perm α
x y : α
inst✝ : Finite α
hf : IsCycle f
hx : ↑f x ≠ x
hy : ↑f y ≠ y
⊢ ∃ i, ↑(f ^ i) x = y

tactic: classical exact
    ⟨(n % orderOf f).toNat, by
      {have := n.emod_nonneg (Int.coe_nat_ne_zero.mpr (ne_of_gt (orderOf_pos f)))
       rwa [← zpow_ofNat, Int.toNat_of_nonneg this, ← zpow_eq_mod_orderOf]}⟩
state_before: ι : Type ?u.377965
α : Type u_1
β : Type ?u.377971
f g : Perm α
x y : α
inst✝ : Finite α
hf : IsCycle f
hx : ↑f x ≠ x
hy : ↑f y ≠ y
n : ℤ
hn : ↑(f ^ n) x = y
⊢ ∃ i, ↑(f ^ i) x = y

tactic: exact
⟨(n % orderOf f).toNat, by
{have := n.emod_nonneg (Int.coe_nat_ne_zero.mpr (ne_of_gt (orderOf_pos f)))
rwa [← zpow_ofNat, Int.toNat_of_nonneg this, ← zpow_eq_mod_orderOf]}⟩
state_before: ι : Type ?u.377965
α : Type u_1
β : Type ?u.377971
f g : Perm α
x y : α
inst✝ : Finite α
hf : IsCycle f
hx : ↑f x ≠ x
hy : ↑f y ≠ y
n : ℤ
hn : ↑(f ^ n) x = y
⊢ ∃ i, ↑(f ^ i) x = y
Theorem: MeasureTheory.OuterMeasure.isCaratheodory_compl_iff
File: Mathlib/MeasureTheory/Measure/OuterMeasure.lean

tactic: simpa using isCaratheodory_compl m h
state_before: α : Type u
m : OuterMeasure α
s s₁ s₂ : Set α
h : IsCaratheodory m (sᶜ)
⊢ IsCaratheodory m s
Theorem: AddLECancellable.tsub_add_tsub_comm
File: Mathlib/Algebra/Order/Sub/Canonical.lean

tactic: rw [hb.tsub_add_eq_add_tsub hba, ← hd.add_tsub_assoc_of_le hdc, tsub_tsub, add_comm d]
state_before: α : Type u_1
inst✝⁵ : AddCommSemigroup α
inst✝⁴ : PartialOrder α
inst✝³ : ExistsAddOfLE α
inst✝² : CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
inst✝¹ : Sub α
inst✝ : OrderedSub α
a b c d : α
hb : AddLECancellable b
hd : AddLECancellable d
hba : b ≤ a
hdc : d ≤ c
⊢ a - b + (c - d) = a + c - (b + d)
Theorem: LieAlgebra.ExtendScalars.bracket_tmul
File: Mathlib/Algebra/Lie/BaseChange.lean

tactic: rw [bracket_def, bracket'_tmul]
state_before: R : Type u
A : Type w
L : Type v
inst✝⁴ : CommRing R
inst✝³ : CommRing A
inst✝² : Algebra R A
inst✝¹ : LieRing L
inst✝ : LieAlgebra R L
s t : A
x y : L
⊢ ⁅s ⊗ₜ[R] x, t ⊗ₜ[R] y⁆ = (s * t) ⊗ₜ[R] ⁅x, y⁆
Theorem: intervalIntegrable_const_iff
File: Mathlib/MeasureTheory/Integral/IntervalIntegral.lean

tactic: simp only [intervalIntegrable_iff, integrableOn_const]
state_before: ι : Type ?u.927792
𝕜 : Type ?u.927795
E : Type u_1
F : Type ?u.927801
A : Type ?u.927804
inst✝ : NormedAddCommGroup E
f : ℝ → E
a b : ℝ
μ : MeasureTheory.Measure ℝ
c : E
⊢ IntervalIntegrable (fun x => c) μ a b ↔ c = 0 ∨ ↑↑μ (Ι a b) < ⊤
Theorem: Int.modEq_neg
File: Mathlib/Data/Int/ModEq.lean

tactic: simp [modEq_iff_dvd]
state_before: m n a b c d : ℤ
⊢ a ≡ b [ZMOD -n] ↔ a ≡ b [ZMOD n]
Theorem: infinite_prod
File: Mathlib/Data/Fintype/Prod.lean

tactic: refine'
  ⟨fun H => _, fun H =>
    H.elim (and_imp.2 <| @Prod.infinite_of_left α β) (and_imp.2 <| @Prod.infinite_of_right α β)⟩
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.4496
⊢ Infinite (α × β) ↔ Infinite α ∧ Nonempty β ∨ Nonempty α ∧ Infinite β

tactic: rw [and_comm]
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.4496
H : Infinite (α × β)
⊢ Infinite α ∧ Nonempty β ∨ Nonempty α ∧ Infinite β

tactic: contrapose! H
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.4496
H : Infinite (α × β)
⊢ Nonempty β ∧ Infinite α ∨ Nonempty α ∧ Infinite β

tactic: intro H'
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.4496
H : (Nonempty β → ¬Infinite α) ∧ (Nonempty α → ¬Infinite β)
⊢ ¬Infinite (α × β)

tactic: rcases Infinite.nonempty (α × β) with ⟨a, b⟩
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.4496
H : (Nonempty β → ¬Infinite α) ∧ (Nonempty α → ¬Infinite β)
H' : Infinite (α × β)
⊢ False

tactic: haveI := fintypeOfNotInfinite (H.1 ⟨b⟩)
state_before: case intro.mk
α : Type u_2
β : Type u_1
γ : Type ?u.4496
H : (Nonempty β → ¬Infinite α) ∧ (Nonempty α → ¬Infinite β)
H' : Infinite (α × β)
a : α
b : β
⊢ False

tactic: haveI := fintypeOfNotInfinite (H.2 ⟨a⟩)
state_before: case intro.mk
α : Type u_2
β : Type u_1
γ : Type ?u.4496
H : (Nonempty β → ¬Infinite α) ∧ (Nonempty α → ¬Infinite β)
H' : Infinite (α × β)
a : α
b : β
this : Fintype α
⊢ False

tactic: exact H'.false
state_before: case intro.mk
α : Type u_2
β : Type u_1
γ : Type ?u.4496
H : (Nonempty β → ¬Infinite α) ∧ (Nonempty α → ¬Infinite β)
H' : Infinite (α × β)
a : α
b : β
this✝ : Fintype α
this : Fintype β
⊢ False
Theorem: AlternatingMap.compLinearMap_injective
File: Mathlib/LinearAlgebra/Alternating.lean

tactic: simpa [Function.surjInv_eq hf] using ext_iff.mp h (Function.surjInv hf ∘ x)
state_before: R : Type u_1
inst✝¹⁴ : Semiring R
M : Type u_3
inst✝¹³ : AddCommMonoid M
inst✝¹² : Module R M
N : Type u_4
inst✝¹¹ : AddCommMonoid N
inst✝¹⁰ : Module R N
P : Type ?u.370920
inst✝⁹ : AddCommMonoid P
inst✝⁸ : Module R P
M' : Type ?u.370950
inst✝⁷ : AddCommGroup M'
inst✝⁶ : Module R M'
N' : Type ?u.371338
inst✝⁵ : AddCommGroup N'
inst✝⁴ : Module R N'
ι : Type u_5
ι' : Type ?u.371729
ι'' : Type ?u.371732
M₂ : Type u_2
inst✝³ : AddCommMonoid M₂
inst✝² : Module R M₂
M₃ : Type ?u.371765
inst✝¹ : AddCommMonoid M₃
inst✝ : Module R M₃
f : M₂ →ₗ[R] M
hf : Function.Surjective ↑f
g₁ g₂ : AlternatingMap R M N ι
h : (fun g => compLinearMap g f) g₁ = (fun g => compLinearMap g f) g₂
x : ι → M
⊢ ↑g₁ x = ↑g₂ x
Theorem: Finsupp.toMultiset_single
File: Mathlib/Data/Finsupp/Multiset.lean

tactic: rw [toMultiset_apply, sum_single_index]
state_before: α : Type u_1
β : Type ?u.10567
ι : Type ?u.10570
a : α
n : ℕ
⊢ ↑toMultiset (single a n) = n • {a}

tactic: apply zero_nsmul
state_before: α : Type u_1
β : Type ?u.10567
ι : Type ?u.10570
a : α
n : ℕ
⊢ 0 • {a} = 0
Theorem: finAddFlip_apply_natAdd
File: Mathlib/Logic/Equiv/Fin.lean

tactic: simp [finAddFlip]
state_before: m✝ n : ℕ
k : Fin n
m : ℕ
⊢ ↑finAddFlip (↑(Fin.natAdd m) k) = ↑(Fin.castAdd m) k
Theorem: Configuration.ProjectivePlane.pointCount_eq_pointCount
File: Mathlib/Combinatorics/Configuration.lean

tactic: apply lineCount_eq_lineCount (Dual P)
state_before: P : Type u_1
L : Type u_2
inst✝³ : Membership P L
inst✝² : ProjectivePlane P L
inst✝¹ : Finite P
inst✝ : Finite L
l m : L
⊢ pointCount P l = pointCount P m
Theorem: LinearPMap.mem_graph_snd_inj'
File: Mathlib/LinearAlgebra/LinearPMap.lean

tactic: cases x
state_before: R : Type u_1
inst✝⁹ : Ring R
E : Type u_2
inst✝⁸ : AddCommGroup E
inst✝⁷ : Module R E
F : Type u_3
inst✝⁶ : AddCommGroup F
inst✝⁵ : Module R F
G : Type ?u.558597
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
M : Type ?u.559113
inst✝² : Monoid M
inst✝¹ : DistribMulAction M F
inst✝ : SMulCommClass R M F
y✝ : M
f : E →ₗ.[R] F
x y : E × F
hx : x ∈ graph f
hy : y ∈ graph f
hxy : x.fst = y.fst
⊢ x.snd = y.snd

tactic: cases y
state_before: case mk
R : Type u_1
inst✝⁹ : Ring R
E : Type u_2
inst✝⁸ : AddCommGroup E
inst✝⁷ : Module R E
F : Type u_3
inst✝⁶ : AddCommGroup F
inst✝⁵ : Module R F
G : Type ?u.558597
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
M : Type ?u.559113
inst✝² : Monoid M
inst✝¹ : DistribMulAction M F
inst✝ : SMulCommClass R M F
y✝ : M
f : E →ₗ.[R] F
y : E × F
hy : y ∈ graph f
fst✝ : E
snd✝ : F
hx : (fst✝, snd✝) ∈ graph f
hxy : (fst✝, snd✝).fst = y.fst
⊢ (fst✝, snd✝).snd = y.snd

tactic: exact f.mem_graph_snd_inj hx hy hxy
state_before: case mk.mk
R : Type u_1
inst✝⁹ : Ring R
E : Type u_2
inst✝⁸ : AddCommGroup E
inst✝⁷ : Module R E
F : Type u_3
inst✝⁶ : AddCommGroup F
inst✝⁵ : Module R F
G : Type ?u.558597
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
M : Type ?u.559113
inst✝² : Monoid M
inst✝¹ : DistribMulAction M F
inst✝ : SMulCommClass R M F
y : M
f : E →ₗ.[R] F
fst✝¹ : E
snd✝¹ : F
hx : (fst✝¹, snd✝¹) ∈ graph f
fst✝ : E
snd✝ : F
hy : (fst✝, snd✝) ∈ graph f
hxy : (fst✝¹, snd✝¹).fst = (fst✝, snd✝).fst
⊢ (fst✝¹, snd✝¹).snd = (fst✝, snd✝).snd
Theorem: Matrix.single_vecMul_diagonal
File: Mathlib/Data/Matrix/Basic.lean

tactic: ext i
state_before: l : Type ?u.881533
m : Type ?u.881536
n : Type u_1
o : Type ?u.881542
m' : o → Type ?u.881547
n' : o → Type ?u.881552
R : Type u_2
S : Type ?u.881558
α : Type v
β : Type w
γ : Type ?u.881565
inst✝³ : NonUnitalNonAssocSemiring α
inst✝² : Fintype n
inst✝¹ : DecidableEq n
inst✝ : NonUnitalNonAssocSemiring R
v : n → R
j : n
x : R
⊢ vecMul (Pi.single j x) (diagonal v) = Pi.single j (x * v j)

tactic: rw [vecMul_diagonal]
state_before: case h
l : Type ?u.881533
m : Type ?u.881536
n : Type u_1
o : Type ?u.881542
m' : o → Type ?u.881547
n' : o → Type ?u.881552
R : Type u_2
S : Type ?u.881558
α : Type v
β : Type w
γ : Type ?u.881565
inst✝³ : NonUnitalNonAssocSemiring α
inst✝² : Fintype n
inst✝¹ : DecidableEq n
inst✝ : NonUnitalNonAssocSemiring R
v : n → R
j : n
x : R
i : n
⊢ vecMul (Pi.single j x) (diagonal v) i = Pi.single j (x * v j) i

tactic: exact Pi.apply_single (fun i x => x * v i) (fun i => MulZeroClass.zero_mul _) j x i
state_before: case h
l : Type ?u.881533
m : Type ?u.881536
n : Type u_1
o : Type ?u.881542
m' : o → Type ?u.881547
n' : o → Type ?u.881552
R : Type u_2
S : Type ?u.881558
α : Type v
β : Type w
γ : Type ?u.881565
inst✝³ : NonUnitalNonAssocSemiring α
inst✝² : Fintype n
inst✝¹ : DecidableEq n
inst✝ : NonUnitalNonAssocSemiring R
v : n → R
j : n
x : R
i : n
⊢ Pi.single j x i * v i = Pi.single j (x * v j) i
Theorem: Real.Angle.coe_int_mul_eq_zsmul
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Angle.lean

tactic: simpa only [zsmul_eq_mul] using coeHom.map_zsmul x n
state_before: x : ℝ
n : ℤ
⊢ ↑(↑n * x) = n • ↑x
Theorem: contDiff_succ_iff_fderiv_apply
File: Mathlib/Analysis/Calculus/ContDiff.lean

tactic: rw [contDiff_succ_iff_fderiv, contDiff_clm_apply_iff]
state_before: 𝕜 : Type u_1
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.2834577
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
inst✝¹ : CompleteSpace 𝕜
inst✝ : FiniteDimensional 𝕜 E
n : ℕ
f : E → F
⊢ ContDiff 𝕜 (↑(n + 1)) f ↔ Differentiable 𝕜 f ∧ ∀ (y : E), ContDiff 𝕜 ↑n fun x => ↑(fderiv 𝕜 f x) y
Theorem: ite_id
File: Std/Logic.lean

tactic: split <;> rfl
state_before: c : Prop
inst✝ : Decidable c
α : Sort u_1
t : α
⊢ (if c then t else t) = t
Theorem: Polynomial.content_one
File: Mathlib/RingTheory/Polynomial/Content.lean

tactic: rw [← C_1, content_C, normalize_one]
state_before: R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
⊢ content 1 = 1