tasksource/leandojo huggingface dataset:
Theorem: TopologicalSpace.NoetherianSpace.iUnion
File: Mathlib/Topology/NoetherianSpace.lean

tactic: simp_rw [noetherianSpace_set_iff] at hf ⊢
state_before: α : Type u_2
β : Type ?u.6819
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
ι : Type u_1
f : ι → Set α
inst✝ : Finite ι
hf : ∀ (i : ι), NoetherianSpace ↑(f i)
⊢ NoetherianSpace ↑(⋃ (i : ι), f i)

tactic: intro t ht
state_before: α : Type u_2
β : Type ?u.6819
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
ι : Type u_1
f : ι → Set α
inst✝ : Finite ι
hf : ∀ (i : ι) (t : Set α), t ⊆ f i → IsCompact t
⊢ ∀ (t : Set α), (t ⊆ ⋃ (i : ι), f i) → IsCompact t

tactic: rw [← Set.inter_eq_left_iff_subset.mpr ht, Set.inter_iUnion]
state_before: α : Type u_2
β : Type ?u.6819
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
ι : Type u_1
f : ι → Set α
inst✝ : Finite ι
hf : ∀ (i : ι) (t : Set α), t ⊆ f i → IsCompact t
t : Set α
ht : t ⊆ ⋃ (i : ι), f i
⊢ IsCompact t

tactic: exact isCompact_iUnion fun i => hf i _ (Set.inter_subset_right _ _)
state_before: α : Type u_2
β : Type ?u.6819
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
ι : Type u_1
f : ι → Set α
inst✝ : Finite ι
hf : ∀ (i : ι) (t : Set α), t ⊆ f i → IsCompact t
t : Set α
ht : t ⊆ ⋃ (i : ι), f i
⊢ IsCompact (⋃ (i : ι), t ∩ f i)
Theorem: Cardinal.lift_iSup_le_iff
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: rw [lift_iSup hf]
state_before: α β : Type u
ι : Type v
f : ι → Cardinal
hf : BddAbove (range f)
t : Cardinal
⊢ lift (iSup f) ≤ t ↔ ∀ (i : ι), lift (f i) ≤ t

tactic: exact ciSup_le_iff' (bddAbove_range_comp.{_,_,u} hf _)
state_before: α β : Type u
ι : Type v
f : ι → Cardinal
hf : BddAbove (range f)
t : Cardinal
⊢ (⨆ (i : ι), lift (f i)) ≤ t ↔ ∀ (i : ι), lift (f i) ≤ t
Theorem: Set.range_subset_singleton
File: Mathlib/Data/Set/Image.lean

tactic: simp [range_subset_iff, funext_iff, mem_singleton]
state_before: α : Type u_1
β : Type ?u.89762
γ : Type ?u.89765
ι : Sort u_2
ι' : Sort ?u.89771
f✝ : ι → α
s t : Set α
f : ι → α
x : α
⊢ range f ⊆ {x} ↔ f = const ι x
Theorem: Finset.disjSups_union_right
File: Mathlib/Data/Finset/Sups.lean

tactic: simp [disjSups, filter_union, image_union]
state_before: α : Type u_1
inst✝³ : DecidableEq α
inst✝² : SemilatticeSup α
inst✝¹ : OrderBot α
inst✝ : DecidableRel Disjoint
s s₁ s₂ t t₁ t₂ u : Finset α
a b c : α
⊢ s ○ (t₁ ∪ t₂) = s ○ t₁ ∪ s ○ t₂
Theorem: lp.coeFn_sum
File: Mathlib/Analysis/NormedSpace/lpSpace.lean

