tasksource/leandojo huggingface dataset:
Theorem: Set.pi_subset_pi_iff
File: Mathlib/Data/Set/Prod.lean

tactic: refine'
  ⟨fun h => or_iff_not_imp_right.2 _, fun h => h.elim pi_mono fun h' => h'.symm ▸ empty_subset _⟩
state_before: ι : Type u_2
α : ι → Type u_1
β : ι → Type ?u.155680
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
i : ι
⊢ pi s t₁ ⊆ pi s t₂ ↔ (∀ (i : ι), i ∈ s → t₁ i ⊆ t₂ i) ∨ pi s t₁ = ∅

tactic: rw [← Ne.def, ← nonempty_iff_ne_empty]
state_before: ι : Type u_2
α : ι → Type u_1
β : ι → Type ?u.155680
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
i : ι
h : pi s t₁ ⊆ pi s t₂
⊢ ¬pi s t₁ = ∅ → ∀ (i : ι), i ∈ s → t₁ i ⊆ t₂ i

tactic: intro hne i hi
state_before: ι : Type u_2
α : ι → Type u_1
β : ι → Type ?u.155680
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
i : ι
h : pi s t₁ ⊆ pi s t₂
⊢ Set.Nonempty (pi s t₁) → ∀ (i : ι), i ∈ s → t₁ i ⊆ t₂ i

tactic: simpa only [eval_image_pi hi hne, eval_image_pi hi (hne.mono h)] using
  image_subset (fun f : ∀ i, α i => f i) h
state_before: ι : Type u_2
α : ι → Type u_1
β : ι → Type ?u.155680
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
i✝ : ι
h : pi s t₁ ⊆ pi s t₂
hne : Set.Nonempty (pi s t₁)
i : ι
hi : i ∈ s
⊢ t₁ i ⊆ t₂ i
Theorem: Subadditive.lim_le_div
File: Mathlib/Analysis/Subadditive.lean

tactic: rw [Subadditive.lim]
state_before: u : ℕ → ℝ
h : Subadditive u
hbdd : BddBelow (range fun n => u n / ↑n)
n : ℕ
hn : n ≠ 0
⊢ Subadditive.lim h ≤ u n / ↑n

tactic: exact csInf_le (hbdd.mono <| image_subset_range _ _) ⟨n, hn.bot_lt, rfl⟩
state_before: u : ℕ → ℝ
h : Subadditive u
hbdd : BddBelow (range fun n => u n / ↑n)
n : ℕ
hn : n ≠ 0
⊢ sInf ((fun n => u n / ↑n) '' Ici 1) ≤ u n / ↑n
Theorem: ProbabilityTheory.condCount_empty
File: Mathlib/Probability/CondCount.lean

tactic: simp
state_before: Ω : Type u_1
inst✝ : MeasurableSpace Ω
s : Set Ω
⊢ ↑↑(condCount s) ∅ = 0
Theorem: Basis.toMatrix_unitsSMul
File: Mathlib/LinearAlgebra/Matrix/Basis.lean

tactic: ext (i j)
state_before: ι : Type u_1
ι' : Type ?u.170437
κ : Type ?u.170440
κ' : Type ?u.170443
R : Type ?u.170446
M : Type ?u.170449
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
R₂ : Type u_2
M₂ : Type u_3
inst✝³ : CommRing R₂
inst✝² : AddCommGroup M₂
inst✝¹ : Module R₂ M₂
e✝ : Basis ι R M
v : ι' → M
i : ι
j : ι'
inst✝ : DecidableEq ι
e : Basis ι R₂ M₂
w : ι → R₂ˣ
⊢ toMatrix e ↑(unitsSMul e w) = Matrix.diagonal (Units.val ∘ w)

tactic: by_cases h : i = j
state_before: case a.h
ι : Type u_1
ι' : Type ?u.170437
κ : Type ?u.170440
κ' : Type ?u.170443
R : Type ?u.170446
M : Type ?u.170449
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
R₂ : Type u_2
M₂ : Type u_3
inst✝³ : CommRing R₂
inst✝² : AddCommGroup M₂
inst✝¹ : Module R₂ M₂
e✝ : Basis ι R M
v : ι' → M
i✝ : ι
j✝ : ι'
inst✝ : DecidableEq ι
e : Basis ι R₂ M₂
w : ι → R₂ˣ
i j : ι
⊢ toMatrix e (↑(unitsSMul e w)) i j = Matrix.diagonal (Units.val ∘ w) i j

