tasksource/leandojo huggingface dataset:
Theorem: UniformSpace.metrizableSpace
File: Mathlib/Topology/MetricSpace/MetrizableUniformity.lean

tactic: letI := UniformSpace.metricSpace X
state_before: X : Type u_1
inst✝² : UniformSpace X
inst✝¹ : IsCountablyGenerated (𝓤 X)
inst✝ : T0Space X
⊢ TopologicalSpace.MetrizableSpace X

tactic: infer_instance
state_before: X : Type u_1
inst✝² : UniformSpace X
inst✝¹ : IsCountablyGenerated (𝓤 X)
inst✝ : T0Space X
this : MetricSpace X := UniformSpace.metricSpace X
⊢ TopologicalSpace.MetrizableSpace X
Theorem: HasDerivAtFilter.isBigO_sub_rev
File: Mathlib/Analysis/Calculus/Deriv/Basic.lean

tactic: simp [norm_smul, ← div_eq_inv_mul, mul_div_cancel _ (mt norm_eq_zero.1 hf')]
state_before: 𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type v
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type w
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x✝ : 𝕜
s t : Set 𝕜
L L₁ L₂ : Filter 𝕜
hf : HasDerivAtFilter f f' x✝ L
hf' : f' ≠ 0
x : 𝕜
⊢ ‖x‖ ≤ ↑‖f'‖₊⁻¹ * ‖↑(smulRight 1 f') x‖
Theorem: CategoryTheory.OplaxNatTrans.Modification.whiskerRight_naturality
File: Mathlib/CategoryTheory/Bicategory/NaturalTransformation.lean

tactic: simp_rw [associator_inv_naturality_middle_assoc, ← comp_whiskerRight, naturality]
state_before: B : Type u₁
inst✝¹ : Bicategory B
C : Type u₂
inst✝ : Bicategory C
F G : OplaxFunctor B C
η θ ι : F ⟶ G
Γ : Modification η θ
a b c : B
a' : C
f : a ⟶ b
g : (↑G.toPrelaxFunctor).obj b ⟶ a'
⊢ (↑F.toPrelaxFunctor).map f ◁ app Γ b ▷ g ≫
      (α_ ((↑F.toPrelaxFunctor).map f) (OplaxNatTrans.app θ b) g).inv ≫ OplaxNatTrans.naturality θ f ▷ g =
    (α_ ((↑F.toPrelaxFunctor).map f) (OplaxNatTrans.app η b) g).inv ≫
      OplaxNatTrans.naturality η f ▷ g ≫ app Γ a ▷ (↑G.toPrelaxFunctor).map f ▷ g
Theorem: Filter.tendsto_mul_const_atBot_iff_neg
File: Mathlib/Order/Filter/AtTopBot.lean

tactic: simp only [mul_comm _ r, tendsto_const_mul_atBot_iff_neg h]
state_before: ι : Type ?u.246385
ι' : Type ?u.246388
α : Type u_2
β : Type u_1
γ : Type ?u.246397
inst✝¹ : LinearOrderedField α
l : Filter β
f : β → α
r : α
inst✝ : NeBot l
h : Tendsto f l atTop
⊢ Tendsto (fun x => f x * r) l atBot ↔ r < 0
Theorem: Int.ediv_eq_zero_of_lt_abs
File: Mathlib/Data/Int/Order/Basic.lean

tactic: rw [← Int.ediv_neg]
state_before: a✝ b✝ : ℤ
n✝ : ℕ
a b : ℤ
H1 : 0 ≤ a
H2✝ : a < abs b
n : ℕ
H2 : a < ↑(natAbs -[n+1])
⊢ -(a / -[n+1]) = -0

tactic: exact ediv_eq_zero_of_lt H1 H2
state_before: a✝ b✝ : ℤ
n✝ : ℕ
a b : ℤ
H1 : 0 ≤ a
H2✝ : a < abs b
n : ℕ
H2 : a < ↑(natAbs -[n+1])
⊢ a / - -[n+1] = -0
Theorem: Commute.geom_sum₂_comm
File: Mathlib/Algebra/GeomSum.lean

tactic: cases n
state_before: α✝ α : Type u
inst✝ : Semiring α
x y : α
n : ℕ
h : Commute x y
⊢ ∑ i in range n, x ^ i * y ^ (n - 1 - i) = ∑ i in range n, y ^ i * x ^ (n - 1 - i)

tactic: simp only [Nat.succ_eq_add_one, Nat.add_sub_cancel]
state_before: case succ
α✝ α : Type u
inst✝ : Semiring α
x y : α
h : Commute x y
n✝ : ℕ
⊢ ∑ i in range (Nat.succ n✝), x ^ i * y ^ (Nat.succ n✝ - 1 - i) =
    ∑ i in range (Nat.succ n✝), y ^ i * x ^ (Nat.succ n✝ - 1 - i)

tactic: rw [← Finset.sum_flip]
state_before: case succ
α✝ α : Type u
inst✝ : Semiring α
x y : α
h : Commute x y
n✝ : ℕ
⊢ ∑ x_1 in range (n✝ + 1), x ^ x_1 * y ^ (n✝ - x_1) = ∑ x_1 in range (n✝ + 1), y ^ x_1 * x ^ (n✝ - x_1)

tactic: refine' Finset.sum_congr rfl fun i hi => _
state_before: case succ
α✝ α : Type u
inst✝ : Semiring α
x y : α
h : Commute x y
n✝ : ℕ
⊢ ∑ r in range (n✝ + 1), x ^ (n✝ - r) * y ^ (n✝ - (n✝ - r)) = ∑ x_1 in range (n✝ + 1), y ^ x_1 * x ^ (n✝ - x_1)

tactic: simpa [Nat.sub_sub_self (Nat.succ_le_succ_iff.mp (Finset.mem_range.mp hi))] using h.pow_pow _ _
state_before: case succ
α✝ α : Type u
inst✝ : Semiring α
x y : α
h : Commute x y
n✝ i : ℕ
hi : i ∈ range (n✝ + 1)
⊢ x ^ (n✝ - i) * y ^ (n✝ - (n✝ - i)) = y ^ i * x ^ (n✝ - i)

tactic: simp
state_before: case zero
α✝ α : Type u
inst✝ : Semiring α
x y : α
h : Commute x y
⊢ ∑ i in range Nat.zero, x ^ i * y ^ (Nat.zero - 1 - i) = ∑ i in range Nat.zero, y ^ i * x ^ (Nat.zero - 1 - i)
Theorem: AffineSubspace.lt_iff_le_and_exists
File: Mathlib/LinearAlgebra/AffineSpace/AffineSubspace.lean

tactic: rw [lt_iff_le_not_le, not_le_iff_exists]
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
s1 s2 : AffineSubspace k P
⊢ s1 < s2 ↔ s1 ≤ s2 ∧ ∃ p, p ∈ s2 ∧ ¬p ∈ s1
Theorem: MulSemiringActionHom.id_comp
File: Mathlib/Algebra/Hom/GroupAction.lean

tactic: rw [comp_apply, id_apply]
state_before: M' : Type ?u.267738
X : Type ?u.267741
inst✝²³ : SMul M' X
Y : Type ?u.267748
inst✝²² : SMul M' Y
Z : Type ?u.267755
inst✝²¹ : SMul M' Z
M : Type u_1
inst✝²⁰ : Monoid M
A : Type ?u.267768
inst✝¹⁹ : AddMonoid A
inst✝¹⁸ : DistribMulAction M A
A' : Type ?u.267796
inst✝¹⁷ : AddGroup A'
inst✝¹⁶ : DistribMulAction M A'
B : Type ?u.268072
inst✝¹⁵ : AddMonoid B
inst✝¹⁴ : DistribMulAction M B
B' : Type ?u.268098
inst✝¹³ : AddGroup B'
inst✝¹² : DistribMulAction M B'
C : Type ?u.268374
inst✝¹¹ : AddMonoid C
inst✝¹⁰ : DistribMulAction M C
R : Type u_2
inst✝⁹ : Semiring R
inst✝⁸ : MulSemiringAction M R
R' : Type ?u.268427
inst✝⁷ : Ring R'
inst✝⁶ : MulSemiringAction M R'
S : Type u_3
inst✝⁵ : Semiring S
inst✝⁴ : MulSemiringAction M S
S' : Type ?u.268650
inst✝³ : Ring S'
inst✝² : MulSemiringAction M S'
T : Type ?u.268846
inst✝¹ : Semiring T
inst✝ : MulSemiringAction M T
f : R →+*[M] S
x : R
⊢ ↑(comp (MulSemiringActionHom.id M) f) x = ↑f x
Theorem: mk_univ_complex
File: Mathlib/Data/Complex/Cardinality.lean

tactic: rw [mk_univ, mk_complex]
state_before: ⊢ (#↑Set.univ) = 𝔠
Theorem: BoundedContinuousFunction.algebraMap_apply
File: Mathlib/Topology/ContinuousFunction/Bounded.lean

tactic: rw [Algebra.algebraMap_eq_smul_one]
state_before: F : Type ?u.1519076
α : Type u
β : Type v
γ : Type w
𝕜 : Type u_1
inst✝⁵ : NormedField 𝕜
inst✝⁴ : TopologicalSpace α
inst✝³ : SeminormedAddCommGroup β
inst✝² : NormedSpace 𝕜 β
inst✝¹ : NormedRing γ
inst✝ : NormedAlgebra 𝕜 γ
f g : α →ᵇ γ
x : α
c k : 𝕜
a : α
⊢ ↑(↑(algebraMap 𝕜 (α →ᵇ γ)) k) a = k • 1

tactic: rfl
state_before: F : Type ?u.1519076
α : Type u
β : Type v
γ : Type w
𝕜 : Type u_1
inst✝⁵ : NormedField 𝕜
inst✝⁴ : TopologicalSpace α
inst✝³ : SeminormedAddCommGroup β
inst✝² : NormedSpace 𝕜 β
inst✝¹ : NormedRing γ
inst✝ : NormedAlgebra 𝕜 γ
f g : α →ᵇ γ
x : α
c k : 𝕜
a : α
⊢ ↑(k • 1) a = k • 1
Theorem: Part.bind_map
File: Mathlib/Data/Part.lean

tactic: rw [← bind_some_eq_map, bind_assoc]
state_before: α : Type u_2
β : Type u_3
γ✝ : Type ?u.31792
γ : Type u_1
f : α → β
x : Part α
g : β → Part γ
⊢ Part.bind (map f x) g = Part.bind x fun y => g (f y)

tactic: simp
state_before: α : Type u_2
β : Type u_3
γ✝ : Type ?u.31792
γ : Type u_1
f : α → β
x : Part α
g : β → Part γ
⊢ (Part.bind x fun x => Part.bind ((some ∘ f) x) g) = Part.bind x fun y => g (f y)
Theorem: CategoryTheory.transferNatTrans_counit
File: Mathlib/CategoryTheory/Adjunction/Mates.lean

tactic: erw [Functor.map_comp]
state_before: C : Type u₁
D : Type u₂
inst✝³ : Category C
inst✝² : Category D
E : Type u₃
F : Type u₄
inst✝¹ : Category E
inst✝ : Category F
G : C ⥤ E
H : D ⥤ F
L₁ : C ⥤ D
R₁ : D ⥤ C
L₂ : E ⥤ F
R₂ : F ⥤ E
adj₁ : L₁ ⊣ R₁
adj₂ : L₂ ⊣ R₂
f : G ⋙ L₂ ⟶ L₁ ⋙ H
Y : D
⊢ L₂.map ((↑(transferNatTrans adj₁ adj₂) f).app Y) ≫ adj₂.counit.app (H.obj Y) =
    f.app (R₁.obj Y) ≫ H.map (adj₁.counit.app Y)

tactic: simp
state_before: C : Type u₁
D : Type u₂
inst✝³ : Category C
inst✝² : Category D
E : Type u₃
F : Type u₄
inst✝¹ : Category E
inst✝ : Category F
G : C ⥤ E
H : D ⥤ F
L₁ : C ⥤ D
R₁ : D ⥤ C
L₂ : E ⥤ F
R₂ : F ⥤ E
adj₁ : L₁ ⊣ R₁
adj₂ : L₂ ⊣ R₂
f : G ⋙ L₂ ⟶ L₁ ⋙ H
Y : D
⊢ (L₂.map (adj₂.unit.app (G.obj (R₁.obj Y))) ≫ L₂.map (R₂.map (f.app (R₁.obj Y) ≫ H.map (adj₁.counit.app Y)))) ≫
      adj₂.counit.app (H.obj Y) =
    f.app (R₁.obj Y) ≫ H.map (adj₁.counit.app Y)
Theorem: MeasureTheory.snormEssSup_add_le
File: Mathlib/MeasureTheory/Function/LpSeminorm.lean

tactic: refine' le_trans (essSup_mono_ae (eventually_of_forall fun x => _)) (ENNReal.essSup_add_le _ _)
state_before: α : Type u_1
E : Type ?u.2937028
F : Type u_2
G : Type ?u.2937034
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f g : α → F
⊢ snormEssSup (f + g) μ ≤ snormEssSup f μ + snormEssSup g μ

tactic: simp_rw [Pi.add_apply, ← ENNReal.coe_add, ENNReal.coe_le_coe]
state_before: α : Type u_1
E : Type ?u.2937028
F : Type u_2
G : Type ?u.2937034
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f g : α → F
x : α
⊢ (fun x => ↑‖(f + g) x‖₊) x ≤ ((fun x => ↑‖f x‖₊) + fun x => ↑‖g x‖₊) x

tactic: exact nnnorm_add_le _ _
state_before: α : Type u_1
E : Type ?u.2937028
F : Type u_2
G : Type ?u.2937034
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f g : α → F
x : α
⊢ ‖f x + g x‖₊ ≤ ‖f x‖₊ + ‖g x‖₊
Theorem: Denumerable.ofEquiv_ofNat
File: Mathlib/Logic/Denumerable.lean

tactic: letI := ofEquiv _ e
state_before: α✝ : Type ?u.3562
β✝ : Type ?u.3565
inst✝² : Denumerable α✝
inst✝¹ : Denumerable β✝
α : Type u_1
β : Type u_2
inst✝ : Denumerable α
e : β ≃ α
n : ℕ
⊢ ofNat β n = ↑e.symm (ofNat α n)

tactic: refine ofNat_of_decode ?_
state_before: α✝ : Type ?u.3562
β✝ : Type ?u.3565
inst✝² : Denumerable α✝
inst✝¹ : Denumerable β✝
α : Type u_1
β : Type u_2
inst✝ : Denumerable α
e : β ≃ α
n : ℕ
this : Denumerable β := ofEquiv α e
⊢ ofNat β n = ↑e.symm (ofNat α n)

tactic: rw [decode_ofEquiv e]
state_before: α✝ : Type ?u.3562
β✝ : Type ?u.3565
inst✝² : Denumerable α✝
inst✝¹ : Denumerable β✝
α : Type u_1
β : Type u_2
inst✝ : Denumerable α
e : β ≃ α
n : ℕ
this : Denumerable β := ofEquiv α e
⊢ decode n = some (↑e.symm (ofNat α n))

tactic: simp
state_before: α✝ : Type ?u.3562
β✝ : Type ?u.3565
inst✝² : Denumerable α✝
inst✝¹ : Denumerable β✝
α : Type u_1
β : Type u_2
inst✝ : Denumerable α
e : β ≃ α
n : ℕ
this : Denumerable β := ofEquiv α e
⊢ Option.map (↑e.symm) (decode n) = some (↑e.symm (ofNat α n))
Theorem: Padic.coe_inj
File: Mathlib/NumberTheory/Padics/PadicNumbers.lean

tactic: rw [h]
state_before: p : ℕ
inst✝ : Fact (Nat.Prime p)
q r : ℚ
h : q = r
⊢ ↑q = ↑r
Theorem: RingHom.domain_localRing
File: Mathlib/RingTheory/Ideal/LocalRing.lean

tactic: haveI : Nontrivial R := pullback_nonzero f f.map_zero f.map_one
state_before: R✝ : Type u
S✝ : Type v
T : Type w
K : Type u'
inst✝⁵ : Semiring R✝
inst✝⁴ : Semiring S✝
inst✝³ : Semiring T
R : Type u_1
S : Type u_2
inst✝² : CommSemiring R
inst✝¹ : CommSemiring S
H : LocalRing S
f : R →+* S
inst✝ : IsLocalRingHom f
⊢ LocalRing R

tactic: apply LocalRing.of_nonunits_add
state_before: R✝ : Type u
S✝ : Type v
T : Type w
K : Type u'
inst✝⁵ : Semiring R✝
inst✝⁴ : Semiring S✝
inst✝³ : Semiring T
R : Type u_1
S : Type u_2
inst✝² : CommSemiring R
inst✝¹ : CommSemiring S
H : LocalRing S
f : R →+* S
inst✝ : IsLocalRingHom f
this : Nontrivial R
⊢ LocalRing R

tactic: intro a b
state_before: case h
R✝ : Type u
S✝ : Type v
T : Type w
K : Type u'
inst✝⁵ : Semiring R✝
inst✝⁴ : Semiring S✝
inst✝³ : Semiring T
R : Type u_1
S : Type u_2
inst✝² : CommSemiring R
inst✝¹ : CommSemiring S
H : LocalRing S
f : R →+* S
inst✝ : IsLocalRingHom f
this : Nontrivial R
⊢ ∀ (a b : R), a ∈ nonunits R → b ∈ nonunits R → a + b ∈ nonunits R

tactic: simp_rw [← map_mem_nonunits_iff f, f.map_add]
state_before: case h
R✝ : Type u
S✝ : Type v
T : Type w
K : Type u'
inst✝⁵ : Semiring R✝
inst✝⁴ : Semiring S✝
inst✝³ : Semiring T
R : Type u_1
S : Type u_2
inst✝² : CommSemiring R
inst✝¹ : CommSemiring S
H : LocalRing S
f : R →+* S
inst✝ : IsLocalRingHom f
this : Nontrivial R
a b : R
⊢ a ∈ nonunits R → b ∈ nonunits R → a + b ∈ nonunits R

tactic: exact LocalRing.nonunits_add
state_before: case h
R✝ : Type u
S✝ : Type v
T : Type w
K : Type u'
inst✝⁵ : Semiring R✝
inst✝⁴ : Semiring S✝
inst✝³ : Semiring T
R : Type u_1
S : Type u_2
inst✝² : CommSemiring R
inst✝¹ : CommSemiring S
H : LocalRing S
f : R →+* S
inst✝ : IsLocalRingHom f
this : Nontrivial R
a b : R
⊢ ↑f a ∈ nonunits S → ↑f b ∈ nonunits S → ↑f a + ↑f b ∈ nonunits S
Theorem: div_eq_iff_eq_mul'
File: Mathlib/Algebra/Group/Basic.lean

tactic: rw [div_eq_iff_eq_mul, mul_comm]
state_before: α : Type ?u.71269
β : Type ?u.71272
G : Type u_1
inst✝ : CommGroup G
a b c d : G
⊢ a / b = c ↔ a = b * c
Theorem: CategoryTheory.CommSq.HasLift.iff_unop
File: Mathlib/CategoryTheory/CommSq.lean

tactic: rw [iff, iff]
state_before: C : Type u_1
inst✝ : Category C
A✝ B✝ X✝ Y✝ : C
f✝ : A✝ ⟶ X✝
i✝ : A✝ ⟶ B✝
p✝ : X✝ ⟶ Y✝
g✝ : B✝ ⟶ Y✝
sq✝ : CommSq f✝ i✝ p✝ g✝
A B X Y : Cᵒᵖ
f : A ⟶ X
i : A ⟶ B
p : X ⟶ Y
g : B ⟶ Y
sq : CommSq f i p g
⊢ HasLift sq ↔ HasLift (_ : CommSq g.unop p.unop i.unop f.unop)

tactic: exact Nonempty.congr (LiftStruct.unopEquiv sq).toFun (LiftStruct.unopEquiv sq).invFun
state_before: C : Type u_1
inst✝ : Category C
A✝ B✝ X✝ Y✝ : C
f✝ : A✝ ⟶ X✝
i✝ : A✝ ⟶ B✝
p✝ : X✝ ⟶ Y✝
g✝ : B✝ ⟶ Y✝
sq✝ : CommSq f✝ i✝ p✝ g✝
A B X Y : Cᵒᵖ
f : A ⟶ X
i : A ⟶ B
p : X ⟶ Y
g : B ⟶ Y
sq : CommSq f i p g
⊢ Nonempty (LiftStruct sq) ↔ Nonempty (LiftStruct (_ : CommSq g.unop p.unop i.unop f.unop))
Theorem: List.destutter'_of_chain
File: Mathlib/Data/List/Destutter.lean

tactic: induction' l with b l hb generalizing a
state_before: α : Type u_1
l : List α
R : α → α → Prop
inst✝ : DecidableRel R
a b : α
h : Chain R a l
⊢ destutter' R a l = a :: l

tactic: obtain ⟨h, hc⟩ := chain_cons.mp h
state_before: case cons
α : Type u_1
l✝ : List α
R : α → α → Prop
inst✝ : DecidableRel R
a✝ b✝ : α
h✝ : Chain R a✝ l✝
b : α
l : List α
hb : ∀ {a : α}, Chain R a l → destutter' R a l = a :: l
a : α
h : Chain R a (b :: l)
⊢ destutter' R a (b :: l) = a :: b :: l

tactic: rw [l.destutter'_cons_pos h, hb hc]
state_before: case cons.intro
α : Type u_1
l✝ : List α
R : α → α → Prop
inst✝ : DecidableRel R
a✝ b✝ : α
h✝¹ : Chain R a✝ l✝
b : α
l : List α
hb : ∀ {a : α}, Chain R a l → destutter' R a l = a :: l
a : α
h✝ : Chain R a (b :: l)
h : R a b
hc : Chain R b l
⊢ destutter' R a (b :: l) = a :: b :: l

tactic: simp
state_before: case nil
α : Type u_1
l : List α
R : α → α → Prop
inst✝ : DecidableRel R
a✝ b : α
h✝ : Chain R a✝ l
a : α
h : Chain R a []
⊢ destutter' R a [] = [a]
Theorem: Filter.sInter_lift_sets
File: Mathlib/Order/Filter/Lift.lean

tactic: simp only [sInter_eq_biInter, mem_setOf_eq, Filter.mem_sets, mem_lift_sets hg, iInter_exists,
  iInter_and, @iInter_comm _ (Set β)]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.8812
ι : Sort ?u.8815
f f₁ f₂ : Filter α
g g₁ g₂ : Set α → Filter β
hg : Monotone g
⊢ ⋂₀ {s | s ∈ Filter.lift f g} = ⋂ (s : Set α) (_ : s ∈ f), ⋂₀ {t | t ∈ g s}
Theorem: hammingNorm_comp_le_hammingNorm
File: Mathlib/InformationTheory/Hamming.lean

tactic: simpa only [← hammingDist_zero_right, hf] using hammingDist_comp_le_hammingDist f (y := fun _ ↦ 0)
state_before: α : Type ?u.26239
ι : Type u_3
β : ι → Type u_1
inst✝⁴ : Fintype ι
inst✝³ : (i : ι) → DecidableEq (β i)
γ : ι → Type u_2
inst✝² : (i : ι) → DecidableEq (γ i)
inst✝¹ : (i : ι) → Zero (β i)
inst✝ : (i : ι) → Zero (γ i)
f : (i : ι) → γ i → β i
x : (i : ι) → γ i
hf : ∀ (i : ι), f i 0 = 0
⊢ (hammingNorm fun i => f i (x i)) ≤ hammingNorm x
Theorem: MeasureTheory.Measure.map_add
File: Mathlib/MeasureTheory/Measure/MeasureSpace.lean

tactic: simp [← mapₗ_apply_of_measurable hf]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.177408
δ : Type ?u.177411
ι : Type ?u.177414
R : Type ?u.177417
R' : Type ?u.177420
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ✝ μ₁ μ₂ μ₃ ν✝ ν' ν₁ ν₂ : Measure α
s s' t : Set α
μ ν : Measure α
f : α → β
hf : Measurable f
⊢ map f (μ + ν) = map f μ + map f ν
Theorem: MeasureTheory.FiniteMeasure.eq_of_forall_toMeasure_apply_eq
File: Mathlib/MeasureTheory/Measure/FiniteMeasure.lean

tactic: apply Subtype.ext
state_before: Ω : Type u_1
inst✝ : MeasurableSpace Ω
μ ν : FiniteMeasure Ω
h : ∀ (s : Set Ω), MeasurableSet s → ↑↑↑μ s = ↑↑↑ν s
⊢ μ = ν

tactic: ext1 s s_mble
state_before: case a
Ω : Type u_1
inst✝ : MeasurableSpace Ω
μ ν : FiniteMeasure Ω
h : ∀ (s : Set Ω), MeasurableSet s → ↑↑↑μ s = ↑↑↑ν s
⊢ ↑μ = ↑ν

tactic: exact h s s_mble
state_before: case a.h
Ω : Type u_1
inst✝ : MeasurableSpace Ω
μ ν : FiniteMeasure Ω
h : ∀ (s : Set Ω), MeasurableSet s → ↑↑↑μ s = ↑↑↑ν s
s : Set Ω
s_mble : MeasurableSet s
⊢ ↑↑↑μ s = ↑↑↑ν s
Theorem: Hyperreal.IsSt.st_eq
File: Mathlib/Data/Real/Hyperreal.lean

tactic: have h : ∃ r, IsSt x r := ⟨r, hxr⟩
state_before: x : ℝ*
r : ℝ
hxr : IsSt x r
⊢ st x = r

tactic: rw [st, dif_pos h]
state_before: x : ℝ*
r : ℝ
hxr : IsSt x r
h : ∃ r, IsSt x r
⊢ st x = r

tactic: exact (Classical.choose_spec h).unique hxr
state_before: x : ℝ*
r : ℝ
hxr : IsSt x r
h : ∃ r, IsSt x r
⊢ choose h = r
Theorem: isPiSystem_Ixx_mem
File: Mathlib/MeasureTheory/PiSystem.lean

tactic: rintro _ ⟨l₁, hls₁, u₁, hut₁, _, rfl⟩ _ ⟨l₂, hls₂, u₂, hut₂, _, rfl⟩
state_before: α : Type u_1
ι : Sort ?u.7054
ι' : Sort ?u.7057
inst✝ : LinearOrder α
Ixx : α → α → Set α
p : α → α → Prop
Hne : ∀ {a b : α}, Set.Nonempty (Ixx a b) → p a b
Hi : ∀ {a₁ b₁ a₂ b₂ : α}, Ixx a₁ b₁ ∩ Ixx a₂ b₂ = Ixx (max a₁ a₂) (min b₁ b₂)
s t : Set α
⊢ IsPiSystem {S | ∃ l, l ∈ s ∧ ∃ u, u ∈ t ∧ p l u ∧ Ixx l u = S}

tactic: simp only [Hi]
state_before: case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
ι : Sort ?u.7054
ι' : Sort ?u.7057
inst✝ : LinearOrder α
Ixx : α → α → Set α
p : α → α → Prop
Hne : ∀ {a b : α}, Set.Nonempty (Ixx a b) → p a b
Hi : ∀ {a₁ b₁ a₂ b₂ : α}, Ixx a₁ b₁ ∩ Ixx a₂ b₂ = Ixx (max a₁ a₂) (min b₁ b₂)
s t : Set α
l₁ : α
hls₁ : l₁ ∈ s
u₁ : α
hut₁ : u₁ ∈ t
left✝¹ : p l₁ u₁
l₂ : α
hls₂ : l₂ ∈ s
u₂ : α
hut₂ : u₂ ∈ t
left✝ : p l₂ u₂
⊢ Set.Nonempty (Ixx l₁ u₁ ∩ Ixx l₂ u₂) → Ixx l₁ u₁ ∩ Ixx l₂ u₂ ∈ {S | ∃ l, l ∈ s ∧ ∃ u, u ∈ t ∧ p l u ∧ Ixx l u = S}

tactic: exact fun H => ⟨l₁ ⊔ l₂, sup_ind l₁ l₂ hls₁ hls₂, u₁ ⊓ u₂, inf_ind u₁ u₂ hut₁ hut₂, Hne H, rfl⟩
state_before: case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
ι : Sort ?u.7054
ι' : Sort ?u.7057
inst✝ : LinearOrder α
Ixx : α → α → Set α
p : α → α → Prop
Hne : ∀ {a b : α}, Set.Nonempty (Ixx a b) → p a b
Hi : ∀ {a₁ b₁ a₂ b₂ : α}, Ixx a₁ b₁ ∩ Ixx a₂ b₂ = Ixx (max a₁ a₂) (min b₁ b₂)
s t : Set α
l₁ : α
hls₁ : l₁ ∈ s
u₁ : α
hut₁ : u₁ ∈ t
left✝¹ : p l₁ u₁
l₂ : α
hls₂ : l₂ ∈ s
u₂ : α
hut₂ : u₂ ∈ t
left✝ : p l₂ u₂
⊢ Set.Nonempty (Ixx (max l₁ l₂) (min u₁ u₂)) →
    Ixx (max l₁ l₂) (min u₁ u₂) ∈ {S | ∃ l, l ∈ s ∧ ∃ u, u ∈ t ∧ p l u ∧ Ixx l u = S}
Theorem: MvPolynomial.IsWeightedHomogeneous.weighted_total_degree
File: Mathlib/RingTheory/MvPolynomial/WeightedHomogeneous.lean

tactic: simp only [weightedTotalDegree']
state_before: R : Type u_2
M : Type u_1
inst✝² : CommSemiring R
σ : Type u_3
inst✝¹ : AddCommMonoid M
φ ψ : MvPolynomial σ R
m n : M
inst✝ : SemilatticeSup M
w : σ → M
hφ : IsWeightedHomogeneous w φ n
h : φ ≠ 0
⊢ weightedTotalDegree' w φ = ↑n

tactic: apply le_antisymm
state_before: R : Type u_2
M : Type u_1
inst✝² : CommSemiring R
σ : Type u_3
inst✝¹ : AddCommMonoid M
φ ψ : MvPolynomial σ R
m n : M
inst✝ : SemilatticeSup M
w : σ → M
hφ : IsWeightedHomogeneous w φ n
h : φ ≠ 0
⊢ (sup (support φ) fun s => ↑(↑(weightedDegree' w) s)) = ↑n

tactic: simp only [Finset.sup_le_iff, mem_support_iff, WithBot.coe_le_coe]
state_before: case a
R : Type u_2
M : Type u_1
inst✝² : CommSemiring R
σ : Type u_3
inst✝¹ : AddCommMonoid M
φ ψ : MvPolynomial σ R
m n : M
inst✝ : SemilatticeSup M
w : σ → M
hφ : IsWeightedHomogeneous w φ n
h : φ ≠ 0
⊢ (sup (support φ) fun s => ↑(↑(weightedDegree' w) s)) ≤ ↑n

tactic: exact fun d hd => le_of_eq (hφ hd)
state_before: case a
R : Type u_2
M : Type u_1
inst✝² : CommSemiring R
σ : Type u_3
inst✝¹ : AddCommMonoid M
φ ψ : MvPolynomial σ R
m n : M
inst✝ : SemilatticeSup M
w : σ → M
hφ : IsWeightedHomogeneous w φ n
h : φ ≠ 0
⊢ ∀ (b : σ →₀ ℕ), coeff b φ ≠ 0 → ↑(weightedDegree' w) b ≤ n

tactic: obtain ⟨d, hd⟩ : ∃ d, coeff d φ ≠ 0 := exists_coeff_ne_zero h
state_before: case a
R : Type u_2
M : Type u_1
inst✝² : CommSemiring R
σ : Type u_3
inst✝¹ : AddCommMonoid M
φ ψ : MvPolynomial σ R
m n : M
inst✝ : SemilatticeSup M
w : σ → M
hφ : IsWeightedHomogeneous w φ n
h : φ ≠ 0
⊢ ↑n ≤ sup (support φ) fun s => ↑(↑(weightedDegree' w) s)

tactic: simp only [← hφ hd, Finsupp.sum]
state_before: case a.intro
R : Type u_2
M : Type u_1
inst✝² : CommSemiring R
σ : Type u_3
inst✝¹ : AddCommMonoid M
φ ψ : MvPolynomial σ R
m n : M
inst✝ : SemilatticeSup M
w : σ → M
hφ : IsWeightedHomogeneous w φ n
h : φ ≠ 0
d : σ →₀ ℕ
hd : coeff d φ ≠ 0
⊢ ↑n ≤ sup (support φ) fun s => ↑(↑(weightedDegree' w) s)

tactic: replace hd := Finsupp.mem_support_iff.mpr hd
state_before: case a.intro
R : Type u_2
M : Type u_1
inst✝² : CommSemiring R
σ : Type u_3
inst✝¹ : AddCommMonoid M
φ ψ : MvPolynomial σ R
m n : M
inst✝ : SemilatticeSup M
w : σ → M
hφ : IsWeightedHomogeneous w φ n
h : φ ≠ 0
d : σ →₀ ℕ
hd : coeff d φ ≠ 0
⊢ ↑(↑(weightedDegree' w) d) ≤ sup (support φ) fun s => ↑(↑(weightedDegree' w) s)

tactic: apply Finset.le_sup hd
state_before: case a.intro
R : Type u_2
M : Type u_1
inst✝² : CommSemiring R
σ : Type u_3
inst✝¹ : AddCommMonoid M
φ ψ : MvPolynomial σ R
m n : M
inst✝ : SemilatticeSup M
w : σ → M
hφ : IsWeightedHomogeneous w φ n
h : φ ≠ 0
d : σ →₀ ℕ
hd : d ∈ φ.support
⊢ ↑(↑(weightedDegree' w) d) ≤ sup (support φ) fun s => ↑(↑(weightedDegree' w) s)
Theorem: Int.mul_emod_mul_of_pos
File: Std/Data/Int/DivMod.lean

tactic: rw [emod_def, emod_def, mul_ediv_mul_of_pos _ _ H, Int.mul_sub, Int.mul_assoc]
state_before: a b c : Int
H : 0 < a
⊢ a * b % (a * c) = a * (b % c)
Theorem: SimpleGraph.isBridge_iff_adj_and_forall_cycle_not_mem
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: rw [isBridge_iff, and_congr_right_iff]
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
v w : V
⊢ IsBridge G (Quotient.mk (Sym2.Rel.setoid V) (v, w)) ↔
    Adj G v w ∧ ∀ ⦃u : V⦄ (p : Walk G u u), Walk.IsCycle p → ¬Quotient.mk (Sym2.Rel.setoid V) (v, w) ∈ Walk.edges p

tactic: intro h
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
v w : V
⊢ Adj G v w →
    (¬Reachable (G \ fromEdgeSet {Quotient.mk (Sym2.Rel.setoid V) (v, w)}) v w ↔
      ∀ ⦃u : V⦄ (p : Walk G u u), Walk.IsCycle p → ¬Quotient.mk (Sym2.Rel.setoid V) (v, w) ∈ Walk.edges p)

tactic: rw [← not_iff_not]
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
v w : V
h : Adj G v w
⊢ ¬Reachable (G \ fromEdgeSet {Quotient.mk (Sym2.Rel.setoid V) (v, w)}) v w ↔
    ∀ ⦃u : V⦄ (p : Walk G u u), Walk.IsCycle p → ¬Quotient.mk (Sym2.Rel.setoid V) (v, w) ∈ Walk.edges p

tactic: push_neg
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
v w : V
h : Adj G v w
⊢ ¬¬Reachable (G \ fromEdgeSet {Quotient.mk (Sym2.Rel.setoid V) (v, w)}) v w ↔
    ¬∀ ⦃u : V⦄ (p : Walk G u u), Walk.IsCycle p → ¬Quotient.mk (Sym2.Rel.setoid V) (v, w) ∈ Walk.edges p

tactic: rw [← adj_and_reachable_delete_edges_iff_exists_cycle]
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
v w : V
h : Adj G v w
⊢ Reachable (G \ fromEdgeSet {Quotient.mk (Sym2.Rel.setoid V) (v, w)}) v w ↔
    Exists fun ⦃u⦄ => ∃ p, Walk.IsCycle p ∧ Quotient.mk (Sym2.Rel.setoid V) (v, w) ∈ Walk.edges p

tactic: simp only [h, true_and_iff]
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
v w : V
h : Adj G v w
⊢ Reachable (G \ fromEdgeSet {Quotient.mk (Sym2.Rel.setoid V) (v, w)}) v w ↔
    Adj G v w ∧ Reachable (G \ fromEdgeSet {Quotient.mk (Sym2.Rel.setoid V) (v, w)}) v w