tasksource/leandojo huggingface dataset:
Theorem: Asymptotics.IsBigOWith.isBigO
File: Mathlib/Analysis/Asymptotics/Asymptotics.lean

tactic: rw [IsBigO_def]
state_before: α : Type u_1
β : Type ?u.26689
E : Type u_2
F : Type u_3
G : Type ?u.26698
E' : Type ?u.26701
F' : Type ?u.26704
G' : Type ?u.26707
E'' : Type ?u.26710
F'' : Type ?u.26713
G'' : Type ?u.26716
R : Type ?u.26719
R' : Type ?u.26722
𝕜 : Type ?u.26725
𝕜' : Type ?u.26728
inst✝¹² : Norm E
inst✝¹¹ : Norm F
inst✝¹⁰ : Norm G
inst✝⁹ : SeminormedAddCommGroup E'
inst✝⁸ : SeminormedAddCommGroup F'
inst✝⁷ : SeminormedAddCommGroup G'
inst✝⁶ : NormedAddCommGroup E''
inst✝⁵ : NormedAddCommGroup F''
inst✝⁴ : NormedAddCommGroup G''
inst✝³ : SeminormedRing R
inst✝² : SeminormedRing R'
inst✝¹ : NormedField 𝕜
inst✝ : NormedField 𝕜'
c c' c₁ c₂ : ℝ
f : α → E
g : α → F
k : α → G
f' : α → E'
g' : α → F'
k' : α → G'
f'' : α → E''
g'' : α → F''
k'' : α → G''
l l' : Filter α
h : IsBigOWith c l f g
⊢ f =O[l] g

tactic: exact ⟨c, h⟩
state_before: α : Type u_1
β : Type ?u.26689
E : Type u_2
F : Type u_3
G : Type ?u.26698
E' : Type ?u.26701
F' : Type ?u.26704
G' : Type ?u.26707
E'' : Type ?u.26710
F'' : Type ?u.26713
G'' : Type ?u.26716
R : Type ?u.26719
R' : Type ?u.26722
𝕜 : Type ?u.26725
𝕜' : Type ?u.26728
inst✝¹² : Norm E
inst✝¹¹ : Norm F
inst✝¹⁰ : Norm G
inst✝⁹ : SeminormedAddCommGroup E'
inst✝⁸ : SeminormedAddCommGroup F'
inst✝⁷ : SeminormedAddCommGroup G'
inst✝⁶ : NormedAddCommGroup E''
inst✝⁵ : NormedAddCommGroup F''
inst✝⁴ : NormedAddCommGroup G''
inst✝³ : SeminormedRing R
inst✝² : SeminormedRing R'
inst✝¹ : NormedField 𝕜
inst✝ : NormedField 𝕜'
c c' c₁ c₂ : ℝ
f : α → E
g : α → F
k : α → G
f' : α → E'
g' : α → F'
k' : α → G'
f'' : α → E''
g'' : α → F''
k'' : α → G''
l l' : Filter α
h : IsBigOWith c l f g
⊢ ∃ c, IsBigOWith c l f g
Theorem: Nat.dist_eq_sub_of_le
File: Mathlib/Data/Nat/Dist.lean

tactic: rw [dist.def, tsub_eq_zero_iff_le.mpr h, zero_add]
state_before: n m : ℕ
h : n ≤ m
⊢ dist n m = m - n
Theorem: IsSubgroup.trivial_eq_closure
File: Mathlib/Deprecated/Subgroup.lean

tactic: simp [Set.subset_def, (Group.closure.isSubgroup _).one_mem]
state_before: G : Type u_1
H : Type ?u.141455
A : Type ?u.141458
a a₁ a₂ b c : G
inst✝ : Group G
⊢ trivial G ⊆ Group.closure ∅

tactic: simp
state_before: G : Type u_1
H : Type ?u.141455
A : Type ?u.141458
a a₁ a₂ b c : G
inst✝ : Group G
⊢ ∅ ⊆ trivial G
Theorem: Set.Finite.image2
File: Mathlib/Data/Set/Finite.lean

tactic: cases hs
state_before: α : Type u
β : Type v
ι : Sort w
γ : Type x
s : Set α
t : Set β
f : α → β → γ
hs : Set.Finite s
ht : Set.Finite t
⊢ Set.Finite (image2 f s t)

tactic: cases ht
state_before: case intro
α : Type u
β : Type v
ι : Sort w
γ : Type x
s : Set α
t : Set β
f : α → β → γ
ht : Set.Finite t
a✝ : Fintype ↑s
⊢ Set.Finite (image2 f s t)