tactic: simp [h, toMatrix_apply, unitsSMul_apply, Units.smul_def]
state_before: case pos
ι : Type u_1
ι' : Type ?u.170437
κ : Type ?u.170440
κ' : Type ?u.170443
R : Type ?u.170446
M : Type ?u.170449
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
R₂ : Type u_2
M₂ : Type u_3
inst✝³ : CommRing R₂
inst✝² : AddCommGroup M₂
inst✝¹ : Module R₂ M₂
e✝ : Basis ι R M
v : ι' → M
i✝ : ι
j✝ : ι'
inst✝ : DecidableEq ι
e : Basis ι R₂ M₂
w : ι → R₂ˣ
i j : ι
h : i = j
⊢ toMatrix e (↑(unitsSMul e w)) i j = Matrix.diagonal (Units.val ∘ w) i j

tactic: simp [h, toMatrix_apply, unitsSMul_apply, Units.smul_def, Ne.symm h]
state_before: case neg
ι : Type u_1
ι' : Type ?u.170437
κ : Type ?u.170440
κ' : Type ?u.170443
R : Type ?u.170446
M : Type ?u.170449
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
R₂ : Type u_2
M₂ : Type u_3
inst✝³ : CommRing R₂
inst✝² : AddCommGroup M₂
inst✝¹ : Module R₂ M₂
e✝ : Basis ι R M
v : ι' → M
i✝ : ι
j✝ : ι'
inst✝ : DecidableEq ι
e : Basis ι R₂ M₂
w : ι → R₂ˣ
i j : ι
h : ¬i = j
⊢ toMatrix e (↑(unitsSMul e w)) i j = Matrix.diagonal (Units.val ∘ w) i j
Theorem: ZMod.val_int_cast
File: Mathlib/Data/ZMod/Basic.lean

tactic: have hle : (0 : ℤ) ≤ ↑(a : ZMod n).val := Int.coe_nat_nonneg _
state_before: n : ℕ
a : ℤ
inst✝ : NeZero n
⊢ ↑(val ↑a) = a % ↑n

tactic: have hlt : ↑(a : ZMod n).val < (n : ℤ) := Int.ofNat_lt.mpr (ZMod.val_lt a)
state_before: n : ℕ
a : ℤ
inst✝ : NeZero n
hle : 0 ≤ ↑(val ↑a)
⊢ ↑(val ↑a) = a % ↑n

tactic: refine' (Int.emod_eq_of_lt hle hlt).symm.trans _
state_before: n : ℕ
a : ℤ
inst✝ : NeZero n
hle : 0 ≤ ↑(val ↑a)
hlt : ↑(val ↑a) < ↑n
⊢ ↑(val ↑a) = a % ↑n

