tasksource/leandojo huggingface dataset:
Theorem: Finsupp.mapDomain_apply
File: Mathlib/Data/Finsupp/Basic.lean

tactic: rw [mapDomain, sum_apply, sum, Finset.sum_eq_single a, single_eq_same]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.154448
ι : Type ?u.154451
M : Type u_3
M' : Type ?u.154457
N : Type ?u.154460
P : Type ?u.154463
G : Type ?u.154466
H : Type ?u.154469
R : Type ?u.154472
S : Type ?u.154475
inst✝ : AddCommMonoid M
v v₁ v₂ : α →₀ M
f : α → β
hf : Injective f
x : α →₀ M
a : α
⊢ ↑(mapDomain f x) (f a) = ↑x a

tactic: intro b _ hba
state_before: case h₀
α : Type u_1
β : Type u_2
γ : Type ?u.154448
ι : Type ?u.154451
M : Type u_3
M' : Type ?u.154457
N : Type ?u.154460
P : Type ?u.154463
G : Type ?u.154466
H : Type ?u.154469
R : Type ?u.154472
S : Type ?u.154475
inst✝ : AddCommMonoid M
v v₁ v₂ : α →₀ M
f : α → β
hf : Injective f
x : α →₀ M
a : α
⊢ ∀ (b : α), b ∈ x.support → b ≠ a → ↑(single (f b) (↑x b)) (f a) = 0

tactic: exact single_eq_of_ne (hf.ne hba)
state_before: case h₀
α : Type u_1
β : Type u_2
γ : Type ?u.154448
ι : Type ?u.154451
M : Type u_3
M' : Type ?u.154457
N : Type ?u.154460
P : Type ?u.154463
G : Type ?u.154466
H : Type ?u.154469
R : Type ?u.154472
S : Type ?u.154475
inst✝ : AddCommMonoid M
v v₁ v₂ : α →₀ M
f : α → β
hf : Injective f
x : α →₀ M
a b : α
a✝ : b ∈ x.support
hba : b ≠ a
⊢ ↑(single (f b) (↑x b)) (f a) = 0

tactic: intro h
state_before: case h₁
α : Type u_1
β : Type u_2
γ : Type ?u.154448
ι : Type ?u.154451
M : Type u_3
M' : Type ?u.154457
N : Type ?u.154460
P : Type ?u.154463
G : Type ?u.154466
H : Type ?u.154469
R : Type ?u.154472
S : Type ?u.154475
inst✝ : AddCommMonoid M
v v₁ v₂ : α →₀ M
f : α → β
hf : Injective f
x : α →₀ M
a : α
⊢ ¬a ∈ x.support → ↑(single (f a) (↑x a)) (f a) = 0

tactic: rw [not_mem_support_iff.1 h, single_zero, zero_apply]
state_before: case h₁
α : Type u_1
β : Type u_2
γ : Type ?u.154448
ι : Type ?u.154451
M : Type u_3
M' : Type ?u.154457
N : Type ?u.154460
P : Type ?u.154463
G : Type ?u.154466
H : Type ?u.154469
R : Type ?u.154472
S : Type ?u.154475
inst✝ : AddCommMonoid M
v v₁ v₂ : α →₀ M
f : α → β
hf : Injective f
x : α →₀ M
a : α
h : ¬a ∈ x.support
⊢ ↑(single (f a) (↑x a)) (f a) = 0
Theorem: List.concat_eq_reverse_cons
File: Mathlib/Data/List/Basic.lean

tactic: simp only [concat_eq_append, reverse_cons, reverse_reverse]
state_before: ι : Type ?u.26992
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
a : α
l : List α
⊢ concat l a = reverse (a :: reverse l)
Theorem: mulRight_bound
File: Mathlib/Analysis/Normed/Field/Basic.lean

tactic: rw [mul_comm]
state_before: α : Type u_1
β : Type ?u.44527
γ : Type ?u.44530
ι : Type ?u.44533
inst✝ : NonUnitalSeminormedRing α
x y : α
⊢ ‖↑(AddMonoidHom.mulRight x) y‖ ≤ ‖x‖ * ‖y‖

tactic: exact norm_mul_le y x
state_before: α : Type u_1
β : Type ?u.44527
γ : Type ?u.44530
ι : Type ?u.44533
inst✝ : NonUnitalSeminormedRing α
x y : α
⊢ ‖↑(AddMonoidHom.mulRight x) y‖ ≤ ‖y‖ * ‖x‖
Theorem: LieSubalgebra.sInf_glb
File: Mathlib/Algebra/Lie/Subalgebra.lean

tactic: have h : ∀ K K' : LieSubalgebra R L, (K : Set L) ≤ K' ↔ K ≤ K' := by
  intros
  exact Iff.rfl
