tasksource/leandojo huggingface dataset:
Theorem: Real.diam_eq
File: Mathlib/Topology/Instances/ENNReal.lean

tactic: rw [Metric.diam, Real.ediam_eq h, ENNReal.toReal_ofReal]
state_before: α : Type ?u.495306
β : Type ?u.495309
γ : Type ?u.495312
inst✝ : PseudoEMetricSpace α
s : Set ℝ
h : Metric.Bounded s
⊢ Metric.diam s = sSup s - sInf s

tactic: rw [Real.bounded_iff_bddBelow_bddAbove] at h
state_before: α : Type ?u.495306
β : Type ?u.495309
γ : Type ?u.495312
inst✝ : PseudoEMetricSpace α
s : Set ℝ
h : Metric.Bounded s
⊢ 0 ≤ sSup s - sInf s

tactic: exact sub_nonneg.2 (Real.sInf_le_sSup s h.1 h.2)
state_before: α : Type ?u.495306
β : Type ?u.495309
γ : Type ?u.495312
inst✝ : PseudoEMetricSpace α
s : Set ℝ
h : BddBelow s ∧ BddAbove s
⊢ 0 ≤ sSup s - sInf s
Theorem: CategoryTheory.Equivalence.cancel_counitInv_right_assoc
File: Mathlib/CategoryTheory/Equivalence.lean

tactic: simp only [← Category.assoc, cancel_mono]
state_before: C : Type u₁
inst✝² : Category C
D : Type u₂
inst✝¹ : Category D
E : Type u₃
inst✝ : Category E
e : C ≌ D
W X X' Y : D
f : W ⟶ X
g : X ⟶ Y
f' : W ⟶ X'
g' : X' ⟶ Y
⊢ f ≫ g ≫ (counitInv e).app Y = f' ≫ g' ≫ (counitInv e).app Y ↔ f ≫ g = f' ≫ g'
Theorem: Algebra.TensorProduct.productMap_left_apply
File: Mathlib/RingTheory/TensorProduct.lean

tactic: simp
state_before: R : Type u_2
A : Type u_3
B : Type u_4
S : Type u_1
inst✝⁶ : CommSemiring R
inst✝⁵ : Semiring A
inst✝⁴ : Semiring B
inst✝³ : CommSemiring S
inst✝² : Algebra R A
inst✝¹ : Algebra R B
inst✝ : Algebra R S
f : A →ₐ[R] S
g : B →ₐ[R] S
a : A
⊢ ↑(productMap f g) (↑includeLeft a) = ↑f a
Theorem: Int.sub_left_le_of_le_add
File: Std/Data/Int/Lemmas.lean

tactic: have h := Int.add_le_add_right h (-b)
state_before: a b c : Int
h : a ≤ b + c
⊢ a - b ≤ c

tactic: rwa [Int.add_comm b c, Int.add_neg_cancel_right] at h
state_before: a b c : Int
h✝ : a ≤ b + c
h : a + -b ≤ b + c + -b
⊢ a - b ≤ c
Theorem: SimpleGraph.Walk.IsPath.takeUntil
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: rwa [← take_spec _ h] at hc
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
inst✝ : DecidableEq V
u v w : V
p : Walk G v w
hc : IsPath p
h : u ∈ support p
⊢ IsPath (append (takeUntil p u h) (?m.255816 hc h))
Theorem: LinearMap.IsRefl.domRestrict
File: Mathlib/LinearAlgebra/SesquilinearForm.lean