tactic: apply toFinite
state_before: case intro.intro
α : Type u
β : Type v
ι : Sort w
γ : Type x
s : Set α
t : Set β
f : α → β → γ
a✝¹ : Fintype ↑s
a✝ : Fintype ↑t
⊢ Set.Finite (image2 f s t)
Theorem: CategoryTheory.Preadditive.IsIso.comp_right_eq_zero
File: Mathlib/CategoryTheory/Preadditive/Basic.lean

tactic: rw [← IsIso.eq_comp_inv, Limits.zero_comp]
state_before: C : Type u
inst✝² : Category C
inst✝¹ : Preadditive C
P Q R : C
f f' : P ⟶ Q
g g' : Q ⟶ R
inst✝ : IsIso g
⊢ f ≫ g = 0 ↔ f = 0
Theorem: Ordinal.lt_opow_succ_log_self
File: Mathlib/SetTheory/Ordinal/Exponential.lean

tactic: rcases eq_or_ne x 0 with (rfl | hx)
state_before: b : Ordinal
hb : 1 < b
x : Ordinal
⊢ x < b ^ succ (log b x)

tactic: apply opow_pos _ (zero_lt_one.trans hb)
state_before: case inl
b : Ordinal
hb : 1 < b
⊢ 0 < b ^ succ (log b 0)

tactic: rw [succ_log_def hb hx]
state_before: case inr
b : Ordinal
hb : 1 < b
x : Ordinal
hx : x ≠ 0
⊢ x < b ^ succ (log b x)

tactic: exact csInf_mem (log_nonempty hb)
state_before: case inr
b : Ordinal
hb : 1 < b
x : Ordinal
hx : x ≠ 0
⊢ x < b ^ sInf {o | x < b ^ o}
Theorem: inv_pos
File: Mathlib/Algebra/Order/Field/Basic.lean

tactic: simp [ne_of_gt ha, zero_lt_one]
state_before: ι : Type ?u.3791
α : Type u_1
β : Type ?u.3797
inst✝ : LinearOrderedSemifield α
a✝ b c d e : α
m n : ℤ
a : α
ha : 0 < a
⊢ a * 0 < a * a⁻¹
Theorem: sbtw_vsub_const_iff
File: Mathlib/Analysis/Convex/Between.lean

tactic: rw [Sbtw, Sbtw, wbtw_vsub_const_iff, (vsub_left_injective p).ne_iff,
  (vsub_left_injective p).ne_iff]
state_before: R : Type u_1
V : Type u_2
V' : Type ?u.127659
P : Type u_3
P' : Type ?u.127665
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'
x y z p : P
⊢ Sbtw R (x -ᵥ p) (y -ᵥ p) (z -ᵥ p) ↔ Sbtw R x y z
Theorem: Cubic.of_d_eq_zero
File: Mathlib/Algebra/CubicDiscriminant.lean

tactic: rw [of_c_eq_zero ha hb hc, hd, C_0]
state_before: R : Type u_1
S : Type ?u.551311
F : Type ?u.551314
K : Type ?u.551317
P Q : Cubic R
a b c d a' b' c' d' : R
inst✝ : Semiring R
ha : P.a = 0
hb : P.b = 0
hc : P.c = 0
hd : P.d = 0
⊢ toPoly P = 0
Theorem: Matrix.TransvectionStruct.toMatrix_sumInl
File: Mathlib/LinearAlgebra/Matrix/Transvection.lean

tactic: cases t
state_before: n : Type u_1
p : Type u_2
R : Type u₂
𝕜 : Type ?u.48673
inst✝³ : Field 𝕜
inst✝² : DecidableEq n
inst✝¹ : DecidableEq p
inst✝ : CommRing R
i j : n
t : TransvectionStruct n R
⊢ toMatrix (sumInl p t) = fromBlocks (toMatrix t) 0 0 1

tactic: ext (a b)
state_before: case mk
n : Type u_1
p : Type u_2
R : Type u₂
𝕜 : Type ?u.48673
inst✝³ : Field 𝕜
inst✝² : DecidableEq n
inst✝¹ : DecidableEq p
inst✝ : CommRing R
i j i✝ j✝ : n
hij✝ : i✝ ≠ j✝
c✝ : R
⊢ toMatrix (sumInl p { i := i✝, j := j✝, hij := hij✝, c := c✝ }) =
    fromBlocks (toMatrix { i := i✝, j := j✝, hij := hij✝, c := c✝ }) 0 0 1

tactic: cases' a with a a <;> cases' b with b b
state_before: case mk.a.h
n : Type u_1
p : Type u_2
R : Type u₂
𝕜 : Type ?u.48673
inst✝³ : Field 𝕜
inst✝² : DecidableEq n
inst✝¹ : DecidableEq p
inst✝ : CommRing R
i j i✝ j✝ : n
hij✝ : i✝ ≠ j✝
c✝ : R
a b : n ⊕ p
⊢ toMatrix (sumInl p { i := i✝, j := j✝, hij := hij✝, c := c✝ }) a b =
    fromBlocks (toMatrix { i := i✝, j := j✝, hij := hij✝, c := c✝ }) 0 0 1 a b

