1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Polynomial.coeff_reflect
File: Mathlib/Algebra/Polynomial/Reverse.lean

tactic: rcases f with ⟨f⟩
state_before: R : Type u_1
inst✝ : Semiring R
f✝ : R[X]
N : ℕ
f : R[X]
i : ℕ
⊢ (reflect N f).coeff i = f.coeff ((revAt N) i)
state_after: case ofFinsupp
R : Type u_1
inst✝ : Semiring R
f✝ : R[X]
N i : ℕ
f : AddMonoidAlgebra R ℕ
⊢ (reflect N { toFinsupp := f }).coeff i = { toFinsupp := f }.coeff ((revAt N) i)

tactic: simp only [reflect, coeff]
state_before: case ofFinsupp
R : Type u_1
inst✝ : Semiring R
f✝ : R[X]
N i : ℕ
f : AddMonoidAlgebra R ℕ
⊢ (reflect N { toFinsupp := f }).coeff i = { toFinsupp := f }.coeff ((revAt N) i)
state_after: case ofFinsupp
R : Type u_1
inst✝ : Semiring R
f✝ : R[X]
N i : ℕ
f : AddMonoidAlgebra R ℕ
⊢ (embDomain (revAt N) f) i = f ((revAt N) i)

tactic: calc
  Finsupp.embDomain (revAt N) f i = Finsupp.embDomain (revAt N) f (revAt N (revAt N i)) := by
    rw [revAt_invol]
  _ = f (revAt N i) := Finsupp.embDomain_apply _ _ _
state_before: case ofFinsupp
R : Type u_1
inst✝ : Semiring R
f✝ : R[X]
N i : ℕ
f : AddMonoidAlgebra R ℕ
⊢ (embDomain (revAt N) f) i = f ((revAt N) i)
state_after: no goals

tactic: rw [revAt_invol]
state_before: R : Type u_1
inst✝ : Semiring R
f✝ : R[X]
N i : ℕ
f : AddMonoidAlgebra R ℕ
⊢ (embDomain (revAt N) f) i = (embDomain (revAt N) f) ((revAt N) ((revAt N) i))
state_after: no goals
Theorem: integral_sin_pow
File: Mathlib/Analysis/SpecialFunctions/Integrals.lean

tactic: field_simp
state_before: a b : ℝ
n : ℕ
⊢ ∫ (x : ℝ) in a..b, sin x ^ (n + 2) =
    (sin a ^ (n + 1) * cos a - sin b ^ (n + 1) * cos b) / (↑n + 2) + (↑n + 1) / (↑n + 2) * ∫ (x : ℝ) in a..b, sin x ^ n
state_after: a b : ℝ
n : ℕ
⊢ (∫ (x : ℝ) in a..b, sin x ^ (n + 2)) * (↑n + 2) =
    sin a ^ (n + 1) * cos a - sin b ^ (n + 1) * cos b + (↑n + 1) * ∫ (x : ℝ) in a..b, sin x ^ n

tactic: convert eq_sub_iff_add_eq.mp (integral_sin_pow_aux n) using 1
state_before: a b : ℝ
n : ℕ
⊢ (∫ (x : ℝ) in a..b, sin x ^ (n + 2)) * (↑n + 2) =
    sin a ^ (n + 1) * cos a - sin b ^ (n + 1) * cos b + (↑n + 1) * ∫ (x : ℝ) in a..b, sin x ^ n
state_after: case h.e'_2
a b : ℝ
n : ℕ
⊢ (∫ (x : ℝ) in a..b, sin x ^ (n + 2)) * (↑n + 2) =
    (∫ (x : ℝ) in a..b, sin x ^ (n + 2)) + (↑n + 1) * ∫ (x : ℝ) in a..b, sin x ^ (n + 2)

tactic: ring
state_before: case h.e'_2
a b : ℝ
n : ℕ
⊢ (∫ (x : ℝ) in a..b, sin x ^ (n + 2)) * (↑n + 2) =
    (∫ (x : ℝ) in a..b, sin x ^ (n + 2)) + (↑n + 1) * ∫ (x : ℝ) in a..b, sin x ^ (n + 2)
state_after: no goals
Theorem: Set.ncard_union_le
File: Mathlib/Data/Set/Card.lean

