tasksource/leandojo huggingface dataset:
Theorem: norm_sub_eq_norm_add
File: Mathlib/Analysis/InnerProductSpace/Basic.lean

tactic: rw [← mul_self_inj_of_nonneg (norm_nonneg _) (norm_nonneg _)]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.3120837
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
dec_E : DecidableEq E
v w : E
h : inner v w = 0
⊢ ‖w - v‖ = ‖w + v‖

tactic: simp only [h, ← @inner_self_eq_norm_mul_norm 𝕜, sub_neg_eq_add, sub_zero, map_sub, zero_re',
  zero_sub, add_zero, map_add, inner_add_right, inner_sub_left, inner_sub_right, inner_re_symm,
  zero_add]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.3120837
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
dec_E : DecidableEq E
v w : E
h : inner v w = 0
⊢ ‖w - v‖ * ‖w - v‖ = ‖w + v‖ * ‖w + v‖
Theorem: TopologicalSpace.IsSeparable.mono
File: Mathlib/Topology/Bases.lean

tactic: rcases hs with ⟨c, c_count, hs⟩
state_before: α : Type u
t : TopologicalSpace α
s u : Set α
hs : IsSeparable s
hu : u ⊆ s
⊢ IsSeparable u

tactic: exact ⟨c, c_count, hu.trans hs⟩
state_before: case intro.intro
α : Type u
t : TopologicalSpace α
s u : Set α
hu : u ⊆ s
c : Set α
c_count : Set.Countable c
hs : s ⊆ closure c
⊢ IsSeparable u
Theorem: TopologicalSpace.IsTopologicalBasis.dense_iff
File: Mathlib/Topology/Bases.lean

tactic: simp only [Dense, hb.mem_closure_iff]
state_before: α : Type u
t : TopologicalSpace α
b : Set (Set α)
hb : IsTopologicalBasis b
s : Set α
⊢ Dense s ↔ ∀ (o : Set α), o ∈ b → Set.Nonempty o → Set.Nonempty (o ∩ s)

tactic: exact ⟨fun h o hb ⟨a, ha⟩ => h a o hb ha, fun h a o hb ha => h o hb ⟨a, ha⟩⟩
state_before: α : Type u
t : TopologicalSpace α
b : Set (Set α)
hb : IsTopologicalBasis b
s : Set α
⊢ (∀ (x : α) (o : Set α), o ∈ b → x ∈ o → Set.Nonempty (o ∩ s)) ↔
    ∀ (o : Set α), o ∈ b → Set.Nonempty o → Set.Nonempty (o ∩ s)
Theorem: MeasurableSet.measurableSet_limsup
File: Mathlib/MeasureTheory/MeasurableSpace.lean

tactic: simpa only [← blimsup_true] using measurableSet_blimsup fun n _ => hs n
state_before: α : Type u_1
β : Type ?u.912025
γ : Type ?u.912028
δ : Type ?u.912031
δ' : Type ?u.912034
ι : Sort uι
s✝ t u : Set α
inst✝ : MeasurableSpace α
s : ℕ → Set α
hs : ∀ (n : ℕ), MeasurableSet (s n)
⊢ MeasurableSet (limsup s atTop)
Theorem: existsUnique_add_zsmul_mem_Ioc
File: Mathlib/Algebra/Order/Archimedean.lean

tactic: simpa only [add_zsmul, sub_lt_iff_lt_add', le_sub_iff_add_le', ← add_assoc, and_comm, mem_Ioc,
  Equiv.coe_addRight, one_zsmul, add_le_add_iff_right] using
  existsUnique_zsmul_near_of_pos ha (c - b)
state_before: α : Type u_1
inst✝¹ : LinearOrderedAddCommGroup α
inst✝ : Archimedean α
a : α
ha : 0 < a
b c : α
⊢ ∃! x, b + ↑(Equiv.addRight 1) x • a ∈ Ioc c (c + a)
Theorem: Algebra.isAlgebraic_trans
File: Mathlib/RingTheory/Algebraic.lean