tactic: by_cases h : a = b <;> simp [TransvectionStruct.sumInl, transvection, h, stdBasisMatrix]
state_before: case mk.a.h.inl.inl
n : Type u_1
p : Type u_2
R : Type u₂
𝕜 : Type ?u.48673
inst✝³ : Field 𝕜
inst✝² : DecidableEq n
inst✝¹ : DecidableEq p
inst✝ : CommRing R
i j i✝ j✝ : n
hij✝ : i✝ ≠ j✝
c✝ : R
a b : n
⊢ toMatrix (sumInl p { i := i✝, j := j✝, hij := hij✝, c := c✝ }) (inl a) (inl b) =
    fromBlocks (toMatrix { i := i✝, j := j✝, hij := hij✝, c := c✝ }) 0 0 1 (inl a) (inl b)

tactic: simp [TransvectionStruct.sumInl, transvection]
state_before: case mk.a.h.inl.inr
n : Type u_1
p : Type u_2
R : Type u₂
𝕜 : Type ?u.48673
inst✝³ : Field 𝕜
inst✝² : DecidableEq n
inst✝¹ : DecidableEq p
inst✝ : CommRing R
i j i✝ j✝ : n
hij✝ : i✝ ≠ j✝
c✝ : R
a : n
b : p
⊢ toMatrix (sumInl p { i := i✝, j := j✝, hij := hij✝, c := c✝ }) (inl a) (inr b) =
    fromBlocks (toMatrix { i := i✝, j := j✝, hij := hij✝, c := c✝ }) 0 0 1 (inl a) (inr b)

tactic: simp [TransvectionStruct.sumInl, transvection]
state_before: case mk.a.h.inr.inl
n : Type u_1
p : Type u_2
R : Type u₂
𝕜 : Type ?u.48673
inst✝³ : Field 𝕜
inst✝² : DecidableEq n
inst✝¹ : DecidableEq p
inst✝ : CommRing R
i j i✝ j✝ : n
hij✝ : i✝ ≠ j✝
c✝ : R
a : p
b : n
⊢ toMatrix (sumInl p { i := i✝, j := j✝, hij := hij✝, c := c✝ }) (inr a) (inl b) =
    fromBlocks (toMatrix { i := i✝, j := j✝, hij := hij✝, c := c✝ }) 0 0 1 (inr a) (inl b)

tactic: by_cases h : a = b <;> simp [TransvectionStruct.sumInl, transvection, h]
state_before: case mk.a.h.inr.inr
n : Type u_1
p : Type u_2
R : Type u₂
𝕜 : Type ?u.48673
inst✝³ : Field 𝕜
inst✝² : DecidableEq n
inst✝¹ : DecidableEq p
inst✝ : CommRing R
i j i✝ j✝ : n
hij✝ : i✝ ≠ j✝
c✝ : R
a b : p
⊢ toMatrix (sumInl p { i := i✝, j := j✝, hij := hij✝, c := c✝ }) (inr a) (inr b) =
    fromBlocks (toMatrix { i := i✝, j := j✝, hij := hij✝, c := c✝ }) 0 0 1 (inr a) (inr b)
Theorem: Complex.hasStrictDerivAt_cos
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Deriv.lean

tactic: simp only [sin, div_eq_mul_inv, neg_mul_eq_neg_mul]
state_before: x : ℂ
⊢ HasStrictDerivAt cos (-sin x) x

tactic: convert (((hasStrictDerivAt_id x).mul_const I).cexp.add
  ((hasStrictDerivAt_id x).neg.mul_const I).cexp).mul_const (2 : ℂ)⁻¹ using 1
state_before: x : ℂ
⊢ HasStrictDerivAt cos (-(exp (-x * I) - exp (x * I)) * I * 2⁻¹) x

tactic: simp only [Function.comp, id]
state_before: case h.e'_7
x : ℂ
⊢ -(exp (-x * I) - exp (x * I)) * I * 2⁻¹ = (exp (id x * I) * (1 * I) + exp (-id x * I) * (-1 * I)) * 2⁻¹

tactic: ring
state_before: case h.e'_7
x : ℂ
⊢ -(exp (-x * I) - exp (x * I)) * I * 2⁻¹ = (exp (x * I) * (1 * I) + exp (-x * I) * (-1 * I)) * 2⁻¹
Theorem: le_mul_of_one_le_left
File: Mathlib/Algebra/Order/Ring/Lemmas.lean

