tasksource/leandojo huggingface dataset:
Theorem: MeasureTheory.measurableEquiv_range_coe_nat_of_infinite_of_countable
File: Mathlib/MeasureTheory/Constructions/Polish.lean

tactic: have : PolishSpace (range ((↑) : ℕ → ℝ)) :=
  Nat.closedEmbedding_coe_real.isClosedMap.closed_range.polishSpace
state_before: α : Type u_1
inst✝⁵ : TopologicalSpace α
ι : Type ?u.398049
inst✝⁴ : MeasurableSpace α
inst✝³ : PolishSpace α
inst✝² : BorelSpace α
inst✝¹ : Infinite α
inst✝ : Countable α
⊢ Nonempty (α ≃ᵐ ↑(range Nat.cast))

tactic: refine' ⟨PolishSpace.Equiv.measurableEquiv _⟩
state_before: α : Type u_1
inst✝⁵ : TopologicalSpace α
ι : Type ?u.398049
inst✝⁴ : MeasurableSpace α
inst✝³ : PolishSpace α
inst✝² : BorelSpace α
inst✝¹ : Infinite α
inst✝ : Countable α
this : PolishSpace ↑(range Nat.cast)
⊢ Nonempty (α ≃ᵐ ↑(range Nat.cast))

tactic: refine' (nonempty_equiv_of_countable.some : α ≃ ℕ).trans _
state_before: α : Type u_1
inst✝⁵ : TopologicalSpace α
ι : Type ?u.398049
inst✝⁴ : MeasurableSpace α
inst✝³ : PolishSpace α
inst✝² : BorelSpace α
inst✝¹ : Infinite α
inst✝ : Countable α
this : PolishSpace ↑(range Nat.cast)
⊢ α ≃ ↑(range Nat.cast)

tactic: exact Equiv.ofInjective ((↑) : ℕ → ℝ) Nat.cast_injective
state_before: α : Type u_1
inst✝⁵ : TopologicalSpace α
ι : Type ?u.398049
inst✝⁴ : MeasurableSpace α
inst✝³ : PolishSpace α
inst✝² : BorelSpace α
inst✝¹ : Infinite α
inst✝ : Countable α
this : PolishSpace ↑(range Nat.cast)
⊢ ℕ ≃ ↑(range Nat.cast)
Theorem: WithTop.coe_lt_top
File: Mathlib/Order/WithBot.lean

tactic: simp [← toDual_lt_toDual_iff, WithBot.bot_lt_coe]
state_before: α : Type u_1
β : Type ?u.88258
γ : Type ?u.88261
δ : Type ?u.88264
inst✝ : LT α
a✝ b a : α
⊢ ↑a < ⊤
Theorem: PFunctor.W.dest_mk
File: Mathlib/Data/PFunctor/Univariate/Basic.lean

tactic: cases p
state_before: P : PFunctor
α β : Type u
p : Obj P (W P)
⊢ dest (mk p) = p

tactic: rfl
state_before: case mk
P : PFunctor
α β : Type u
fst✝ : P.A
snd✝ : B P fst✝ → W P
⊢ dest (mk { fst := fst✝, snd := snd✝ }) = { fst := fst✝, snd := snd✝ }
Theorem: MeasureTheory.SimpleFunc.restrict_lintegral
File: Mathlib/MeasureTheory/Function/SimpleFunc.lean