tactic: simp only [IsAlgebraic, isAlgebraic_iff_isIntegral] at L_alg A_alg⊢
state_before: K : Type u_1
L : Type u_2
R : Type ?u.254369
S : Type ?u.254372
A : Type u_3
inst✝¹² : Field K
inst✝¹¹ : Field L
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
inst✝⁸ : CommRing A
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra L A
inst✝⁵ : Algebra K A
inst✝⁴ : IsScalarTower K L A
inst✝³ : Algebra R S
inst✝² : Algebra S A
inst✝¹ : Algebra R A
inst✝ : IsScalarTower R S A
L_alg : IsAlgebraic K L
A_alg : IsAlgebraic L A
⊢ IsAlgebraic K A

tactic: exact isIntegral_trans L_alg A_alg
state_before: K : Type u_1
L : Type u_2
R : Type ?u.254369
S : Type ?u.254372
A : Type u_3
inst✝¹² : Field K
inst✝¹¹ : Field L
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
inst✝⁸ : CommRing A
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra L A
inst✝⁵ : Algebra K A
inst✝⁴ : IsScalarTower K L A
inst✝³ : Algebra R S
inst✝² : Algebra S A
inst✝¹ : Algebra R A
inst✝ : IsScalarTower R S A
L_alg : ∀ (x : L), IsIntegral K x
A_alg : ∀ (x : A), IsIntegral L x
⊢ ∀ (x : A), IsIntegral K x
Theorem: mul_singleton_mem_nhds_of_nhds_one
File: Mathlib/Topology/Algebra/Group/Basic.lean

tactic: simpa only [one_mul] using mul_singleton_mem_nhds a h
state_before: α : Type u
β : Type v
G : Type w
H : Type x
inst✝² : TopologicalSpace α
inst✝¹ : Group α
inst✝ : ContinuousConstSMul αᵐᵒᵖ α
s t : Set α
a : α
h : s ∈ 𝓝 1
⊢ s * {a} ∈ 𝓝 a
Theorem: MeasureTheory.FiniteMeasure.testAgainstNN_add
File: Mathlib/MeasureTheory/Measure/FiniteMeasure.lean

tactic: simp only [← ENNReal.coe_eq_coe, BoundedContinuousFunction.coe_add, ENNReal.coe_add, Pi.add_apply,
  testAgainstNN_coe_eq]
state_before: Ω : Type u_1
inst✝⁶ : MeasurableSpace Ω
R : Type ?u.70395
inst✝⁵ : SMul R ℝ≥0
inst✝⁴ : SMul R ℝ≥0∞
inst✝³ : IsScalarTower R ℝ≥0 ℝ≥0∞
inst✝² : IsScalarTower R ℝ≥0∞ ℝ≥0∞
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
μ : FiniteMeasure Ω
f₁ f₂ : Ω →ᵇ ℝ≥0
⊢ testAgainstNN μ (f₁ + f₂) = testAgainstNN μ f₁ + testAgainstNN μ f₂

tactic: exact lintegral_add_left (BoundedContinuousFunction.NNReal.coe_ennreal_comp_measurable _) _
state_before: Ω : Type u_1
inst✝⁶ : MeasurableSpace Ω
R : Type ?u.70395
inst✝⁵ : SMul R ℝ≥0
inst✝⁴ : SMul R ℝ≥0∞
inst✝³ : IsScalarTower R ℝ≥0 ℝ≥0∞
inst✝² : IsScalarTower R ℝ≥0∞ ℝ≥0∞
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
μ : FiniteMeasure Ω
f₁ f₂ : Ω →ᵇ ℝ≥0
⊢ (∫⁻ (ω : Ω), ↑(↑f₁ ω) + ↑(↑f₂ ω) ∂↑μ) = (∫⁻ (ω : Ω), ↑(↑f₁ ω) ∂↑μ) + ∫⁻ (ω : Ω), ↑(↑f₂ ω) ∂↑μ
Theorem: Function.Injective.invOfMemRange_surjective
File: Mathlib/Data/Fintype/Basic.lean

tactic: simp
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.62835
inst✝¹ : Fintype α
inst✝ : DecidableEq β
f : α → β
hf : Injective f
a : α
⊢ invOfMemRange hf { val := f a, property := (_ : f a ∈ Set.range f) } = a
Theorem: Flow.ext
File: Mathlib/Dynamics/Flow.lean