tactic: simpa only [one_mul] using mul_le_mul_of_nonneg_right h hb
state_before: α : Type u_1
a b c d : α
inst✝³ : MulOneClass α
inst✝² : Zero α
inst✝¹ : Preorder α
inst✝ : MulPosMono α
hb : 0 ≤ b
h : 1 ≤ a
⊢ b ≤ a * b
Theorem: IsPrimitiveRoot.eq_neg_one_of_two_right
File: Mathlib/RingTheory/RootsOfUnity/Basic.lean

tactic: apply (eq_or_eq_neg_of_sq_eq_sq ζ 1 _).resolve_left
state_before: M : Type ?u.2771838
N : Type ?u.2771841
G : Type ?u.2771844
R : Type u_1
S : Type ?u.2771850
F : Type ?u.2771853
inst✝⁴ : CommMonoid M
inst✝³ : CommMonoid N
inst✝² : DivisionCommMonoid G
k l : ℕ
inst✝¹ : CommRing R
ζ✝ : Rˣ
h✝ : IsPrimitiveRoot ζ✝ k
inst✝ : NoZeroDivisors R
ζ : R
h : IsPrimitiveRoot ζ 2
⊢ ζ = -1

tactic: rw [← pow_one ζ]
state_before: M : Type ?u.2771838
N : Type ?u.2771841
G : Type ?u.2771844
R : Type u_1
S : Type ?u.2771850
F : Type ?u.2771853
inst✝⁴ : CommMonoid M
inst✝³ : CommMonoid N
inst✝² : DivisionCommMonoid G
k l : ℕ
inst✝¹ : CommRing R
ζ✝ : Rˣ
h✝ : IsPrimitiveRoot ζ✝ k
inst✝ : NoZeroDivisors R
ζ : R
h : IsPrimitiveRoot ζ 2
⊢ ¬ζ = 1

tactic: apply h.pow_ne_one_of_pos_of_lt <;> decide
state_before: M : Type ?u.2771838
N : Type ?u.2771841
G : Type ?u.2771844
R : Type u_1
S : Type ?u.2771850
F : Type ?u.2771853
inst✝⁴ : CommMonoid M
inst✝³ : CommMonoid N
inst✝² : DivisionCommMonoid G
k l : ℕ
inst✝¹ : CommRing R
ζ✝ : Rˣ
h✝ : IsPrimitiveRoot ζ✝ k
inst✝ : NoZeroDivisors R
ζ : R
h : IsPrimitiveRoot ζ 2
⊢ ¬ζ ^ 1 = 1

tactic: simp only [h.pow_eq_one, one_pow]
state_before: M : Type ?u.2771838
N : Type ?u.2771841
G : Type ?u.2771844
R : Type u_1
S : Type ?u.2771850
F : Type ?u.2771853
inst✝⁴ : CommMonoid M
inst✝³ : CommMonoid N
inst✝² : DivisionCommMonoid G
k l : ℕ
inst✝¹ : CommRing R
ζ✝ : Rˣ
h✝ : IsPrimitiveRoot ζ✝ k
inst✝ : NoZeroDivisors R
ζ : R
h : IsPrimitiveRoot ζ 2
⊢ ζ ^ 2 = 1 ^ 2
Theorem: hasDerivAt_of_tendsto_locally_uniformly_on'
File: Mathlib/Analysis/Calculus/UniformLimitsDeriv.lean