tactic: obtain (h | h) := (s ∪ t).finite_or_infinite
state_before: α : Type u_1
β : Type u_2
s✝ t✝ : Set α
f : α → β
s t : Set α
⊢ (s ∪ t).ncard ≤ s.ncard + t.ncard
state_after: case inl
α : Type u_1
β : Type u_2
s✝ t✝ : Set α
f : α → β
s t : Set α
h : (s ∪ t).Finite
⊢ (s ∪ t).ncard ≤ s.ncard + t.ncard

case inr
α : Type u_1
β : Type u_2
s✝ t✝ : Set α
f : α → β
s t : Set α
h : (s ∪ t).Infinite
⊢ (s ∪ t).ncard ≤ s.ncard + t.ncard

tactic: rw [h.ncard]
state_before: case inr
α : Type u_1
β : Type u_2
s✝ t✝ : Set α
f : α → β
s t : Set α
h : (s ∪ t).Infinite
⊢ (s ∪ t).ncard ≤ s.ncard + t.ncard
state_after: case inr
α : Type u_1
β : Type u_2
s✝ t✝ : Set α
f : α → β
s t : Set α
h : (s ∪ t).Infinite
⊢ 0 ≤ s.ncard + t.ncard

tactic: apply zero_le
state_before: case inr
α : Type u_1
β : Type u_2
s✝ t✝ : Set α
f : α → β
s t : Set α
h : (s ∪ t).Infinite
⊢ 0 ≤ s.ncard + t.ncard
state_after: no goals

tactic: to_encard_tac
state_before: case inl
α : Type u_1
β : Type u_2
s✝ t✝ : Set α
f : α → β
s t : Set α
h : (s ∪ t).Finite
⊢ (s ∪ t).ncard ≤ s.ncard + t.ncard
state_after: case inl
α : Type u_1
β : Type u_2
s✝ t✝ : Set α
f : α → β
s t : Set α
h : (s ∪ t).Finite
⊢ ↑(s ∪ t).ncard ≤ ↑s.ncard + ↑t.ncard

tactic: rw [h.cast_ncard_eq, (h.subset subset_union_left).cast_ncard_eq,
  (h.subset subset_union_right).cast_ncard_eq]
state_before: case inl
α : Type u_1
β : Type u_2
s✝ t✝ : Set α
f : α → β
s t : Set α
h : (s ∪ t).Finite
⊢ ↑(s ∪ t).ncard ≤ ↑s.ncard + ↑t.ncard
state_after: case inl
α : Type u_1
β : Type u_2
s✝ t✝ : Set α
f : α → β
s t : Set α
h : (s ∪ t).Finite
⊢ (s ∪ t).encard ≤ s.encard + t.encard

tactic: apply encard_union_le
state_before: case inl
α : Type u_1
β : Type u_2
s✝ t✝ : Set α
f : α → β
s t : Set α
h : (s ∪ t).Finite
⊢ (s ∪ t).encard ≤ s.encard + t.encard
state_after: no goals
Theorem: Complex.cos_two_mul'
File: Mathlib/Data/Complex/Exponential.lean

tactic: rw [two_mul, cos_add, ← sq, ← sq]
state_before: x y : ℂ
⊢ cos (2 * x) = cos x ^ 2 - sin x ^ 2
state_after: no goals
Theorem: MonoidHom.subgroupOf_range_eq_of_le
File: Mathlib/Algebra/Group/Subgroup/Basic.lean

tactic: ext k
state_before: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁷ : Group G
inst✝⁶ : Group G'
inst✝⁵ : Group G''
A : Type u_4
inst✝⁴ : AddGroup A
N : Type u_5
P : Type u_6
inst✝³ : Group N
inst✝² : Group P
K✝ : Subgroup G
G₁ : Type u_7
G₂ : Type u_8
inst✝¹ : Group G₁
inst✝ : Group G₂
K : Subgroup G₂
f : G₁ →* G₂
h : f.range ≤ K
⊢ f.range.subgroupOf K = (f.codRestrict K ⋯).range
state_after: case h
G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁷ : Group G
inst✝⁶ : Group G'
inst✝⁵ : Group G''
A : Type u_4
inst✝⁴ : AddGroup A
N : Type u_5
P : Type u_6
inst✝³ : Group N
inst✝² : Group P
K✝ : Subgroup G
G₁ : Type u_7
G₂ : Type u_8
inst✝¹ : Group G₁
inst✝ : Group G₂
K : Subgroup G₂
f : G₁ →* G₂
h : f.range ≤ K
k : ↥K
⊢ k ∈ f.range.subgroupOf K ↔ k ∈ (f.codRestrict K ⋯).range