tactic: congr
state_before: τ : Type u_1
inst✝³ : AddMonoid τ
inst✝² : TopologicalSpace τ
inst✝¹ : ContinuousAdd τ
α : Type u_2
inst✝ : TopologicalSpace α
ϕ : Flow τ α
f₁ : τ → α → α
cont'✝¹ : Continuous (uncurry f₁)
map_add'✝¹ : ∀ (t₁ t₂ : τ) (x : α), f₁ (t₁ + t₂) x = f₁ t₁ (f₁ t₂ x)
map_zero'✝¹ : ∀ (x : α), f₁ 0 x = x
f₂ : τ → α → α
cont'✝ : Continuous (uncurry f₂)
map_add'✝ : ∀ (t₁ t₂ : τ) (x : α), f₂ (t₁ + t₂) x = f₂ t₁ (f₂ t₂ x)
map_zero'✝ : ∀ (x : α), f₂ 0 x = x
h :
  ∀ (t : τ) (x : α),
    toFun { toFun := f₁, cont' := cont'✝¹, map_add' := map_add'✝¹, map_zero' := map_zero'✝¹ } t x =
      toFun { toFun := f₂, cont' := cont'✝, map_add' := map_add'✝, map_zero' := map_zero'✝ } t x
⊢ { toFun := f₁, cont' := cont'✝¹, map_add' := map_add'✝¹, map_zero' := map_zero'✝¹ } =
    { toFun := f₂, cont' := cont'✝, map_add' := map_add'✝, map_zero' := map_zero'✝ }

tactic: funext
state_before: case e_toFun
τ : Type u_1
inst✝³ : AddMonoid τ
inst✝² : TopologicalSpace τ
inst✝¹ : ContinuousAdd τ
α : Type u_2
inst✝ : TopologicalSpace α
ϕ : Flow τ α
f₁ : τ → α → α
cont'✝¹ : Continuous (uncurry f₁)
map_add'✝¹ : ∀ (t₁ t₂ : τ) (x : α), f₁ (t₁ + t₂) x = f₁ t₁ (f₁ t₂ x)
map_zero'✝¹ : ∀ (x : α), f₁ 0 x = x
f₂ : τ → α → α
cont'✝ : Continuous (uncurry f₂)
map_add'✝ : ∀ (t₁ t₂ : τ) (x : α), f₂ (t₁ + t₂) x = f₂ t₁ (f₂ t₂ x)
map_zero'✝ : ∀ (x : α), f₂ 0 x = x
h :
  ∀ (t : τ) (x : α),
    toFun { toFun := f₁, cont' := cont'✝¹, map_add' := map_add'✝¹, map_zero' := map_zero'✝¹ } t x =
      toFun { toFun := f₂, cont' := cont'✝, map_add' := map_add'✝, map_zero' := map_zero'✝ } t x
⊢ f₁ = f₂

tactic: exact h _ _
state_before: case e_toFun.h.h
τ : Type u_1
inst✝³ : AddMonoid τ
inst✝² : TopologicalSpace τ
inst✝¹ : ContinuousAdd τ
α : Type u_2
inst✝ : TopologicalSpace α
ϕ : Flow τ α
f₁ : τ → α → α
cont'✝¹ : Continuous (uncurry f₁)
map_add'✝¹ : ∀ (t₁ t₂ : τ) (x : α), f₁ (t₁ + t₂) x = f₁ t₁ (f₁ t₂ x)
map_zero'✝¹ : ∀ (x : α), f₁ 0 x = x
f₂ : τ → α → α
cont'✝ : Continuous (uncurry f₂)
map_add'✝ : ∀ (t₁ t₂ : τ) (x : α), f₂ (t₁ + t₂) x = f₂ t₁ (f₂ t₂ x)
map_zero'✝ : ∀ (x : α), f₂ 0 x = x
h :
  ∀ (t : τ) (x : α),
    toFun { toFun := f₁, cont' := cont'✝¹, map_add' := map_add'✝¹, map_zero' := map_zero'✝¹ } t x =
      toFun { toFun := f₂, cont' := cont'✝, map_add' := map_add'✝, map_zero' := map_zero'✝ } t x
x✝¹ : τ
x✝ : α
⊢ f₁ x✝¹ x✝ = f₂ x✝¹ x✝
Theorem: CategoryTheory.MonoidalCategory.id_tensor_comp_tensor_id
File: Mathlib/CategoryTheory/Monoidal/Category.lean