tactic: rw [← ZMod.int_cast_eq_int_cast_iff', Int.cast_ofNat, ZMod.nat_cast_val, ZMod.cast_id]
state_before: n : ℕ
a : ℤ
inst✝ : NeZero n
hle : 0 ≤ ↑(val ↑a)
hlt : ↑(val ↑a) < ↑n
⊢ ↑(val ↑a) % ↑n = a % ↑n
Theorem: Submonoid.LocalizationMap.ofMulEquivOfLocalizations_comp
File: Mathlib/GroupTheory/MonoidLocalization.lean

tactic: ext
state_before: M : Type u_4
inst✝³ : CommMonoid M
S : Submonoid M
N : Type u_1
inst✝² : CommMonoid N
P : Type u_2
inst✝¹ : CommMonoid P
f : LocalizationMap S N
g : M →* P
hg : ∀ (y : { x // x ∈ S }), IsUnit (↑g ↑y)
T : Submonoid P
Q : Type u_3
inst✝ : CommMonoid Q
k : N ≃* P
j : P ≃* Q
⊢ toMap (ofMulEquivOfLocalizations f (MulEquiv.trans k j)) =
    MonoidHom.comp (MulEquiv.toMonoidHom j) (toMap (ofMulEquivOfLocalizations f k))

tactic: rfl
state_before: case h
M : Type u_4
inst✝³ : CommMonoid M
S : Submonoid M
N : Type u_1
inst✝² : CommMonoid N
P : Type u_2
inst✝¹ : CommMonoid P
f : LocalizationMap S N
g : M →* P
hg : ∀ (y : { x // x ∈ S }), IsUnit (↑g ↑y)
T : Submonoid P
Q : Type u_3
inst✝ : CommMonoid Q
k : N ≃* P
j : P ≃* Q
x✝ : M
⊢ ↑(toMap (ofMulEquivOfLocalizations f (MulEquiv.trans k j))) x✝ =
    ↑(MonoidHom.comp (MulEquiv.toMonoidHom j) (toMap (ofMulEquivOfLocalizations f k))) x✝
Theorem: Ordinal.ne_bmex
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: rw [typein_enum]
state_before: case h.e'_2.h.e'_1
α : Type ?u.383183
β : Type ?u.383186
γ : Type ?u.383189
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
o : Ordinal
f : (a : Ordinal) → a < o → Ordinal
i : Ordinal
hi : i < o
⊢ i = typein (fun x x_1 => x < x_1) (enum (fun x x_1 => x < x_1) i (_ : i < type fun x x_1 => x < x_1))

tactic: rwa [type_lt]
state_before: α : Type ?u.383183
β : Type ?u.383186
γ : Type ?u.383189
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
o : Ordinal
f : (a : Ordinal) → a < o → Ordinal
i : Ordinal
hi : i < o
⊢ i < type fun x x_1 => x < x_1
Theorem: Function.iterate_add_apply
File: Mathlib/Logic/Function/Iterate.lean

tactic: rw [iterate_add f m n]
state_before: α : Type u
β : Type v
f : α → α
m n : ℕ
x : α
⊢ (f^[m + n]) x = (f^[m]) ((f^[n]) x)

tactic: rfl
state_before: α : Type u
β : Type v
f : α → α
m n : ℕ
x : α
⊢ (f^[m] ∘ f^[n]) x = (f^[m]) ((f^[n]) x)
Theorem: Set.Icc_bot
File: Mathlib/Data/Set/Intervals/Basic.lean

tactic: simp [← Ici_inter_Iic]
state_before: α : Type u_1
β : Type ?u.56497
inst✝¹ : Preorder α
inst✝ : OrderBot α
a : α
⊢ Icc ⊥ a = Iic a
Theorem: FirstOrder.Language.BoundedFormula.realize_rel₁
File: Mathlib/ModelTheory/Semantics.lean

tactic: rw [Relations.boundedFormula₁, realize_rel, iff_eq_eq]
state_before: L : Language
L' : Language
M : Type w
N : Type ?u.54593
P : Type ?u.54596
inst✝² : Structure L M
inst✝¹ : Structure L N
inst✝ : Structure L P
α : Type u'
β : Type v'
n l : ℕ
φ ψ : BoundedFormula L α l
θ : BoundedFormula L α (Nat.succ l)
v : α → M
xs : Fin l → M
R : Relations L 1
t : Term L (α ⊕ Fin l)
⊢ Realize (Relations.boundedFormula₁ R t) v xs ↔ RelMap R ![realize (Sum.elim v xs) t]

tactic: refine' congr rfl (funext fun _ => _)
state_before: L : Language
L' : Language
M : Type w
N : Type ?u.54593
P : Type ?u.54596
inst✝² : Structure L M
inst✝¹ : Structure L N
inst✝ : Structure L P
α : Type u'
β : Type v'
n l : ℕ
φ ψ : BoundedFormula L α l
θ : BoundedFormula L α (Nat.succ l)
v : α → M
xs : Fin l → M
R : Relations L 1
t : Term L (α ⊕ Fin l)
⊢ (RelMap R fun i => realize (Sum.elim v xs) (Matrix.vecCons t ![] i)) = RelMap R ![realize (Sum.elim v xs) t]

tactic: simp only [Matrix.cons_val_fin_one]
state_before: L : Language
L' : Language
M : Type w
N : Type ?u.54593
P : Type ?u.54596
inst✝² : Structure L M
inst✝¹ : Structure L N
inst✝ : Structure L P
α : Type u'
β : Type v'
n l : ℕ
φ ψ : BoundedFormula L α l
θ : BoundedFormula L α (Nat.succ l)
v : α → M
xs : Fin l → M
R : Relations L 1
t : Term L (α ⊕ Fin l)
x✝ : Fin 1
⊢ realize (Sum.elim v xs) (Matrix.vecCons t ![] x✝) = Matrix.vecCons (realize (Sum.elim v xs) t) ![] x✝
Theorem: Matrix.vec3_add
File: Mathlib/Data/Matrix/Notation.lean

tactic: rw [cons_add_cons, cons_add_cons, cons_add_cons, empty_add_empty]
state_before: α : Type u
o n m : ℕ
m' : Type uₘ
n' : Type uₙ
o' : Type uₒ
a b : ℕ
inst✝ : Add α
a₀ a₁ a₂ b₀ b₁ b₂ : α
⊢ ![a₀, a₁, a₂] + ![b₀, b₁, b₂] = ![a₀ + b₀, a₁ + b₁, a₂ + b₂]
Theorem: Polynomial.degree_erase_le
File: Mathlib/Data/Polynomial/Degree/Definitions.lean

tactic: rcases p with ⟨p⟩
state_before: R : Type u
S : Type v
a b c d : R
n✝ m : ℕ
inst✝ : Semiring R
p✝ q : R[X]
ι : Type ?u.559926
p : R[X]
n : ℕ
⊢ degree (erase n p) ≤ degree p

tactic: simp only [erase_def, degree, coeff, support]
state_before: case ofFinsupp
R : Type u
S : Type v
a b c d : R
n✝ m : ℕ
inst✝ : Semiring R
p✝ q : R[X]
ι : Type ?u.559926
n : ℕ
p : AddMonoidAlgebra R ℕ
⊢ degree (erase n { toFinsupp := p }) ≤ degree { toFinsupp := p }

tactic: apply sup_mono
state_before: case ofFinsupp
R : Type u
S : Type v
a b c d : R
n✝ m : ℕ
inst✝ : Semiring R
p✝ q : R[X]
ι : Type ?u.559926
n : ℕ
p : AddMonoidAlgebra R ℕ
⊢ Finset.max (Finsupp.erase n p).support ≤ Finset.max p.support

tactic: rw [Finsupp.support_erase]
state_before: case ofFinsupp.h
R : Type u
S : Type v
a b c d : R
n✝ m : ℕ
inst✝ : Semiring R
p✝ q : R[X]
ι : Type ?u.559926
n : ℕ
p : AddMonoidAlgebra R ℕ
⊢ (Finsupp.erase n p).support ⊆ p.support

tactic: apply Finset.erase_subset
state_before: case ofFinsupp.h
R : Type u
S : Type v
a b c d : R
n✝ m : ℕ
inst✝ : Semiring R
p✝ q : R[X]
ι : Type ?u.559926
n : ℕ
p : AddMonoidAlgebra R ℕ
⊢ Finset.erase p.support n ⊆ p.support
Theorem: Polynomial.coeff_expand_mul
File: Mathlib/Data/Polynomial/Expand.lean

tactic: rw [coeff_expand hp, if_pos (dvd_mul_left _ _), Nat.mul_div_cancel _ hp]
state_before: R : Type u
inst✝¹ : CommSemiring R
S : Type v
inst✝ : CommSemiring S
p✝ q p : ℕ
hp : 0 < p
f : R[X]
n : ℕ
⊢ coeff (↑(expand R p) f) (n * p) = coeff f n
Theorem: IsPreconnected.eq_one_or_eq_neg_one_of_sq_eq
File: Mathlib/Topology/Algebra/Field.lean

tactic: have : DiscreteTopology ({1, -1} : Set 𝕜) := discrete_of_t1_of_finite
state_before: K : Type ?u.15846
inst✝⁶ : DivisionRing K
inst✝⁵ : TopologicalSpace K
α : Type u_2
𝕜 : Type u_1
f g : α → 𝕜
S : Set α
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace 𝕜
inst✝² : T1Space 𝕜
inst✝¹ : Ring 𝕜
inst✝ : NoZeroDivisors 𝕜
hS : IsPreconnected S
hf : ContinuousOn f S
hsq : EqOn (f ^ 2) 1 S
⊢ EqOn f 1 S ∨ EqOn f (-1) S

tactic: have hmaps : MapsTo f S {1, -1}
state_before: K : Type ?u.15846
inst✝⁶ : DivisionRing K
inst✝⁵ : TopologicalSpace K
α : Type u_2
𝕜 : Type u_1
f g : α → 𝕜
S : Set α
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace 𝕜
inst✝² : T1Space 𝕜
inst✝¹ : Ring 𝕜
inst✝ : NoZeroDivisors 𝕜
hS : IsPreconnected S
hf : ContinuousOn f S
hsq : EqOn (f ^ 2) 1 S
this : DiscreteTopology ↑{1, -1}
⊢ EqOn f 1 S ∨ EqOn f (-1) S

tactic: simpa using hS.eqOn_const_of_mapsTo hf hmaps
state_before: K : Type ?u.15846
inst✝⁶ : DivisionRing K
inst✝⁵ : TopologicalSpace K
α : Type u_2
𝕜 : Type u_1
f g : α → 𝕜
S : Set α
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace 𝕜
inst✝² : T1Space 𝕜
inst✝¹ : Ring 𝕜
inst✝ : NoZeroDivisors 𝕜
hS : IsPreconnected S
hf : ContinuousOn f S
hsq : EqOn (f ^ 2) 1 S
this : DiscreteTopology ↑{1, -1}
hmaps : MapsTo f S {1, -1}
⊢ EqOn f 1 S ∨ EqOn f (-1) S

tactic: simpa only [EqOn, Pi.one_apply, Pi.pow_apply, sq_eq_one_iff] using hsq
state_before: case hmaps
K : Type ?u.15846
inst✝⁶ : DivisionRing K
inst✝⁵ : TopologicalSpace K
α : Type u_2
𝕜 : Type u_1
f g : α → 𝕜
S : Set α
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace 𝕜
inst✝² : T1Space 𝕜
inst✝¹ : Ring 𝕜
inst✝ : NoZeroDivisors 𝕜
hS : IsPreconnected S
hf : ContinuousOn f S
hsq : EqOn (f ^ 2) 1 S
this : DiscreteTopology ↑{1, -1}
⊢ MapsTo f S {1, -1}
Theorem: ENNReal.ofReal_tsum_of_nonneg
File: Mathlib/Topology/Instances/ENNReal.lean

tactic: simp_rw [ENNReal.ofReal, ENNReal.tsum_coe_eq (NNReal.hasSum_real_toNNReal_of_nonneg hf_nonneg hf)]
state_before: α : Type u_1
β : Type ?u.343113
γ : Type ?u.343116
f : α → ℝ
hf_nonneg : ∀ (n : α), 0 ≤ f n
hf : Summable f
⊢ ENNReal.ofReal (∑' (n : α), f n) = ∑' (n : α), ENNReal.ofReal (f n)
Theorem: MvPolynomial.monomial_le_degreeOf
File: Mathlib/Data/MvPolynomial/Variables.lean

tactic: rw [degreeOf_eq_sup i]
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type ?u.310239
r : R
e : ℕ
n m✝ : σ
s : σ →₀ ℕ
inst✝ : CommSemiring R
p q : MvPolynomial σ R
i : σ
f : MvPolynomial σ R
m : σ →₀ ℕ
h_m : m ∈ support f
⊢ ↑m i ≤ degreeOf i f

tactic: apply Finset.le_sup h_m
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type ?u.310239
r : R
e : ℕ
n m✝ : σ
s : σ →₀ ℕ
inst✝ : CommSemiring R
p q : MvPolynomial σ R
i : σ
f : MvPolynomial σ R
m : σ →₀ ℕ
h_m : m ∈ support f
⊢ ↑m i ≤ Finset.sup (support f) fun m => ↑m i
Theorem: abs_eq_iff_mul_self_eq
File: Mathlib/Algebra/Order/Ring/Abs.lean

tactic: rw [← abs_mul_abs_self, ← abs_mul_abs_self b]
state_before: α : Type u_1
inst✝ : LinearOrderedRing α
a b c : α
⊢ abs a = abs b ↔ a * a = b * b

tactic: exact (mul_self_inj (abs_nonneg a) (abs_nonneg b)).symm
state_before: α : Type u_1
inst✝ : LinearOrderedRing α
a b c : α
⊢ abs a = abs b ↔ abs a * abs a = abs b * abs b
Theorem: Submodule.exists_mem_and_smul_eq_self_of_fg_of_le_smul
File: Mathlib/RingTheory/Finiteness.lean

tactic: obtain ⟨r, hr, hr'⟩ := exists_sub_one_mem_and_smul_eq_zero_of_fg_of_le_smul I N hn hin
state_before: R✝ : Type ?u.46750
M✝ : Type ?u.46753
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
hn : FG N
hin : N ≤ I • N
⊢ ∃ r, r ∈ I ∧ ∀ (n : M), n ∈ N → r • n = n

tactic: exact ⟨-(r - 1), I.neg_mem hr, fun n hn => by simpa [sub_smul] using hr' n hn⟩
state_before: case intro.intro
R✝ : Type ?u.46750
M✝ : Type ?u.46753
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
hn : FG N
hin : N ≤ I • N
r : R
hr : r - 1 ∈ I
hr' : ∀ (n : M), n ∈ N → r • n = 0
⊢ ∃ r, r ∈ I ∧ ∀ (n : M), n ∈ N → r • n = n

tactic: simpa [sub_smul] using hr' n hn
state_before: R✝ : Type ?u.46750
M✝ : Type ?u.46753
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
hn✝ : FG N
hin : N ≤ I • N
r : R
hr : r - 1 ∈ I
hr' : ∀ (n : M), n ∈ N → r • n = 0
n : M
hn : n ∈ N
⊢ -(r - 1) • n = n
Theorem: Int.even_add'
File: Mathlib/Data/Int/Parity.lean

tactic: rw [even_add, even_iff_not_odd, even_iff_not_odd, not_iff_not]
state_before: m n : ℤ
⊢ Even (m + n) ↔ (Odd m ↔ Odd n)
Theorem: Isometry.preimage_emetric_ball
File: Mathlib/Topology/MetricSpace/Isometry.lean

tactic: ext y
state_before: ι : Type ?u.43449
α : Type u
β : Type v
γ : Type w
inst✝² : PseudoEMetricSpace α
inst✝¹ : PseudoEMetricSpace β
inst✝ : PseudoEMetricSpace γ
f : α → β
x✝ y z : α
s : Set α
h : Isometry f
x : α
r : ℝ≥0∞
⊢ f ⁻¹' EMetric.ball (f x) r = EMetric.ball x r

tactic: simp [h.edist_eq]
state_before: case h
ι : Type ?u.43449
α : Type u
β : Type v
γ : Type w
inst✝² : PseudoEMetricSpace α
inst✝¹ : PseudoEMetricSpace β
inst✝ : PseudoEMetricSpace γ
f : α → β
x✝ y✝ z : α
s : Set α
h : Isometry f
x : α
r : ℝ≥0∞
y : α
⊢ y ∈ f ⁻¹' EMetric.ball (f x) r ↔ y ∈ EMetric.ball x r
Theorem: Set.IsPwo.isWf
File: Mathlib/Order/WellFoundedSet.lean

tactic: simpa only [← lt_iff_le_not_le] using h.wellFoundedOn
state_before: ι : Type ?u.104801
α : Type u_1
β : Type ?u.104807
inst✝¹ : Preorder α
inst✝ : Preorder β
s t : Set α
h : IsPwo s
⊢ IsWf s
Theorem: Mathlib.Meta.NormNum.IsRat.to_isInt
File: Mathlib/Tactic/NormNum/Core.lean

tactic: simp
state_before: α : Type u_1
inst✝ : Ring α
num✝ : ℤ
inv : Invertible ↑1
this : Invertible 1
⊢ ↑num✝ * ⅟↑1 = ↑num✝
Theorem: tendsto_atTop_ciInf
File: Mathlib/Topology/Algebra/Order/MonotoneConvergence.lean

tactic: convert tendsto_atBot_ciSup h_anti.dual hbdd.dual using 1
state_before: α : Type u_2
β : Type ?u.27589
ι : Type u_1
inst✝³ : Preorder ι
inst✝² : TopologicalSpace α
inst✝¹ : ConditionallyCompleteLattice α
inst✝ : InfConvergenceClass α
f : ι → α
a : α
h_anti : Antitone f
hbdd : BddBelow (range f)
⊢ Tendsto f atTop (𝓝 (⨅ (i : ι), f i))
Theorem: Polynomial.monomial_mul_X_pow
File: Mathlib/Data/Polynomial/Basic.lean

tactic: induction' k with k ih
state_before: R : Type u
a b : R
m n✝ : ℕ
inst✝ : Semiring R
p q : R[X]
n : ℕ
r : R
k : ℕ
⊢ ↑(monomial n) r * X ^ k = ↑(monomial (n + k)) r

tactic: simp
state_before: case zero
R : Type u
a b : R
m n✝ : ℕ
inst✝ : Semiring R
p q : R[X]
n : ℕ
r : R
⊢ ↑(monomial n) r * X ^ Nat.zero = ↑(monomial (n + Nat.zero)) r

tactic: simp [ih, pow_succ', ← mul_assoc, add_assoc]
state_before: case succ
R : Type u
a b : R
m n✝ : ℕ
inst✝ : Semiring R
p q : R[X]
n : ℕ
r : R
k : ℕ
ih : ↑(monomial n) r * X ^ k = ↑(monomial (n + k)) r
⊢ ↑(monomial n) r * X ^ Nat.succ k = ↑(monomial (n + Nat.succ k)) r
Theorem: Dfinsupp.filter_ne_eq_erase
File: Mathlib/Data/Dfinsupp/Basic.lean

tactic: ext1 j
state_before: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
dec : DecidableEq ι
inst✝ : (i : ι) → Zero (β i)
s : Finset ι
x : (i : ↑↑s) → β ↑i
i✝ : ι
f : Π₀ (i : ι), β i
i : ι
⊢ filter (fun x => x ≠ i) f = erase i f

tactic: simp only [Dfinsupp.filter_apply, Dfinsupp.erase_apply, ite_not]
state_before: case h
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
dec : DecidableEq ι
inst✝ : (i : ι) → Zero (β i)
s : Finset ι
x : (i : ↑↑s) → β ↑i
i✝ : ι
f : Π₀ (i : ι), β i
i j : ι
⊢ ↑(filter (fun x => x ≠ i) f) j = ↑(erase i f) j
Theorem: Units.mul_eq_one_iff_eq_inv
File: Mathlib/Algebra/Group/Units.lean

tactic: rw [← mul_inv_eq_one, inv_inv]
state_before: α : Type u
inst✝ : Monoid α
a✝ b c u : αˣ
a : α
⊢ a * ↑u = 1 ↔ a = ↑u⁻¹
Theorem: CategoryTheory.Sieve.functorPushforward_extend_eq
File: Mathlib/CategoryTheory/Sites/Sieves.lean

tactic: funext Y
state_before: C : Type u₁
inst✝² : Category C
D : Type u₂
inst✝¹ : Category D
F : C ⥤ D
X Y Z : C
f : Y ⟶ X
S R✝ : Sieve X
E : Type u₃
inst✝ : Category E
G : D ⥤ E
R : Presieve X
⊢ Presieve.functorPushforward F (generate R).arrows = Presieve.functorPushforward F R

tactic: ext f
state_before: case h
C : Type u₁
inst✝² : Category C
D : Type u₂
inst✝¹ : Category D
F : C ⥤ D
X Y✝ Z : C
f : Y✝ ⟶ X
S R✝ : Sieve X
E : Type u₃
inst✝ : Category E
G : D ⥤ E
R : Presieve X
Y : D
⊢ Presieve.functorPushforward F (generate R).arrows = Presieve.functorPushforward F R

tactic: constructor
state_before: case h.h
C : Type u₁
inst✝² : Category C
D : Type u₂
inst✝¹ : Category D
F : C ⥤ D
X Y✝ Z : C
f✝ : Y✝ ⟶ X
S R✝ : Sieve X
E : Type u₃
inst✝ : Category E
G : D ⥤ E
R : Presieve X
Y : D
f : Y ⟶ F.obj X
⊢ f ∈ Presieve.functorPushforward F (generate R).arrows ↔ f ∈ Presieve.functorPushforward F R

tactic: rintro ⟨X', g, f', ⟨X'', g', f'', h₁, rfl⟩, rfl⟩
state_before: case h.h.mp
C : Type u₁
inst✝² : Category C
D : Type u₂
inst✝¹ : Category D
F : C ⥤ D
X Y✝ Z : C
f✝ : Y✝ ⟶ X
S R✝ : Sieve X
E : Type u₃
inst✝ : Category E
G : D ⥤ E
R : Presieve X
Y : D
f : Y ⟶ F.obj X
⊢ f ∈ Presieve.functorPushforward F (generate R).arrows → f ∈ Presieve.functorPushforward F R

tactic: exact ⟨X'', f'', f' ≫ F.map g', h₁, by simp⟩
state_before: case h.h.mp.intro.intro.intro.intro.intro.intro.intro.intro
C : Type u₁
inst✝² : Category C
D : Type u₂
inst✝¹ : Category D
F : C ⥤ D
X Y✝ Z : C
f : Y✝ ⟶ X
S R✝ : Sieve X
E : Type u₃
inst✝ : Category E
G : D ⥤ E
R : Presieve X
Y : D
X' : C
f' : Y ⟶ F.obj X'
X'' : C
g' : X' ⟶ X''
f'' : X'' ⟶ X
h₁ : R f''
⊢ f' ≫ F.map (g' ≫ f'') ∈ Presieve.functorPushforward F R

tactic: simp
state_before: C : Type u₁
inst✝² : Category C
D : Type u₂
inst✝¹ : Category D
F : C ⥤ D
X Y✝ Z : C
f : Y✝ ⟶ X
S R✝ : Sieve X
E : Type u₃
inst✝ : Category E
G : D ⥤ E
R : Presieve X
Y : D
X' : C
f' : Y ⟶ F.obj X'
X'' : C
g' : X' ⟶ X''
f'' : X'' ⟶ X
h₁ : R f''
⊢ f' ≫ F.map (g' ≫ f'') = (f' ≫ F.map g') ≫ F.map f''

tactic: rintro ⟨X', g, f', h₁, h₂⟩
state_before: case h.h.mpr
C : Type u₁
inst✝² : Category C
D : Type u₂
inst✝¹ : Category D
F : C ⥤ D
X Y✝ Z : C
f✝ : Y✝ ⟶ X
S R✝ : Sieve X
E : Type u₃
inst✝ : Category E
G : D ⥤ E
R : Presieve X
Y : D
f : Y ⟶ F.obj X
⊢ f ∈ Presieve.functorPushforward F R → f ∈ Presieve.functorPushforward F (generate R).arrows

tactic: exact ⟨X', g, f', le_generate R _ h₁, h₂⟩
state_before: case h.h.mpr.intro.intro.intro.intro
C : Type u₁
inst✝² : Category C
D : Type u₂
inst✝¹ : Category D
F : C ⥤ D
X Y✝ Z : C
f✝ : Y✝ ⟶ X
S R✝ : Sieve X
E : Type u₃
inst✝ : Category E
G : D ⥤ E
R : Presieve X
Y : D
f : Y ⟶ F.obj X
X' : C
g : X' ⟶ X
f' : Y ⟶ F.obj X'
h₁ : R g
h₂ : f = f' ≫ F.map g
⊢ f ∈ Presieve.functorPushforward F (generate R).arrows
Theorem: Monotone.seq_lt_seq_of_lt_of_le
File: Mathlib/Order/Iterate.lean

tactic: cases n
state_before: α : Type u_1
inst✝ : Preorder α
f : α → α
x y : ℕ → α
hf : Monotone f
n : ℕ
h₀ : x 0 < y 0
hx : ∀ (k : ℕ), k < n → x (k + 1) < f (x k)
hy : ∀ (k : ℕ), k < n → f (y k) ≤ y (k + 1)
⊢ x n < y n

tactic: exacts [h₀, hf.seq_pos_lt_seq_of_lt_of_le (Nat.zero_lt_succ _) h₀.le hx hy]
state_before: case zero
α : Type u_1
inst✝ : Preorder α
f : α → α
x y : ℕ → α
hf : Monotone f
h₀ : x 0 < y 0
hx : ∀ (k : ℕ), k < Nat.zero → x (k + 1) < f (x k)
hy : ∀ (k : ℕ), k < Nat.zero → f (y k) ≤ y (k + 1)
⊢ x Nat.zero < y Nat.zero

case succ
α : Type u_1
inst✝ : Preorder α
f : α → α
x y : ℕ → α
hf : Monotone f
h₀ : x 0 < y 0
n✝ : ℕ
hx : ∀ (k : ℕ), k < Nat.succ n✝ → x (k + 1) < f (x k)
hy : ∀ (k : ℕ), k < Nat.succ n✝ → f (y k) ≤ y (k + 1)
⊢ x (Nat.succ n✝) < y (Nat.succ n✝)
Theorem: Set.indicator_le_indicator_nonneg
File: Mathlib/Algebra/IndicatorFunction.lean

tactic: intro x
state_before: α : Type u_2
β✝ : Type ?u.165616
ι : Type ?u.165619
M : Type ?u.165622
N : Type ?u.165625
β : Type u_1
inst✝¹ : LinearOrder β
inst✝ : Zero β
s : Set α
f : α → β
⊢ indicator s f ≤ indicator {x | 0 ≤ f x} f

tactic: simp_rw [indicator_apply]
state_before: α : Type u_2
β✝ : Type ?u.165616
ι : Type ?u.165619
M : Type ?u.165622
N : Type ?u.165625
β : Type u_1
inst✝¹ : LinearOrder β
inst✝ : Zero β
s : Set α
f : α → β
x : α
⊢ indicator s f x ≤ indicator {x | 0 ≤ f x} f x

tactic: split_ifs with h_1 h_2 h_3
state_before: α : Type u_2
β✝ : Type ?u.165616
ι : Type ?u.165619
M : Type ?u.165622
N : Type ?u.165625
β : Type u_1
inst✝¹ : LinearOrder β
inst✝ : Zero β
s : Set α
f : α → β
x : α
⊢ (if x ∈ s then f x else 0) ≤ if x ∈ {x | 0 ≤ f x} then f x else 0

tactic: exact le_rfl
state_before: case inl.inl
α : Type u_2
β✝ : Type ?u.165616
ι : Type ?u.165619
M : Type ?u.165622
N : Type ?u.165625
β : Type u_1
inst✝¹ : LinearOrder β
inst✝ : Zero β
s : Set α
f : α → β
x : α
h_1 : x ∈ s
h_2 : x ∈ {x | 0 ≤ f x}
⊢ f x ≤ f x

tactic: exact (not_le.mp h_2).le
state_before: case inl.inr
α : Type u_2
β✝ : Type ?u.165616
ι : Type ?u.165619
M : Type ?u.165622
N : Type ?u.165625
β : Type u_1
inst✝¹ : LinearOrder β
inst✝ : Zero β
s : Set α
f : α → β
x : α
h_1 : x ∈ s
h_2 : ¬x ∈ {x | 0 ≤ f x}
⊢ f x ≤ 0

tactic: exact h_3
state_before: case inr.inl
α : Type u_2
β✝ : Type ?u.165616
ι : Type ?u.165619
M : Type ?u.165622
N : Type ?u.165625
β : Type u_1
inst✝¹ : LinearOrder β
inst✝ : Zero β
s : Set α
f : α → β
x : α
h_1 : ¬x ∈ s
h_3 : x ∈ {x | 0 ≤ f x}
⊢ 0 ≤ f x

tactic: exact le_rfl
state_before: case inr.inr
α : Type u_2
β✝ : Type ?u.165616
ι : Type ?u.165619
M : Type ?u.165622
N : Type ?u.165625
β : Type u_1
inst✝¹ : LinearOrder β
inst✝ : Zero β
s : Set α
f : α → β
x : α
h_1 : ¬x ∈ s
h_3 : ¬x ∈ {x | 0 ≤ f x}
⊢ 0 ≤ 0