tactic: refine exists_congr ?_
state_before: case h
G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁷ : Group G
inst✝⁶ : Group G'
inst✝⁵ : Group G''
A : Type u_4
inst✝⁴ : AddGroup A
N : Type u_5
P : Type u_6
inst✝³ : Group N
inst✝² : Group P
K✝ : Subgroup G
G₁ : Type u_7
G₂ : Type u_8
inst✝¹ : Group G₁
inst✝ : Group G₂
K : Subgroup G₂
f : G₁ →* G₂
h : f.range ≤ K
k : ↥K
⊢ k ∈ f.range.subgroupOf K ↔ k ∈ (f.codRestrict K ⋯).range
state_after: case h
G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁷ : Group G
inst✝⁶ : Group G'
inst✝⁵ : Group G''
A : Type u_4
inst✝⁴ : AddGroup A
N : Type u_5
P : Type u_6
inst✝³ : Group N
inst✝² : Group P
K✝ : Subgroup G
G₁ : Type u_7
G₂ : Type u_8
inst✝¹ : Group G₁
inst✝ : Group G₂
K : Subgroup G₂
f : G₁ →* G₂
h : f.range ≤ K
k : ↥K
⊢ ∀ (a : G₁), f a = K.subtype k ↔ (f.codRestrict K ⋯) a = k

tactic: simp [Subtype.ext_iff]
state_before: case h
G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁷ : Group G
inst✝⁶ : Group G'
inst✝⁵ : Group G''
A : Type u_4
inst✝⁴ : AddGroup A
N : Type u_5
P : Type u_6
inst✝³ : Group N
inst✝² : Group P
K✝ : Subgroup G
G₁ : Type u_7
G₂ : Type u_8
inst✝¹ : Group G₁
inst✝ : Group G₂
K : Subgroup G₂
f : G₁ →* G₂
h : f.range ≤ K
k : ↥K
⊢ ∀ (a : G₁), f a = K.subtype k ↔ (f.codRestrict K ⋯) a = k
state_after: no goals
Theorem: HomogeneousIdeal.toIdeal_iInf
File: Mathlib/RingTheory/GradedAlgebra/HomogeneousIdeal.lean

tactic: rw [iInf, toIdeal_sInf, iInf_range]
state_before: ι : Type u_1
σ : Type u_2
R : Type u_3
A : Type u_4
inst✝⁵ : Semiring A
inst✝⁴ : DecidableEq ι
inst✝³ : AddMonoid ι
inst✝² : SetLike σ A
inst✝¹ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝ : GradedRing 𝒜
κ : Sort u_5
s : κ → HomogeneousIdeal 𝒜
⊢ (⨅ i, s i).toIdeal = ⨅ i, (s i).toIdeal
state_after: no goals
Theorem: FiberwiseLinear.target_trans_partialHomeomorph
File: Mathlib/Geometry/Manifold/VectorBundle/FiberwiseLinear.lean