tactic: rw [← tensor_comp]
state_before: C✝ : Type u
𝒞 : Category C✝
inst✝² : MonoidalCategory C✝
C : Type u
inst✝¹ : Category C
inst✝ : MonoidalCategory C
U V W X Y Z : C
f : W ⟶ X
g : Y ⟶ Z
⊢ (𝟙 Y ⊗ f) ≫ (g ⊗ 𝟙 X) = g ⊗ f

tactic: simp
state_before: C✝ : Type u
𝒞 : Category C✝
inst✝² : MonoidalCategory C✝
C : Type u
inst✝¹ : Category C
inst✝ : MonoidalCategory C
U V W X Y Z : C
f : W ⟶ X
g : Y ⟶ Z
⊢ 𝟙 Y ≫ g ⊗ f ≫ 𝟙 X = g ⊗ f
Theorem: MeasureTheory.average_eq_integral
File: Mathlib/MeasureTheory/Integral/Average.lean

tactic: rw [average, measure_univ, inv_one, one_smul]
state_before: α : Type u_1
E : Type u_2
F : Type ?u.188331
m0 : MeasurableSpace α
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : CompleteSpace E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
inst✝¹ : CompleteSpace F
μ : Measure α
s : Set E
inst✝ : IsProbabilityMeasure μ
f : α → E
⊢ (⨍ (x : α), f x ∂μ) = ∫ (x : α), f x ∂μ
Theorem: MeasureTheory.Measure.tprod_tprod
File: Mathlib/MeasureTheory/Constructions/Pi.lean

tactic: induction' l with i l ih
state_before: ι : Type ?u.2388864
ι' : Type ?u.2388867
α : ι → Type ?u.2388872
inst✝³ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝² : (i : ι) → MeasurableSpace (α i)
μ✝ : (i : ι) → Measure (α i)
δ : Type u_1
π : δ → Type u_2
inst✝¹ : (x : δ) → MeasurableSpace (π x)
l : List δ
μ : (i : δ) → Measure (π i)
inst✝ : ∀ (i : δ), SigmaFinite (μ i)
s : (i : δ) → Set (π i)
⊢ ↑↑(Measure.tprod l μ) (Set.tprod l s) = List.prod (List.map (fun i => ↑↑(μ i) (s i)) l)

tactic: rw [tprod_cons, Set.tprod, prod_prod, map_cons, prod_cons, ih]
state_before: case cons
ι : Type ?u.2388864
ι' : Type ?u.2388867
α : ι → Type ?u.2388872
inst✝³ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝² : (i : ι) → MeasurableSpace (α i)
μ✝ : (i : ι) → Measure (α i)
δ : Type u_1
π : δ → Type u_2
inst✝¹ : (x : δ) → MeasurableSpace (π x)
μ : (i : δ) → Measure (π i)
inst✝ : ∀ (i : δ), SigmaFinite (μ i)
s : (i : δ) → Set (π i)
i : δ
l : List δ
ih : ↑↑(Measure.tprod l μ) (Set.tprod l s) = List.prod (List.map (fun i => ↑↑(μ i) (s i)) l)
⊢ ↑↑(Measure.tprod (i :: l) μ) (Set.tprod (i :: l) s) = List.prod (List.map (fun i => ↑↑(μ i) (s i)) (i :: l))

tactic: simp
state_before: case nil
ι : Type ?u.2388864
ι' : Type ?u.2388867
α : ι → Type ?u.2388872
inst✝³ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝² : (i : ι) → MeasurableSpace (α i)
μ✝ : (i : ι) → Measure (α i)
δ : Type u_1
π : δ → Type u_2
inst✝¹ : (x : δ) → MeasurableSpace (π x)
μ : (i : δ) → Measure (π i)
inst✝ : ∀ (i : δ), SigmaFinite (μ i)
s : (i : δ) → Set (π i)
⊢ ↑↑(Measure.tprod [] μ) (Set.tprod [] s) = List.prod (List.map (fun i => ↑↑(μ i) (s i)) [])
Theorem: interval_average_eq
File: Mathlib/MeasureTheory/Integral/IntervalAverage.lean

tactic: cases' le_or_lt a b with h h
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f : ℝ → E
a b : ℝ
⊢ (⨍ (x : ℝ) in Ι a b, f x) = (b - a)⁻¹ • ∫ (x : ℝ) in a..b, f x

tactic: rw [set_average_eq, uIoc_of_le h, Real.volume_Ioc, intervalIntegral.integral_of_le h,
  ENNReal.toReal_ofReal (sub_nonneg.2 h)]