tactic: refine' hasDerivAt_of_tendstoLocallyUniformlyOn hs hf' _ hfg hx
state_before: ι : Type u_1
l : Filter ι
𝕜 : Type u_2
inst✝³ : IsROrC 𝕜
G : Type u_3
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
f : ι → 𝕜 → G
g : 𝕜 → G
f' : ι → 𝕜 → G
g' : 𝕜 → G
x : 𝕜
inst✝ : NeBot l
s : Set 𝕜
hs : IsOpen s
hf' : TendstoLocallyUniformlyOn (deriv ∘ f) g' l s
hf : ∀ᶠ (n : ι) in l, DifferentiableOn 𝕜 (f n) s
hfg : ∀ (x : 𝕜), x ∈ s → Tendsto (fun n => f n x) l (𝓝 (g x))
hx : x ∈ s
⊢ HasDerivAt g (g' x) x

tactic: filter_upwards [hf]with n h z hz using((h z hz).differentiableAt (hs.mem_nhds hz)).hasDerivAt
state_before: ι : Type u_1
l : Filter ι
𝕜 : Type u_2
inst✝³ : IsROrC 𝕜
G : Type u_3
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
f : ι → 𝕜 → G
g : 𝕜 → G
f' : ι → 𝕜 → G
g' : 𝕜 → G
x : 𝕜
inst✝ : NeBot l
s : Set 𝕜
hs : IsOpen s
hf' : TendstoLocallyUniformlyOn (deriv ∘ f) g' l s
hf : ∀ᶠ (n : ι) in l, DifferentiableOn 𝕜 (f n) s
hfg : ∀ (x : 𝕜), x ∈ s → Tendsto (fun n => f n x) l (𝓝 (g x))
hx : x ∈ s
⊢ ∀ᶠ (n : ι) in l, ∀ (x : 𝕜), x ∈ s → HasDerivAt (fun x => f n x) ((deriv ∘ f) n x) x
Theorem: sSup_image2_eq_sSup_sSup
File: Mathlib/Order/GaloisConnection.lean

tactic: simp_rw [sSup_image2, ← (h₂ _).l_sSup, ← (h₁ _).l_sSup]
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
κ : ι → Sort ?u.25239
a a₁ a₂ : α
b b₁ b₂ : β
inst✝² : CompleteLattice α
inst✝¹ : CompleteLattice β
inst✝ : CompleteLattice γ
f : α → β → γ
s : Set α
t : Set β
l u : α → β → γ
l₁ u₁ : β → γ → α
l₂ u₂ : α → γ → β
h₁ : ∀ (b : β), GaloisConnection (swap l b) (u₁ b)
h₂ : ∀ (a : α), GaloisConnection (l a) (u₂ a)
⊢ sSup (image2 l s t) = l (sSup s) (sSup t)
Theorem: Function.Commute.iterate_pos_lt_of_map_lt
File: Mathlib/Order/Iterate.lean

tactic: apply hf.seq_pos_lt_seq_of_le_of_lt hn
state_before: α : Type u_1
inst✝ : Preorder α
f g : α → α
h : Commute f g
hf : Monotone f
hg : StrictMono g
x : α
hx : f x < g x
n : ℕ
hn : 0 < n
⊢ (f^[n]) x < (g^[n]) x

tactic: rfl
state_before: case h₀
α : Type u_1
inst✝ : Preorder α
f g : α → α
h : Commute f g
hf : Monotone f
hg : StrictMono g
x : α
hx : f x < g x
n : ℕ
hn : 0 < n
⊢ (f^[0]) x ≤ (g^[0]) x

tactic: intros
state_before: case hx
α : Type u_1
inst✝ : Preorder α
f g : α → α
h : Commute f g
hf : Monotone f
hg : StrictMono g
x : α
hx : f x < g x
n : ℕ
hn : 0 < n
⊢ ∀ (k : ℕ), k < n → (f^[k + 1]) x ≤ f ((f^[k]) x)

tactic: rw [iterate_succ_apply']
state_before: case hx
α : Type u_1
inst✝ : Preorder α
f g : α → α
h : Commute f g
hf : Monotone f
hg : StrictMono g
x : α
hx : f x < g x
n : ℕ
hn : 0 < n
k✝ : ℕ
a✝ : k✝ < n
⊢ (f^[k✝ + 1]) x ≤ f ((f^[k✝]) x)

tactic: intros
state_before: case hy
α : Type u_1
inst✝ : Preorder α
f g : α → α
h : Commute f g
hf : Monotone f
hg : StrictMono g
x : α
hx : f x < g x
n : ℕ
hn : 0 < n
⊢ ∀ (k : ℕ), k < n → f ((g^[k]) x) < (g^[k + 1]) x

tactic: simp [h.iterate_right _ _, hg.iterate _ hx]
state_before: case hy
α : Type u_1
inst✝ : Preorder α
f g : α → α
h : Commute f g
hf : Monotone f
hg : StrictMono g
x : α
hx : f x < g x
n : ℕ
hn : 0 < n
k✝ : ℕ
a✝ : k✝ < n
⊢ f ((g^[k✝]) x) < (g^[k✝ + 1]) x
Theorem: Set.ncard_le_one_iff_subset_singleton
File: Mathlib/Data/Set/Ncard.lean

tactic: simp_rw [ncard_eq_toFinset_card _ hs, Finset.card_le_one_iff_subset_singleton,
  Finite.toFinset_subset, Finset.coe_singleton]
state_before: α : Type u_1
β : Type ?u.154891
s t : Set α
a b x y : α
f : α → β
inst✝ : Nonempty α
hs : autoParam (Set.Finite s) _auto✝
⊢ ncard s ≤ 1 ↔ ∃ x, s ⊆ {x}
Theorem: Int.div_eq_iff_eq_mul_left
File: Std/Data/Int/DivMod.lean

tactic: rw [Int.mul_comm]
state_before: a b c : Int
H : b ≠ 0
H' : b ∣ a
⊢ div a b = c ↔ a = c * b

tactic: exact Int.div_eq_iff_eq_mul_right H H'
state_before: a b c : Int
H : b ≠ 0
H' : b ∣ a
⊢ div a b = c ↔ a = b * c
Theorem: Localization.add_mk
File: Mathlib/RingTheory/Localization/Basic.lean

tactic: show Localization.add (mk a b) (mk c d) = mk _ _
state_before: R : Type u_1
inst✝³ : CommSemiring R
M : Submonoid R
S : Type ?u.2762655
inst✝² : CommSemiring S
inst✝¹ : Algebra R S
P : Type ?u.2762822
inst✝ : CommSemiring P
a : R
b : { x // x ∈ M }
c : R
d : { x // x ∈ M }
⊢ mk a b + mk c d = mk (↑b * c + ↑d * a) (b * d)

tactic: simp [Localization.add_def]
state_before: R : Type u_1
inst✝³ : CommSemiring R
M : Submonoid R
S : Type ?u.2762655
inst✝² : CommSemiring S
inst✝¹ : Algebra R S
P : Type ?u.2762822
inst✝ : CommSemiring P
a : R
b : { x // x ∈ M }
c : R
d : { x // x ∈ M }
⊢ Localization.add (mk a b) (mk c d) = mk (↑b * c + ↑d * a) (b * d)
Theorem: Subgroup.closure_eq_bot_iff
File: Mathlib/GroupTheory/Subgroup/Basic.lean

tactic: rw [← le_bot_iff]
state_before: G✝ : Type ?u.215131
G' : Type ?u.215134
inst✝³ : Group G✝
inst✝² : Group G'
A : Type ?u.215143
inst✝¹ : AddGroup A
H K : Subgroup G✝
k : Set G✝
G : Type u_1
inst✝ : Group G
S : Set G
⊢ closure S = ⊥ ↔ S ⊆ {1}

tactic: exact closure_le _
state_before: G✝ : Type ?u.215131
G' : Type ?u.215134
inst✝³ : Group G✝
inst✝² : Group G'
A : Type ?u.215143
inst✝¹ : AddGroup A
H K : Subgroup G✝
k : Set G✝
G : Type u_1
inst✝ : Group G
S : Set G
⊢ closure S ≤ ⊥ ↔ S ⊆ {1}
Theorem: CategoryTheory.GlueData.t'_comp_eq_pullbackSymmetry
File: Mathlib/CategoryTheory/GlueData.lean

tactic: trans inv (D.t' i j k)
state_before: C : Type u₁
inst✝¹ : Category C
C' : Type u₂
inst✝ : Category C'
D : GlueData C
i j k : D.J
⊢ t' D j k i ≫ t' D k i j =
    (pullbackSymmetry (f D j k) (f D j i)).hom ≫ t' D j i k ≫ (pullbackSymmetry (f D i k) (f D i j)).hom

tactic: exact IsIso.eq_inv_of_hom_inv_id (D.cocycle _ _ _)
state_before: C : Type u₁
inst✝¹ : Category C
C' : Type u₂
inst✝ : Category C'
D : GlueData C
i j k : D.J
⊢ t' D j k i ≫ t' D k i j = inv (t' D i j k)

tactic: rw [← cancel_mono (pullback.fst : pullback (D.f i j) (D.f i k) ⟶ _)]
state_before: C : Type u₁
inst✝¹ : Category C
C' : Type u₂
inst✝ : Category C'
D : GlueData C
i j k : D.J
⊢ inv (t' D i j k) =
    (pullbackSymmetry (f D j k) (f D j i)).hom ≫ t' D j i k ≫ (pullbackSymmetry (f D i k) (f D i j)).hom

tactic: simp [t_fac, t_fac_assoc]
state_before: C : Type u₁
inst✝¹ : Category C
C' : Type u₂
inst✝ : Category C'
D : GlueData C
i j k : D.J
⊢ inv (t' D i j k) ≫ pullback.fst =
    ((pullbackSymmetry (f D j k) (f D j i)).hom ≫ t' D j i k ≫ (pullbackSymmetry (f D i k) (f D i j)).hom) ≫
      pullback.fst
Theorem: isIrreducible_iff_sUnion_closed
File: Mathlib/Topology/SubsetProperties.lean

tactic: simp only [isIrreducible_iff_sInter]
state_before: α : Type u
β : Type v
ι : Type ?u.199132
π : ι → Type ?u.199137
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
⊢ IsIrreducible s ↔ ∀ (Z : Finset (Set α)), (∀ (z : Set α), z ∈ Z → IsClosed z) → s ⊆ ⋃₀ ↑Z → ∃ z, z ∈ Z ∧ s ⊆ z

tactic: refine ((@compl_involutive (Set α) _).toPerm _).finsetCongr.forall_congr fun {Z} => ?_
state_before: α : Type u
β : Type v
ι : Type ?u.199132
π : ι → Type ?u.199137
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
⊢ (∀ (U : Finset (Set α)),
      (∀ (u : Set α), u ∈ U → IsOpen u) → (∀ (u : Set α), u ∈ U → Set.Nonempty (s ∩ u)) → Set.Nonempty (s ∩ ⋂₀ ↑U)) ↔
    ∀ (Z : Finset (Set α)), (∀ (z : Set α), z ∈ Z → IsClosed z) → s ⊆ ⋃₀ ↑Z → ∃ z, z ∈ Z ∧ s ⊆ z

tactic: simp_rw [Equiv.finsetCongr_apply, Finset.forall_mem_map, Finset.mem_map, Finset.coe_map,
  sUnion_image, Equiv.coe_toEmbedding, Function.Involutive.coe_toPerm, isClosed_compl_iff,
  exists_exists_and_eq_and]
state_before: α : Type u
β : Type v
ι : Type ?u.199132
π : ι → Type ?u.199137
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
Z : Finset (Set α)
⊢ (∀ (u : Set α), u ∈ Z → IsOpen u) → (∀ (u : Set α), u ∈ Z → Set.Nonempty (s ∩ u)) → Set.Nonempty (s ∩ ⋂₀ ↑Z) ↔
    (∀ (z : Set α),
        z ∈ ↑(Equiv.finsetCongr (Function.Involutive.toPerm compl (_ : Function.Involutive compl))) Z → IsClosed z) →
      s ⊆ ⋃₀ ↑(↑(Equiv.finsetCongr (Function.Involutive.toPerm compl (_ : Function.Involutive compl))) Z) →
        ∃ z, z ∈ ↑(Equiv.finsetCongr (Function.Involutive.toPerm compl (_ : Function.Involutive compl))) Z ∧ s ⊆ z

tactic: refine forall_congr' fun _ => Iff.trans ?_ not_imp_not
state_before: α : Type u
β : Type v
ι : Type ?u.199132
π : ι → Type ?u.199137
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
Z : Finset (Set α)
⊢ (∀ (u : Set α), u ∈ Z → IsOpen u) → (∀ (u : Set α), u ∈ Z → Set.Nonempty (s ∩ u)) → Set.Nonempty (s ∩ ⋂₀ ↑Z) ↔
    (∀ (u : Set α), u ∈ Z → IsOpen u) → (s ⊆ ⋃ (x : Set α) (_ : x ∈ ↑Z), xᶜ) → ∃ a, a ∈ Z ∧ s ⊆ aᶜ

tactic: simp only [not_exists, not_and, ← compl_iInter₂, ← sInter_eq_biInter,
  subset_compl_iff_disjoint_right, not_disjoint_iff_nonempty_inter]
state_before: α : Type u
β : Type v
ι : Type ?u.199132
π : ι → Type ?u.199137
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
Z : Finset (Set α)
x✝ : ∀ (u : Set α), u ∈ Z → IsOpen u
⊢ (∀ (u : Set α), u ∈ Z → Set.Nonempty (s ∩ u)) → Set.Nonempty (s ∩ ⋂₀ ↑Z) ↔
    (¬∃ a, a ∈ Z ∧ s ⊆ aᶜ) → ¬s ⊆ ⋃ (x : Set α) (_ : x ∈ ↑Z), xᶜ
Theorem: WfDvdMonoid.not_unit_iff_exists_factors_eq
File: Mathlib/RingTheory/UniqueFactorizationDomain.lean

tactic: obtain ⟨f, hi, u, rfl⟩ := exists_factors a hn0
state_before: α : Type u_1
inst✝¹ : CommMonoidWithZero α
inst✝ : WfDvdMonoid α
a : α
hn0 : a ≠ 0
hnu : ¬IsUnit a
⊢ ∃ f, (∀ (b : α), b ∈ f → Irreducible b) ∧ Multiset.prod f = a ∧ f ≠ ∅

tactic: obtain ⟨b, h⟩ := Multiset.exists_mem_of_ne_zero fun h : f = 0 => hnu <| by simp [h]
state_before: case intro.intro.intro
α : Type u_1
inst✝¹ : CommMonoidWithZero α
inst✝ : WfDvdMonoid α
f : Multiset α
hi : ∀ (b : α), b ∈ f → Irreducible b
u : αˣ
hn0 : Multiset.prod f * ↑u ≠ 0
hnu : ¬IsUnit (Multiset.prod f * ↑u)
⊢ ∃ f_1, (∀ (b : α), b ∈ f_1 → Irreducible b) ∧ Multiset.prod f_1 = Multiset.prod f * ↑u ∧ f_1 ≠ ∅

tactic: simp [h]
state_before: α : Type u_1
inst✝¹ : CommMonoidWithZero α
inst✝ : WfDvdMonoid α
f : Multiset α
hi : ∀ (b : α), b ∈ f → Irreducible b
u : αˣ
hn0 : Multiset.prod f * ↑u ≠ 0
hnu : ¬IsUnit (Multiset.prod f * ↑u)
h : f = 0
⊢ IsUnit (Multiset.prod f * ↑u)

tactic: refine' ⟨(f.erase b).cons (b * u), fun a ha => _, _, Multiset.cons_ne_zero⟩
state_before: case intro.intro.intro.intro
α : Type u_1
inst✝¹ : CommMonoidWithZero α
inst✝ : WfDvdMonoid α
f : Multiset α
hi : ∀ (b : α), b ∈ f → Irreducible b
u : αˣ
hn0 : Multiset.prod f * ↑u ≠ 0
hnu : ¬IsUnit (Multiset.prod f * ↑u)
b : α
h : b ∈ f
⊢ ∃ f_1, (∀ (b : α), b ∈ f_1 → Irreducible b) ∧ Multiset.prod f_1 = Multiset.prod f * ↑u ∧ f_1 ≠ ∅

tactic: obtain rfl | ha := Multiset.mem_cons.1 ha
state_before: case intro.intro.intro.intro.refine'_1
α : Type u_1
inst✝¹ : CommMonoidWithZero α
inst✝ : WfDvdMonoid α
f : Multiset α
hi : ∀ (b : α), b ∈ f → Irreducible b
u : αˣ
hn0 : Multiset.prod f * ↑u ≠ 0
hnu : ¬IsUnit (Multiset.prod f * ↑u)
b : α
h : b ∈ f
a : α
ha : a ∈ b * ↑u ::ₘ Multiset.erase f b
⊢ Irreducible a

tactic: exacts [Associated.irreducible ⟨u, rfl⟩ (hi b h), hi a (Multiset.mem_of_mem_erase ha)]
state_before: case intro.intro.intro.intro.refine'_1.inl
α : Type u_1
inst✝¹ : CommMonoidWithZero α
inst✝ : WfDvdMonoid α
f : Multiset α
hi : ∀ (b : α), b ∈ f → Irreducible b
u : αˣ
hn0 : Multiset.prod f * ↑u ≠ 0
hnu : ¬IsUnit (Multiset.prod f * ↑u)
b : α
h : b ∈ f
ha : b * ↑u ∈ b * ↑u ::ₘ Multiset.erase f b
⊢ Irreducible (b * ↑u)

case intro.intro.intro.intro.refine'_1.inr
α : Type u_1
inst✝¹ : CommMonoidWithZero α
inst✝ : WfDvdMonoid α
f : Multiset α
hi : ∀ (b : α), b ∈ f → Irreducible b
u : αˣ
hn0 : Multiset.prod f * ↑u ≠ 0
hnu : ¬IsUnit (Multiset.prod f * ↑u)
b : α
h : b ∈ f
a : α
ha✝ : a ∈ b * ↑u ::ₘ Multiset.erase f b
ha : a ∈ Multiset.erase f b
⊢ Irreducible a

tactic: rw [Multiset.prod_cons, mul_comm b, mul_assoc, Multiset.prod_erase h, mul_comm]
state_before: case intro.intro.intro.intro.refine'_2
α : Type u_1
inst✝¹ : CommMonoidWithZero α
inst✝ : WfDvdMonoid α
f : Multiset α
hi : ∀ (b : α), b ∈ f → Irreducible b
u : αˣ
hn0 : Multiset.prod f * ↑u ≠ 0
hnu : ¬IsUnit (Multiset.prod f * ↑u)
b : α
h : b ∈ f
⊢ Multiset.prod (b * ↑u ::ₘ Multiset.erase f b) = Multiset.prod f * ↑u
Theorem: MeasureTheory.mul_meas_ge_le_lintegral₀
File: Mathlib/MeasureTheory/Integral/Lebesgue.lean

tactic: simpa only [lintegral_zero, zero_add] using
  lintegral_add_mul_meas_add_le_le_lintegral (ae_of_all _ fun x => zero_le (f x)) hf ε
state_before: α : Type u_1
β : Type ?u.962296
γ : Type ?u.962299
δ : Type ?u.962302
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f
ε : ℝ≥0∞
⊢ ε * ↑↑μ {x | ε ≤ f x} ≤ ∫⁻ (a : α), f a ∂μ