tactic: dsimp only [FiberwiseLinear.partialHomeomorph]
state_before: 𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝³ : TopologicalSpace B
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
φ φ' : B → F ≃L[𝕜] F
U U' : Set B
hU : IsOpen U
hφ : ContinuousOn (fun x => ↑(φ x)) U
h2φ : ContinuousOn (fun x => ↑(φ x).symm) U
hU' : IsOpen U'
hφ' : ContinuousOn (fun x => ↑(φ' x)) U'
h2φ' : ContinuousOn (fun x => ↑(φ' x).symm) U'
⊢ (partialHomeomorph φ hU hφ h2φ ≫ₕ partialHomeomorph φ' hU' hφ' h2φ').target = (U ∩ U') ×ˢ univ
state_after: 𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝³ : TopologicalSpace B
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
φ φ' : B → F ≃L[𝕜] F
U U' : Set B
hU : IsOpen U
hφ : ContinuousOn (fun x => ↑(φ x)) U
h2φ : ContinuousOn (fun x => ↑(φ x).symm) U
hU' : IsOpen U'
hφ' : ContinuousOn (fun x => ↑(φ' x)) U'
h2φ' : ContinuousOn (fun x => ↑(φ' x).symm) U'
⊢ ({ toFun := fun x => (x.1, (φ x.1) x.2), invFun := fun x => (x.1, (φ x.1).symm x.2), source := U ×ˢ univ,
          target := U ×ˢ univ, map_source' := ⋯, map_target' := ⋯, left_inv' := ⋯, right_inv' := ⋯, open_source := ⋯,
          open_target := ⋯, continuousOn_toFun := ⋯, continuousOn_invFun := ⋯ } ≫ₕ
        { toFun := fun x => (x.1, (φ' x.1) x.2), invFun := fun x => (x.1, (φ' x.1).symm x.2), source := U' ×ˢ univ,
          target := U' ×ˢ univ, map_source' := ⋯, map_target' := ⋯, left_inv' := ⋯, right_inv' := ⋯, open_source := ⋯,
          open_target := ⋯, continuousOn_toFun := ⋯, continuousOn_invFun := ⋯ }).target =
    (U ∩ U') ×ˢ univ

tactic: mfld_set_tac
state_before: 𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝³ : TopologicalSpace B
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
φ φ' : B → F ≃L[𝕜] F
U U' : Set B
hU : IsOpen U
hφ : ContinuousOn (fun x => ↑(φ x)) U
h2φ : ContinuousOn (fun x => ↑(φ x).symm) U
hU' : IsOpen U'
hφ' : ContinuousOn (fun x => ↑(φ' x)) U'
h2φ' : ContinuousOn (fun x => ↑(φ' x).symm) U'
⊢ ({ toFun := fun x => (x.1, (φ x.1) x.2), invFun := fun x => (x.1, (φ x.1).symm x.2), source := U ×ˢ univ,
          target := U ×ˢ univ, map_source' := ⋯, map_target' := ⋯, left_inv' := ⋯, right_inv' := ⋯, open_source := ⋯,
          open_target := ⋯, continuousOn_toFun := ⋯, continuousOn_invFun := ⋯ } ≫ₕ
        { toFun := fun x => (x.1, (φ' x.1) x.2), invFun := fun x => (x.1, (φ' x.1).symm x.2), source := U' ×ˢ univ,
          target := U' ×ˢ univ, map_source' := ⋯, map_target' := ⋯, left_inv' := ⋯, right_inv' := ⋯, open_source := ⋯,
          open_target := ⋯, continuousOn_toFun := ⋯, continuousOn_invFun := ⋯ }).target =
    (U ∩ U') ×ˢ univ
state_after: no goals
Theorem: Order.pred_le_le_iff
File: Mathlib/Order/SuccPred/Basic.lean

tactic: refine
  ⟨fun h =>
    or_iff_not_imp_left.2 fun hba : b ≠ a => (le_pred_of_lt <| h.2.lt_of_ne hba).antisymm h.1, ?_⟩
state_before: α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PredOrder α
a✝ b✝ a b : α
⊢ pred a ≤ b ∧ b ≤ a ↔ b = a ∨ b = pred a
state_after: α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PredOrder α
a✝ b✝ a b : α
⊢ b = a ∨ b = pred a → pred a ≤ b ∧ b ≤ a

tactic: rintro (rfl | rfl)
state_before: α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PredOrder α
a✝ b✝ a b : α
⊢ b = a ∨ b = pred a → pred a ≤ b ∧ b ≤ a
state_after: case inl
α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PredOrder α
a b✝ b : α
⊢ pred b ≤ b ∧ b ≤ b

case inr
α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PredOrder α
a✝ b a : α
⊢ pred a ≤ pred a ∧ pred a ≤ a

tactic: exact ⟨pred_le b, le_rfl⟩
state_before: case inl
α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PredOrder α
a b✝ b : α
⊢ pred b ≤ b ∧ b ≤ b
state_after: no goals

tactic: exact ⟨le_rfl, pred_le a⟩
state_before: case inr
α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PredOrder α
a✝ b a : α
⊢ pred a ≤ pred a ∧ pred a ≤ a
state_after: no goals
Theorem: continuousSMul_sInf
File: Mathlib/Topology/Algebra/MulAction.lean

tactic: exact
  continuous_sInf_rng.2 fun t ht =>
    continuous_sInf_dom₂ (Eq.refl _) ht
      (@ContinuousSMul.continuous_smul _ _ _ _ t (h t ht))
state_before: ι : Sort u_1
M : Type u_2
X : Type u_3
inst✝¹ : TopologicalSpace M
inst✝ : SMul M X
ts : Set (TopologicalSpace X)
h : ∀ t ∈ ts, ContinuousSMul M X
⊢ Continuous fun p => p.1 • p.2
state_after: no goals
Theorem: Multiset.powersetAux_perm_powersetAux'
File: Mathlib/Data/Multiset/Powerset.lean

tactic: rw [powersetAux_eq_map_coe]
state_before: α : Type u_1
l : List α
⊢ powersetAux l ~ powersetAux' l
state_after: α : Type u_1
l : List α
⊢ List.map ofList l.sublists ~ powersetAux' l

tactic: exact (sublists_perm_sublists' _).map _
state_before: α : Type u_1
l : List α
⊢ List.map ofList l.sublists ~ powersetAux' l
state_after: no goals
Theorem: Filter.tendsto_const_mul_pow_atBot_iff
File: Mathlib/Order/Filter/AtTopBot.lean

tactic: simp only [← tendsto_neg_atTop_iff, ← neg_mul, tendsto_const_mul_pow_atTop_iff, neg_pos]
state_before: ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : LinearOrderedField α
l : Filter β
f : β → α
r c : α
n : ℕ
⊢ Tendsto (fun x => c * x ^ n) atTop atBot ↔ n ≠ 0 ∧ c < 0
state_after: no goals
Theorem: DFinsupp.filter_single_neg
File: Mathlib/Data/DFinsupp/Basic.lean

tactic: rw [filter_single, if_neg h]
state_before: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝² : DecidableEq ι
inst✝¹ : (i : ι) → Zero (β i)
s : Finset ι
x✝ : (i : ↑↑s) → β ↑i
i✝ : ι
p : ι → Prop
inst✝ : DecidablePred p
i : ι
x : β i
h : ¬p i
⊢ filter p (single i x) = 0
state_after: no goals
Theorem: isPrimitiveRoot_of_mem_primitiveRoots
File: Mathlib/RingTheory/RootsOfUnity/Basic.lean

tactic: simp [hk] at h
state_before: M : Type u_1
N : Type u_2
G : Type u_3
R : Type u_4
S : Type u_5
F : Type u_6
inst✝⁴ : CommMonoid M
inst✝³ : CommMonoid N
inst✝² : DivisionCommMonoid G
k : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
ζ : R
h : ζ ∈ primitiveRoots k R
hk : k = 0
⊢ IsPrimitiveRoot ζ k
state_after: no goals
Theorem: Order.isIdeal_sUnion_of_directedOn
File: Mathlib/Order/Ideal.lean

tactic: refine ⟨isLowerSet_sUnion (fun I hI ↦ (hidl I hI).1), Set.nonempty_sUnion.2 ?_,
  directedOn_sUnion hD (fun J hJ => (hidl J hJ).3)⟩
state_before: P : Type u_1
inst✝ : Preorder P
C : Set (Set P)
hidl : ∀ I ∈ C, IsIdeal I
hD : DirectedOn (fun x x_1 => x ⊆ x_1) C
hNe : C.Nonempty
⊢ IsIdeal (⋃₀ C)
state_after: P : Type u_1
inst✝ : Preorder P
C : Set (Set P)
hidl : ∀ I ∈ C, IsIdeal I
hD : DirectedOn (fun x x_1 => x ⊆ x_1) C
hNe : C.Nonempty
⊢ ∃ s ∈ C, s.Nonempty

tactic: let ⟨I, hI⟩ := hNe
state_before: P : Type u_1
inst✝ : Preorder P
C : Set (Set P)
hidl : ∀ I ∈ C, IsIdeal I
hD : DirectedOn (fun x x_1 => x ⊆ x_1) C
hNe : C.Nonempty
⊢ ∃ s ∈ C, s.Nonempty
state_after: P : Type u_1
inst✝ : Preorder P
C : Set (Set P)
hidl : ∀ I ∈ C, IsIdeal I
hD : DirectedOn (fun x x_1 => x ⊆ x_1) C
hNe : C.Nonempty
I : Set P
hI : I ∈ C
⊢ ∃ s ∈ C, s.Nonempty

tactic: exact ⟨I, ⟨hI, (hidl I hI).2⟩⟩
state_before: P : Type u_1
inst✝ : Preorder P
C : Set (Set P)
hidl : ∀ I ∈ C, IsIdeal I
hD : DirectedOn (fun x x_1 => x ⊆ x_1) C
hNe : C.Nonempty
I : Set P
hI : I ∈ C
⊢ ∃ s ∈ C, s.Nonempty
state_after: no goals
Theorem: Set.Infinite.exists_subset_card_eq
File: Mathlib/Data/Set/Finite.lean

tactic: simp
state_before: α : Type u
β : Type v
ι : Sort w
γ : Type x
s✝ t s : Set α
hs : s.Infinite
n : ℕ
⊢ ↑(Finset.map (Embedding.subtype fun x => x ∈ s) (Finset.map (natEmbedding s hs) (Finset.range n))) ⊆ s ∧
    (Finset.map (Embedding.subtype fun x => x ∈ s) (Finset.map (natEmbedding s hs) (Finset.range n))).card = n
state_after: no goals
Theorem: SimpleGraph.not_cliqueFree_card_of_top_embedding
File: Mathlib/Combinatorics/SimpleGraph/Clique.lean

tactic: rw [not_cliqueFree_iff]
state_before: α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
inst✝ : Fintype α
f : ⊤ ↪g G
⊢ ¬G.CliqueFree (Fintype.card α)
state_after: α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
inst✝ : Fintype α
f : ⊤ ↪g G
⊢ Nonempty (⊤ ↪g G)

tactic: exact ⟨(Iso.completeGraph (Fintype.equivFin α)).symm.toEmbedding.trans f⟩
state_before: α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
inst✝ : Fintype α
f : ⊤ ↪g G
⊢ Nonempty (⊤ ↪g G)
state_after: no goals
Theorem: CochainComplex.HomComplex.Cochain.ofHom_sub
File: Mathlib/Algebra/Homology/HomotopyCategory/HomComplex.lean

tactic: aesop_cat
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
F G K L : CochainComplex C ℤ
n m : ℤ
φ₁ φ₂ : F ⟶ G
⊢ ofHom (φ₁ - φ₂) = ofHom φ₁ - ofHom φ₂
state_after: no goals
Theorem: Irrational.mul_rat
File: Mathlib/Data/Real/Irrational.lean

tactic: rwa [mul_assoc, ← cast_mul, mul_inv_cancel hq, cast_one, mul_one]
state_before: q✝ : ℚ
x y : ℝ
h : Irrational x
q : ℚ
hq : q ≠ 0
⊢ Irrational (x * ↑q * ↑q⁻¹)
state_after: no goals
Theorem: Set.iUnion_of_singleton
File: Mathlib/Data/Set/Lattice.lean

tactic: simp [Set.ext_iff]
state_before: α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
α : Type u_11
⊢ ⋃ x, {x} = univ
state_after: no goals
Theorem: Finset.Colex.toColex_image_le_toColex_image
File: Mathlib/Combinatorics/Colex.lean

tactic: simp [toColex_le_toColex, hf.le_iff_le, hf.injective.eq_iff]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : LinearOrder α
inst✝ : LinearOrder β
f : α → β
𝒜 𝒜₁ 𝒜₂ : Finset (Finset α)
s t u : Finset α
a b : α
r : ℕ
hf : StrictMono f
⊢ { ofColex := image f s } ≤ { ofColex := image f t } ↔ { ofColex := s } ≤ { ofColex := t }
state_after: no goals
Theorem: piecewise_ae_eq_restrict
File: Mathlib/MeasureTheory/Measure/Restrict.lean

tactic: rw [ae_restrict_eq hs]
state_before: R : Type u_1
α : Type u_2
β : Type u_3
δ : Type u_4
γ : Type u_5
ι : Type u_6
inst✝¹ : MeasurableSpace α
μ : Measure α
s t : Set α
f g : α → β
inst✝ : DecidablePred fun x => x ∈ s
hs : MeasurableSet s
⊢ s.piecewise f g =ᶠ[ae (μ.restrict s)] f
state_after: R : Type u_1
α : Type u_2
β : Type u_3
δ : Type u_4
γ : Type u_5
ι : Type u_6
inst✝¹ : MeasurableSpace α
μ : Measure α
s t : Set α
f g : α → β
inst✝ : DecidablePred fun x => x ∈ s
hs : MeasurableSet s
⊢ s.piecewise f g =ᶠ[ae μ ⊓ 𝓟 s] f

tactic: exact (piecewise_eqOn s f g).eventuallyEq.filter_mono inf_le_right
state_before: R : Type u_1
α : Type u_2
β : Type u_3
δ : Type u_4
γ : Type u_5
ι : Type u_6
inst✝¹ : MeasurableSpace α
μ : Measure α
s t : Set α
f g : α → β
inst✝ : DecidablePred fun x => x ∈ s
hs : MeasurableSet s
⊢ s.piecewise f g =ᶠ[ae μ ⊓ 𝓟 s] f
state_after: no goals
Theorem: ENNReal.mul_comm_div
File: Mathlib/Data/ENNReal/Inv.lean

tactic: simp only [div_eq_mul_inv, mul_right_comm, ← mul_assoc]
state_before: a b c d : ℝ≥0∞
r p q : ℝ≥0
⊢ a / b * c = a * (c / b)
state_after: no goals
Theorem: SemiNormedGrp.explicitCokernelDesc_comp_eq_desc
File: Mathlib/Analysis/Normed/Group/SemiNormedGrp/Kernels.lean

tactic: rw [← CategoryTheory.Category.assoc, cond', Limits.zero_comp]
state_before: X Y Z W : SemiNormedGrp
f : X ⟶ Y
g : Y ⟶ Z
h : Z ⟶ W
cond' : f ≫ g = 0
⊢ f ≫ g ≫ h = 0
state_after: no goals

tactic: refine explicitCokernelDesc_unique _ _ ?_
state_before: X Y Z W : SemiNormedGrp
f : X ⟶ Y
g : Y ⟶ Z
h : Z ⟶ W
cond' : f ≫ g = 0
⊢ explicitCokernelDesc cond' ≫ h = explicitCokernelDesc ⋯
state_after: X Y Z W : SemiNormedGrp
f : X ⟶ Y
g : Y ⟶ Z
h : Z ⟶ W
cond' : f ≫ g = 0
⊢ explicitCokernelπ f ≫ explicitCokernelDesc cond' ≫ h = g ≫ h

tactic: rw [← CategoryTheory.Category.assoc, explicitCokernelπ_desc]
state_before: X Y Z W : SemiNormedGrp
f : X ⟶ Y
g : Y ⟶ Z
h : Z ⟶ W
cond' : f ≫ g = 0
⊢ explicitCokernelπ f ≫ explicitCokernelDesc cond' ≫ h = g ≫ h
state_after: no goals
Theorem: TopologicalGroup.t2Space_of_one_sep
File: Mathlib/Topology/Algebra/Group/Basic.lean

tactic: suffices T1Space G from inferInstance
state_before: G : Type w
H✝ : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
H : ∀ (x : G), x ≠ 1 → ∃ U ∈ 𝓝 1, x ∉ U
⊢ T2Space G
state_after: G : Type w
H✝ : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
H : ∀ (x : G), x ≠ 1 → ∃ U ∈ 𝓝 1, x ∉ U
⊢ T1Space G

tactic: refine t1Space_iff_specializes_imp_eq.2 fun x y hspec ↦ by_contra fun hne ↦ ?_
state_before: G : Type w
H✝ : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
H : ∀ (x : G), x ≠ 1 → ∃ U ∈ 𝓝 1, x ∉ U
⊢ T1Space G
state_after: G : Type w
H✝ : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
H : ∀ (x : G), x ≠ 1 → ∃ U ∈ 𝓝 1, x ∉ U
x y : G
hspec : x ⤳ y
hne : ¬x = y
⊢ False

tactic: rcases H (x * y⁻¹) (by rwa [Ne, mul_inv_eq_one]) with ⟨U, hU₁, hU⟩
state_before: G : Type w
H✝ : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
H : ∀ (x : G), x ≠ 1 → ∃ U ∈ 𝓝 1, x ∉ U
x y : G
hspec : x ⤳ y
hne : ¬x = y
⊢ False
state_after: case intro.intro
G : Type w
H✝ : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
H : ∀ (x : G), x ≠ 1 → ∃ U ∈ 𝓝 1, x ∉ U
x y : G
hspec : x ⤳ y
hne : ¬x = y
U : Set G
hU₁ : U ∈ 𝓝 1
hU : x * y⁻¹ ∉ U
⊢ False

tactic: exact hU <| mem_of_mem_nhds <| hspec.map (continuous_mul_right y⁻¹) (by rwa [mul_inv_self])
state_before: case intro.intro
G : Type w
H✝ : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
H : ∀ (x : G), x ≠ 1 → ∃ U ∈ 𝓝 1, x ∉ U
x y : G
hspec : x ⤳ y
hne : ¬x = y
U : Set G
hU₁ : U ∈ 𝓝 1
hU : x * y⁻¹ ∉ U
⊢ False
state_after: no goals

tactic: rwa [Ne, mul_inv_eq_one]
state_before: G : Type w
H✝ : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
H : ∀ (x : G), x ≠ 1 → ∃ U ∈ 𝓝 1, x ∉ U
x y : G
hspec : x ⤳ y
hne : ¬x = y
⊢ x * y⁻¹ ≠ 1
state_after: no goals

tactic: rwa [mul_inv_self]
state_before: G : Type w
H✝ : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
H : ∀ (x : G), x ≠ 1 → ∃ U ∈ 𝓝 1, x ∉ U
x y : G
hspec : x ⤳ y
hne : ¬x = y
U : Set G
hU₁ : U ∈ 𝓝 1
hU : x * y⁻¹ ∉ U
⊢ U ∈ 𝓝 (y * y⁻¹)
state_after: no goals
Theorem: Finsupp.total_embDomain
File: Mathlib/LinearAlgebra/Finsupp.lean

tactic: simp [total_apply, Finsupp.sum, support_embDomain, embDomain_apply]
state_before: α : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
R : Type u_5
S : Type u_6
inst✝⁹ : Semiring R
inst✝⁸ : Semiring S
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
inst✝⁵ : AddCommMonoid N
inst✝⁴ : Module R N
inst✝³ : AddCommMonoid P
inst✝² : Module R P
α' : Type u_7
M' : Type u_8
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
v : α → M
v' : α' → M'
f : α ↪ α'
l : α →₀ R
⊢ (Finsupp.total α' M' R v') (embDomain f l) = (Finsupp.total α M' R (v' ∘ ⇑f)) l
state_after: no goals
Theorem: MeasureTheory.tendsto_measure_iUnion
File: Mathlib/MeasureTheory/Measure/MeasureSpace.lean

tactic: rw [measure_iUnion_eq_iSup hm.directed_le]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t : Set α
inst✝² : Preorder ι
inst✝¹ : IsDirected ι fun x x_1 => x ≤ x_1
inst✝ : Countable ι
s : ι → Set α
hm : Monotone s
⊢ Tendsto (⇑μ ∘ s) atTop (𝓝 (μ (⋃ n, s n)))
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t : Set α
inst✝² : Preorder ι
inst✝¹ : IsDirected ι fun x x_1 => x ≤ x_1
inst✝ : Countable ι
s : ι → Set α
hm : Monotone s
⊢ Tendsto (⇑μ ∘ s) atTop (𝓝 (⨆ i, μ (s i)))

tactic: exact tendsto_atTop_iSup fun n m hnm => measure_mono <| hm hnm
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t : Set α
inst✝² : Preorder ι
inst✝¹ : IsDirected ι fun x x_1 => x ≤ x_1
inst✝ : Countable ι
s : ι → Set α
hm : Monotone s
⊢ Tendsto (⇑μ ∘ s) atTop (𝓝 (⨆ i, μ (s i)))
state_after: no goals
Theorem: fderiv_const_add
File: Mathlib/Analysis/Calculus/FDeriv/Add.lean

tactic: simp only [add_comm c, fderiv_add_const]
state_before: 𝕜 : Type u_1
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type u_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_5
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x : E
s t : Set E
L L₁ L₂ : Filter E
c : F
⊢ fderiv 𝕜 (fun y => c + f y) x = fderiv 𝕜 f x
state_after: no goals