tactic: simp_rw [domRestrict₁₂_apply]
state_before: R : Type u_1
R₁ : Type u_2
R₂ : Type ?u.107426
R₃ : Type ?u.107429
M : Type ?u.107432
M₁ : Type u_3
M₂ : Type ?u.107438
Mₗ₁ : Type ?u.107441
Mₗ₁' : Type ?u.107444
Mₗ₂ : Type ?u.107447
Mₗ₂' : Type ?u.107450
K : Type ?u.107453
K₁ : Type ?u.107456
K₂ : Type ?u.107459
V : Type ?u.107462
V₁ : Type ?u.107465
V₂ : Type ?u.107468
n : Type ?u.107471
inst✝³ : CommSemiring R
inst✝² : CommSemiring R₁
inst✝¹ : AddCommMonoid M₁
inst✝ : Module R₁ M₁
I₁ I₂ : R₁ →+* R
B : M₁ →ₛₗ[I₁] M₁ →ₛₗ[I₂] R
H✝ H : IsRefl B
p : Submodule R₁ M₁
x✝¹ x✝ : { x // x ∈ p }
⊢ ↑(↑(domRestrict₁₂ B p p) x✝¹) x✝ = 0 → ↑(↑(domRestrict₁₂ B p p) x✝) x✝¹ = 0

tactic: exact H _ _
state_before: R : Type u_1
R₁ : Type u_2
R₂ : Type ?u.107426
R₃ : Type ?u.107429
M : Type ?u.107432
M₁ : Type u_3
M₂ : Type ?u.107438
Mₗ₁ : Type ?u.107441
Mₗ₁' : Type ?u.107444
Mₗ₂ : Type ?u.107447
Mₗ₂' : Type ?u.107450
K : Type ?u.107453
K₁ : Type ?u.107456
K₂ : Type ?u.107459
V : Type ?u.107462
V₁ : Type ?u.107465
V₂ : Type ?u.107468
n : Type ?u.107471
inst✝³ : CommSemiring R
inst✝² : CommSemiring R₁
inst✝¹ : AddCommMonoid M₁
inst✝ : Module R₁ M₁
I₁ I₂ : R₁ →+* R
B : M₁ →ₛₗ[I₁] M₁ →ₛₗ[I₂] R
H✝ H : IsRefl B
p : Submodule R₁ M₁
x✝¹ x✝ : { x // x ∈ p }
⊢ ↑(↑B ↑x✝¹) ↑x✝ = 0 → ↑(↑B ↑x✝) ↑x✝¹ = 0
Theorem: DirectedOn.disjoint_sSup_left
File: Mathlib/Order/CompactlyGenerated.lean

tactic: simp_rw [disjoint_iff, h.sSup_inf_eq, iSup_eq_bot]
state_before: ι : Sort ?u.99428
α : Type u_1
inst✝² : CompleteLattice α
f : ι → α
inst✝¹ : CompleteLattice α
inst✝ : IsCompactlyGenerated α
a b : α
s : Set α
h : DirectedOn (fun x x_1 => x ≤ x_1) s
⊢ Disjoint (sSup s) a ↔ ∀ ⦃b : α⦄, b ∈ s → Disjoint b a
Theorem: Real.log_nonpos_iff'
File: Mathlib/Analysis/SpecialFunctions/Log/Basic.lean

tactic: rcases hx.eq_or_lt with (rfl | hx)
state_before: x y : ℝ
hx : 0 ≤ x
⊢ log x ≤ 0 ↔ x ≤ 1

tactic: exact log_nonpos_iff hx
state_before: case inr
x y : ℝ
hx✝ : 0 ≤ x
hx : 0 < x
⊢ log x ≤ 0 ↔ x ≤ 1

tactic: simp [le_refl, zero_le_one]
state_before: case inl
y : ℝ
hx : 0 ≤ 0
⊢ log 0 ≤ 0 ↔ 0 ≤ 1
Theorem: FreeRing.coe_eq
File: Mathlib/RingTheory/FreeCommRing.lean

tactic: funext x
state_before: α : Type u
⊢ castFreeCommRing = Functor.map fun l => ↑l

tactic: erw [castFreeCommRing, toFreeCommRing, FreeRing.lift, Equiv.coe_trans, Function.comp,
  FreeAbelianGroup.liftMonoid_coe (FreeMonoid.lift FreeCommRing.of)]
state_before: case h
α : Type u
x : FreeRing α
⊢ ↑x = (fun l => ↑l) <$> x

tactic: dsimp [Functor.map]
state_before: case h
α : Type u
x : FreeRing α
⊢ ↑(↑FreeAbelianGroup.lift ↑(↑FreeMonoid.lift FreeCommRing.of)) x = (fun l => ↑l) <$> x

tactic: rw [← AddMonoidHom.coe_coe]
state_before: case h
α : Type u
x : FreeRing α
⊢ ↑(↑FreeAbelianGroup.lift ↑(↑FreeMonoid.lift FreeCommRing.of)) x =
    ↑(↑FreeAbelianGroup.lift ((fun α_1 => FreeAbelianGroup.of α_1) ∘ fun l => ↑l)) x

tactic: apply FreeAbelianGroup.lift.unique
state_before: case h
α : Type u
x : FreeRing α
⊢ ↑↑(↑FreeAbelianGroup.lift ↑(↑FreeMonoid.lift FreeCommRing.of)) x =
    ↑(↑FreeAbelianGroup.lift ((fun α_1 => FreeAbelianGroup.of α_1) ∘ fun l => ↑l)) x

tactic: intro L
state_before: case h.hg
α : Type u
x : FreeRing α
⊢ ∀ (x : FreeMonoid α),
    ↑↑(↑FreeAbelianGroup.lift ↑(↑FreeMonoid.lift FreeCommRing.of)) (FreeAbelianGroup.of x) =
      ((fun α_1 => FreeAbelianGroup.of α_1) ∘ fun l => ↑l) x

tactic: erw [FreeAbelianGroup.lift.of, Function.comp]
state_before: case h.hg
α : Type u
x : FreeRing α
L : FreeMonoid α
⊢ ↑↑(↑FreeAbelianGroup.lift ↑(↑FreeMonoid.lift FreeCommRing.of)) (FreeAbelianGroup.of L) =
    ((fun α_1 => FreeAbelianGroup.of α_1) ∘ fun l => ↑l) L

tactic: exact
  FreeMonoid.recOn L rfl fun hd tl ih => by
    rw [(FreeMonoid.lift _).map_mul, FreeMonoid.lift_eval_of, ih]
    conv_lhs => reduce
state_before: case h.hg
α : Type u
x : FreeRing α
L : FreeMonoid α
⊢ ↑(↑FreeMonoid.lift FreeCommRing.of) L = FreeAbelianGroup.of ↑L

tactic: rw [(FreeMonoid.lift _).map_mul, FreeMonoid.lift_eval_of, ih]
state_before: α : Type u
x : FreeRing α
L : FreeMonoid α
hd : α
tl : FreeMonoid α
ih : ↑(↑FreeMonoid.lift FreeCommRing.of) tl = FreeAbelianGroup.of ↑tl
⊢ ↑(↑FreeMonoid.lift FreeCommRing.of) (FreeMonoid.of hd * tl) = FreeAbelianGroup.of ↑(FreeMonoid.of hd * tl)

tactic: conv_lhs => reduce
state_before: α : Type u
x : FreeRing α
L : FreeMonoid α
hd : α
tl : FreeMonoid α
ih : ↑(↑FreeMonoid.lift FreeCommRing.of) tl = FreeAbelianGroup.of ↑tl
⊢ FreeCommRing.of hd * FreeAbelianGroup.of ↑tl = FreeAbelianGroup.of ↑(FreeMonoid.of hd * tl)
Theorem: MeasureTheory.hasFiniteIntegral_iff_ofReal
File: Mathlib/MeasureTheory/Function/L1Space.lean

tactic: rw [HasFiniteIntegral, lintegral_nnnorm_eq_of_ae_nonneg h]
state_before: α : Type u_1
β : Type ?u.701577
γ : Type ?u.701580
δ : Type ?u.701583
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
f : α → ℝ
h : 0 ≤ᵐ[μ] f
⊢ HasFiniteIntegral f ↔ (∫⁻ (a : α), ENNReal.ofReal (f a) ∂μ) < ⊤
Theorem: inv_pos_le_iff_one_le_mul'
File: Mathlib/Algebra/Order/Field/Basic.lean

tactic: rw [inv_eq_one_div]
state_before: ι : Type ?u.39811
α : Type u_1
β : Type ?u.39817
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
ha : 0 < a
⊢ a⁻¹ ≤ b ↔ 1 ≤ a * b

tactic: exact div_le_iff' ha
state_before: ι : Type ?u.39811
α : Type u_1
β : Type ?u.39817
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
ha : 0 < a
⊢ 1 / a ≤ b ↔ 1 ≤ a * b
Theorem: Matrix.transpose_mul
File: Mathlib/Data/Matrix/Basic.lean

tactic: ext
state_before: l : Type u_3
m : Type u_2
n : Type u_1
o : Type ?u.927478
m' : o → Type ?u.927483
n' : o → Type ?u.927488
R : Type ?u.927491
S : Type ?u.927494
α : Type v
β : Type w
γ : Type ?u.927501
inst✝² : AddCommMonoid α
inst✝¹ : CommSemigroup α
inst✝ : Fintype n
M : Matrix m n α
N : Matrix n l α
⊢ (M ⬝ N)ᵀ = Nᵀ ⬝ Mᵀ

tactic: apply dotProduct_comm
state_before: case a.h
l : Type u_3
m : Type u_2
n : Type u_1
o : Type ?u.927478
m' : o → Type ?u.927483
n' : o → Type ?u.927488
R : Type ?u.927491
S : Type ?u.927494
α : Type v
β : Type w
γ : Type ?u.927501
inst✝² : AddCommMonoid α
inst✝¹ : CommSemigroup α
inst✝ : Fintype n
M : Matrix m n α
N : Matrix n l α
i✝ : l
x✝ : m
⊢ (M ⬝ N)ᵀ i✝ x✝ = (Nᵀ ⬝ Mᵀ) i✝ x✝
Theorem: Real.Angle.sign_eq_zero_iff
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Angle.lean

tactic: rw [sign, _root_.sign_eq_zero_iff, sin_eq_zero_iff]
state_before: θ : Angle
⊢ sign θ = 0 ↔ θ = 0 ∨ θ = ↑π
Theorem: Bornology.isBounded_prod
File: Mathlib/Topology/Bornology/Constructions.lean

tactic: rcases s.eq_empty_or_nonempty with (rfl | hs)
state_before: α : Type u_1
β : Type u_2
ι : Type ?u.2500
π : ι → Type ?u.2505
inst✝³ : Fintype ι
inst✝² : Bornology α
inst✝¹ : Bornology β
inst✝ : (i : ι) → Bornology (π i)
s : Set α
t : Set β
S : (i : ι) → Set (π i)
⊢ IsBounded (s ×ˢ t) ↔ s = ∅ ∨ t = ∅ ∨ IsBounded s ∧ IsBounded t

tactic: rcases t.eq_empty_or_nonempty with (rfl | ht)
state_before: case inr
α : Type u_1
β : Type u_2
ι : Type ?u.2500
π : ι → Type ?u.2505
inst✝³ : Fintype ι
inst✝² : Bornology α
inst✝¹ : Bornology β
inst✝ : (i : ι) → Bornology (π i)
s : Set α
t : Set β
S : (i : ι) → Set (π i)
hs : Set.Nonempty s
⊢ IsBounded (s ×ˢ t) ↔ s = ∅ ∨ t = ∅ ∨ IsBounded s ∧ IsBounded t

tactic: simp only [hs.ne_empty, ht.ne_empty, isBounded_prod_of_nonempty (hs.prod ht), false_or_iff]
state_before: case inr.inr
α : Type u_1
β : Type u_2
ι : Type ?u.2500
π : ι → Type ?u.2505
inst✝³ : Fintype ι
inst✝² : Bornology α
inst✝¹ : Bornology β
inst✝ : (i : ι) → Bornology (π i)
s : Set α
t : Set β
S : (i : ι) → Set (π i)
hs : Set.Nonempty s
ht : Set.Nonempty t
⊢ IsBounded (s ×ˢ t) ↔ s = ∅ ∨ t = ∅ ∨ IsBounded s ∧ IsBounded t

tactic: simp
state_before: case inl
α : Type u_1
β : Type u_2
ι : Type ?u.2500
π : ι → Type ?u.2505
inst✝³ : Fintype ι
inst✝² : Bornology α
inst✝¹ : Bornology β
inst✝ : (i : ι) → Bornology (π i)
t : Set β
S : (i : ι) → Set (π i)
⊢ IsBounded (∅ ×ˢ t) ↔ ∅ = ∅ ∨ t = ∅ ∨ IsBounded ∅ ∧ IsBounded t

tactic: simp
state_before: case inr.inl
α : Type u_1
β : Type u_2
ι : Type ?u.2500
π : ι → Type ?u.2505
inst✝³ : Fintype ι
inst✝² : Bornology α
inst✝¹ : Bornology β
inst✝ : (i : ι) → Bornology (π i)
s : Set α
S : (i : ι) → Set (π i)
hs : Set.Nonempty s
⊢ IsBounded (s ×ˢ ∅) ↔ s = ∅ ∨ ∅ = ∅ ∨ IsBounded s ∧ IsBounded ∅
Theorem: CategoryTheory.id_nonzero
File: Mathlib/CategoryTheory/Simple.lean

tactic: infer_instance
state_before: C : Type u
inst✝² : Category C
inst✝¹ : HasZeroMorphisms C
X : C
inst✝ : Simple X
⊢ IsIso (𝟙 X)
Theorem: Real.tan_periodic
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

tactic: simpa only [Function.Periodic, tan_eq_sin_div_cos] using sin_antiperiodic.div cos_antiperiodic
state_before: ⊢ Function.Periodic tan π
Theorem: MeasureTheory.AEEqFun.coeFn_mk
File: Mathlib/MeasureTheory/Function/AEEqFun.lean

tactic: apply (AEStronglyMeasurable.ae_eq_mk _).symm.trans
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.309815
δ : Type ?u.309818
inst✝³ : MeasurableSpace α
μ ν : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
f : α → β
hf : AEStronglyMeasurable f μ
⊢ ↑(mk f hf) =ᵐ[μ] f

tactic: exact @Quotient.mk_out' _ (μ.aeEqSetoid β) (⟨f, hf⟩ : { f // AEStronglyMeasurable f μ })
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.309815
δ : Type ?u.309818
inst✝³ : MeasurableSpace α
μ ν : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
f : α → β
hf : AEStronglyMeasurable f μ
⊢ ↑(Quotient.out' (mk f hf)) =ᵐ[μ] f
Theorem: Ordnode.delta_lt_false
File: Mathlib/Data/Ordmap/Ordset.lean

tactic: decide
state_before: α : Type ?u.268
a b : ℕ
h₁ : delta * a < b
h₂ : delta * b < a
⊢ 0 < delta

tactic: simpa [mul_assoc] using Nat.mul_le_mul_right a (by decide : 1 ≤ delta * delta)
state_before: α : Type ?u.268
a b : ℕ
h₁ : delta * a < b
h₂ : delta * b < a
⊢ a ≤ delta * (delta * a)

tactic: decide
state_before: α : Type ?u.268
a b : ℕ
h₁ : delta * a < b
h₂ : delta * b < a
⊢ 1 ≤ delta * delta
Theorem: SimpleGraph.card_incidenceSet_eq_degree
File: Mathlib/Combinatorics/SimpleGraph/Basic.lean

tactic: rw [Fintype.card_congr (G.incidenceSetEquivNeighborSet v)]
state_before: ι : Sort ?u.274831
𝕜 : Type ?u.274834
V : Type u
W : Type v
X : Type w
G : SimpleGraph V
G' : SimpleGraph W
a b c u v w : V
e : Sym2 V
inst✝¹ : Fintype ↑(neighborSet G v)
inst✝ : DecidableEq V
⊢ Fintype.card ↑(incidenceSet G v) = degree G v

tactic: simp
state_before: ι : Sort ?u.274831
𝕜 : Type ?u.274834
V : Type u
W : Type v
X : Type w
G : SimpleGraph V
G' : SimpleGraph W
a b c u v w : V
e : Sym2 V
inst✝¹ : Fintype ↑(neighborSet G v)
inst✝ : DecidableEq V
⊢ Fintype.card ↑(neighborSet G v) = degree G v
Theorem: ZMod.eq_one_iff_odd
File: Mathlib/Data/ZMod/Parity.lean

tactic: rw [← @Nat.cast_one (ZMod 2), ZMod.eq_iff_modEq_nat, Nat.odd_iff, Nat.ModEq]
state_before: n : ℕ
⊢ ↑n = 1 ↔ Odd n

tactic: norm_num
state_before: n : ℕ
⊢ n % 2 = 1 % 2 ↔ n % 2 = 1
Theorem: TensorPower.mul_algebraMap₀
File: Mathlib/LinearAlgebra/TensorPower.lean

tactic: rw [gMul_eq_coe_linearMap, algebraMap₀_eq_smul_one, LinearMap.map_smul,
  LinearEquiv.map_smul, ← gMul_eq_coe_linearMap, mul_one]
state_before: R : Type u_1
M : Type u_2
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
n : ℕ
r : R
a : (⨂[R]^n) M
⊢ ↑(cast R M (_ : n + 0 = n)) (GradedMonoid.GMul.mul a (↑algebraMap₀ r)) = r • a
Theorem: Int.ediv_neg
File: Std/Data/Int/DivMod.lean

tactic: rw [Nat.div_zero]
state_before: m : Nat
⊢ ofNat (m / 0) = -↑(m / 0)

tactic: rfl
state_before: m : Nat
⊢ ofNat 0 = -↑0
Theorem: Nat.periodic_mod
File: Mathlib/Data/Nat/Periodic.lean

tactic: simp only [forall_const, eq_self_iff_true, add_mod_right, Periodic]
state_before: a : ℕ
⊢ Periodic (fun n => n % a) a
Theorem: HasDerivWithinAt.liminf_right_slope_norm_le
File: Mathlib/Analysis/Calculus/Deriv/Slope.lean

tactic: have := (hf.Ioi_of_Ici.limsup_slope_norm_le hr).frequently
state_before: E : Type u
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : ℝ → E
f' : E
s : Set ℝ
x r : ℝ
hf : HasDerivWithinAt f f' (Ici x) x
hr : ‖f'‖ < r
⊢ ∃ᶠ (z : ℝ) in 𝓝[Ioi x] x, (z - x)⁻¹ * (‖f z‖ - ‖f x‖) < r

tactic: refine this.mp (Eventually.mono self_mem_nhdsWithin fun z hxz hz ↦ ?_)
state_before: E : Type u
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : ℝ → E
f' : E
s : Set ℝ
x r : ℝ
hf : HasDerivWithinAt f f' (Ici x) x
hr : ‖f'‖ < r
this : ∃ᶠ (x_1 : ℝ) in 𝓝[Ioi x] x, ‖x_1 - x‖⁻¹ * (‖f x_1‖ - ‖f x‖) < r
⊢ ∃ᶠ (z : ℝ) in 𝓝[Ioi x] x, (z - x)⁻¹ * (‖f z‖ - ‖f x‖) < r

tactic: rwa [Real.norm_eq_abs, abs_of_pos (sub_pos_of_lt hxz)] at hz
state_before: E : Type u
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : ℝ → E
f' : E
s : Set ℝ
x r : ℝ
hf : HasDerivWithinAt f f' (Ici x) x
hr : ‖f'‖ < r
this : ∃ᶠ (x_1 : ℝ) in 𝓝[Ioi x] x, ‖x_1 - x‖⁻¹ * (‖f x_1‖ - ‖f x‖) < r
z : ℝ
hxz : x < z
hz : ‖z - x‖⁻¹ * (‖f z‖ - ‖f x‖) < r
⊢ (z - x)⁻¹ * (‖f z‖ - ‖f x‖) < r
Theorem: Set.dual_ordConnectedComponent
File: Mathlib/Data/Set/Intervals/OrdConnectedComponent.lean

tactic: rw [mem_ordConnectedComponent, dual_uIcc]
state_before: α : Type u_1
inst✝ : LinearOrder α
s t : Set α
x✝ y z x : α
⊢ ↑toDual x ∈ ordConnectedComponent (↑ofDual ⁻¹' s) (↑toDual x✝) ↔ ↑toDual x ∈ ↑ofDual ⁻¹' ordConnectedComponent s x✝

tactic: rfl
state_before: α : Type u_1
inst✝ : LinearOrder α
s t : Set α
x✝ y z x : α
⊢ ↑ofDual ⁻¹' [[x✝, x]] ⊆ ↑ofDual ⁻¹' s ↔ ↑toDual x ∈ ↑ofDual ⁻¹' ordConnectedComponent s x✝
Theorem: MeasureTheory.Integrable.div_const
File: Mathlib/MeasureTheory/Function/L1Space.lean

tactic: simp_rw [div_eq_mul_inv, h.mul_const]
state_before: α : Type u_2
β : Type ?u.1130144
γ : Type ?u.1130147
δ : Type ?u.1130150
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
𝕜 : Type u_1
inst✝ : NormedDivisionRing 𝕜
f✝ f : α → 𝕜
h : Integrable f
c : 𝕜
⊢ Integrable fun x => f x / c
Theorem: wbtw_or_wbtw_smul_vadd_of_nonneg
File: Mathlib/Analysis/Convex/Between.lean

tactic: rcases le_total r₁ r₂ with (h | h)
state_before: R : Type u_1
V : Type u_2
V' : Type ?u.537650
P : Type u_3
P' : Type ?u.537656
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x : P
v : V
r₁ r₂ : R
hr₁ : 0 ≤ r₁
hr₂ : 0 ≤ r₂
⊢ Wbtw R x (r₁ • v +ᵥ x) (r₂ • v +ᵥ x) ∨ Wbtw R x (r₂ • v +ᵥ x) (r₁ • v +ᵥ x)

tactic: exact Or.inl (wbtw_smul_vadd_smul_vadd_of_nonneg_of_le x v hr₁ h)
state_before: case inl
R : Type u_1
V : Type u_2
V' : Type ?u.537650
P : Type u_3
P' : Type ?u.537656
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x : P
v : V
r₁ r₂ : R
hr₁ : 0 ≤ r₁
hr₂ : 0 ≤ r₂
h : r₁ ≤ r₂
⊢ Wbtw R x (r₁ • v +ᵥ x) (r₂ • v +ᵥ x) ∨ Wbtw R x (r₂ • v +ᵥ x) (r₁ • v +ᵥ x)

tactic: exact Or.inr (wbtw_smul_vadd_smul_vadd_of_nonneg_of_le x v hr₂ h)
state_before: case inr
R : Type u_1
V : Type u_2
V' : Type ?u.537650
P : Type u_3
P' : Type ?u.537656
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x : P
v : V
r₁ r₂ : R
hr₁ : 0 ≤ r₁
hr₂ : 0 ≤ r₂
h : r₂ ≤ r₁
⊢ Wbtw R x (r₁ • v +ᵥ x) (r₂ • v +ᵥ x) ∨ Wbtw R x (r₂ • v +ᵥ x) (r₁ • v +ᵥ x)
Theorem: List.cons_eq_append_iff
File: Mathlib/Data/List/Basic.lean

tactic: rw [eq_comm, append_eq_cons_iff]
state_before: ι : Type ?u.11282
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ a b c : List α
x : α
⊢ x :: c = a ++ b ↔ a = [] ∧ b = x :: c ∨ ∃ a', a = x :: a' ∧ c = a' ++ b
Theorem: Finset.not_disjoint_iff_nonempty_inter
File: Mathlib/Data/Finset/Basic.lean

tactic: simp [Finset.Nonempty]
state_before: α : Type u_1
β : Type ?u.199389
γ : Type ?u.199392
inst✝ : DecidableEq α
s s₁ s₂ t t₁ t₂ u v : Finset α
a b : α
⊢ (∃ a, a ∈ s ∧ a ∈ t) ↔ Finset.Nonempty (s ∩ t)
Theorem: mem_rootsOfUnity_prime_pow_mul_iff
File: Mathlib/RingTheory/RootsOfUnity/Basic.lean

tactic: simp only [mem_rootsOfUnity', PNat.mul_coe, PNat.pow_coe, PNat.mk_coe,
  CharP.pow_prime_pow_mul_eq_one_iff]
state_before: M : Type ?u.1340998
N : Type ?u.1341001
G : Type ?u.1341004
R : Type u_1
S : Type ?u.1341010
F : Type ?u.1341013
inst✝⁵ : CommMonoid M
inst✝⁴ : CommMonoid N
inst✝³ : DivisionCommMonoid G
k✝ l : ℕ+
inst✝² : CommRing R
inst✝¹ : IsReduced R
p k : ℕ
m : ℕ+
hp : Fact (Nat.Prime p)
inst✝ : CharP R p
ζ : Rˣ
⊢ ζ ∈ rootsOfUnity ({ val := p, property := (_ : 0 < p) } ^ k * m) R ↔ ζ ∈ rootsOfUnity m R
Theorem: Besicovitch.SatelliteConfig.inter'
File: Mathlib/MeasureTheory/Covering/Besicovitch.lean

tactic: rcases lt_or_le i (last N) with (H | H)
state_before: α : Type u_1
inst✝ : MetricSpace α
N : ℕ
τ : ℝ
a : SatelliteConfig α N τ
i : Fin (Nat.succ N)
⊢ dist (c a i) (c a (last N)) ≤ r a i + r a (last N)

tactic: exact a.inter i H
state_before: case inl
α : Type u_1
inst✝ : MetricSpace α
N : ℕ
τ : ℝ
a : SatelliteConfig α N τ
i : Fin (Nat.succ N)
H : i < last N
⊢ dist (c a i) (c a (last N)) ≤ r a i + r a (last N)

tactic: have I : i = last N := top_le_iff.1 H
state_before: case inr
α : Type u_1
inst✝ : MetricSpace α
N : ℕ
τ : ℝ
a : SatelliteConfig α N τ
i : Fin (Nat.succ N)
H : last N ≤ i
⊢ dist (c a i) (c a (last N)) ≤ r a i + r a (last N)

tactic: have := (a.rpos (last N)).le
state_before: case inr
α : Type u_1
inst✝ : MetricSpace α
N : ℕ
τ : ℝ
a : SatelliteConfig α N τ
i : Fin (Nat.succ N)
H : last N ≤ i
I : i = last N
⊢ dist (c a i) (c a (last N)) ≤ r a i + r a (last N)

tactic: simp only [I, add_nonneg this this, dist_self]
state_before: case inr
α : Type u_1
inst✝ : MetricSpace α
N : ℕ
τ : ℝ
a : SatelliteConfig α N τ
i : Fin (Nat.succ N)
H : last N ≤ i
I : i = last N
this : 0 ≤ r a (last N)
⊢ dist (c a i) (c a (last N)) ≤ r a i + r a (last N)
Theorem: Set.inv_mem_center
File: Mathlib/GroupTheory/Subsemigroup/Center.lean

tactic: rw [← inv_inj, mul_inv_rev, inv_inv, ← ha, mul_inv_rev, inv_inv]
state_before: M : Type u_1
inst✝ : Group M
a : M
ha : a ∈ center M
g : M
⊢ g * a⁻¹ = a⁻¹ * g
Theorem: Associates.le_one_iff
File: Mathlib/Algebra/Associated.lean

tactic: rw [← Associates.bot_eq_one, le_bot_iff]
state_before: α : Type u_1
β : Type ?u.346411
γ : Type ?u.346414
δ : Type ?u.346417
inst✝ : CancelCommMonoidWithZero α
p : Associates α
⊢ p ≤ 1 ↔ p = 1
Theorem: Multiset.countp_congr
File: Mathlib/Data/Multiset/Basic.lean

tactic: revert hs hp
state_before: α : Type u_1
β : Type ?u.345110
γ : Type ?u.345113
p✝ : α → Prop
inst✝² : DecidablePred p✝
s s' : Multiset α
hs : s = s'
p p' : α → Prop
inst✝¹ : DecidablePred p
inst✝ : DecidablePred p'
hp : ∀ (x : α), x ∈ s → p x = p' x
⊢ countp p s = countp p' s'

tactic: exact Quot.induction_on₂ s s'
  (fun l l' hs hp => by
    simp only [quot_mk_to_coe'', coe_eq_coe] at hs
    apply hs.countp_congr
    simpa using hp)
state_before: α : Type u_1
β : Type ?u.345110
γ : Type ?u.345113
p✝ : α → Prop
inst✝² : DecidablePred p✝
s s' : Multiset α
p p' : α → Prop
inst✝¹ : DecidablePred p
inst✝ : DecidablePred p'
⊢ s = s' → (∀ (x : α), x ∈ s → p x = p' x) → countp p s = countp p' s'

tactic: simp only [quot_mk_to_coe'', coe_eq_coe] at hs
state_before: α : Type u_1
β : Type ?u.345110
γ : Type ?u.345113
p✝ : α → Prop
inst✝² : DecidablePred p✝
s s' : Multiset α
p p' : α → Prop
inst✝¹ : DecidablePred p
inst✝ : DecidablePred p'
l l' : List α
hs : Quot.mk Setoid.r l = Quot.mk Setoid.r l'
hp : ∀ (x : α), x ∈ Quot.mk Setoid.r l → p x = p' x
⊢ countp p (Quot.mk Setoid.r l) = countp p' (Quot.mk Setoid.r l')

tactic: apply hs.countp_congr
state_before: α : Type u_1
β : Type ?u.345110
γ : Type ?u.345113
p✝ : α → Prop
inst✝² : DecidablePred p✝
s s' : Multiset α
p p' : α → Prop
inst✝¹ : DecidablePred p
inst✝ : DecidablePred p'
l l' : List α
hp : ∀ (x : α), x ∈ Quot.mk Setoid.r l → p x = p' x
hs : l ~ l'
⊢ countp p (Quot.mk Setoid.r l) = countp p' (Quot.mk Setoid.r l')

tactic: simpa using hp
state_before: α : Type u_1
β : Type ?u.345110
γ : Type ?u.345113
p✝ : α → Prop
inst✝² : DecidablePred p✝
s s' : Multiset α
p p' : α → Prop
inst✝¹ : DecidablePred p
inst✝ : DecidablePred p'
l l' : List α
hp : ∀ (x : α), x ∈ Quot.mk Setoid.r l → p x = p' x
hs : l ~ l'
⊢ ∀ (x : α), x ∈ l → decide (p x) = decide (p' x)
Theorem: isOpen_extChartAt_preimage
File: Mathlib/Geometry/Manifold/SmoothManifoldWithCorners.lean

tactic: rw [← extChartAt_source I]
state_before: 𝕜 : Type u_4
E : Type u_1
M : Type u_2
H : Type u_3
E' : Type ?u.207999
M' : Type ?u.208002
H' : Type ?u.208005
inst✝¹⁰ : NontriviallyNormedField 𝕜
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
inst✝⁷ : TopologicalSpace H
inst✝⁶ : TopologicalSpace M
f f' : LocalHomeomorph M H
I : ModelWithCorners 𝕜 E H
inst✝⁵ : NormedAddCommGroup E'
inst✝⁴ : NormedSpace 𝕜 E'
inst✝³ : TopologicalSpace H'
inst✝² : TopologicalSpace M'
I' : ModelWithCorners 𝕜 E' H'
x : M
s✝ t : Set M
inst✝¹ : ChartedSpace H M
inst✝ : ChartedSpace H' M'
s : Set E
hs : IsOpen s
⊢ IsOpen ((chartAt H x).toLocalEquiv.source ∩ ↑(extChartAt I x) ⁻¹' s)

tactic: exact isOpen_extChartAt_preimage' I x hs
state_before: 𝕜 : Type u_4
E : Type u_1
M : Type u_2
H : Type u_3
E' : Type ?u.207999
M' : Type ?u.208002
H' : Type ?u.208005
inst✝¹⁰ : NontriviallyNormedField 𝕜
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
inst✝⁷ : TopologicalSpace H
inst✝⁶ : TopologicalSpace M
f f' : LocalHomeomorph M H
I : ModelWithCorners 𝕜 E H
inst✝⁵ : NormedAddCommGroup E'
inst✝⁴ : NormedSpace 𝕜 E'
inst✝³ : TopologicalSpace H'
inst✝² : TopologicalSpace M'
I' : ModelWithCorners 𝕜 E' H'
x : M
s✝ t : Set M
inst✝¹ : ChartedSpace H M
inst✝ : ChartedSpace H' M'
s : Set E
hs : IsOpen s
⊢ IsOpen ((extChartAt I x).source ∩ ↑(extChartAt I x) ⁻¹' s)