state_before: case inl
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f : ℝ → E
a b : ℝ
h : a ≤ b
⊢ (⨍ (x : ℝ) in Ι a b, f x) = (b - a)⁻¹ • ∫ (x : ℝ) in a..b, f x

tactic: rw [set_average_eq, uIoc_of_lt h, Real.volume_Ioc, intervalIntegral.integral_of_ge h.le,
  ENNReal.toReal_ofReal (sub_nonneg.2 h.le), smul_neg, ← neg_smul, ← inv_neg, neg_sub]
state_before: case inr
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f : ℝ → E
a b : ℝ
h : b < a
⊢ (⨍ (x : ℝ) in Ι a b, f x) = (b - a)⁻¹ • ∫ (x : ℝ) in a..b, f x
Theorem: Int.negOfNat_eq_subNatNat_zero
File: Std/Data/Int/Lemmas.lean

tactic: cases n <;> rfl
state_before: n : Nat
⊢ negOfNat n = subNatNat 0 n
Theorem: comp_mul_right
File: Mathlib/Algebra/Group/Basic.lean

tactic: ext z
state_before: α : Type u_1
β : Type ?u.797
G : Type ?u.800
inst✝ : Semigroup α
x y : α
⊢ ((fun x_1 => x_1 * x) ∘ fun x => x * y) = fun x_1 => x_1 * (y * x)

tactic: simp [mul_assoc]
state_before: case h
α : Type u_1
β : Type ?u.797
G : Type ?u.800
inst✝ : Semigroup α
x y z : α
⊢ ((fun x_1 => x_1 * x) ∘ fun x => x * y) z = z * (y * x)
Theorem: LipschitzWith.of_le_add_mul
File: Mathlib/Topology/MetricSpace/Lipschitz.lean

tactic: simpa only [Real.toNNReal_coe] using LipschitzWith.of_le_add_mul' K h
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝² : PseudoMetricSpace α
inst✝¹ : PseudoMetricSpace β
inst✝ : PseudoMetricSpace γ
K✝ : ℝ≥0
f✝ : α → β
x y : α
r : ℝ
f : α → ℝ
K : ℝ≥0
h : ∀ (x y : α), f x ≤ f y + ↑K * dist x y
⊢ LipschitzWith K f
Theorem: FractionalIdeal.mul_mem_mul
File: Mathlib/RingTheory/FractionalIdeal.lean

tactic: simp only [mul_def]
state_before: R : Type u_1
inst✝² : CommRing R
S : Submonoid R
P : Type u_2
inst✝¹ : CommRing P
inst✝ : Algebra R P
loc : IsLocalization S P
I J : FractionalIdeal S P
i j : P
hi : i ∈ I
hj : j ∈ J
⊢ i * j ∈ I * J

tactic: exact Submodule.mul_mem_mul hi hj
state_before: R : Type u_1
inst✝² : CommRing R
S : Submonoid R
P : Type u_2
inst✝¹ : CommRing P
inst✝ : Algebra R P
loc : IsLocalization S P
I J : FractionalIdeal S P
i j : P
hi : i ∈ I
hj : j ∈ J
⊢ i * j ∈ { val := ↑I * ↑J, property := (_ : IsFractional S (↑I * ↑J)) }
Theorem: Finsupp.mem_splitSupport_iff_nonzero
File: Mathlib/Data/Finsupp/Basic.lean

tactic: rw [splitSupport, @mem_image _ _ (Classical.decEq _), Ne.def, ← support_eq_empty, ← Ne.def, ←
  Finset.nonempty_iff_ne_empty, split, comapDomain, Finset.Nonempty]
state_before: α : Type ?u.738687
β : Type ?u.738690
γ : Type ?u.738693
ι : Type u_1
M : Type u_2
M' : Type ?u.738702
N : Type ?u.738705
P : Type ?u.738708
G : Type ?u.738711
H : Type ?u.738714
R : Type ?u.738717
S : Type ?u.738720
αs : ι → Type u_3
inst✝ : Zero M
l : (i : ι) × αs i →₀ M
i : ι
⊢ i ∈ splitSupport l ↔ split l i ≠ 0

tactic: simp only [exists_prop, Finset.mem_preimage, exists_and_right, exists_eq_right, mem_support_iff,
  Sigma.exists, Ne.def]
