tasksource/leandojo huggingface dataset:
Theorem: MeasureTheory.L1.norm_eq_integral_norm
File: Mathlib/MeasureTheory/Integral/Bochner.lean

tactic: simp only [snorm, snorm', ENNReal.one_toReal, ENNReal.rpow_one, Lp.norm_def, if_false,
  ENNReal.one_ne_top, one_ne_zero, _root_.div_one]
state_before: α : Type u_1
E : Type ?u.1125327
F : Type ?u.1125330
𝕜 : Type ?u.1125333
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace ℝ E
inst✝⁹ : CompleteSpace E
inst✝⁸ : NontriviallyNormedField 𝕜
inst✝⁷ : NormedSpace 𝕜 E
inst✝⁶ : SMulCommClass ℝ 𝕜 E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
inst✝³ : CompleteSpace F
f✝ g : α → E
m : MeasurableSpace α
μ : Measure α
X : Type ?u.1128024
inst✝² : TopologicalSpace X
inst✝¹ : FirstCountableTopology X
H : Type u_2
inst✝ : NormedAddCommGroup H
f : { x // x ∈ Lp H 1 }
⊢ ‖f‖ = ∫ (a : α), ‖↑↑f a‖ ∂μ

tactic: rw [integral_eq_lintegral_of_nonneg_ae (eventually_of_forall (by simp [norm_nonneg]))
    (Lp.aestronglyMeasurable f).norm]
state_before: α : Type u_1
E : Type ?u.1125327
F : Type ?u.1125330
𝕜 : Type ?u.1125333
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace ℝ E
inst✝⁹ : CompleteSpace E
inst✝⁸ : NontriviallyNormedField 𝕜
inst✝⁷ : NormedSpace 𝕜 E
inst✝⁶ : SMulCommClass ℝ 𝕜 E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
inst✝³ : CompleteSpace F
f✝ g : α → E
m : MeasurableSpace α
μ : Measure α
X : Type ?u.1128024
inst✝² : TopologicalSpace X
inst✝¹ : FirstCountableTopology X
H : Type u_2
inst✝ : NormedAddCommGroup H
f : { x // x ∈ Lp H 1 }
⊢ ENNReal.toReal (∫⁻ (a : α), ↑‖↑↑f a‖₊ ∂μ) = ∫ (a : α), ‖↑↑f a‖ ∂μ

tactic: simp [ofReal_norm_eq_coe_nnnorm]
state_before: α : Type u_1
E : Type ?u.1125327
F : Type ?u.1125330
𝕜 : Type ?u.1125333
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace ℝ E
inst✝⁹ : CompleteSpace E
inst✝⁸ : NontriviallyNormedField 𝕜
inst✝⁷ : NormedSpace 𝕜 E
inst✝⁶ : SMulCommClass ℝ 𝕜 E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
inst✝³ : CompleteSpace F
f✝ g : α → E
m : MeasurableSpace α
μ : Measure α
X : Type ?u.1128024
inst✝² : TopologicalSpace X
inst✝¹ : FirstCountableTopology X
H : Type u_2
inst✝ : NormedAddCommGroup H
f : { x // x ∈ Lp H 1 }
⊢ ENNReal.toReal (∫⁻ (a : α), ↑‖↑↑f a‖₊ ∂μ) = ENNReal.toReal (∫⁻ (a : α), ENNReal.ofReal ‖↑↑f a‖ ∂μ)

tactic: simp [norm_nonneg]
state_before: α : Type u_1
E : Type ?u.1125327
F : Type ?u.1125330
𝕜 : Type ?u.1125333
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace ℝ E
inst✝⁹ : CompleteSpace E
inst✝⁸ : NontriviallyNormedField 𝕜
inst✝⁷ : NormedSpace 𝕜 E
inst✝⁶ : SMulCommClass ℝ 𝕜 E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
inst✝³ : CompleteSpace F
f✝ g : α → E
m : MeasurableSpace α
μ : Measure α
X : Type ?u.1128024
inst✝² : TopologicalSpace X
inst✝¹ : FirstCountableTopology X
H : Type u_2
inst✝ : NormedAddCommGroup H
f : { x // x ∈ Lp H 1 }
⊢ ∀ (x : α), OfNat.ofNat 0 x ≤ ‖↑↑f x‖
Theorem: MeasureTheory.Lp.coeFn_negPart
File: Mathlib/MeasureTheory/Function/LpSpace.lean

tactic: rw [h, ← max_neg_neg, neg_zero]
state_before: α : Type u_1
E : Type ?u.8096866
F : Type ?u.8096869
G : Type ?u.8096872
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
g : E → F
c : ℝ≥0
f : { x // x ∈ Lp ℝ p }
a : α
h : ↑↑(negPart f) a = max (-↑↑f a) 0
⊢ ↑↑(negPart f) a = -min (↑↑f a) 0
Theorem: Cardinal.lift_lt_univ'
File: Mathlib/SetTheory/Ordinal/Basic.lean

tactic: have := lift_lt.{_, max (u+1) v}.2 (lift_lt_univ c)
state_before: α : Type ?u.234294
β : Type ?u.234297
γ : Type ?u.234300
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
c : Cardinal
⊢ lift c < univ

tactic: rw [lift_lift, lift_univ, univ_umax.{u,v}] at this
state_before: α : Type ?u.234294
β : Type ?u.234297
γ : Type ?u.234300
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
c : Cardinal
this : lift (lift c) < lift univ
⊢ lift c < univ

tactic: exact this
state_before: α : Type ?u.234294
β : Type ?u.234297
γ : Type ?u.234300
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
c : Cardinal
this : lift c < univ
⊢ lift c < univ
Theorem: Polynomial.natDegree_X_pow_sub_C
File: Mathlib/Data/Polynomial/Degree/Definitions.lean

tactic: rw [sub_eq_add_neg, ← map_neg C r, natDegree_X_pow_add_C]
state_before: R : Type u
S : Type v
a b c d : R
n✝ m : ℕ
inst✝¹ : Ring R
inst✝ : Nontrivial R
n : ℕ
r : R
⊢ natDegree (X ^ n - ↑C r) = n
Theorem: Rat.toNNRat_le_toNNRat_iff
File: Mathlib/Data/Rat/NNRat.lean

tactic: simp [← coe_le_coe, toNNRat, hp]
state_before: p q : ℚ
hp : 0 ≤ p
⊢ toNNRat q ≤ toNNRat p ↔ q ≤ p
Theorem: one_lt_one_div
File: Mathlib/Algebra/Order/Field/Basic.lean

tactic: rwa [lt_one_div (@zero_lt_one α _ _ _ _ _) h1, one_div_one]
state_before: ι : Type ?u.87727
α : Type u_1
β : Type ?u.87733
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
h1 : 0 < a
h2 : a < 1
⊢ 1 < 1 / a
Theorem: SimpleGraph.Walk.toSubgraph_reverse
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: induction p with
| nil => simp
| cons _ _ _ =>
  simp only [*, Walk.toSubgraph, reverse_cons, toSubgraph_append, subgraphOfAdj_symm]
  rw [sup_comm]
  congr
  ext <;> simp [-Set.bot_eq_empty]
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w : V
p : Walk G u v
⊢ Walk.toSubgraph (reverse p) = Walk.toSubgraph p

tactic: simp
state_before: case nil
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w u✝ : V
⊢ Walk.toSubgraph (reverse nil) = Walk.toSubgraph nil

tactic: simp only [*, Walk.toSubgraph, reverse_cons, toSubgraph_append, subgraphOfAdj_symm]
state_before: case cons
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w u✝ v✝ w✝ : V
h✝ : Adj G u✝ v✝
p✝ : Walk G v✝ w✝
p_ih✝ : Walk.toSubgraph (reverse p✝) = Walk.toSubgraph p✝
⊢ Walk.toSubgraph (reverse (cons h✝ p✝)) = Walk.toSubgraph (cons h✝ p✝)

tactic: rw [sup_comm]
state_before: case cons
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w u✝ v✝ w✝ : V
h✝ : Adj G u✝ v✝
p✝ : Walk G v✝ w✝
p_ih✝ : Walk.toSubgraph (reverse p✝) = Walk.toSubgraph p✝
⊢ Walk.toSubgraph p✝ ⊔ (subgraphOfAdj G (_ : Adj G u✝ v✝) ⊔ SimpleGraph.singletonSubgraph G u✝) =
    subgraphOfAdj G h✝ ⊔ Walk.toSubgraph p✝

tactic: congr
state_before: case cons
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w u✝ v✝ w✝ : V
h✝ : Adj G u✝ v✝
p✝ : Walk G v✝ w✝
p_ih✝ : Walk.toSubgraph (reverse p✝) = Walk.toSubgraph p✝
⊢ subgraphOfAdj G (_ : Adj G u✝ v✝) ⊔ SimpleGraph.singletonSubgraph G u✝ ⊔ Walk.toSubgraph p✝ =
    subgraphOfAdj G h✝ ⊔ Walk.toSubgraph p✝

tactic: ext <;> simp [-Set.bot_eq_empty]
state_before: case cons.e_a
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w u✝ v✝ w✝ : V
h✝ : Adj G u✝ v✝
p✝ : Walk G v✝ w✝
p_ih✝ : Walk.toSubgraph (reverse p✝) = Walk.toSubgraph p✝
⊢ subgraphOfAdj G (_ : Adj G u✝ v✝) ⊔ SimpleGraph.singletonSubgraph G u✝ = subgraphOfAdj G h✝
Theorem: CategoryTheory.whisker_eq
File: Mathlib/CategoryTheory/Category/Basic.lean

tactic: rw [w]
state_before: C : Type u
inst✝ : Category C
X Y Z : C
f : X ⟶ Y
g h : Y ⟶ Z
w : g = h
⊢ f ≫ g = f ≫ h
Theorem: CategoryTheory.IsIso.of_epi_section'
File: Mathlib/CategoryTheory/EpiMono.lean

tactic: simp
state_before: C : Type u₁
inst✝¹ : Category C
X Y : C
f : X ⟶ Y
hf : SplitEpi f
inst✝ : Epi hf.section_
⊢ hf.section_ ≫ f ≫ hf.section_ = hf.section_

tactic: simp
state_before: C : Type u₁
inst✝¹ : Category C
X Y : C
f : X ⟶ Y
hf : SplitEpi f
inst✝ : Epi hf.section_
⊢ hf.section_ ≫ f = 𝟙 Y
Theorem: Rat.divInt_one
File: Mathlib/Data/Rat/Defs.lean

tactic: rw [divInt]
state_before: a b c : ℚ
n : ℤ
⊢ n /. 1 = ↑n

tactic: simp [mkRat, normalize]
state_before: a b c : ℚ
n : ℤ
⊢ (match n, 1 with
    | n, Int.ofNat d => inline (mkRat n d)
    | n, Int.negSucc d => normalize (-n) (Nat.succ d)) =
    ↑n

tactic: rfl
state_before: a b c : ℚ
n : ℤ
⊢ mk' n 1 = ↑n
Theorem: Lagrange.basis_pair_left
File: Mathlib/LinearAlgebra/Lagrange.lean

tactic: simp only [Lagrange.basis, hij, erase_insert_eq_erase, erase_eq_of_not_mem, mem_singleton,
  not_false_iff, prod_singleton]
state_before: F : Type u_2
inst✝¹ : Field F
ι : Type u_1
inst✝ : DecidableEq ι
s : Finset ι
v : ι → F
i j : ι
hij : i ≠ j
⊢ Lagrange.basis {i, j} v i = basisDivisor (v i) (v j)
Theorem: nhdsWithin_pi_neBot
File: Mathlib/Topology/ContinuousOn.lean

tactic: simp [neBot_iff, nhdsWithin_pi_eq_bot]
state_before: α✝ : Type ?u.154580
β : Type ?u.154583
γ : Type ?u.154586
δ : Type ?u.154589
inst✝¹ : TopologicalSpace α✝
ι : Type u_1
α : ι → Type u_2
inst✝ : (i : ι) → TopologicalSpace (α i)
I : Set ι
s : (i : ι) → Set (α i)
x : (i : ι) → α i
⊢ NeBot (𝓝[Set.pi I s] x) ↔ ∀ (i : ι), i ∈ I → NeBot (𝓝[s i] x i)
Theorem: Nat.eq_of_dvd_of_div_eq_one
File: Mathlib/Data/Nat/Basic.lean

tactic: rw [← Nat.div_mul_cancel w, h, one_mul]
state_before: m n k a b : ℕ
w : a ∣ b
h : b / a = 1
⊢ a = b
Theorem: Pmf.map_const
File: Mathlib/Probability/ProbabilityMassFunction/Constructions.lean

tactic: simp only [map, Function.comp, bind_const, Function.const]
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.41219
f : α → β
p : Pmf α
b : β
⊢ map (Function.const α b) p = pure b
Theorem: Polynomial.map_aeval_eq_aeval_map
File: Mathlib/Data/Polynomial/AlgebraMap.lean

tactic: conv_rhs => rw [aeval_def, ← eval_map]
state_before: R : Type u
S✝ : Type v
T✝ : Type w
A : Type z
A' : Type ?u.1164003
B' : Type ?u.1164006
a✝ b : R
n : ℕ
inst✝¹¹ : CommSemiring A'
inst✝¹⁰ : Semiring B'
inst✝⁹ : CommSemiring R
p✝ q : R[X]
inst✝⁸ : Semiring A
inst✝⁷ : Algebra R A
B : Type ?u.1164219
inst✝⁶ : Semiring B
inst✝⁵ : Algebra R B
x : A
S : Type u_1
T : Type u_2
U : Type u_3
inst✝⁴ : CommSemiring S
inst✝³ : CommSemiring T
inst✝² : Semiring U
inst✝¹ : Algebra R S
inst✝ : Algebra T U
φ : R →+* T
ψ : S →+* U
h : RingHom.comp (algebraMap T U) φ = RingHom.comp ψ (algebraMap R S)
p : R[X]
a : S
⊢ ↑ψ (↑(aeval a) p) = ↑(aeval (↑ψ a)) (map φ p)

tactic: rw [map_map, h, ← map_map, eval_map, eval₂_at_apply, aeval_def, eval_map]
state_before: R : Type u
S✝ : Type v
T✝ : Type w
A : Type z
A' : Type ?u.1164003
B' : Type ?u.1164006
a✝ b : R
n : ℕ
inst✝¹¹ : CommSemiring A'
inst✝¹⁰ : Semiring B'
inst✝⁹ : CommSemiring R
p✝ q : R[X]
inst✝⁸ : Semiring A
inst✝⁷ : Algebra R A
B : Type ?u.1164219
inst✝⁶ : Semiring B
inst✝⁵ : Algebra R B
x : A
S : Type u_1
T : Type u_2
U : Type u_3
inst✝⁴ : CommSemiring S
inst✝³ : CommSemiring T
inst✝² : Semiring U
inst✝¹ : Algebra R S
inst✝ : Algebra T U
φ : R →+* T
ψ : S →+* U
h : RingHom.comp (algebraMap T U) φ = RingHom.comp ψ (algebraMap R S)
p : R[X]
a : S
⊢ ↑ψ (↑(aeval a) p) = eval (↑ψ a) (map (algebraMap T ((fun x => U) a)) (map φ p))
Theorem: GaloisInsertion.isAtom_iff'
File: Mathlib/Order/Atoms.lean

tactic: rw [← gi.isAtom_iff hbot h_atom, gi.l_u_eq]
state_before: α : Type u_1
β : Type u_2
inst✝⁴ : PartialOrder α
inst✝³ : PartialOrder β
inst✝² : OrderBot α
inst✝¹ : IsAtomic α
inst✝ : OrderBot β
l : α → β
u : β → α
gi : GaloisInsertion l u
hbot : u ⊥ = ⊥
h_atom : ∀ (a : α), IsAtom a → u (l a) = a
b : β
⊢ IsAtom (u b) ↔ IsAtom b
Theorem: HasStrictDerivAt.comp_hasStrictFDerivAt
File: Mathlib/Analysis/Calculus/Deriv/Comp.lean

tactic: rw [HasStrictDerivAt] at hh
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 𝕜
𝕜' : Type u_1
inst✝³ : NontriviallyNormedField 𝕜'
inst✝² : NormedAlgebra 𝕜 𝕜'
inst✝¹ : NormedSpace 𝕜' F
inst✝ : IsScalarTower 𝕜 𝕜' F
s' t' : Set 𝕜'
h : 𝕜 → 𝕜'
h₁ : 𝕜 → 𝕜
h₂ : 𝕜' → 𝕜'
h' h₂' : 𝕜'
h₁' : 𝕜
g₁ : 𝕜' → F
g₁' : F
L' : Filter 𝕜'
f : E → 𝕜'
f' : E →L[𝕜] 𝕜'
x : E
hh : HasStrictDerivAt h₂ h₂' (f x)
hf : HasStrictFDerivAt f f' x
⊢ HasStrictFDerivAt (h₂ ∘ f) (h₂' • f') x

tactic: convert (hh.restrictScalars 𝕜).comp x hf
state_before: 𝕜 : Type u
inst✝⁸ : NontriviallyNormedField 𝕜
F : Type v
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
E : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
f✝ f₀ f₁ g : 𝕜 → F
f'✝ f₀' f₁' g' : F
x✝ : 𝕜
s t : Set 𝕜
L L₁ L₂ : Filter 𝕜
𝕜' : Type u_1
inst✝³ : NontriviallyNormedField 𝕜'
inst✝² : NormedAlgebra 𝕜 𝕜'
inst✝¹ : NormedSpace 𝕜' F
inst✝ : IsScalarTower 𝕜 𝕜' F
s' t' : Set 𝕜'
h : 𝕜 → 𝕜'
h₁ : 𝕜 → 𝕜
h₂ : 𝕜' → 𝕜'
h' h₂' : 𝕜'
h₁' : 𝕜
g₁ : 𝕜' → F
g₁' : F
L' : Filter 𝕜'
f : E → 𝕜'
f' : E →L[𝕜] 𝕜'
x : E
hh : HasStrictFDerivAt h₂ (smulRight 1 h₂') (f x)
hf : HasStrictFDerivAt f f' x
⊢ HasStrictFDerivAt (h₂ ∘ f) (h₂' • f') x

tactic: ext x
state_before: case h.e'_10.h.e
𝕜 : 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 𝕜
𝕜' : Type u_1
inst✝³ : NontriviallyNormedField 𝕜'
inst✝² : NormedAlgebra 𝕜 𝕜'
inst✝¹ : NormedSpace 𝕜' F
inst✝ : IsScalarTower 𝕜 𝕜' F
s' t' : Set 𝕜'
h : 𝕜 → 𝕜'
h₁ : 𝕜 → 𝕜
h₂ : 𝕜' → 𝕜'
h' h₂' : 𝕜'
h₁' : 𝕜
g₁ : 𝕜' → F
g₁' : F
L' : Filter 𝕜'
f : E → 𝕜'
f' : E →L[𝕜] 𝕜'
x : E
hh : HasStrictFDerivAt h₂ (smulRight 1 h₂') (f x)
hf : HasStrictFDerivAt f f' x
⊢ HSMul.hSMul h₂' = ContinuousLinearMap.comp (ContinuousLinearMap.restrictScalars 𝕜 (smulRight 1 h₂'))

tactic: simp [mul_comm]
state_before: case h.e'_10.h.e.h.h
𝕜 : 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 𝕜
𝕜' : Type u_1
inst✝³ : NontriviallyNormedField 𝕜'
inst✝² : NormedAlgebra 𝕜 𝕜'
inst✝¹ : NormedSpace 𝕜' F
inst✝ : IsScalarTower 𝕜 𝕜' F
s' t' : Set 𝕜'
h : 𝕜 → 𝕜'
h₁ : 𝕜 → 𝕜
h₂ : 𝕜' → 𝕜'
h' h₂' : 𝕜'
h₁' : 𝕜
g₁ : 𝕜' → F
g₁' : F
L' : Filter 𝕜'
f : E → 𝕜'
f' : E →L[𝕜] 𝕜'
x✝¹ : E
hh : HasStrictFDerivAt h₂ (smulRight 1 h₂') (f x✝¹)
hf : HasStrictFDerivAt f f' x✝¹
x : E →L[𝕜] 𝕜'
x✝ : E
⊢ ↑(h₂' • x) x✝ = ↑(ContinuousLinearMap.comp (ContinuousLinearMap.restrictScalars 𝕜 (smulRight 1 h₂')) x) x✝
Theorem: LinearMap.mul_eq_one_of_mul_eq_one
File: Mathlib/LinearAlgebra/FiniteDimensional.lean

tactic: have ginj : Injective g :=
  HasLeftInverse.injective ⟨f, fun x => show (f * g) x = (1 : V →ₗ[K] V) x by rw [hfg]⟩
state_before: K : Type u
V : Type v
inst✝⁵ : DivisionRing K
inst✝⁴ : AddCommGroup V
inst✝³ : Module K V
V₂ : Type v'
inst✝² : AddCommGroup V₂
inst✝¹ : Module K V₂
inst✝ : FiniteDimensional K V
f g : V →ₗ[K] V
hfg : f * g = 1
⊢ g * f = 1

tactic: let ⟨i, hi⟩ :=
  g.exists_rightInverse_of_surjective (range_eq_top.2 (injective_iff_surjective.1 ginj))
state_before: K : Type u
V : Type v
inst✝⁵ : DivisionRing K
inst✝⁴ : AddCommGroup V
inst✝³ : Module K V
V₂ : Type v'
inst✝² : AddCommGroup V₂
inst✝¹ : Module K V₂
inst✝ : FiniteDimensional K V
f g : V →ₗ[K] V
hfg : f * g = 1
ginj : Injective ↑g
⊢ g * f = 1

tactic: have : f * (g * i) = f * 1 := congr_arg _ hi
state_before: K : Type u
V : Type v
inst✝⁵ : DivisionRing K
inst✝⁴ : AddCommGroup V
inst✝³ : Module K V
V₂ : Type v'
inst✝² : AddCommGroup V₂
inst✝¹ : Module K V₂
inst✝ : FiniteDimensional K V
f g : V →ₗ[K] V
hfg : f * g = 1
ginj : Injective ↑g
i : V →ₗ[K] V
hi : comp g i = id
⊢ g * f = 1

tactic: rw [← mul_assoc, hfg, one_mul, mul_one] at this
state_before: K : Type u
V : Type v
inst✝⁵ : DivisionRing K
inst✝⁴ : AddCommGroup V
inst✝³ : Module K V
V₂ : Type v'
inst✝² : AddCommGroup V₂
inst✝¹ : Module K V₂
inst✝ : FiniteDimensional K V
f g : V →ₗ[K] V
hfg : f * g = 1
ginj : Injective ↑g
i : V →ₗ[K] V
hi : comp g i = id
this : f * (g * i) = f * 1
⊢ g * f = 1

tactic: rwa [← this]
state_before: K : Type u
V : Type v
inst✝⁵ : DivisionRing K
inst✝⁴ : AddCommGroup V
inst✝³ : Module K V
V₂ : Type v'
inst✝² : AddCommGroup V₂
inst✝¹ : Module K V₂
inst✝ : FiniteDimensional K V
f g : V →ₗ[K] V
hfg : f * g = 1
ginj : Injective ↑g
i : V →ₗ[K] V
hi : comp g i = id
this : i = f
⊢ g * f = 1

tactic: rw [hfg]
state_before: K : Type u
V : Type v
inst✝⁵ : DivisionRing K
inst✝⁴ : AddCommGroup V
inst✝³ : Module K V
V₂ : Type v'
inst✝² : AddCommGroup V₂
inst✝¹ : Module K V₂
inst✝ : FiniteDimensional K V
f g : V →ₗ[K] V
hfg : f * g = 1
x : V
⊢ ↑(f * g) x = ↑1 x
Theorem: ENNReal.tendsto_nhds_coe_iff
File: Mathlib/Topology/Instances/ENNReal.lean

tactic: rw [nhds_coe, tendsto_map'_iff]
state_before: α✝ : Type ?u.24919
β : Type ?u.24922
γ : Type ?u.24925
a b c d : ℝ≥0∞
r p q : ℝ≥0
x✝ y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
α : Type u_1
l : Filter α
x : ℝ≥0
f : ℝ≥0∞ → α
⊢ Tendsto f (𝓝 ↑x) l ↔ Tendsto (f ∘ some) (𝓝 x) l
Theorem: integral_exp_mul_complex
File: Mathlib/Analysis/SpecialFunctions/Integrals.lean

tactic: have D : ∀ x : ℝ, HasDerivAt (fun y : ℝ => Complex.exp (c * y) / c) (Complex.exp (c * x)) x := by
  intro x
  conv => congr
  rw [← mul_div_cancel (Complex.exp (c * x)) hc]
  apply ((Complex.hasDerivAt_exp _).comp x _).div_const c
  simpa only [mul_one] using ((hasDerivAt_id (x : ℂ)).const_mul _).comp_ofReal
state_before: a b : ℝ
n : ℕ
c : ℂ
hc : c ≠ 0
⊢ (∫ (x : ℝ) in a..b, Complex.exp (c * ↑x)) = (Complex.exp (c * ↑b) - Complex.exp (c * ↑a)) / c

tactic: rw [integral_deriv_eq_sub' _ (funext fun x => (D x).deriv) fun x _ => (D x).differentiableAt]
state_before: a b : ℝ
n : ℕ
c : ℂ
hc : c ≠ 0
D : ∀ (x : ℝ), HasDerivAt (fun y => Complex.exp (c * ↑y) / c) (Complex.exp (c * ↑x)) x
⊢ (∫ (x : ℝ) in a..b, Complex.exp (c * ↑x)) = (Complex.exp (c * ↑b) - Complex.exp (c * ↑a)) / c

tactic: intro x
state_before: a b : ℝ
n : ℕ
c : ℂ
hc : c ≠ 0
⊢ ∀ (x : ℝ), HasDerivAt (fun y => Complex.exp (c * ↑y) / c) (Complex.exp (c * ↑x)) x

tactic: conv => congr
state_before: a b : ℝ
n : ℕ
c : ℂ
hc : c ≠ 0
x : ℝ
⊢ HasDerivAt (fun y => Complex.exp (c * ↑y) / c) (Complex.exp (c * ↑x)) x

tactic: rw [← mul_div_cancel (Complex.exp (c * x)) hc]
state_before: a b : ℝ
n : ℕ
c : ℂ
hc : c ≠ 0
x : ℝ
⊢ HasDerivAt (fun y => Complex.exp (c * ↑y) / c) (Complex.exp (c * ↑x)) x

tactic: apply ((Complex.hasDerivAt_exp _).comp x _).div_const c
state_before: a b : ℝ
n : ℕ
c : ℂ
hc : c ≠ 0
x : ℝ
⊢ HasDerivAt (fun y => Complex.exp (c * ↑y) / c) (Complex.exp (c * ↑x) * c / c) x

tactic: simpa only [mul_one] using ((hasDerivAt_id (x : ℂ)).const_mul _).comp_ofReal
state_before: a b : ℝ
n : ℕ
c : ℂ
hc : c ≠ 0
x : ℝ
⊢ HasDerivAt (fun x => c * ↑x) c x

tactic: ring
state_before: a b : ℝ
n : ℕ
c : ℂ
hc : c ≠ 0
D : ∀ (x : ℝ), HasDerivAt (fun y => Complex.exp (c * ↑y) / c) (Complex.exp (c * ↑x)) x
⊢ Complex.exp (c * ↑b) / c - Complex.exp (c * ↑a) / c = (Complex.exp (c * ↑b) - Complex.exp (c * ↑a)) / c

tactic: apply Continuous.continuousOn
state_before: a b : ℝ
n : ℕ
c : ℂ
hc : c ≠ 0
D : ∀ (x : ℝ), HasDerivAt (fun y => Complex.exp (c * ↑y) / c) (Complex.exp (c * ↑x)) x
⊢ ContinuousOn (fun x => Complex.exp (c * ↑x)) [[a, b]]

tactic: continuity
state_before: case h
a b : ℝ
n : ℕ
c : ℂ
hc : c ≠ 0
D : ∀ (x : ℝ), HasDerivAt (fun y => Complex.exp (c * ↑y) / c) (Complex.exp (c * ↑x)) x
⊢ Continuous fun x => Complex.exp (c * ↑x)
Theorem: MeasureTheory.OuterMeasure.sInf_apply'
File: Mathlib/MeasureTheory/Measure/OuterMeasure.lean

tactic: simp [hm, h]
state_before: α : Type u_1
m : Set (OuterMeasure α)
s : Set α
h : Set.Nonempty s
hm : m = ∅
⊢ ↑(sInf m) s = ⨅ (t : ℕ → Set α) (_ : s ⊆ iUnion t), ∑' (n : ℕ), ⨅ (μ : OuterMeasure α) (_ : μ ∈ m), ↑μ (t n)
Theorem: Polynomial.eval₂_one
File: Mathlib/Data/Polynomial/Eval.lean

tactic: rw [← C_1, eval₂_C, f.map_one]
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝¹ : Semiring R
p q r : R[X]
inst✝ : Semiring S
f : R →+* S
x : S
⊢ eval₂ f x 1 = 1
Theorem: PNat.gcd_comm
File: Mathlib/Data/PNat/Prime.lean

tactic: apply eq
state_before: m n : ℕ+
⊢ gcd m n = gcd n m

tactic: simp only [gcd_coe]
state_before: case a
m n : ℕ+
⊢ ↑(gcd m n) = ↑(gcd n m)

tactic: apply Nat.gcd_comm
state_before: case a
m n : ℕ+
⊢ Nat.gcd ↑m ↑n = Nat.gcd ↑n ↑m
Theorem: LinearPMap.left_le_sup
File: Mathlib/LinearAlgebra/LinearPMap.lean

tactic: refine' ⟨le_sup_left, fun z₁ z₂ hz => _⟩
state_before: R : Type u_1
inst✝⁶ : Ring R
E : Type u_2
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module R E
F : Type u_3
inst✝³ : AddCommGroup F
inst✝² : Module R F
G : Type ?u.199716
inst✝¹ : AddCommGroup G
inst✝ : Module R G
f g : E →ₗ.[R] F
h : ∀ (x : { x // x ∈ f.domain }) (y : { x // x ∈ g.domain }), ↑x = ↑y → ↑f x = ↑g y
⊢ f ≤ LinearPMap.sup f g h

tactic: rw [← add_zero (f _), ← g.map_zero]
state_before: R : Type u_1
inst✝⁶ : Ring R
E : Type u_2
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module R E
F : Type u_3
inst✝³ : AddCommGroup F
inst✝² : Module R F
G : Type ?u.199716
inst✝¹ : AddCommGroup G
inst✝ : Module R G
f g : E →ₗ.[R] F
h : ∀ (x : { x // x ∈ f.domain }) (y : { x // x ∈ g.domain }), ↑x = ↑y → ↑f x = ↑g y
z₁ : { x // x ∈ f.domain }
z₂ : { x // x ∈ (LinearPMap.sup f g h).domain }
hz : ↑z₁ = ↑z₂
⊢ ↑f z₁ = ↑(LinearPMap.sup f g h) z₂

tactic: refine' (sup_apply h _ _ _ _).symm
state_before: R : Type u_1
inst✝⁶ : Ring R
E : Type u_2
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module R E
F : Type u_3
inst✝³ : AddCommGroup F
inst✝² : Module R F
G : Type ?u.199716
inst✝¹ : AddCommGroup G
inst✝ : Module R G
f g : E →ₗ.[R] F
h : ∀ (x : { x // x ∈ f.domain }) (y : { x // x ∈ g.domain }), ↑x = ↑y → ↑f x = ↑g y
z₁ : { x // x ∈ f.domain }
z₂ : { x // x ∈ (LinearPMap.sup f g h).domain }
hz : ↑z₁ = ↑z₂
⊢ ↑f z₁ + ↑g 0 = ↑(LinearPMap.sup f g h) z₂

tactic: simpa
state_before: R : Type u_1
inst✝⁶ : Ring R
E : Type u_2
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module R E
F : Type u_3
inst✝³ : AddCommGroup F
inst✝² : Module R F
G : Type ?u.199716
inst✝¹ : AddCommGroup G
inst✝ : Module R G
f g : E →ₗ.[R] F
h : ∀ (x : { x // x ∈ f.domain }) (y : { x // x ∈ g.domain }), ↑x = ↑y → ↑f x = ↑g y
z₁ : { x // x ∈ f.domain }
z₂ : { x // x ∈ (LinearPMap.sup f g h).domain }
hz : ↑z₁ = ↑z₂
⊢ ↑z₁ + ↑0 = ↑z₂
Theorem: Irreducible.addVal_pow
File: Mathlib/RingTheory/DiscreteValuationRing/Basic.lean

tactic: rw [addVal_pow, addVal_uniformizer h, nsmul_one]
state_before: R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : DiscreteValuationRing R
ϖ : R
h : Irreducible ϖ
n : ℕ
⊢ ↑(addVal R) (ϖ ^ n) = ↑n
Theorem: Sym2.GameAdd.fst_snd
File: Mathlib/Order/GameAdd.lean

tactic: rw [Sym2.eq_swap]
state_before: α : Type u_1
β : Type ?u.5999
rα : α → α → Prop
rβ : β → β → Prop
a₁ a₂ b : α
h : rα a₁ a₂
⊢ GameAdd rα (Quotient.mk (Rel.setoid α) (a₁, b)) (Quotient.mk (Rel.setoid α) (b, a₂))

tactic: exact GameAdd.snd h
state_before: α : Type u_1
β : Type ?u.5999
rα : α → α → Prop
rβ : β → β → Prop
a₁ a₂ b : α
h : rα a₁ a₂
⊢ GameAdd rα (Quotient.mk (Rel.setoid α) (b, a₁)) (Quotient.mk (Rel.setoid α) (b, a₂))
Theorem: IsROrC.intCast_im
File: Mathlib/Data/IsROrC/Basic.lean

tactic: rw [← ofReal_intCast, ofReal_im]
state_before: K : Type u_1
E : Type ?u.6484802
inst✝ : IsROrC K
n : ℤ
⊢ ↑im ↑n = 0
Theorem: Nat.mul_div_cancel
File: Std/Data/Nat/Lemmas.lean

tactic: let t := add_mul_div_right 0 m H
state_before: m n : Nat
H : 0 < n
⊢ m * n / n = m

tactic: rwa [Nat.zero_add, Nat.zero_div, Nat.zero_add] at t
state_before: m n : Nat
H : 0 < n
t : (0 + m * n) / n = 0 / n + m := add_mul_div_right 0 m H
⊢ m * n / n = m
Theorem: Filter.inf_principal_eq_bot_iff_comap
File: Mathlib/Order/Filter/Basic.lean

tactic: rw [principal_eq_map_coe_top s, ← Filter.push_pull', inf_top_eq, map_eq_bot_iff]
state_before: α : Type u
β : Type v
γ : Type w
δ : Type ?u.288409
ι : Sort x
F : Filter α
s : Set α
⊢ F ⊓ 𝓟 s = ⊥ ↔ comap Subtype.val F = ⊥
Theorem: Nat.factors_sublist_right
File: Mathlib/Data/Nat/Factors.lean

tactic: cases' n with hn
state_before: n k : ℕ
h : k ≠ 0
⊢ factors n <+ factors (n * k)

tactic: apply sublist_of_subperm_of_sorted _ (factors_sorted _) (factors_sorted _)
state_before: case succ
k : ℕ
h : k ≠ 0
hn : ℕ
⊢ factors (succ hn) <+ factors (succ hn * k)

tactic: simp [(perm_factors_mul (Nat.succ_ne_zero _) h).subperm_left]
state_before: k : ℕ
h : k ≠ 0
hn : ℕ
⊢ factors (succ hn) <+~ factors (succ hn * k)

tactic: exact (sublist_append_left _ _).subperm
state_before: k : ℕ
h : k ≠ 0
hn : ℕ
⊢ factors (succ hn) <+~ factors (succ hn) ++ factors k

tactic: simp [zero_mul]
state_before: case zero
k : ℕ
h : k ≠ 0
⊢ factors zero <+ factors (zero * k)