tactic: simp
state_before: α : Type u_2
E : α → Type u_3
p q : ℝ≥0∞
inst✝ : (i : α) → NormedAddCommGroup (E i)
ι : Type u_1
f : ι → { x // x ∈ lp E p }
s : Finset ι
⊢ ↑(∑ i in s, f i) = ∑ i in s, ↑(f i)
Theorem: MeasureTheory.OuterMeasure.null_of_locally_null
File: Mathlib/MeasureTheory/Measure/OuterMeasure.lean

tactic: choose! u hxu hu₀ using hs
state_before: α : Type u_1
β : Type ?u.9450
R : Type ?u.9453
R' : Type ?u.9456
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
inst✝¹ : TopologicalSpace α
inst✝ : SecondCountableTopology α
m : OuterMeasure α
s : Set α
hs : ∀ (x : α), x ∈ s → ∃ u, u ∈ 𝓝[s] x ∧ ↑m u = 0
⊢ ↑m s = 0

tactic: choose t ht using TopologicalSpace.countable_cover_nhdsWithin hxu
state_before: α : Type u_1
β : Type ?u.9450
R : Type ?u.9453
R' : Type ?u.9456
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
inst✝¹ : TopologicalSpace α
inst✝ : SecondCountableTopology α
m : OuterMeasure α
s : Set α
u : α → Set α
hxu : ∀ (x : α), x ∈ s → u x ∈ 𝓝[s] x
hu₀ : ∀ (x : α), x ∈ s → ↑m (u x) = 0
⊢ ↑m s = 0

tactic: rcases ht with ⟨ts, t_count, ht⟩
state_before: α : Type u_1
β : Type ?u.9450
R : Type ?u.9453
R' : Type ?u.9456
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
inst✝¹ : TopologicalSpace α
inst✝ : SecondCountableTopology α
m : OuterMeasure α
s : Set α
u : α → Set α
hxu : ∀ (x : α), x ∈ s → u x ∈ 𝓝[s] x
hu₀ : ∀ (x : α), x ∈ s → ↑m (u x) = 0
t : Set α
ht : t ⊆ s ∧ Set.Countable t ∧ s ⊆ ⋃ (x : α) (_ : x ∈ t), u x
⊢ ↑m s = 0

tactic: apply m.mono_null ht
state_before: case intro.intro
α : Type u_1
β : Type ?u.9450
R : Type ?u.9453
R' : Type ?u.9456
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
inst✝¹ : TopologicalSpace α
inst✝ : SecondCountableTopology α
m : OuterMeasure α
s : Set α
u : α → Set α
hxu : ∀ (x : α), x ∈ s → u x ∈ 𝓝[s] x
hu₀ : ∀ (x : α), x ∈ s → ↑m (u x) = 0
t : Set α
ts : t ⊆ s
t_count : Set.Countable t
ht : s ⊆ ⋃ (x : α) (_ : x ∈ t), u x
⊢ ↑m s = 0

tactic: exact (m.biUnion_null_iff t_count).2 fun x hx => hu₀ x (ts hx)
state_before: case intro.intro
α : Type u_1
β : Type ?u.9450
R : Type ?u.9453
R' : Type ?u.9456
ms : Set (OuterMeasure α)
m✝ : OuterMeasure α
inst✝¹ : TopologicalSpace α
inst✝ : SecondCountableTopology α
m : OuterMeasure α
s : Set α
u : α → Set α
hxu : ∀ (x : α), x ∈ s → u x ∈ 𝓝[s] x
hu₀ : ∀ (x : α), x ∈ s → ↑m (u x) = 0
t : Set α
ts : t ⊆ s
t_count : Set.Countable t
ht : s ⊆ ⋃ (x : α) (_ : x ∈ t), u x
⊢ ↑m (⋃ (x : α) (_ : x ∈ t), u x) = 0
Theorem: CategoryTheory.Limits.pullbackIsoUnopPushout_hom_inl
File: Mathlib/CategoryTheory/Limits/Opposites.lean

tactic: apply Quiver.Hom.unop_inj
state_before: C : Type u₁
inst✝³ : Category C
J : Type u₂
inst✝² : Category J
X✝ : Type v₂
X Y Z : C
f : X ⟶ Z
g : Y ⟶ Z
inst✝¹ : HasPullback f g
inst✝ : HasPushout f.op g.op
⊢ pushout.inl ≫ (pullbackIsoUnopPushout f g).hom.op = pullback.fst.op

tactic: dsimp
state_before: case a
C : Type u₁
inst✝³ : Category C
J : Type u₂
inst✝² : Category J
X✝ : Type v₂
X Y Z : C
f : X ⟶ Z
g : Y ⟶ Z
inst✝¹ : HasPullback f g
inst✝ : HasPushout f.op g.op
⊢ (pushout.inl ≫ (pullbackIsoUnopPushout f g).hom.op).unop = pullback.fst.op.unop

tactic: rw [← pullbackIsoUnopPushout_inv_fst, Iso.hom_inv_id_assoc]
state_before: case a
C : Type u₁
inst✝³ : Category C
J : Type u₂
inst✝² : Category J
X✝ : Type v₂
X Y Z : C
f : X ⟶ Z
g : Y ⟶ Z
inst✝¹ : HasPullback f g
inst✝ : HasPushout f.op g.op
⊢ (pullbackIsoUnopPushout f g).hom ≫ pushout.inl.unop = pullback.fst
Theorem: Int.lt_ediv_add_one_mul_self
File: Std/Data/Int/DivMod.lean

tactic: rw [Int.add_mul, Int.one_mul, Int.mul_comm]
state_before: a b : Int
H : 0 < b
⊢ a < (a / b + 1) * b

tactic: exact Int.lt_add_of_sub_left_lt <| Int.emod_def .. ▸ emod_lt_of_pos _ H
state_before: a b : Int
H : 0 < b
⊢ a < b * (a / b) + b
Theorem: Nat.coprime.lcm_eq_mul
File: Mathlib/Data/Nat/GCD/Basic.lean

tactic: rw [← one_mul (lcm m n), ← h.gcd_eq_one, gcd_mul_lcm]
state_before: m n : ℕ
h : coprime m n
⊢ lcm m n = m * n
Theorem: convexJoin_segments
File: Mathlib/Analysis/Convex/Join.lean

tactic: simp_rw [← convexHull_pair, convexHull_insert (insert_nonempty _ _),
  convexHull_insert (singleton_nonempty _), convexJoin_assoc,
  convexHull_singleton]
state_before: ι : Sort ?u.137089
𝕜 : Type u_2
E : Type u_1
inst✝² : LinearOrderedField 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
s t u : Set E
x y a b c d : E
⊢ convexJoin 𝕜 (segment 𝕜 a b) (segment 𝕜 c d) = ↑(convexHull 𝕜).toOrderHom {a, b, c, d}
Theorem: Real.norm_rpow_of_nonneg
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: simp_rw [Real.norm_eq_abs]
state_before: x y : ℝ
hx_nonneg : 0 ≤ x
⊢ ‖x ^ y‖ = ‖x‖ ^ y

tactic: exact abs_rpow_of_nonneg hx_nonneg
state_before: x y : ℝ
hx_nonneg : 0 ≤ x
⊢ abs (x ^ y) = abs x ^ y
Theorem: Directed.inf_iSup_eq
File: Mathlib/Order/CompactlyGenerated.lean

tactic: rw [iSup, h.directedOn_range.inf_sSup_eq, iSup_range]
state_before: ι : Sort u_2
α : Type u_1
inst✝² : CompleteLattice α
f : ι → α
inst✝¹ : CompleteLattice α
inst✝ : IsCompactlyGenerated α
a b : α
s : Set α
h : Directed (fun x x_1 => x ≤ x_1) f
⊢ (a ⊓ ⨆ (i : ι), f i) = ⨆ (i : ι), a ⊓ f i
Theorem: Nat.leRecOn_self
File: Mathlib/Data/Nat/Basic.lean

tactic: cases n <;> unfold leRecOn Eq.recOn
state_before: m n✝ k : ℕ
C : ℕ → Sort u
n : ℕ
h : n ≤ n
next : {k : ℕ} → C k → C (k + 1)
x : C n
⊢ leRecOn h (fun {k} => next) x = x

tactic: simp
state_before: case zero
m n k : ℕ
C : ℕ → Sort u
next : {k : ℕ} → C k → C (k + 1)
h : zero ≤ zero
x : C zero
⊢ (_ : zero = 0) ▸ x = x

tactic: unfold Or.by_cases
state_before: case succ
m n k : ℕ
C : ℕ → Sort u
next : {k : ℕ} → C k → C (k + 1)
n✝ : ℕ
h : succ n✝ ≤ succ n✝
x : C (succ n✝)
⊢ (Or.by_cases (_ : succ n✝ ≤ n✝ ∨ succ n✝ = succ n✝) (fun h => (fun {k} => next) (leRecOn h (fun {k} => next) x))
      fun h => h ▸ x) =
    x

tactic: rw [dif_neg (Nat.not_succ_le_self _)]
state_before: case succ
m n k : ℕ
C : ℕ → Sort u
next : {k : ℕ} → C k → C (k + 1)
n✝ : ℕ
h : succ n✝ ≤ succ n✝
x : C (succ n✝)
⊢ (if hp : succ n✝ ≤ n✝ then (fun h => (fun {k} => next) (leRecOn h (fun {k} => next) x)) hp
    else (fun h => h ▸ x) (_ : succ n✝ = succ n✝)) =
    x
Theorem: Matrix.toBlock_mul_eq_mul
File: Mathlib/Data/Matrix/Block.lean

tactic: ext (i k)
state_before: l : Type ?u.266837
m✝ : Type ?u.266840
n✝ : Type ?u.266843
o : Type ?u.266846
p✝ : Type ?u.266849
q✝ : Type ?u.266852
m' : o → Type ?u.266857
n' : o → Type ?u.266862
p' : o → Type ?u.266867
R : Type u_4
S : Type ?u.266873
α : Type ?u.266876
β : Type ?u.266879
inst✝¹ : CommRing R
m : Type u_1
n : Type u_2
k : Type u_3
inst✝ : Fintype n
p : m → Prop
q : k → Prop
A : Matrix m n R
B : Matrix n k R
⊢ toBlock (A ⬝ B) p q = toBlock A p ⊤ ⬝ toBlock B ⊤ q

tactic: simp only [toBlock_apply, mul_apply]
state_before: case a.h
l : Type ?u.266837
m✝ : Type ?u.266840
n✝ : Type ?u.266843
o : Type ?u.266846
p✝ : Type ?u.266849
q✝ : Type ?u.266852
m' : o → Type ?u.266857
n' : o → Type ?u.266862
p' : o → Type ?u.266867
R : Type u_4
S : Type ?u.266873
α : Type ?u.266876
β : Type ?u.266879
inst✝¹ : CommRing R
m : Type u_1
n : Type u_2
k✝ : Type u_3
inst✝ : Fintype n
p : m → Prop
q : k✝ → Prop
A : Matrix m n R
B : Matrix n k✝ R
i : { a // p a }
k : { a // q a }
⊢ toBlock (A ⬝ B) p q i k = (toBlock A p ⊤ ⬝ toBlock B ⊤ q) i k

tactic: rw [Finset.sum_subtype]
state_before: case a.h
l : Type ?u.266837
m✝ : Type ?u.266840
n✝ : Type ?u.266843
o : Type ?u.266846
p✝ : Type ?u.266849
q✝ : Type ?u.266852
m' : o → Type ?u.266857
n' : o → Type ?u.266862
p' : o → Type ?u.266867
R : Type u_4
S : Type ?u.266873
α : Type ?u.266876
β : Type ?u.266879
inst✝¹ : CommRing R
m : Type u_1
n : Type u_2
k✝ : Type u_3
inst✝ : Fintype n
p : m → Prop
q : k✝ → Prop
A : Matrix m n R
B : Matrix n k✝ R
i : { a // p a }
k : { a // q a }
⊢ ∑ j : n, A (↑i) j * B j ↑k = ∑ x : { a // ⊤ a }, A ↑i ↑x * B ↑x ↑k

tactic: simp [Pi.top_apply, Prop.top_eq_true]
state_before: case a.h.h
l : Type ?u.266837
m✝ : Type ?u.266840
n✝ : Type ?u.266843
o : Type ?u.266846
p✝ : Type ?u.266849
q✝ : Type ?u.266852
m' : o → Type ?u.266857
n' : o → Type ?u.266862
p' : o → Type ?u.266867
R : Type u_4
S : Type ?u.266873
α : Type ?u.266876
β : Type ?u.266879
inst✝¹ : CommRing R
m : Type u_1
n : Type u_2
k✝ : Type u_3
inst✝ : Fintype n
p : m → Prop
q : k✝ → Prop
A : Matrix m n R
B : Matrix n k✝ R
i : { a // p a }
k : { a // q a }
⊢ ∀ (x : n), x ∈ Finset.univ ↔ ⊤ x
Theorem: contDiff_top
File: Mathlib/Analysis/Calculus/ContDiffDef.lean

tactic: simp [contDiffOn_univ.symm, contDiffOn_top]
state_before: 𝕜 : Type u
inst✝⁸ : NontriviallyNormedField 𝕜
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 uX
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s s₁ t u : Set E
f f₁ : E → F
g : F → G
x x₀ : E
c : F
m n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
⊢ ContDiff 𝕜 ⊤ f ↔ ∀ (n : ℕ), ContDiff 𝕜 (↑n) f
Theorem: Turing.Tape.write_mk'
File: Mathlib/Computability/TuringMachine.lean

tactic: simp only [Tape.write, Tape.mk', ListBlank.head_cons, ListBlank.tail_cons, eq_self_iff_true,
  and_self_iff]
state_before: Γ : Type u_1
inst✝ : Inhabited Γ
a b : Γ
L R : ListBlank Γ
⊢ write b (mk' L (ListBlank.cons a R)) = mk' L (ListBlank.cons b R)
Theorem: nhdsWithin_Iio_neBot'
File: Mathlib/Topology/Order/Basic.lean

tactic: rwa [closure_Iio' H₁]
state_before: α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a b✝ : α
s : Set α
b c : α
H₁ : Set.Nonempty (Iio c)
H₂ : b ≤ c
⊢ b ∈ closure (Iio c)
Theorem: Set.piecewise_same
File: Mathlib/Data/Set/Function.lean

tactic: ext x
state_before: α : Type u_1
β : Type ?u.94382
γ : Type ?u.94385
ι : Sort ?u.94388
π : α → Type ?u.94393
δ : α → Sort u_2
s : Set α
f g : (i : α) → δ i
inst✝ : (j : α) → Decidable (j ∈ s)
⊢ piecewise s f f = f

tactic: by_cases hx : x ∈ s <;> simp [hx]
state_before: case h
α : Type u_1
β : Type ?u.94382
γ : Type ?u.94385
ι : Sort ?u.94388
π : α → Type ?u.94393
δ : α → Sort u_2
s : Set α
f g : (i : α) → δ i
inst✝ : (j : α) → Decidable (j ∈ s)
x : α
⊢ piecewise s f f x = f x
Theorem: Polynomial.cyclotomic_two
File: Mathlib/RingTheory/Polynomial/Cyclotomic/Basic.lean

tactic: simp [cyclotomic_prime]
state_before: R : Type u_1
inst✝ : Ring R
⊢ cyclotomic 2 R = X + 1
Theorem: GeneralizedContinuedFraction.part_denom_eq_s_b
File: Mathlib/Algebra/ContinuedFractions/Translations.lean

tactic: simp [partialDenominators, s_nth_eq]
state_before: α : Type u_1
g : GeneralizedContinuedFraction α
n : ℕ
gp : Pair α
s_nth_eq : Stream'.Seq.get? g.s n = some gp
⊢ Stream'.Seq.get? (partialDenominators g) n = some gp.b
Theorem: List.map_permutations
File: Mathlib/Data/List/Permutation.lean

tactic: rw [permutations, permutations, map, map_permutationsAux, map]
state_before: α : Type u_1
β : Type u_2
f : α → β
ts : List α
⊢ map (map f) (permutations ts) = permutations (map f ts)
Theorem: hnot_sdiff_comm
File: Mathlib/Order/Heyting/Basic.lean

tactic: simp_rw [← top_sdiff', sdiff_right_comm]
state_before: ι : Type ?u.172594
α : Type u_1
β : Type ?u.172600
inst✝ : CoheytingAlgebra α
a✝ b✝ c a b : α
⊢ ￢a \ b = ￢b \ a
Theorem: Set.mem_toFinset
File: Mathlib/Data/Fintype/Basic.lean

tactic: simp [toFinset]
state_before: α : Type u_1
β : Type ?u.78159
γ : Type ?u.78162
s✝ t s : Set α
inst✝ : Fintype ↑s
a : α
⊢ a ∈ toFinset s ↔ a ∈ s
Theorem: FirstOrder.Language.Ultraproduct.realize_formula_cast
File: Mathlib/ModelTheory/Ultraproducts.lean

tactic: simp_rw [Formula.Realize, ← boundedFormula_realize_cast φ x, iff_eq_eq]
state_before: α : Type u_2
M : α → Type u_3
u : Ultrafilter α
L : Language
inst✝¹ : (a : α) → Structure L (M a)
inst✝ : ∀ (a : α), Nonempty (M a)
β : Type u_1
φ : Formula L β
x : β → (a : α) → M a
⊢ (Formula.Realize φ fun i => Quotient.mk' (x i)) ↔ ∀ᶠ (a : α) in ↑u, Formula.Realize φ fun i => x i a

tactic: exact congr rfl (Subsingleton.elim _ _)
state_before: α : Type u_2
M : α → Type u_3
u : Ultrafilter α
L : Language
inst✝¹ : (a : α) → Structure L (M a)
inst✝ : ∀ (a : α), Nonempty (M a)
β : Type u_1
φ : Formula L β
x : β → (a : α) → M a
⊢ BoundedFormula.Realize φ (fun i => Quotient.mk' (x i)) default =
    BoundedFormula.Realize φ (fun i => Quotient.mk' (x i)) fun i => Quotient.mk' fun a => default i
Theorem: Filter.prod_map_atTop_eq
File: Mathlib/Order/Filter/AtTopBot.lean

tactic: rw [prod_map_map_eq, prod_atTop_atTop_eq, Prod.map_def]
state_before: ι : Type ?u.279380
ι' : Type ?u.279383
α : Type ?u.279386
β : Type ?u.279389
γ : Type ?u.279392
α₁ : Type u_1
α₂ : Type u_2
β₁ : Type u_3
β₂ : Type u_4
inst✝¹ : Preorder β₁
inst✝ : Preorder β₂
u₁ : β₁ → α₁
u₂ : β₂ → α₂
⊢ map u₁ atTop ×ˢ map u₂ atTop = map (Prod.map u₁ u₂) atTop
Theorem: CategoryTheory.GrothendieckTopology.plusLift_unique
File: Mathlib/CategoryTheory/Sites/Plus.lean

tactic: dsimp only [plusLift]
state_before: C : Type u
inst✝³ : Category C
J : GrothendieckTopology C
D : Type w
inst✝² : Category D
inst✝¹ : ∀ (P : Cᵒᵖ ⥤ D) (X : C) (S : Cover J X), HasMultiequalizer (Cover.index S P)
P✝ : Cᵒᵖ ⥤ D
inst✝ : ∀ (X : C), HasColimitsOfShape (Cover J X)ᵒᵖ D
P Q : Cᵒᵖ ⥤ D
η : P ⟶ Q
hQ : Presheaf.IsSheaf J Q
γ : plusObj J P ⟶ Q
hγ : toPlus J P ≫ γ = η
⊢ γ = plusLift J η hQ

tactic: rw [Iso.eq_comp_inv, ← hγ, plusMap_comp]
state_before: C : Type u
inst✝³ : Category C
J : GrothendieckTopology C
D : Type w
inst✝² : Category D
inst✝¹ : ∀ (P : Cᵒᵖ ⥤ D) (X : C) (S : Cover J X), HasMultiequalizer (Cover.index S P)
P✝ : Cᵒᵖ ⥤ D
inst✝ : ∀ (X : C), HasColimitsOfShape (Cover J X)ᵒᵖ D
P Q : Cᵒᵖ ⥤ D
η : P ⟶ Q
hQ : Presheaf.IsSheaf J Q
γ : plusObj J P ⟶ Q
hγ : toPlus J P ≫ γ = η
⊢ γ = plusMap J η ≫ (isoToPlus J Q hQ).inv

tactic: simp
state_before: C : Type u
inst✝³ : Category C
J : GrothendieckTopology C
D : Type w
inst✝² : Category D
inst✝¹ : ∀ (P : Cᵒᵖ ⥤ D) (X : C) (S : Cover J X), HasMultiequalizer (Cover.index S P)
P✝ : Cᵒᵖ ⥤ D
inst✝ : ∀ (X : C), HasColimitsOfShape (Cover J X)ᵒᵖ D
P Q : Cᵒᵖ ⥤ D
η : P ⟶ Q
hQ : Presheaf.IsSheaf J Q
γ : plusObj J P ⟶ Q
hγ : toPlus J P ≫ γ = η
⊢ γ ≫ (isoToPlus J Q hQ).hom = plusMap J (toPlus J P) ≫ plusMap J γ
Theorem: Rat.divInt_neg_one_one
File: Mathlib/Data/Rat/Defs.lean

tactic: rw [divInt]
state_before: a b c : ℚ
⊢ -1 /. 1 = -1

tactic: simp
state_before: a b c : ℚ
⊢ (match -1, 1 with
    | n, Int.ofNat d => inline (mkRat n d)
    | n, Int.negSucc d => normalize (-n) (Nat.succ d)) =
    -1

tactic: rfl
state_before: a b c : ℚ
⊢ mkRat (-1) 1 = -1
Theorem: Rack.self_act_act_eq
File: Mathlib/Algebra/Quandle.lean

tactic: rw [← right_inv x y, ← self_distrib]
state_before: R : Type u_1
inst✝ : Rack R
x y : R
⊢ (x ◃ x) ◃ y = x ◃ y
Theorem: Euclidean.exists_pos_lt_subset_ball
File: Mathlib/Analysis/InnerProductSpace/EuclideanDist.lean

tactic: rw [ball_eq_preimage, ← image_subset_iff] at h
state_before: E : Type u_1
inst✝⁶ : AddCommGroup E
inst✝⁵ : TopologicalSpace E
inst✝⁴ : TopologicalAddGroup E
inst✝³ : T2Space E
inst✝² : Module ℝ E
inst✝¹ : ContinuousSMul ℝ E
inst✝ : FiniteDimensional ℝ E
R : ℝ
s : Set E
x : E
hR : 0 < R
hs : IsClosed s
h : s ⊆ ball x R
⊢ ∃ r, r ∈ Ioo 0 R ∧ s ⊆ ball x r

tactic: rcases exists_pos_lt_subset_ball hR (toEuclidean.isClosed_image.2 hs) h with ⟨r, hr, hsr⟩
state_before: E : Type u_1
inst✝⁶ : AddCommGroup E
inst✝⁵ : TopologicalSpace E
inst✝⁴ : TopologicalAddGroup E
inst✝³ : T2Space E
inst✝² : Module ℝ E
inst✝¹ : ContinuousSMul ℝ E
inst✝ : FiniteDimensional ℝ E
R : ℝ
s : Set E
x : E
hR : 0 < R
hs : IsClosed s
h : ↑toEuclidean '' s ⊆ Metric.ball (↑toEuclidean x) R
⊢ ∃ r, r ∈ Ioo 0 R ∧ s ⊆ ball x r

tactic: exact ⟨r, hr, image_subset_iff.1 hsr⟩
state_before: case intro.intro
E : Type u_1
inst✝⁶ : AddCommGroup E
inst✝⁵ : TopologicalSpace E
inst✝⁴ : TopologicalAddGroup E
inst✝³ : T2Space E
inst✝² : Module ℝ E
inst✝¹ : ContinuousSMul ℝ E
inst✝ : FiniteDimensional ℝ E
R : ℝ
s : Set E
x : E
hR : 0 < R
hs : IsClosed s
h : ↑toEuclidean '' s ⊆ Metric.ball (↑toEuclidean x) R
r : ℝ
hr : r ∈ Ioo 0 R
hsr : ↑toEuclidean '' s ⊆ Metric.ball (↑toEuclidean x) r
⊢ ∃ r, r ∈ Ioo 0 R ∧ s ⊆ ball x r
Theorem: decide_eq_decide
File: Std/Logic.lean

tactic: rw [← decide_eq_true_iff p, h, decide_eq_true_iff]
state_before: p q : Prop
inst✝¹ : Decidable p
inst✝ : Decidable q
h : decide p = decide q
⊢ p ↔ q

tactic: simp [h]
state_before: p q : Prop
inst✝¹ : Decidable p
inst✝ : Decidable q
h : p ↔ q
⊢ decide p = decide q
Theorem: Polynomial.leadingCoeff_add_of_degree_lt
File: Mathlib/Data/Polynomial/Degree/Definitions.lean

tactic: have : coeff p (natDegree q) = 0 := coeff_natDegree_eq_zero_of_degree_lt h
state_before: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p q : R[X]
ι : Type ?u.651623
h : degree p < degree q
⊢ leadingCoeff (p + q) = leadingCoeff q

tactic: simp only [leadingCoeff, natDegree_eq_of_degree_eq (degree_add_eq_right_of_degree_lt h), this,
  coeff_add, zero_add]
state_before: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p q : R[X]
ι : Type ?u.651623
h : degree p < degree q
this : coeff p (natDegree q) = 0
⊢ leadingCoeff (p + q) = leadingCoeff q
Theorem: Primrec.fin_curry₁
File: Mathlib/Computability/Primrec.lean

tactic: simp
state_before: α : Type u_1
β : Type ?u.370940
γ : Type ?u.370943
σ : Type u_2
inst✝³ : Primcodable α
inst✝² : Primcodable β
inst✝¹ : Primcodable γ
inst✝ : Primcodable σ
n : ℕ
f : Fin n → α → σ
h : ∀ (i : Fin n), Primrec (f i)
a : Fin n × α
⊢ Vector.get (Vector.ofFn fun i => f i a.snd) a.fst = f a.fst a.snd
Theorem: StrictConvexOn.sup
File: Mathlib/Analysis/Convex/Function.lean

tactic: gcongr <;> apply le_sup_left
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.412389
α : Type ?u.412392
β : Type u_3
ι : Type ?u.412398
inst✝⁶ : OrderedSemiring 𝕜
inst✝⁵ : AddCommMonoid E
inst✝⁴ : AddCommMonoid F
inst✝³ : LinearOrderedAddCommMonoid β
inst✝² : SMul 𝕜 E
inst✝¹ : Module 𝕜 β
inst✝ : OrderedSMul 𝕜 β
s : Set E
f g : E → β
hf : StrictConvexOn 𝕜 s f
hg : StrictConvexOn 𝕜 s g
x : E
hx : x ∈ s
y : E
hy : y ∈ s
hxy : x ≠ y
a b : 𝕜
ha : 0 < a
hb : 0 < b
hab : a + b = 1
⊢ a • f x + b • f y ≤ a • (f x ⊔ g x) + b • (f y ⊔ g y)

tactic: gcongr <;> apply le_sup_right
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.412389
α : Type ?u.412392
β : Type u_3
ι : Type ?u.412398
inst✝⁶ : OrderedSemiring 𝕜
inst✝⁵ : AddCommMonoid E
inst✝⁴ : AddCommMonoid F
inst✝³ : LinearOrderedAddCommMonoid β
inst✝² : SMul 𝕜 E
inst✝¹ : Module 𝕜 β
inst✝ : OrderedSMul 𝕜 β
s : Set E
f g : E → β
hf : StrictConvexOn 𝕜 s f
hg : StrictConvexOn 𝕜 s g
x : E
hx : x ∈ s
y : E
hy : y ∈ s
hxy : x ≠ y
a b : 𝕜
ha : 0 < a
hb : 0 < b
hab : a + b = 1
⊢ a • g x + b • g y ≤ a • (f x ⊔ g x) + b • (f y ⊔ g y)
Theorem: MeasureTheory.Memℒp.smul_of_top_left
File: Mathlib/MeasureTheory/Function/LpSeminorm.lean

tactic: apply hf.smul hφ
state_before: α : Type u_2
E : Type u_1
F : Type ?u.5946213
G : Type ?u.5946216
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedAddCommGroup G
𝕜 : Type u_3
inst✝⁴ : NormedRing 𝕜
inst✝³ : MulActionWithZero 𝕜 E
inst✝² : MulActionWithZero 𝕜 F
inst✝¹ : BoundedSMul 𝕜 E
inst✝ : BoundedSMul 𝕜 F
p : ℝ≥0∞
f : α → E
φ : α → 𝕜
hf : Memℒp f ⊤
hφ : Memℒp φ p
⊢ Memℒp (φ • f) p

tactic: simp only [ENNReal.div_top, add_zero]
state_before: α : Type u_2
E : Type u_1
F : Type ?u.5946213
G : Type ?u.5946216
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedAddCommGroup G
𝕜 : Type u_3
inst✝⁴ : NormedRing 𝕜
inst✝³ : MulActionWithZero 𝕜 E
inst✝² : MulActionWithZero 𝕜 F
inst✝¹ : BoundedSMul 𝕜 E
inst✝ : BoundedSMul 𝕜 F
p : ℝ≥0∞
f : α → E
φ : α → 𝕜
hf : Memℒp f ⊤
hφ : Memℒp φ p
⊢ 1 / p = 1 / p + 1 / ⊤
Theorem: ContDiffAt.sub
File: Mathlib/Analysis/Calculus/ContDiff.lean

tactic: simpa only [sub_eq_add_neg] using hf.add hg.neg
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.1847539
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
f g : E → F
hf : ContDiffAt 𝕜 n f x
hg : ContDiffAt 𝕜 n g x
⊢ ContDiffAt 𝕜 n (fun x => f x - g x) x
Theorem: CategoryTheory.MorphismProperty.IsInvertedBy.unop
File: Mathlib/CategoryTheory/MorphismProperty.lean

tactic: haveI := h f.op hf
state_before: C : Type u
inst✝¹ : Category C
D : Type u_2
inst✝ : Category D
W : MorphismProperty C
L : Cᵒᵖ ⥤ Dᵒᵖ
h : IsInvertedBy (MorphismProperty.op W) L
X Y : C
f : X ⟶ Y
hf : W f
⊢ IsIso ((Functor.unop L).map f)

tactic: dsimp
state_before: C : Type u
inst✝¹ : Category C
D : Type u_2
inst✝ : Category D
W : MorphismProperty C
L : Cᵒᵖ ⥤ Dᵒᵖ
h : IsInvertedBy (MorphismProperty.op W) L
X Y : C
f : X ⟶ Y
hf : W f
this : IsIso (L.map f.op)
⊢ IsIso ((Functor.unop L).map f)

tactic: infer_instance
state_before: C : Type u
inst✝¹ : Category C
D : Type u_2
inst✝ : Category D
W : MorphismProperty C
L : Cᵒᵖ ⥤ Dᵒᵖ
h : IsInvertedBy (MorphismProperty.op W) L
X Y : C
f : X ⟶ Y
hf : W f
this : IsIso (L.map f.op)
⊢ IsIso (L.map f.op).unop