tactic: simp only [f.restrict_apply hs, indicator_of_mem hxs, mem_range_self]
state_before: α : Type u_1
β : Type ?u.885602
γ : Type ?u.885605
δ : Type ?u.885608
m : MeasurableSpace α
μ ν : Measure α
f : α →ₛ ℝ≥0∞
s : Set α
hs : MeasurableSet s
x : α
hx : ↑(restrict f s) x ≠ 0
hxs : x ∈ s
x✝ : ↑↑μ (↑(restrict f s) ⁻¹' {↑(restrict f s) x}) ≠ 0
⊢ ↑(restrict f s) x ∈ SimpleFunc.range f

tactic: simp [*]
state_before: α : Type u_1
β : Type ?u.885602
γ : Type ?u.885605
δ : Type ?u.885608
m : MeasurableSpace α
μ ν : Measure α
f : α →ₛ ℝ≥0∞
s : Set α
hs : MeasurableSet s
x : α
hx : ↑(restrict f s) x ≠ 0
hxs : ¬x ∈ s
⊢ ↑(restrict f s) x = 0

tactic: simp only [hb, MulZeroClass.zero_mul]
state_before: α : Type u_1
β : Type ?u.885602
γ : Type ?u.885605
δ : Type ?u.885608
m : MeasurableSpace α
μ ν : Measure α
f : α →ₛ ℝ≥0∞
s : Set α
hs : MeasurableSet s
b : α
hb : ↑f b = 0
⊢ ↑f b * ↑↑μ (↑(restrict f s) ⁻¹' {↑f b}) = ↑f b * ↑↑μ (↑f ⁻¹' {↑f b} ∩ s)

tactic: rw [restrict_preimage_singleton _ hs hb, inter_comm]
state_before: α : Type u_1
β : Type ?u.885602
γ : Type ?u.885605
δ : Type ?u.885608
m : MeasurableSpace α
μ ν : Measure α
f : α →ₛ ℝ≥0∞
s : Set α
hs : MeasurableSet s
b : α
hb : ¬↑f b = 0
⊢ ↑f b * ↑↑μ (↑(restrict f s) ⁻¹' {↑f b}) = ↑f b * ↑↑μ (↑f ⁻¹' {↑f b} ∩ s)
Theorem: Real.cos_pi_div_four
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

tactic: trans cos (π / 2 ^ 2)
state_before: x : ℝ
⊢ cos (π / 4) = sqrt 2 / 2

tactic: congr
state_before: x : ℝ
⊢ cos (π / 4) = cos (π / 2 ^ 2)

x : ℝ
⊢ cos (π / 2 ^ 2) = sqrt 2 / 2

tactic: norm_num
state_before: case e_x.e_a
x : ℝ
⊢ 4 = 2 ^ 2

x : ℝ
⊢ cos (π / 2 ^ 2) = sqrt 2 / 2

tactic: simp
state_before: x : ℝ
⊢ cos (π / 2 ^ 2) = sqrt 2 / 2
Theorem: diam_smul₀
File: Mathlib/Analysis/NormedSpace/Pointwise.lean

tactic: simp_rw [diam, ediam_smul₀, ENNReal.toReal_smul, NNReal.smul_def, coe_nnnorm, smul_eq_mul]
state_before: 𝕜 : Type u_2
E : Type u_1
inst✝³ : NormedDivisionRing 𝕜
inst✝² : SeminormedAddCommGroup E
inst✝¹ : Module 𝕜 E
inst✝ : BoundedSMul 𝕜 E
c : 𝕜
x : Set E
⊢ diam (c • x) = ‖c‖ * diam x
Theorem: Polynomial.isBigO_of_degree_le
File: Mathlib/Analysis/SpecialFunctions/Polynomials.lean

tactic: by_cases hp : P = 0
state_before: 𝕜 : Type u_1
inst✝¹ : NormedLinearOrderedField 𝕜
P Q : 𝕜[X]
inst✝ : OrderTopology 𝕜
h : degree P ≤ degree Q
⊢ (fun x => eval x P) =O[atTop] fun x => eval x Q

tactic: simpa [hp] using isBigO_zero (fun x => eval x Q) atTop
state_before: case pos
𝕜 : Type u_1
inst✝¹ : NormedLinearOrderedField 𝕜
P Q : 𝕜[X]
inst✝ : OrderTopology 𝕜
h : degree P ≤ degree Q
hp : P = 0
⊢ (fun x => eval x P) =O[atTop] fun x => eval x Q

tactic: have hq : Q ≠ 0 := ne_zero_of_degree_ge_degree h hp
state_before: case neg
𝕜 : Type u_1
inst✝¹ : NormedLinearOrderedField 𝕜
P Q : 𝕜[X]
inst✝ : OrderTopology 𝕜
h : degree P ≤ degree Q
hp : ¬P = 0
⊢ (fun x => eval x P) =O[atTop] fun x => eval x Q

tactic: have hPQ : ∀ᶠ x : 𝕜 in atTop, eval x Q = 0 → eval x P = 0 :=
  Filter.mem_of_superset (Polynomial.eventually_no_roots Q hq) fun x h h' => absurd h' h
state_before: case neg
𝕜 : Type u_1
inst✝¹ : NormedLinearOrderedField 𝕜
P Q : 𝕜[X]
inst✝ : OrderTopology 𝕜
h : degree P ≤ degree Q
hp : ¬P = 0
hq : Q ≠ 0
⊢ (fun x => eval x P) =O[atTop] fun x => eval x Q

tactic: cases' le_iff_lt_or_eq.mp h with h h
state_before: case neg
𝕜 : Type u_1
inst✝¹ : NormedLinearOrderedField 𝕜
P Q : 𝕜[X]
inst✝ : OrderTopology 𝕜
h : degree P ≤ degree Q
hp : ¬P = 0
hq : Q ≠ 0
hPQ : ∀ᶠ (x : 𝕜) in atTop, eval x Q = 0 → eval x P = 0
⊢ (fun x => eval x P) =O[atTop] fun x => eval x Q

tactic: exact isBigO_of_div_tendsto_nhds hPQ 0 (div_tendsto_zero_of_degree_lt P Q h)
state_before: case neg.inl
𝕜 : Type u_1
inst✝¹ : NormedLinearOrderedField 𝕜
P Q : 𝕜[X]
inst✝ : OrderTopology 𝕜
h✝ : degree P ≤ degree Q
hp : ¬P = 0
hq : Q ≠ 0
hPQ : ∀ᶠ (x : 𝕜) in atTop, eval x Q = 0 → eval x P = 0
h : degree P < degree Q
⊢ (fun x => eval x P) =O[atTop] fun x => eval x Q

tactic: exact isBigO_of_div_tendsto_nhds hPQ _ (div_tendsto_leadingCoeff_div_of_degree_eq P Q h)
state_before: case neg.inr
𝕜 : Type u_1
inst✝¹ : NormedLinearOrderedField 𝕜
P Q : 𝕜[X]
inst✝ : OrderTopology 𝕜
h✝ : degree P ≤ degree Q
hp : ¬P = 0
hq : Q ≠ 0
hPQ : ∀ᶠ (x : 𝕜) in atTop, eval x Q = 0 → eval x P = 0
h : degree P = degree Q
⊢ (fun x => eval x P) =O[atTop] fun x => eval x Q
Theorem: Polynomial.coeff_prod_of_natDegree_le
File: Mathlib/Algebra/Polynomial/BigOperators.lean

tactic: cases' s with l hl
state_before: R : Type u
ι : Type w
s : Finset ι
inst✝ : CommSemiring R
f✝ : ι → R[X]
t : Multiset R[X]
f : ι → R[X]
n : ℕ
h : ∀ (p : ι), p ∈ s → natDegree (f p) ≤ n
⊢ coeff (∏ i in s, f i) (Finset.card s * n) = ∏ i in s, coeff (f i) n

tactic: convert coeff_multiset_prod_of_natDegree_le (l.map f) n ?_
state_before: case mk
R : Type u
ι : Type w
inst✝ : CommSemiring R
f✝ : ι → R[X]
t : Multiset R[X]
f : ι → R[X]
n : ℕ
l : Multiset ι
hl : Nodup l
h : ∀ (p : ι), p ∈ { val := l, nodup := hl } → natDegree (f p) ≤ n
⊢ coeff (∏ i in { val := l, nodup := hl }, f i) (Finset.card { val := l, nodup := hl } * n) =
    ∏ i in { val := l, nodup := hl }, coeff (f i) n

tactic: simp
state_before: case h.e'_2.h.e'_4.h.e'_5
R : Type u
ι : Type w
inst✝ : CommSemiring R
f✝ : ι → R[X]
t : Multiset R[X]
f : ι → R[X]
n : ℕ
l : Multiset ι
hl : Nodup l
h : ∀ (p : ι), p ∈ { val := l, nodup := hl } → natDegree (f p) ≤ n
⊢ Finset.card { val := l, nodup := hl } = ↑Multiset.card (Multiset.map f l)

tactic: simp
state_before: case h.e'_3
R : Type u
ι : Type w
inst✝ : CommSemiring R
f✝ : ι → R[X]
t : Multiset R[X]
f : ι → R[X]
n : ℕ
l : Multiset ι
hl : Nodup l
h : ∀ (p : ι), p ∈ { val := l, nodup := hl } → natDegree (f p) ≤ n
⊢ ∏ i in { val := l, nodup := hl }, coeff (f i) n = prod (Multiset.map (fun p => coeff p n) (Multiset.map f l))

tactic: simpa using h
state_before: case mk
R : Type u
ι : Type w
inst✝ : CommSemiring R
f✝ : ι → R[X]
t : Multiset R[X]
f : ι → R[X]
n : ℕ
l : Multiset ι
hl : Nodup l
h : ∀ (p : ι), p ∈ { val := l, nodup := hl } → natDegree (f p) ≤ n
⊢ ∀ (p : R[X]), p ∈ Multiset.map f l → natDegree p ≤ n
Theorem: sup_sup_distrib_right
File: Mathlib/Order/Lattice.lean

tactic: rw [sup_sup_sup_comm, sup_idem]
state_before: α : Type u
β : Type v
inst✝ : SemilatticeSup α
a✝ b✝ c✝ d a b c : α
⊢ a ⊔ b ⊔ c = a ⊔ c ⊔ (b ⊔ c)
Theorem: WittVector.bind₁_wittMulN_wittPolynomial
File: Mathlib/RingTheory/WittVector/MulP.lean

tactic: induction' n with n ih
state_before: p : ℕ
R : Type ?u.51070
hp : Fact (Nat.Prime p)
inst✝ : CommRing R
n k : ℕ
⊢ ↑(bind₁ (wittMulN p n)) (wittPolynomial p ℤ k) = ↑n * wittPolynomial p ℤ k

tactic: simp [wittMulN, Nat.cast_zero, MulZeroClass.zero_mul, bind₁_zero_wittPolynomial]
state_before: case zero
p : ℕ
R : Type ?u.51070
hp : Fact (Nat.Prime p)
inst✝ : CommRing R
k : ℕ
⊢ ↑(bind₁ (wittMulN p Nat.zero)) (wittPolynomial p ℤ k) = ↑Nat.zero * wittPolynomial p ℤ k

tactic: rw [wittMulN, ← bind₁_bind₁, wittAdd, wittStructureInt_prop]
state_before: case succ
p : ℕ
R : Type ?u.51070
hp : Fact (Nat.Prime p)
inst✝ : CommRing R
k n : ℕ
ih : ↑(bind₁ (wittMulN p n)) (wittPolynomial p ℤ k) = ↑n * wittPolynomial p ℤ k
⊢ ↑(bind₁ (wittMulN p (Nat.succ n))) (wittPolynomial p ℤ k) = ↑(Nat.succ n) * wittPolynomial p ℤ k

tactic: simp only [AlgHom.map_add, Nat.cast_succ, bind₁_X_right]
state_before: case succ
p : ℕ
R : Type ?u.51070
hp : Fact (Nat.Prime p)
inst✝ : CommRing R
k n : ℕ
ih : ↑(bind₁ (wittMulN p n)) (wittPolynomial p ℤ k) = ↑n * wittPolynomial p ℤ k
⊢ ↑(bind₁ (Function.uncurry ![wittMulN p n, X]))
      (↑(bind₁ fun i => ↑(rename (Prod.mk i)) (wittPolynomial p ℤ k)) (X 0 + X 1)) =
    ↑(Nat.succ n) * wittPolynomial p ℤ k

tactic: rw [add_mul, one_mul, bind₁_rename, bind₁_rename]
state_before: case succ
p : ℕ
R : Type ?u.51070
hp : Fact (Nat.Prime p)
inst✝ : CommRing R
k n : ℕ
ih : ↑(bind₁ (wittMulN p n)) (wittPolynomial p ℤ k) = ↑n * wittPolynomial p ℤ k
⊢ ↑(bind₁ (Function.uncurry ![wittMulN p n, X])) (↑(rename (Prod.mk 0)) (wittPolynomial p ℤ k)) +
      ↑(bind₁ (Function.uncurry ![wittMulN p n, X])) (↑(rename (Prod.mk 1)) (wittPolynomial p ℤ k)) =
    (↑n + 1) * wittPolynomial p ℤ k

tactic: simp only [ih, Function.uncurry, Function.comp, bind₁_X_left, AlgHom.id_apply,
  Matrix.cons_val_zero, Matrix.head_cons, Matrix.cons_val_one]
state_before: case succ
p : ℕ
R : Type ?u.51070
hp : Fact (Nat.Prime p)
inst✝ : CommRing R
k n : ℕ
ih : ↑(bind₁ (wittMulN p n)) (wittPolynomial p ℤ k) = ↑n * wittPolynomial p ℤ k
⊢ ↑(bind₁ (Function.uncurry ![wittMulN p n, X] ∘ Prod.mk 0)) (wittPolynomial p ℤ k) +
      ↑(bind₁ (Function.uncurry ![wittMulN p n, X] ∘ Prod.mk 1)) (wittPolynomial p ℤ k) =
    ↑n * wittPolynomial p ℤ k + wittPolynomial p ℤ k
Theorem: ContinuousLinearMap.comp_analyticOn
File: Mathlib/Analysis/Analytic/Basic.lean

tactic: rintro x hx
state_before: 𝕜 : Type u_2
E : Type u_1
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g✝ : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
s : Set E
g : F →L[𝕜] G
h : AnalyticOn 𝕜 f s
⊢ AnalyticOn 𝕜 (↑g ∘ f) s

tactic: rcases h x hx with ⟨p, r, hp⟩
state_before: 𝕜 : Type u_2
E : Type u_1
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g✝ : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x✝ : E
r r' : ℝ≥0∞
s : Set E
g : F →L[𝕜] G
h : AnalyticOn 𝕜 f s
x : E
hx : x ∈ s
⊢ AnalyticAt 𝕜 (↑g ∘ f) x

tactic: exact ⟨g.compFormalMultilinearSeries p, r, g.comp_hasFPowerSeriesOnBall hp⟩
state_before: case intro.intro
𝕜 : Type u_2
E : Type u_1
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g✝ : E → F
p✝ pf pg : FormalMultilinearSeries 𝕜 E F
x✝ : E
r✝ r' : ℝ≥0∞
s : Set E
g : F →L[𝕜] G
h : AnalyticOn 𝕜 f s
x : E
hx : x ∈ s
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0∞
hp : HasFPowerSeriesOnBall f p x r
⊢ AnalyticAt 𝕜 (↑g ∘ f) x
Theorem: Tree.coe_treesOfNumNodesEq
File: Mathlib/Combinatorics/Catalan.lean

tactic: simp
state_before: n : ℕ
⊢ ∀ (x : Tree Unit), x ∈ ↑(treesOfNumNodesEq n) ↔ x ∈ {x | numNodes x = n}
Theorem: Dfinsupp.filter_def
File: Mathlib/Data/Dfinsupp/Basic.lean

tactic: ext i
state_before: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
dec : DecidableEq ι
inst✝² : (i : ι) → Zero (β i)
inst✝¹ : (i : ι) → (x : β i) → Decidable (x ≠ 0)
p : ι → Prop
inst✝ : DecidablePred p
f : Π₀ (i : ι), β i
⊢ filter p f = mk (Finset.filter p (support f)) fun i => ↑f ↑i

tactic: by_cases h1 : p i <;> by_cases h2 : f i ≠ 0 <;> simp at h2 <;> simp [h1, h2]
state_before: case h
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
dec : DecidableEq ι
inst✝² : (i : ι) → Zero (β i)
inst✝¹ : (i : ι) → (x : β i) → Decidable (x ≠ 0)
p : ι → Prop
inst✝ : DecidablePred p
f : Π₀ (i : ι), β i
i : ι
⊢ ↑(filter p f) i = ↑(mk (Finset.filter p (support f)) fun i => ↑f ↑i) i
Theorem: Nat.sq_mul_squarefree_of_pos'
File: Mathlib/Data/Nat/Squarefree.lean

tactic: obtain ⟨a₁, b₁, ha₁, hb₁, hab₁, hab₂⟩ := sq_mul_squarefree_of_pos h
state_before: n : ℕ
h : 0 < n
⊢ ∃ a b, (b + 1) ^ 2 * (a + 1) = n ∧ Squarefree (a + 1)

tactic: refine' ⟨a₁.pred, b₁.pred, _, _⟩ <;> simpa only [add_one, succ_pred_eq_of_pos, ha₁, hb₁]
state_before: case intro.intro.intro.intro.intro
n : ℕ
h : 0 < n
a₁ b₁ : ℕ
ha₁ : 0 < a₁
hb₁ : 0 < b₁
hab₁ : b₁ ^ 2 * a₁ = n
hab₂ : Squarefree a₁
⊢ ∃ a b, (b + 1) ^ 2 * (a + 1) = n ∧ Squarefree (a + 1)
Theorem: deriv_zero_of_not_differentiableAt
File: Mathlib/Analysis/Calculus/Deriv/Basic.lean

tactic: unfold deriv
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 𝕜
h : ¬DifferentiableAt 𝕜 f x
⊢ deriv f x = 0

tactic: rw [fderiv_zero_of_not_differentiableAt h]
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 𝕜
h : ¬DifferentiableAt 𝕜 f x
⊢ ↑(fderiv 𝕜 f x) 1 = 0

tactic: simp
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 𝕜
h : ¬DifferentiableAt 𝕜 f x
⊢ ↑0 1 = 0
Theorem: HasCompactMulSupport.isCompact_range
File: Mathlib/Topology/Support.lean

tactic: cases' range_eq_image_mulTSupport_or f with h2 h2 <;> rw [h2]
state_before: X : Type ?u.12625
α : Type u_2
α' : Type ?u.12631
β : Type u_1
γ : Type ?u.12637
δ : Type ?u.12640
M : Type ?u.12643
E : Type ?u.12646
R : Type ?u.12649
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace α'
inst✝³ : One β
inst✝² : One γ
inst✝¹ : One δ
g : β → γ
f : α → β
f₂ : α → γ
m : β → γ → δ
x : α
inst✝ : TopologicalSpace β
h : HasCompactMulSupport f
hf : Continuous f
⊢ IsCompact (range f)

tactic: exacts [h.image hf, (h.image hf).insert 1]
state_before: case inl
X : Type ?u.12625
α : Type u_2
α' : Type ?u.12631
β : Type u_1
γ : Type ?u.12637
δ : Type ?u.12640
M : Type ?u.12643
E : Type ?u.12646
R : Type ?u.12649
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace α'
inst✝³ : One β
inst✝² : One γ
inst✝¹ : One δ
g : β → γ
f : α → β
f₂ : α → γ
m : β → γ → δ
x : α
inst✝ : TopologicalSpace β
h : HasCompactMulSupport f
hf : Continuous f
h2 : range f = f '' mulTSupport f
⊢ IsCompact (f '' mulTSupport f)

case inr
X : Type ?u.12625
α : Type u_2
α' : Type ?u.12631
β : Type u_1
γ : Type ?u.12637
δ : Type ?u.12640
M : Type ?u.12643
E : Type ?u.12646
R : Type ?u.12649
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace α'
inst✝³ : One β
inst✝² : One γ
inst✝¹ : One δ
g : β → γ
f : α → β
f₂ : α → γ
m : β → γ → δ
x : α
inst✝ : TopologicalSpace β
h : HasCompactMulSupport f
hf : Continuous f
h2 : range f = insert 1 (f '' mulTSupport f)
⊢ IsCompact (insert 1 (f '' mulTSupport f))
Theorem: ContinuousMultilinearMap.norm_mkPiField
File: Mathlib/Analysis/NormedSpace/Multilinear.lean

tactic: simpa using (ContinuousMultilinearMap.mkPiField 𝕜 ι z).le_op_norm fun _ => 1
state_before: 𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
z : G
⊢ ‖z‖ ≤
    ‖MultilinearMap.mkContinuous (MultilinearMap.mkPiRing 𝕜 ι z) ‖z‖
        (_ : ∀ (m : ι → 𝕜), ‖↑(MultilinearMap.mkPiRing 𝕜 ι z) m‖ ≤ ‖z‖ * ∏ i : ι, ‖m i‖)‖
Theorem: Projectivization.map_comp
File: Mathlib/LinearAlgebra/ProjectiveSpace/Basic.lean

tactic: ext ⟨v⟩
state_before: K : Type u_3
V : Type u_5
inst✝⁹ : DivisionRing K
inst✝⁸ : AddCommGroup V
inst✝⁷ : Module K V
L : Type u_4
W : Type u_6
inst✝⁶ : DivisionRing L
inst✝⁵ : AddCommGroup W
inst✝⁴ : Module L W
F : Type u_1
U : Type u_2
inst✝³ : Field F
inst✝² : AddCommGroup U
inst✝¹ : Module F U
σ : K →+* L
τ : L →+* F
γ : K →+* F
inst✝ : RingHomCompTriple σ τ γ
f : V →ₛₗ[σ] W
hf : Function.Injective ↑f
g : W →ₛₗ[τ] U
hg : Function.Injective ↑g
⊢ map (LinearMap.comp g f) (_ : Function.Injective (↑g ∘ fun x => ↑f x)) = map g hg ∘ map f hf

tactic: rfl
state_before: case h.mk
K : Type u_3
V : Type u_5
inst✝⁹ : DivisionRing K
inst✝⁸ : AddCommGroup V
inst✝⁷ : Module K V
L : Type u_4
W : Type u_6
inst✝⁶ : DivisionRing L
inst✝⁵ : AddCommGroup W
inst✝⁴ : Module L W
F : Type u_1
U : Type u_2
inst✝³ : Field F
inst✝² : AddCommGroup U
inst✝¹ : Module F U
σ : K →+* L
τ : L →+* F
γ : K →+* F
inst✝ : RingHomCompTriple σ τ γ
f : V →ₛₗ[σ] W
hf : Function.Injective ↑f
g : W →ₛₗ[τ] U
hg : Function.Injective ↑g
x✝ : ℙ K V
v : { v // v ≠ 0 }
⊢ map (LinearMap.comp g f) (_ : Function.Injective (↑g ∘ fun x => ↑f x)) (Quot.mk Setoid.r v) =
    (map g hg ∘ map f hf) (Quot.mk Setoid.r v)
Theorem: LinearIsometryEquiv.coe_toAffineIsometryEquiv
File: Mathlib/Analysis/NormedSpace/AffineIsometry.lean

tactic: rfl
state_before: 𝕜 : Type u_3
V : Type u_1
V₁ : Type ?u.380007
V₂ : Type u_2
V₃ : Type ?u.380013
V₄ : Type ?u.380016
P₁ : Type ?u.380019
P : Type ?u.380022
P₂ : Type ?u.380025
P₃ : Type ?u.380028
P₄ : Type ?u.380031
inst✝²⁰ : NormedField 𝕜
inst✝¹⁹ : SeminormedAddCommGroup V
inst✝¹⁸ : SeminormedAddCommGroup V₁
inst✝¹⁷ : SeminormedAddCommGroup V₂
inst✝¹⁶ : SeminormedAddCommGroup V₃
inst✝¹⁵ : SeminormedAddCommGroup V₄
inst✝¹⁴ : NormedSpace 𝕜 V
inst✝¹³ : NormedSpace 𝕜 V₁
inst✝¹² : NormedSpace 𝕜 V₂
inst✝¹¹ : NormedSpace 𝕜 V₃
inst✝¹⁰ : NormedSpace 𝕜 V₄
inst✝⁹ : PseudoMetricSpace P
inst✝⁸ : MetricSpace P₁
inst✝⁷ : PseudoMetricSpace P₂
inst✝⁶ : PseudoMetricSpace P₃
inst✝⁵ : PseudoMetricSpace P₄
inst✝⁴ : NormedAddTorsor V P
inst✝³ : NormedAddTorsor V₁ P₁
inst✝² : NormedAddTorsor V₂ P₂
inst✝¹ : NormedAddTorsor V₃ P₃
inst✝ : NormedAddTorsor V₄ P₄
e : V ≃ₗᵢ[𝕜] V₂
⊢ ↑(toAffineIsometryEquiv e) = ↑e
Theorem: one_div_le_one_div_of_neg
File: Mathlib/Algebra/Order/Field/Basic.lean

tactic: simpa [one_div] using inv_le_inv_of_neg ha hb
state_before: ι : Type ?u.179667
α : Type u_1
β : Type ?u.179673
inst✝ : LinearOrderedField α
a b c d : α
n : ℤ
ha : a < 0
hb : b < 0
⊢ 1 / a ≤ 1 / b ↔ b ≤ a
Theorem: CategoryTheory.MorphismProperty.RespectsIso.diagonal
File: Mathlib/CategoryTheory/MorphismProperty.lean

tactic: constructor
state_before: C : Type u
inst✝² : Category C
D : Type ?u.69245
inst✝¹ : Category D
inst✝ : HasPullbacks C
P : MorphismProperty C
hP : RespectsIso P
⊢ RespectsIso (MorphismProperty.diagonal P)

tactic: introv H
state_before: case left
C : Type u
inst✝² : Category C
D : Type ?u.69245
inst✝¹ : Category D
inst✝ : HasPullbacks C
P : MorphismProperty C
hP : RespectsIso P
⊢ ∀ {X Y Z : C} (e : X ≅ Y) (f : Y ⟶ Z), MorphismProperty.diagonal P f → MorphismProperty.diagonal P (e.hom ≫ f)

tactic: rwa [diagonal_iff, pullback.diagonal_comp, hP.cancel_left_isIso, hP.cancel_left_isIso,
  ← hP.cancel_right_isIso _
    (pullback.map (e.hom ≫ f) (e.hom ≫ f) f f e.hom e.hom (𝟙 Z) (by simp) (by simp)),
  ← pullback.condition, hP.cancel_left_isIso]
state_before: case left
C : Type u
inst✝² : Category C
D : Type ?u.69245
inst✝¹ : Category D
inst✝ : HasPullbacks C
P : MorphismProperty C
hP : RespectsIso P
X Y Z : C
e : X ≅ Y
f : Y ⟶ Z
H : MorphismProperty.diagonal P f
⊢ MorphismProperty.diagonal P (e.hom ≫ f)

tactic: simp
state_before: C : Type u
inst✝² : Category C
D : Type ?u.69245
inst✝¹ : Category D
inst✝ : HasPullbacks C
P : MorphismProperty C
hP : RespectsIso P
X Y Z : C
e : X ≅ Y
f : Y ⟶ Z
H : MorphismProperty.diagonal P f
⊢ (e.hom ≫ f) ≫ 𝟙 Z = e.hom ≫ f

tactic: simp
state_before: C : Type u
inst✝² : Category C
D : Type ?u.69245
inst✝¹ : Category D
inst✝ : HasPullbacks C
P : MorphismProperty C
hP : RespectsIso P
X Y Z : C
e : X ≅ Y
f : Y ⟶ Z
H : MorphismProperty.diagonal P f
⊢ (e.hom ≫ f) ≫ 𝟙 Z = e.hom ≫ f

tactic: introv H
state_before: case right
C : Type u
inst✝² : Category C
D : Type ?u.69245
inst✝¹ : Category D
inst✝ : HasPullbacks C
P : MorphismProperty C
hP : RespectsIso P
⊢ ∀ {X Y Z : C} (e : Y ≅ Z) (f : X ⟶ Y), MorphismProperty.diagonal P f → MorphismProperty.diagonal P (f ≫ e.hom)

tactic: delta diagonal
state_before: case right
C : Type u
inst✝² : Category C
D : Type ?u.69245
inst✝¹ : Category D
inst✝ : HasPullbacks C
P : MorphismProperty C
hP : RespectsIso P
X Y Z : C
e : Y ≅ Z
f : X ⟶ Y
H : MorphismProperty.diagonal P f
⊢ MorphismProperty.diagonal P (f ≫ e.hom)

tactic: rwa [pullback.diagonal_comp, hP.cancel_right_isIso]
state_before: case right
C : Type u
inst✝² : Category C
D : Type ?u.69245
inst✝¹ : Category D
inst✝ : HasPullbacks C
P : MorphismProperty C
hP : RespectsIso P
X Y Z : C
e : Y ≅ Z
f : X ⟶ Y
H : MorphismProperty.diagonal P f
⊢ P (pullback.diagonal (f ≫ e.hom))
Theorem: Real.volume_pi_Ioc_toReal
File: Mathlib/MeasureTheory/Measure/Lebesgue/Basic.lean

tactic: simp only [volume_pi_Ioc, ENNReal.toReal_prod, ENNReal.toReal_ofReal (sub_nonneg.2 (h _))]
state_before: ι : Type u_1
inst✝ : Fintype ι
a b : ι → ℝ
h : a ≤ b
⊢ ENNReal.toReal (↑↑volume (Set.pi univ fun i => Ioc (a i) (b i))) = ∏ i : ι, (b i - a i)
Theorem: Nat.ArithmeticFunction.vonMangoldt_apply_prime
File: Mathlib/NumberTheory/VonMangoldt.lean

tactic: rw [vonMangoldt_apply, Prime.minFac_eq hp, if_pos hp.prime.isPrimePow]
state_before: p : ℕ
hp : Prime p
⊢ ↑Λ p = Real.log ↑p
Theorem: RingHom.charP_iff_charP
File: Mathlib/Algebra/CharP/Basic.lean

tactic: simp only [charP_iff, ← f.injective.eq_iff, map_natCast f, f.map_zero]
state_before: R : Type ?u.80816
K : Type u_1
L : Type u_2
inst✝² : DivisionRing K
inst✝¹ : Semiring L
inst✝ : Nontrivial L
f : K →+* L
p : ℕ
⊢ CharP K p ↔ CharP L p
Theorem: YoungDiagram.rowLen_eq_card
File: Mathlib/Combinatorics/Young/YoungDiagram.lean

tactic: simp [row_eq_prod]
state_before: μ : YoungDiagram
i : ℕ
⊢ rowLen μ i = Finset.card (row μ i)