state_before: α : Type ?u.738687
β : Type ?u.738690
γ : Type ?u.738693
ι : Type u_1
M : Type u_2
M' : Type ?u.738702
N : Type ?u.738705
P : Type ?u.738708
G : Type ?u.738711
H : Type ?u.738714
R : Type ?u.738717
S : Type ?u.738720
αs : ι → Type u_3
inst✝ : Zero M
l : (i : ι) × αs i →₀ M
i : ι
⊢ (∃ a, a ∈ l.support ∧ a.fst = i) ↔
    ∃ x,
      x ∈
        {
            support :=
              preimage l.support (Sigma.mk i)
                (_ :
                  ∀ (x : αs i),
                    x ∈ Sigma.mk i ⁻¹' ↑l.support →
                      ∀ (x_2 : αs i),
                        x_2 ∈ Sigma.mk i ⁻¹' ↑l.support → { fst := i, snd := x } = { fst := i, snd := x_2 } → x = x_2),
            toFun := fun a => ↑l { fst := i, snd := a },
            mem_support_toFun :=
              (_ :
                ∀ (a : αs i),
                  a ∈
                      preimage l.support (Sigma.mk i)
                        (_ :
                          ∀ (x : αs i),
                            x ∈ Sigma.mk i ⁻¹' ↑l.support →
                              ∀ (x_2 : αs i),
                                x_2 ∈ Sigma.mk i ⁻¹' ↑l.support →
                                  { fst := i, snd := x } = { fst := i, snd := x_2 } → x = x_2) ↔
                    (fun a => ↑l { fst := i, snd := a }) a ≠ 0) }.support
Theorem: Subgroup.normalClosure_le_normal
File: Mathlib/GroupTheory/Subgroup/Basic.lean

tactic: intro a w
state_before: G : Type u_1
G' : Type ?u.441144
inst✝³ : Group G
inst✝² : Group G'
A : Type ?u.441153
inst✝¹ : AddGroup A
s : Set G
N : Subgroup G
inst✝ : Normal N
h : s ⊆ ↑N
⊢ normalClosure s ≤ N

tactic: refine' closure_induction w (fun x hx => _) _ (fun x y ihx ihy => _) fun x ihx => _
state_before: G : Type u_1
G' : Type ?u.441144
inst✝³ : Group G
inst✝² : Group G'
A : Type ?u.441153
inst✝¹ : AddGroup A
s : Set G
N : Subgroup G
inst✝ : Normal N
h : s ⊆ ↑N
a : G
w : a ∈ normalClosure s
⊢ a ∈ N

tactic: exact conjugatesOfSet_subset h hx
state_before: case refine'_1
G : Type u_1
G' : Type ?u.441144
inst✝³ : Group G
inst✝² : Group G'
A : Type ?u.441153
inst✝¹ : AddGroup A
s : Set G
N : Subgroup G
inst✝ : Normal N
h : s ⊆ ↑N
a : G
w : a ∈ normalClosure s
x : G
hx : x ∈ conjugatesOfSet s
⊢ x ∈ N

tactic: exact one_mem _
state_before: case refine'_2
G : Type u_1
G' : Type ?u.441144
inst✝³ : Group G
inst✝² : Group G'
A : Type ?u.441153
inst✝¹ : AddGroup A
s : Set G
N : Subgroup G
inst✝ : Normal N
h : s ⊆ ↑N
a : G
w : a ∈ normalClosure s
⊢ 1 ∈ N

tactic: exact mul_mem ihx ihy
state_before: case refine'_3
G : Type u_1
G' : Type ?u.441144
inst✝³ : Group G
inst✝² : Group G'
A : Type ?u.441153
inst✝¹ : AddGroup A
s : Set G
N : Subgroup G
inst✝ : Normal N
h : s ⊆ ↑N
a : G
w : a ∈ normalClosure s
x y : G
ihx : x ∈ N
ihy : y ∈ N
⊢ x * y ∈ N

tactic: exact inv_mem ihx
state_before: case refine'_4
G : Type u_1
G' : Type ?u.441144
inst✝³ : Group G
inst✝² : Group G'
A : Type ?u.441153
inst✝¹ : AddGroup A
s : Set G
N : Subgroup G
inst✝ : Normal N
h : s ⊆ ↑N
a : G
w : a ∈ normalClosure s
x : G
ihx : x ∈ N
⊢ x⁻¹ ∈ N
Theorem: Rat.substr_num_den'
File: Mathlib/Data/Rat/Lemmas.lean

tactic: rw [sub_eq_add_neg, sub_eq_add_neg, ← neg_mul, ← num_neg_eq_neg_num, ← den_neg_eq_den r,
  add_num_den' q (-r)]
state_before: q r : ℚ
⊢ (q - r).num * ↑q.den * ↑r.den = (q.num * ↑r.den - r.num * ↑q.den) * ↑(q - r).den
Theorem: Hyperreal.IsSt.isSt_st
File: Mathlib/Data/Real/Hyperreal.lean

tactic: rwa [hxr.st_eq]
state_before: x : ℝ*
r : ℝ
hxr : IsSt x r
⊢ IsSt x (st x)
Theorem: Left.mul_eq_mul_iff_eq_and_eq
File: Mathlib/Algebra/Order/Monoid/Lemmas.lean

tactic: rcases hac.eq_or_lt with (rfl | hac)
state_before: α : Type u_1
β : Type ?u.62108
inst✝⁵ : Semigroup α
inst✝⁴ : PartialOrder α
inst✝³ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
inst✝² : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝¹ : ContravariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : ContravariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b c d : α
hac : a ≤ c
hbd : b ≤ d
h : a * b = c * d
⊢ a = c ∧ b = d

tactic: rcases eq_or_lt_of_le hbd with (rfl | hbd)
state_before: case inr
α : Type u_1
β : Type ?u.62108
inst✝⁵ : Semigroup α
inst✝⁴ : PartialOrder α
inst✝³ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
inst✝² : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝¹ : ContravariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : ContravariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b c d : α
hac✝ : a ≤ c
hbd : b ≤ d
h : a * b = c * d
hac : a < c
⊢ a = c ∧ b = d

tactic: exact ((Left.mul_lt_mul hac hbd).ne h).elim
state_before: case inr.inr
α : Type u_1
β : Type ?u.62108
inst✝⁵ : Semigroup α
inst✝⁴ : PartialOrder α
inst✝³ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
inst✝² : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝¹ : ContravariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : ContravariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b c d : α
hac✝ : a ≤ c
hbd✝ : b ≤ d
h : a * b = c * d
hac : a < c
hbd : b < d
⊢ a = c ∧ b = d

tactic: exact ⟨rfl, mul_left_cancel'' h⟩
state_before: case inl
α : Type u_1
β : Type ?u.62108
inst✝⁵ : Semigroup α
inst✝⁴ : PartialOrder α
inst✝³ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
inst✝² : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝¹ : ContravariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : ContravariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b d : α
hbd : b ≤ d
hac : a ≤ a
h : a * b = a * d
⊢ a = a ∧ b = d

tactic: exact ⟨mul_right_cancel'' h, rfl⟩
state_before: case inr.inl
α : Type u_1
β : Type ?u.62108
inst✝⁵ : Semigroup α
inst✝⁴ : PartialOrder α
inst✝³ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
inst✝² : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝¹ : ContravariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : ContravariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b c : α
hac✝ : a ≤ c
hac : a < c
hbd : b ≤ b
h : a * b = c * b
⊢ a = c ∧ b = b
Theorem: contDiff_euclidean
File: Mathlib/Analysis/InnerProductSpace/Calculus.lean

tactic: rw [← (EuclideanSpace.equiv ι 𝕜).comp_contDiff_iff, contDiff_pi]
state_before: 𝕜 : Type u_1
ι : Type u_3
H : Type u_2
inst✝³ : IsROrC 𝕜
inst✝² : NormedAddCommGroup H
inst✝¹ : NormedSpace 𝕜 H
inst✝ : Fintype ι
f : H → EuclideanSpace 𝕜 ι
f' : H →L[𝕜] EuclideanSpace 𝕜 ι
t : Set H
y : H
n : ℕ∞
⊢ ContDiff 𝕜 n f ↔ ∀ (i : ι), ContDiff 𝕜 n fun x => f x i

tactic: rfl
state_before: 𝕜 : Type u_1
ι : Type u_3
H : Type u_2
inst✝³ : IsROrC 𝕜
inst✝² : NormedAddCommGroup H
inst✝¹ : NormedSpace 𝕜 H
inst✝ : Fintype ι
f : H → EuclideanSpace 𝕜 ι
f' : H →L[𝕜] EuclideanSpace 𝕜 ι
t : Set H
y : H
n : ℕ∞
⊢ (∀ (i : ι), ContDiff 𝕜 n fun x => (↑(EuclideanSpace.equiv ι 𝕜) ∘ f) x i) ↔ ∀ (i : ι), ContDiff 𝕜 n fun x => f x i
Theorem: Int.le_floor_add
File: Mathlib/Algebra/Order/Floor.lean

tactic: rw [le_floor, Int.cast_add]
state_before: F : Type ?u.131188
α : Type u_1
β : Type ?u.131194
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
z : ℤ
a✝ a b : α
⊢ ⌊a⌋ + ⌊b⌋ ≤ ⌊a + b⌋

tactic: exact add_le_add (floor_le _) (floor_le _)
state_before: F : Type ?u.131188
α : Type u_1
β : Type ?u.131194
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
z : ℤ
a✝ a b : α
⊢ ↑⌊a⌋ + ↑⌊b⌋ ≤ a + b
Theorem: Filter.HasBasis.cauchySeq_iff
File: Mathlib/Topology/UniformSpace/Cauchy.lean

tactic: rw [cauchySeq_iff_tendsto, ← prod_atTop_atTop_eq]
state_before: α : Type u
β : Type v
inst✝² : UniformSpace α
γ : Sort u_1
inst✝¹ : Nonempty β
inst✝ : SemilatticeSup β
u : β → α
p : γ → Prop
s : γ → Set (α × α)
h : HasBasis (𝓤 α) p s
⊢ CauchySeq u ↔ ∀ (i : γ), p i → ∃ N, ∀ (m : β), N ≤ m → ∀ (n : β), N ≤ n → (u m, u n) ∈ s i

tactic: refine' (atTop_basis.prod_self.tendsto_iff h).trans _
state_before: α : Type u
β : Type v
inst✝² : UniformSpace α
γ : Sort u_1
inst✝¹ : Nonempty β
inst✝ : SemilatticeSup β
u : β → α
p : γ → Prop
s : γ → Set (α × α)
h : HasBasis (𝓤 α) p s
⊢ Tendsto (Prod.map u u) (atTop ×ˢ atTop) (𝓤 α) ↔
    ∀ (i : γ), p i → ∃ N, ∀ (m : β), N ≤ m → ∀ (n : β), N ≤ n → (u m, u n) ∈ s i

tactic: simp only [exists_prop, true_and_iff, MapsTo, preimage, subset_def, Prod.forall, mem_prod_eq,
  mem_setOf_eq, mem_Ici, and_imp, Prod.map, ge_iff_le, @forall_swap (_ ≤ _) β]
state_before: α : Type u
β : Type v
inst✝² : UniformSpace α
γ : Sort u_1
inst✝¹ : Nonempty β
inst✝ : SemilatticeSup β
u : β → α
p : γ → Prop
s : γ → Set (α × α)
h : HasBasis (𝓤 α) p s
⊢ (∀ (ib : γ), p ib → ∃ ia, True ∧ ∀ (x : β × β), x ∈ Ici ia ×ˢ Ici ia → Prod.map u u x ∈ s ib) ↔
    ∀ (i : γ), p i → ∃ N, ∀ (m : β), N ≤ m → ∀ (n : β), N ≤ n → (u m, u n) ∈ s i
Theorem: MvPolynomial.totalDegree_zero
File: Mathlib/Data/MvPolynomial/Variables.lean

tactic: rw [← C_0]
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type ?u.394806
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝ : CommSemiring R
p q : MvPolynomial σ R
⊢ totalDegree 0 = 0

tactic: exact totalDegree_C (0 : R)
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type ?u.394806
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝ : CommSemiring R
p q : MvPolynomial σ R
⊢ totalDegree (↑C 0) = 0
Theorem: Real.cos_eq_sqrt_one_sub_sin_sq
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

tactic: rw [← abs_cos_eq_sqrt_one_sub_sin_sq, abs_of_nonneg (cos_nonneg_of_mem_Icc ⟨hl, hu⟩)]
state_before: x : ℝ
hl : -(π / 2) ≤ x
hu : x ≤ π / 2
⊢ cos x = sqrt (1 - sin x ^ 2)