state_before: R : Type u
L : Type v
inst✝⁴ : CommRing R
inst✝³ : LieRing L
inst✝² : LieAlgebra R L
L₂ : Type w
inst✝¹ : LieRing L₂
inst✝ : LieAlgebra R L₂
f : L →ₗ⁅R⁆ L₂
K K' : LieSubalgebra R L
K₂ : LieSubalgebra R L₂
S : Set (LieSubalgebra R L)
⊢ IsGLB S (sInf S)

tactic: apply IsGLB.of_image @h
state_before: R : Type u
L : Type v
inst✝⁴ : CommRing R
inst✝³ : LieRing L
inst✝² : LieAlgebra R L
L₂ : Type w
inst✝¹ : LieRing L₂
inst✝ : LieAlgebra R L₂
f : L →ₗ⁅R⁆ L₂
K K' : LieSubalgebra R L
K₂ : LieSubalgebra R L₂
S : Set (LieSubalgebra R L)
h : ∀ (K K' : LieSubalgebra R L), ↑K ≤ ↑K' ↔ K ≤ K'
⊢ IsGLB S (sInf S)

tactic: simp only [sInf_coe]
state_before: R : Type u
L : Type v
inst✝⁴ : CommRing R
inst✝³ : LieRing L
inst✝² : LieAlgebra R L
L₂ : Type w
inst✝¹ : LieRing L₂
inst✝ : LieAlgebra R L₂
f : L →ₗ⁅R⁆ L₂
K K' : LieSubalgebra R L
K₂ : LieSubalgebra R L₂
S : Set (LieSubalgebra R L)
h : ∀ (K K' : LieSubalgebra R L), ↑K ≤ ↑K' ↔ K ≤ K'
⊢ IsGLB ((fun x => ↑x) '' S) ↑(sInf S)

tactic: exact isGLB_biInf
state_before: R : Type u
L : Type v
inst✝⁴ : CommRing R
inst✝³ : LieRing L
inst✝² : LieAlgebra R L
L₂ : Type w
inst✝¹ : LieRing L₂
inst✝ : LieAlgebra R L₂
f : L →ₗ⁅R⁆ L₂
K K' : LieSubalgebra R L
K₂ : LieSubalgebra R L₂
S : Set (LieSubalgebra R L)
h : ∀ (K K' : LieSubalgebra R L), ↑K ≤ ↑K' ↔ K ≤ K'
⊢ IsGLB ((fun x => ↑x) '' S) (⋂ (s : LieSubalgebra R L) (_ : s ∈ S), ↑s)

tactic: intros
state_before: R : Type u
L : Type v
inst✝⁴ : CommRing R
inst✝³ : LieRing L
inst✝² : LieAlgebra R L
L₂ : Type w
inst✝¹ : LieRing L₂
inst✝ : LieAlgebra R L₂
f : L →ₗ⁅R⁆ L₂
K K' : LieSubalgebra R L
K₂ : LieSubalgebra R L₂
S : Set (LieSubalgebra R L)
⊢ ∀ (K K' : LieSubalgebra R L), ↑K ≤ ↑K' ↔ K ≤ K'

tactic: exact Iff.rfl
state_before: R : Type u
L : Type v
inst✝⁴ : CommRing R
inst✝³ : LieRing L
inst✝² : LieAlgebra R L
L₂ : Type w
inst✝¹ : LieRing L₂
inst✝ : LieAlgebra R L₂
f : L →ₗ⁅R⁆ L₂
K K' : LieSubalgebra R L
K₂ : LieSubalgebra R L₂
S : Set (LieSubalgebra R L)
K✝ K'✝ : LieSubalgebra R L
⊢ ↑K✝ ≤ ↑K'✝ ↔ K✝ ≤ K'✝
Theorem: FiberPrebundle.isOpen_source
File: Mathlib/Topology/FiberBundle/Basic.lean

tactic: refine isOpen_iSup_iff.mpr fun e' => isOpen_iSup_iff.mpr fun _ => ?_
state_before: ι : Type ?u.57301
B : Type u_1
F : Type u_2
X : Type ?u.57310
inst✝³ : TopologicalSpace X
E : B → Type u_3
inst✝² : TopologicalSpace B
inst✝¹ : TopologicalSpace F
inst✝ : (x : B) → TopologicalSpace (E x)
a : FiberPrebundle F E
e✝ e : Pretrivialization F TotalSpace.proj
⊢ IsOpen e.source

tactic: refine' isOpen_coinduced.mpr (isOpen_induced_iff.mpr ⟨e.target, e.open_target, _⟩)
state_before: ι : Type ?u.57301
B : Type u_1
F : Type u_2
X : Type ?u.57310
inst✝³ : TopologicalSpace X
E : B → Type u_3
inst✝² : TopologicalSpace B
inst✝¹ : TopologicalSpace F
inst✝ : (x : B) → TopologicalSpace (E x)
a : FiberPrebundle F E
e✝ e e' : Pretrivialization F TotalSpace.proj
x✝ : e' ∈ a.pretrivializationAtlas
⊢ IsOpen e.source

tactic: ext ⟨x, hx⟩
state_before: ι : Type ?u.57301
B : Type u_1
F : Type u_2
X : Type ?u.57310
inst✝³ : TopologicalSpace X
E : B → Type u_3
inst✝² : TopologicalSpace B
inst✝¹ : TopologicalSpace F
inst✝ : (x : B) → TopologicalSpace (E x)
a : FiberPrebundle F E
e✝ e e' : Pretrivialization F TotalSpace.proj
x✝ : e' ∈ a.pretrivializationAtlas
⊢ Subtype.val ⁻¹' e.target = Pretrivialization.setSymm e' ⁻¹' e.source

tactic: simp only [mem_preimage, Pretrivialization.setSymm, restrict, e.mem_target, e.mem_source,
  e'.proj_symm_apply hx]
state_before: case h.mk
ι : Type ?u.57301
B : Type u_1
F : Type u_2
X : Type ?u.57310
inst✝³ : TopologicalSpace X
E : B → Type u_3
inst✝² : TopologicalSpace B
inst✝¹ : TopologicalSpace F
inst✝ : (x : B) → TopologicalSpace (E x)
a : FiberPrebundle F E
e✝ e e' : Pretrivialization F TotalSpace.proj
x✝ : e' ∈ a.pretrivializationAtlas
x : B × F
hx : x ∈ e'.target
⊢ { val := x, property := hx } ∈ Subtype.val ⁻¹' e.target ↔
    { val := x, property := hx } ∈ Pretrivialization.setSymm e' ⁻¹' e.source
Theorem: PythagoreanTriple.isPrimitiveClassified_of_coprime_of_zero_left
File: Mathlib/NumberTheory/PythagoreanTriples.lean

tactic: subst x
state_before: x y z : ℤ
h : PythagoreanTriple x y z
hc : Int.gcd x y = 1
hx : x = 0
⊢ IsPrimitiveClassified h

tactic: change Nat.gcd 0 (Int.natAbs y) = 1 at hc
state_before: y z : ℤ
h : PythagoreanTriple 0 y z
hc : Int.gcd 0 y = 1
⊢ IsPrimitiveClassified h

tactic: rw [Nat.gcd_zero_left (Int.natAbs y)] at hc
state_before: y z : ℤ
h : PythagoreanTriple 0 y z
hc : Nat.gcd 0 (Int.natAbs y) = 1
⊢ IsPrimitiveClassified h

tactic: cases' Int.natAbs_eq y with hy hy
state_before: y z : ℤ
h : PythagoreanTriple 0 y z
hc : Int.natAbs y = 1
⊢ IsPrimitiveClassified h

tactic: use 1, 0
state_before: case inl
y z : ℤ
h : PythagoreanTriple 0 y z
hc : Int.natAbs y = 1
hy : y = ↑(Int.natAbs y)
⊢ IsPrimitiveClassified h

tactic: rw [hy, hc, Int.gcd_zero_right]
state_before: case inl
y z : ℤ
h : PythagoreanTriple 0 y z
hc : Int.natAbs y = 1
hy : y = ↑(Int.natAbs y)
⊢ (0 = 1 ^ 2 - 0 ^ 2 ∧ y = 2 * 1 * 0 ∨ 0 = 2 * 1 * 0 ∧ y = 1 ^ 2 - 0 ^ 2) ∧
    Int.gcd 1 0 = 1 ∧ (1 % 2 = 0 ∧ 0 % 2 = 1 ∨ 1 % 2 = 1 ∧ 0 % 2 = 0)

tactic: norm_num
state_before: case inl
y z : ℤ
h : PythagoreanTriple 0 y z
hc : Int.natAbs y = 1
hy : y = ↑(Int.natAbs y)
⊢ (0 = 1 ^ 2 - 0 ^ 2 ∧ ↑1 = 2 * 1 * 0 ∨ 0 = 2 * 1 * 0 ∧ ↑1 = 1 ^ 2 - 0 ^ 2) ∧
    Int.natAbs 1 = 1 ∧ (1 % 2 = 0 ∧ 0 % 2 = 1 ∨ 1 % 2 = 1 ∧ 0 % 2 = 0)

tactic: use 0, 1
state_before: case inr
y z : ℤ
h : PythagoreanTriple 0 y z
hc : Int.natAbs y = 1
hy : y = -↑(Int.natAbs y)
⊢ IsPrimitiveClassified h

tactic: rw [hy, hc, Int.gcd_zero_left]
state_before: case inr
y z : ℤ
h : PythagoreanTriple 0 y z
hc : Int.natAbs y = 1
hy : y = -↑(Int.natAbs y)
⊢ (0 = 0 ^ 2 - 1 ^ 2 ∧ y = 2 * 0 * 1 ∨ 0 = 2 * 0 * 1 ∧ y = 0 ^ 2 - 1 ^ 2) ∧
    Int.gcd 0 1 = 1 ∧ (0 % 2 = 0 ∧ 1 % 2 = 1 ∨ 0 % 2 = 1 ∧ 1 % 2 = 0)

tactic: norm_num
state_before: case inr
y z : ℤ
h : PythagoreanTriple 0 y z
hc : Int.natAbs y = 1
hy : y = -↑(Int.natAbs y)
⊢ (0 = 0 ^ 2 - 1 ^ 2 ∧ -↑1 = 2 * 0 * 1 ∨ 0 = 2 * 0 * 1 ∧ -↑1 = 0 ^ 2 - 1 ^ 2) ∧
    Int.natAbs 1 = 1 ∧ (0 % 2 = 0 ∧ 1 % 2 = 1 ∨ 0 % 2 = 1 ∧ 1 % 2 = 0)
Theorem: Real.rpow_le_rpow_of_exponent_le
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: repeat' rw [rpow_def_of_pos (lt_of_lt_of_le zero_lt_one hx)]
state_before: x y z : ℝ
hx : 1 ≤ x
hyz : y ≤ z
⊢ x ^ y ≤ x ^ z

tactic: rw [exp_le_exp]
state_before: x y z : ℝ
hx : 1 ≤ x
hyz : y ≤ z
⊢ exp (log x * y) ≤ exp (log x * z)

tactic: exact mul_le_mul_of_nonneg_left hyz (log_nonneg hx)
state_before: x y z : ℝ
hx : 1 ≤ x
hyz : y ≤ z
⊢ log x * y ≤ log x * z

tactic: rw [rpow_def_of_pos (lt_of_lt_of_le zero_lt_one hx)]
state_before: x y z : ℝ
hx : 1 ≤ x
hyz : y ≤ z
⊢ exp (log x * y) ≤ exp (log x * z)
Theorem: AffineMap.hasDerivAtFilter
File: Mathlib/Analysis/Calculus/Deriv/AffineMap.lean

tactic: rw [f.decomp]
state_before: 𝕜 : Type u_1
inst✝² : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f : 𝕜 →ᵃ[𝕜] E
a b : E
L : Filter 𝕜
s : Set 𝕜
x : 𝕜
⊢ HasDerivAtFilter (↑f) (↑f.linear 1) x L

tactic: exact f.linear.hasDerivAtFilter.add_const (f 0)
state_before: 𝕜 : Type u_1
inst✝² : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f : 𝕜 →ᵃ[𝕜] E
a b : E
L : Filter 𝕜
s : Set 𝕜
x : 𝕜
⊢ HasDerivAtFilter (↑f.linear + fun x => ↑f 0) (↑f.linear 1) x L
Theorem: List.get?_ofFn
File: Mathlib/Data/List/OfFn.lean

tactic: rw [get?_eq_get h, get_ofFn]
state_before: α : Type u
n : ℕ
f : Fin n → α
i : ℕ
h : i < length (ofFn f)
⊢ get? (ofFn f) i = ofFnNthVal f i

tactic: . simp at h; simp [ofFnNthVal, h]
state_before: α : Type u
n : ℕ
f : Fin n → α
i : ℕ
h : i < length (ofFn f)
⊢ some (f (↑(Fin.cast (_ : length (ofFn f) = n)) { val := i, isLt := h })) = ofFnNthVal f i

tactic: simp at h
state_before: α : Type u
n : ℕ
f : Fin n → α
i : ℕ
h : i < length (ofFn f)
⊢ some (f (↑(Fin.cast (_ : length (ofFn f) = n)) { val := i, isLt := h })) = ofFnNthVal f i

tactic: simp [ofFnNthVal, h]
state_before: α : Type u
n : ℕ
f : Fin n → α
i : ℕ
h✝ : i < length (ofFn f)
h : i < n
⊢ some (f (↑(Fin.cast (_ : length (ofFn f) = n)) { val := i, isLt := h✝ })) = ofFnNthVal f i

tactic: rw [ofFnNthVal, dif_neg] <;>
simpa using h
state_before: α : Type u
n : ℕ
f : Fin n → α
i : ℕ
h : ¬i < length (ofFn f)
⊢ get? (ofFn f) i = ofFnNthVal f i
Theorem: Polynomial.mirror_eq_zero
File: Mathlib/Data/Polynomial/Mirror.lean

tactic: rw [← p.mirror_mirror, h, mirror_zero]
state_before: R : Type u_1
inst✝ : Semiring R
p q : R[X]
h : mirror p = 0
⊢ p = 0

tactic: rw [h, mirror_zero]
state_before: R : Type u_1
inst✝ : Semiring R
p q : R[X]
h : p = 0
⊢ mirror p = 0
Theorem: Finset.forall_image
File: Mathlib/Data/Finset/Image.lean

tactic: simp only [mem_image, forall_exists_index, and_imp, forall_apply_eq_imp_iff₂]
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.62593
inst✝ : DecidableEq β
f g : α → β
s : Finset α
t : Finset β
a : α
b c : β
p : β → Prop
⊢ (∀ (b : β), b ∈ image f s → p b) ↔ ∀ (a : α), a ∈ s → p (f a)
Theorem: Hyperreal.infinite_of_infinitesimal_inv
File: Mathlib/Data/Real/Hyperreal.lean

tactic: cases' lt_or_gt_of_ne h0 with hn hp
state_before: x : ℝ*
h0 : x ≠ 0
hi : Infinitesimal x⁻¹
⊢ Infinite x

tactic: exact Or.inr (infiniteNeg_iff_infinitesimal_inv_neg.mpr ⟨hi, inv_lt_zero.mpr hn⟩)
state_before: case inl
x : ℝ*
h0 : x ≠ 0
hi : Infinitesimal x⁻¹
hn : x < 0
⊢ Infinite x

tactic: exact Or.inl (infinitePos_iff_infinitesimal_inv_pos.mpr ⟨hi, inv_pos.mpr hp⟩)
state_before: case inr
x : ℝ*
h0 : x ≠ 0
hi : Infinitesimal x⁻¹
hp : x > 0
⊢ Infinite x
Theorem: IsTorsionFree.not_torsion
File: Mathlib/GroupTheory/Torsion.lean

tactic: obtain ⟨x, hx⟩ := (nontrivial_iff_exists_ne (1 : G)).mp hN
state_before: G : Type u_1
H : Type ?u.211777
inst✝ : Group G
hN : Nontrivial G
tfG : IsTorsionFree G
⊢ ∃ g, ¬IsOfFinOrder g

tactic: exact ⟨x, (tfG x) hx⟩
state_before: case intro
G : Type u_1
H : Type ?u.211777
inst✝ : Group G
hN : Nontrivial G
tfG : IsTorsionFree G
x : G
hx : x ≠ 1
⊢ ∃ g, ¬IsOfFinOrder g
Theorem: Polynomial.monomial_natDegree_leadingCoeff_eq_self
File: Mathlib/Data/Polynomial/Degree/Definitions.lean

tactic: rcases card_support_le_one_iff_monomial.1 h with ⟨n, a, rfl⟩
state_before: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p q : R[X]
ι : Type ?u.661802
h : card (support p) ≤ 1
⊢ ↑(monomial (natDegree p)) (leadingCoeff p) = p

tactic: by_cases ha : a = 0 <;> simp [ha]
state_before: case intro.intro
R : Type u
S : Type v
a✝ b c d : R
n✝ m : ℕ
inst✝ : Semiring R
q : R[X]
ι : Type ?u.661802
n : ℕ
a : R
h : card (support (↑(monomial n) a)) ≤ 1
⊢ ↑(monomial (natDegree (↑(monomial n) a))) (leadingCoeff (↑(monomial n) a)) = ↑(monomial n) a
Theorem: Finset.centerMass_smul
File: Mathlib/Analysis/Convex/Combination.lean

tactic: simp only [Finset.centerMass, Finset.smul_sum, (mul_smul _ _ _).symm, mul_comm c, mul_assoc]
state_before: R : Type u_2
E : Type u_1
F : Type ?u.34119
ι : Type u_3
ι' : Type ?u.34125
α : Type ?u.34128
inst✝⁷ : LinearOrderedField R
inst✝⁶ : AddCommGroup E
inst✝⁵ : AddCommGroup F
inst✝⁴ : LinearOrderedAddCommGroup α
inst✝³ : Module R E
inst✝² : Module R F
inst✝¹ : Module R α
inst✝ : OrderedSMul R α
s : Set E
i j : ι
c : R
t : Finset ι
w : ι → R
z : ι → E
⊢ (centerMass t w fun i => c • z i) = c • centerMass t w z
Theorem: Odd.zpow_nonpos_iff
File: Mathlib/Algebra/Order/Field/Power.lean

tactic: cases' hn with k hk
state_before: α : Type u_1
inst✝ : LinearOrderedField α
a b c d : α
n : ℤ
hn : Odd n
⊢ a ^ n ≤ 0 ↔ a ≤ 0

tactic: simpa only [hk, two_mul] using zpow_bit1_nonpos_iff
state_before: case intro
α : Type u_1
inst✝ : LinearOrderedField α
a b c d : α
n k : ℤ
hk : n = 2 * k + 1
⊢ a ^ n ≤ 0 ↔ a ≤ 0
Theorem: Nat.factors_one
File: Mathlib/Data/Nat/Factors.lean

tactic: rw [factors]
state_before: ⊢ factors 1 = []
Theorem: isOpen_iff_inter_of_iSup_eq_top
File: Mathlib/Topology/LocalAtTarget.lean

tactic: constructor
state_before: α : Type ?u.13206
β : Type u_1
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
f : α → β
s✝ : Set β
ι : Type ?u.13225
U : ι → Opens β
hU : iSup U = ⊤
s : Set β
⊢ IsOpen s ↔ ∀ (i : ι), IsOpen (s ∩ ↑(U i))

tactic: exact fun H i => H.inter (U i).2
state_before: case mp
α : Type ?u.13206
β : Type u_1
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
f : α → β
s✝ : Set β
ι : Type ?u.13225
U : ι → Opens β
hU : iSup U = ⊤
s : Set β
⊢ IsOpen s → ∀ (i : ι), IsOpen (s ∩ ↑(U i))

tactic: intro H
state_before: case mpr
α : Type ?u.13206
β : Type u_1
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
f : α → β
s✝ : Set β
ι : Type ?u.13225
U : ι → Opens β
hU : iSup U = ⊤
s : Set β
⊢ (∀ (i : ι), IsOpen (s ∩ ↑(U i))) → IsOpen s

tactic: have : (⋃ i, (U i : Set β)) = Set.univ := by
  convert congr_arg (SetLike.coe) hU
  simp
state_before: case mpr
α : Type ?u.13206
β : Type u_1
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
f : α → β
s✝ : Set β
ι : Type ?u.13225
U : ι → Opens β
hU : iSup U = ⊤
s : Set β
H : ∀ (i : ι), IsOpen (s ∩ ↑(U i))
⊢ IsOpen s

tactic: rw [← s.inter_univ, ← this, Set.inter_iUnion]
state_before: case mpr
α : Type ?u.13206
β : Type u_1
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
f : α → β
s✝ : Set β
ι : Type ?u.13225
U : ι → Opens β
hU : iSup U = ⊤
s : Set β
H : ∀ (i : ι), IsOpen (s ∩ ↑(U i))
this : (⋃ (i : ι), ↑(U i)) = univ
⊢ IsOpen s

tactic: exact isOpen_iUnion H
state_before: case mpr
α : Type ?u.13206
β : Type u_1
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
f : α → β
s✝ : Set β
ι : Type ?u.13225
U : ι → Opens β
hU : iSup U = ⊤
s : Set β
H : ∀ (i : ι), IsOpen (s ∩ ↑(U i))
this : (⋃ (i : ι), ↑(U i)) = univ
⊢ IsOpen (⋃ (i : ι), s ∩ ↑(U i))

tactic: convert congr_arg (SetLike.coe) hU
state_before: α : Type ?u.13206
β : Type u_1
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
f : α → β
s✝ : Set β
ι : Type ?u.13225
U : ι → Opens β
hU : iSup U = ⊤
s : Set β
H : ∀ (i : ι), IsOpen (s ∩ ↑(U i))
⊢ (⋃ (i : ι), ↑(U i)) = univ

tactic: simp
state_before: case h.e'_2
α : Type ?u.13206
β : Type u_1
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
f : α → β
s✝ : Set β
ι : Type ?u.13225
U : ι → Opens β
hU : iSup U = ⊤
s : Set β
H : ∀ (i : ι), IsOpen (s ∩ ↑(U i))
⊢ (⋃ (i : ι), ↑(U i)) = ↑(iSup U)
Theorem: Submonoid.comap_id
File: Mathlib/GroupTheory/Submonoid/Operations.lean

tactic: simp
state_before: M : Type ?u.9782
N : Type ?u.9785
P : Type u_1
inst✝² : MulOneClass M
inst✝¹ : MulOneClass N
inst✝ : MulOneClass P
S✝ : Submonoid M
F : Type ?u.9809
mc : MonoidHomClass F M N
S : Submonoid P
⊢ ∀ (x : P), x ∈ comap (MonoidHom.id P) S ↔ x ∈ S
Theorem: CategoryTheory.Abelian.Exact.op
File: Mathlib/CategoryTheory/Abelian/Exact.lean

tactic: rw [exact_iff]
state_before: C : Type u₁
inst✝¹ : Category C
inst✝ : Abelian C
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
h : Exact f g
⊢ Exact g.op f.op

tactic: refine' ⟨by simp [← op_comp, h.w], Quiver.Hom.unop_inj _⟩
state_before: C : Type u₁
inst✝¹ : Category C
inst✝ : Abelian C
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
h : Exact f g
⊢ g.op ≫ f.op = 0 ∧ kernel.ι f.op ≫ cokernel.π g.op = 0

tactic: simp only [unop_comp, cokernel.π_op, eqToHom_refl, kernel.ι_op, Category.id_comp,
  Category.assoc, kernel_comp_cokernel_assoc _ _ h, zero_comp, comp_zero, unop_zero]
state_before: C : Type u₁
inst✝¹ : Category C
inst✝ : Abelian C
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
h : Exact f g
⊢ (kernel.ι f.op ≫ cokernel.π g.op).unop = 0.unop

tactic: simp [← op_comp, h.w]
state_before: C : Type u₁
inst✝¹ : Category C
inst✝ : Abelian C
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
h : Exact f g
⊢ g.op ≫ f.op = 0
Theorem: InnerProductGeometry.norm_div_tan_angle_add_of_inner_eq_zero
File: Mathlib/Geometry/Euclidean/Angle/Unoriented/RightAngle.lean

tactic: rw [tan_angle_add_of_inner_eq_zero h]
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
h : inner x y = 0
h0 : x = 0 ∨ y ≠ 0
⊢ ‖y‖ / Real.tan (angle x (x + y)) = ‖x‖

tactic: rcases h0 with (h0 | h0)
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
h : inner x y = 0
h0 : x = 0 ∨ y ≠ 0
⊢ ‖y‖ / (‖y‖ / ‖x‖) = ‖x‖

tactic: simp [h0]
state_before: case inl
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
h : inner x y = 0
h0 : x = 0
⊢ ‖y‖ / (‖y‖ / ‖x‖) = ‖x‖

tactic: rw [div_div_eq_mul_div, mul_comm, div_eq_mul_inv, mul_inv_cancel_right₀ (norm_ne_zero_iff.2 h0)]
state_before: case inr
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
h : inner x y = 0
h0 : y ≠ 0
⊢ ‖y‖ / (‖y‖ / ‖x‖) = ‖x‖
Theorem: intervalIntegral.integral_comp_mul_deriv''
File: Mathlib/MeasureTheory/Integral/FundThmCalculus.lean

tactic: simpa [mul_comm] using integral_comp_smul_deriv'' hf hff' hf' hg
state_before: ι : Type ?u.1940354
𝕜 : Type ?u.1940357
E : Type ?u.1940360
F : Type ?u.1940363
A : Type ?u.1940366
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
f✝¹ : ℝ → E
g' g✝ φ : ℝ → ℝ
f✝ f'✝ : ℝ → E
a b : ℝ
f f' g : ℝ → ℝ
hf : ContinuousOn f [[a, b]]
hff' : ∀ (x : ℝ), x ∈ Ioo (min a b) (max a b) → HasDerivWithinAt f (f' x) (Ioi x) x
hf' : ContinuousOn f' [[a, b]]
hg : ContinuousOn g (f '' [[a, b]])
⊢ (∫ (x : ℝ) in a..b, (g ∘ f) x * f' x) = ∫ (u : ℝ) in f a..f b, g u
Theorem: Metric.bounded_range_of_tendsto_cofinite_uniformity
File: Mathlib/Topology/MetricSpace/Basic.lean

tactic: rcases (hasBasis_cofinite.prod_self.tendsto_iff uniformity_basis_dist).1 hf 1 zero_lt_one with
  ⟨s, hsf, hs1⟩
state_before: α : Type u
β : Type v
X : Type ?u.494672
ι : Type ?u.494675
inst✝ : PseudoMetricSpace α
x : α
s t : Set α
r : ℝ
f : β → α
hf : Tendsto (Prod.map f f) (Filter.cofinite ×ˢ Filter.cofinite) (𝓤 α)
⊢ Bounded (range f)

tactic: rw [← image_univ, ← union_compl_self s, image_union, bounded_union]
state_before: case intro.intro
α : Type u
β : Type v
X : Type ?u.494672
ι : Type ?u.494675
inst✝ : PseudoMetricSpace α
x : α
s✝ t : Set α
r : ℝ
f : β → α
hf : Tendsto (Prod.map f f) (Filter.cofinite ×ˢ Filter.cofinite) (𝓤 α)
s : Set β
hsf : Set.Finite s
hs1 : ∀ (x : β × β), x ∈ sᶜ ×ˢ sᶜ → Prod.map f f x ∈ {p | dist p.fst p.snd < 1}
⊢ Bounded (range f)

tactic: use (hsf.image f).bounded, 1
state_before: case intro.intro
α : Type u
β : Type v
X : Type ?u.494672
ι : Type ?u.494675
inst✝ : PseudoMetricSpace α
x : α
s✝ t : Set α
r : ℝ
f : β → α
hf : Tendsto (Prod.map f f) (Filter.cofinite ×ˢ Filter.cofinite) (𝓤 α)
s : Set β
hsf : Set.Finite s
hs1 : ∀ (x : β × β), x ∈ sᶜ ×ˢ sᶜ → Prod.map f f x ∈ {p | dist p.fst p.snd < 1}
⊢ Bounded (f '' s) ∧ Bounded (f '' sᶜ)

tactic: rintro _ ⟨x, hx, rfl⟩ _ ⟨y, hy, rfl⟩
state_before: case intro.intro
α : Type u
β : Type v
X : Type ?u.494672
ι : Type ?u.494675
inst✝ : PseudoMetricSpace α
x : α
s✝ t : Set α
r : ℝ
f : β → α
hf : Tendsto (Prod.map f f) (Filter.cofinite ×ˢ Filter.cofinite) (𝓤 α)
s : Set β
hsf : Set.Finite s
hs1 : ∀ (x : β × β), x ∈ sᶜ ×ˢ sᶜ → Prod.map f f x ∈ {p | dist p.fst p.snd < 1}
⊢ ∀ (x : α), x ∈ f '' sᶜ → ∀ (y : α), y ∈ f '' sᶜ → dist x y ≤ 1

tactic: exact le_of_lt (hs1 (x, y) ⟨hx, hy⟩)
state_before: case intro.intro.intro.intro.intro.intro
α : Type u
β : Type v
X : Type ?u.494672
ι : Type ?u.494675
inst✝ : PseudoMetricSpace α
x✝ : α
s✝ t : Set α
r : ℝ
f : β → α
hf : Tendsto (Prod.map f f) (Filter.cofinite ×ˢ Filter.cofinite) (𝓤 α)
s : Set β
hsf : Set.Finite s
hs1 : ∀ (x : β × β), x ∈ sᶜ ×ˢ sᶜ → Prod.map f f x ∈ {p | dist p.fst p.snd < 1}
x : β
hx : x ∈ sᶜ
y : β
hy : y ∈ sᶜ
⊢ dist (f x) (f y) ≤ 1
Theorem: List.dProd_monoid
File: Mathlib/Algebra/GradedMonoid.lean

tactic: match l with
| [] =>
  rw [List.dProd_nil, List.map_nil, List.prod_nil]
  rfl
| head::tail =>
  rw [List.dProd_cons, List.map_cons, List.prod_cons, List.dProd_monoid tail _ _]
  rfl
state_before: ι : Type u_2
R : Type u_3
α : Type u_1
inst✝¹ : AddMonoid ι
inst✝ : Monoid R
l : List α
fι : α → ι
fA : α → R
⊢ dProd l fι fA = prod (map fA l)

tactic: rw [List.dProd_nil, List.map_nil, List.prod_nil]
state_before: ι : Type u_2
R : Type u_3
α : Type u_1
inst✝¹ : AddMonoid ι
inst✝ : Monoid R
l : List α
fι : α → ι
fA : α → R
⊢ dProd [] fι fA = prod (map fA [])

tactic: rfl
state_before: ι : Type u_2
R : Type u_3
α : Type u_1
inst✝¹ : AddMonoid ι
inst✝ : Monoid R
l : List α
fι : α → ι
fA : α → R
⊢ GradedMonoid.GOne.one = 1

tactic: rw [List.dProd_cons, List.map_cons, List.prod_cons, List.dProd_monoid tail _ _]
state_before: ι : Type u_2
R : Type u_3
α : Type u_1
inst✝¹ : AddMonoid ι
inst✝ : Monoid R
l : List α
fι : α → ι
fA : α → R
head : α
tail : List α
⊢ dProd (head :: tail) fι fA = prod (map fA (head :: tail))

tactic: rfl
state_before: ι : Type u_2
R : Type u_3
α : Type u_1
inst✝¹ : AddMonoid ι
inst✝ : Monoid R
l : List α
fι : α → ι
fA : α → R
head : α
tail : List α
⊢ GradedMonoid.GMul.mul (fA head) (prod (map fA tail)) = fA head * prod (map fA tail)