1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Submodule.fg_iff_exists_fin_generating_family
File: Mathlib/RingTheory/Finiteness.lean

tactic: rw [fg_def]
state_before: R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
N : Submodule R M
⊢ N.FG ↔ ∃ n s, span R (range s) = N
state_after: R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
N : Submodule R M
⊢ (∃ S, S.Finite ∧ span R S = N) ↔ ∃ n s, span R (range s) = N

tactic: constructor
state_before: R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
N : Submodule R M
⊢ (∃ S, S.Finite ∧ span R S = N) ↔ ∃ n s, span R (range s) = N
state_after: case mp
R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
N : Submodule R M
⊢ (∃ S, S.Finite ∧ span R S = N) → ∃ n s, span R (range s) = N

case mpr
R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
N : Submodule R M
⊢ (∃ n s, span R (range s) = N) → ∃ S, S.Finite ∧ span R S = N

tactic: rintro ⟨S, Sfin, hS⟩
state_before: case mp
R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
N : Submodule R M
⊢ (∃ S, S.Finite ∧ span R S = N) → ∃ n s, span R (range s) = N
state_after: case mp.intro.intro
R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
N : Submodule R M
S : Set M
Sfin : S.Finite
hS : span R S = N
⊢ ∃ n s, span R (range s) = N

tactic: obtain ⟨n, f, rfl⟩ := Sfin.fin_embedding
state_before: case mp.intro.intro
R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
N : Submodule R M
S : Set M
Sfin : S.Finite
hS : span R S = N
⊢ ∃ n s, span R (range s) = N
state_after: case mp.intro.intro.intro.intro
R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
N : Submodule R M
n : ℕ
f : Fin n ↪ M
Sfin : (range ⇑f).Finite
hS : span R (range ⇑f) = N
⊢ ∃ n s, span R (range s) = N

tactic: exact ⟨n, f, hS⟩
state_before: case mp.intro.intro.intro.intro
R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
N : Submodule R M
n : ℕ
f : Fin n ↪ M
Sfin : (range ⇑f).Finite
hS : span R (range ⇑f) = N
⊢ ∃ n s, span R (range s) = N
state_after: no goals

tactic: rintro ⟨n, s, hs⟩
state_before: case mpr
R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
N : Submodule R M
⊢ (∃ n s, span R (range s) = N) → ∃ S, S.Finite ∧ span R S = N
state_after: case mpr.intro.intro
R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
N : Submodule R M
n : ℕ
s : Fin n → M
hs : span R (range s) = N
⊢ ∃ S, S.Finite ∧ span R S = N

tactic: exact ⟨range s, finite_range s, hs⟩
state_before: case mpr.intro.intro
R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
N : Submodule R M
n : ℕ
s : Fin n → M
hs : span R (range s) = N
⊢ ∃ S, S.Finite ∧ span R S = N
state_after: no goals
Theorem: Equiv.Perm.disjoint_iff_disjoint_support
File: Mathlib/GroupTheory/Perm/Support.lean

tactic: simp [disjoint_iff_eq_or_eq, disjoint_iff, disjoint_iff, Finset.ext_iff, not_and_or,
  imp_iff_not_or]
state_before: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f g : Perm α
⊢ f.Disjoint g ↔ _root_.Disjoint f.support g.support
state_after: no goals
Theorem: DirectedOn.disjoint_sSup_right
File: Mathlib/Order/CompactlyGenerated/Basic.lean

tactic: simp_rw [disjoint_iff, h.inf_sSup_eq, iSup_eq_bot]
state_before: ι : Sort u_1
α : Type u_2
inst✝² : CompleteLattice α
f : ι → α
inst✝¹ : CompleteLattice α
inst✝ : IsCompactlyGenerated α
a b : α
s : Set α
h : DirectedOn (fun x x_1 => x ≤ x_1) s
⊢ Disjoint a (sSup s) ↔ ∀ ⦃b : α⦄, b ∈ s → Disjoint a b
state_after: no goals
Theorem: xor_false
File: Mathlib/Logic/Basic.lean

tactic: ext
state_before: a b : Prop
⊢ Xor' False = id
state_after: case h.a
a b x✝ : Prop
⊢ Xor' False x✝ ↔ id x✝

tactic: simp [Xor']
state_before: case h.a
a b x✝ : Prop
⊢ Xor' False x✝ ↔ id x✝
state_after: no goals
Theorem: nhds_basis_abs_sub_lt
File: Mathlib/Topology/Order/LeftRightNhds.lean

tactic: simp only [nhds_eq_iInf_abs_sub, abs_sub_comm (a := a)]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrderedAddCommGroup α
inst✝¹ : OrderTopology α
l : Filter β
f g : β → α
inst✝ : NoMaxOrder α
a : α
⊢ (𝓝 a).HasBasis (fun ε => 0 < ε) fun ε => {b | |b - a| < ε}
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrderedAddCommGroup α
inst✝¹ : OrderTopology α
l : Filter β
f g : β → α
inst✝ : NoMaxOrder α
a : α
⊢ (⨅ r, ⨅ (_ : r > 0), 𝓟 {b | |b - a| < r}).HasBasis (fun ε => 0 < ε) fun ε => {b | |b - a| < ε}

tactic: refine hasBasis_biInf_principal' (fun x hx y hy => ?_) (exists_gt _)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrderedAddCommGroup α
inst✝¹ : OrderTopology α
l : Filter β
f g : β → α
inst✝ : NoMaxOrder α
a : α
⊢ (⨅ r, ⨅ (_ : r > 0), 𝓟 {b | |b - a| < r}).HasBasis (fun ε => 0 < ε) fun ε => {b | |b - a| < ε}
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrderedAddCommGroup α
inst✝¹ : OrderTopology α
l : Filter β
f g : β → α
inst✝ : NoMaxOrder α
a x : α
hx : x > 0
y : α
hy : y > 0
⊢ ∃ k > 0, {b | |b - a| < k} ⊆ {b | |b - a| < x} ∧ {b | |b - a| < k} ⊆ {b | |b - a| < y}

tactic: exact ⟨min x y, lt_min hx hy, fun _ hz => hz.trans_le (min_le_left _ _),
  fun _ hz => hz.trans_le (min_le_right _ _)⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrderedAddCommGroup α
inst✝¹ : OrderTopology α
l : Filter β
f g : β → α
inst✝ : NoMaxOrder α
a x : α
hx : x > 0
y : α
hy : y > 0
⊢ ∃ k > 0, {b | |b - a| < k} ⊆ {b | |b - a| < x} ∧ {b | |b - a| < k} ⊆ {b | |b - a| < y}
state_after: no goals
Theorem: PresheafOfModules.isSheaf_of_isLimit
File: Mathlib/Algebra/Category/ModuleCat/Sheaf/Limits.lean

tactic: let G : D ⥤ Sheaf J AddCommGrp.{v} :=
  { obj := fun j => ⟨(F.obj j).presheaf, hF j⟩
    map := fun φ => ⟨(PresheafOfModules.toPresheaf R).map (F.map φ)⟩ }
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
J : GrothendieckTopology C
D : Type u₂
inst✝² : Category.{v₂, u₂} D
R : Cᵒᵖ ⥤ RingCat
F : D ⥤ PresheafOfModules R
inst✝¹ : ∀ (X : Cᵒᵖ), Small.{v, max u₂ v} ↑((F ⋙ evaluation R X) ⋙ forget (ModuleCat ↑(R.obj X))).sections
c : Cone F
hc : IsLimit c
hF : ∀ (j : D), Presheaf.IsSheaf J (F.obj j).presheaf
inst✝ : HasLimitsOfShape D AddCommGrp
⊢ Presheaf.IsSheaf J c.pt.presheaf
state_after: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
J : GrothendieckTopology C
D : Type u₂
inst✝² : Category.{v₂, u₂} D
R : Cᵒᵖ ⥤ RingCat
F : D ⥤ PresheafOfModules R
inst✝¹ : ∀ (X : Cᵒᵖ), Small.{v, max u₂ v} ↑((F ⋙ evaluation R X) ⋙ forget (ModuleCat ↑(R.obj X))).sections
c : Cone F
hc : IsLimit c
hF : ∀ (j : D), Presheaf.IsSheaf J (F.obj j).presheaf
inst✝ : HasLimitsOfShape D AddCommGrp
G : D ⥤ Sheaf J AddCommGrp :=
  { obj := fun j => { val := (F.obj j).presheaf, cond := ⋯ },
    map := fun {X Y} φ => { val := (toPresheaf R).map (F.map φ) }, map_id := ⋯, map_comp := ⋯ }
⊢ Presheaf.IsSheaf J c.pt.presheaf

tactic: exact Sheaf.isSheaf_of_isLimit G _ (isLimitOfPreserves (toPresheaf R) hc)
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
J : GrothendieckTopology C
D : Type u₂
inst✝² : Category.{v₂, u₂} D
R : Cᵒᵖ ⥤ RingCat
F : D ⥤ PresheafOfModules R
inst✝¹ : ∀ (X : Cᵒᵖ), Small.{v, max u₂ v} ↑((F ⋙ evaluation R X) ⋙ forget (ModuleCat ↑(R.obj X))).sections
c : Cone F
hc : IsLimit c
hF : ∀ (j : D), Presheaf.IsSheaf J (F.obj j).presheaf
inst✝ : HasLimitsOfShape D AddCommGrp
G : D ⥤ Sheaf J AddCommGrp :=
  { obj := fun j => { val := (F.obj j).presheaf, cond := ⋯ },
    map := fun {X Y} φ => { val := (toPresheaf R).map (F.map φ) }, map_id := ⋯, map_comp := ⋯ }
⊢ Presheaf.IsSheaf J c.pt.presheaf
state_after: no goals
Theorem: Real.tendsto_cos_pi_div_two
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

tactic: apply tendsto_nhdsWithin_of_tendsto_nhds_of_eventually_within
state_before: ⊢ Tendsto cos (𝓝[<] (π / 2)) (𝓝[>] 0)
state_after: case h1

⊢ Tendsto cos (𝓝[<] (π / 2)) (𝓝 0)

case h2

⊢ ∀ᶠ (x : ℝ) in 𝓝[<] (π / 2), cos x ∈ Ioi 0

tactic: convert continuous_cos.continuousWithinAt.tendsto
state_before: case h1

⊢ Tendsto cos (𝓝[<] (π / 2)) (𝓝 0)
state_after: case h.e'_5.h.e'_3

⊢ 0 = cos (π / 2)

tactic: simp
state_before: case h.e'_5.h.e'_3

⊢ 0 = cos (π / 2)
state_after: no goals

tactic: filter_upwards [Ioo_mem_nhdsWithin_Iio
    (right_mem_Ioc.mpr (neg_lt_self pi_div_two_pos))] with x hx using cos_pos_of_mem_Ioo hx
state_before: case h2

⊢ ∀ᶠ (x : ℝ) in 𝓝[<] (π / 2), cos x ∈ Ioi 0
state_after: no goals
Theorem: AlgebraicGeometry.Scheme.OpenCover.iUnion_range
File: Mathlib/AlgebraicGeometry/Cover/Open.lean

tactic: rw [Set.eq_univ_iff_forall]
state_before: X✝ Y Z : Scheme
𝒰✝ : X✝.OpenCover
f : X✝ ⟶ Z
g : Y ⟶ Z
inst✝ : ∀ (x : 𝒰✝.J), HasPullback (𝒰✝.map x ≫ f) g
X : Scheme
𝒰 : X.OpenCover
⊢ ⋃ i, Set.range ⇑(𝒰.map i).val.base = Set.univ
state_after: X✝ Y Z : Scheme
𝒰✝ : X✝.OpenCover
f : X✝ ⟶ Z
g : Y ⟶ Z
inst✝ : ∀ (x : 𝒰✝.J), HasPullback (𝒰✝.map x ≫ f) g
X : Scheme
𝒰 : X.OpenCover
⊢ ∀ (x : ↑↑X.toPresheafedSpace), x ∈ ⋃ i, Set.range ⇑(𝒰.map i).val.base

tactic: intro x
state_before: X✝ Y Z : Scheme
𝒰✝ : X✝.OpenCover
f : X✝ ⟶ Z
g : Y ⟶ Z
inst✝ : ∀ (x : 𝒰✝.J), HasPullback (𝒰✝.map x ≫ f) g
X : Scheme
𝒰 : X.OpenCover
⊢ ∀ (x : ↑↑X.toPresheafedSpace), x ∈ ⋃ i, Set.range ⇑(𝒰.map i).val.base
state_after: X✝ Y Z : Scheme
𝒰✝ : X✝.OpenCover
f : X✝ ⟶ Z
g : Y ⟶ Z
inst✝ : ∀ (x : 𝒰✝.J), HasPullback (𝒰✝.map x ≫ f) g
X : Scheme
𝒰 : X.OpenCover
x : ↑↑X.toPresheafedSpace
⊢ x ∈ ⋃ i, Set.range ⇑(𝒰.map i).val.base

tactic: rw [Set.mem_iUnion]
state_before: X✝ Y Z : Scheme
𝒰✝ : X✝.OpenCover
f : X✝ ⟶ Z
g : Y ⟶ Z
inst✝ : ∀ (x : 𝒰✝.J), HasPullback (𝒰✝.map x ≫ f) g
X : Scheme
𝒰 : X.OpenCover
x : ↑↑X.toPresheafedSpace
⊢ x ∈ ⋃ i, Set.range ⇑(𝒰.map i).val.base
state_after: X✝ Y Z : Scheme
𝒰✝ : X✝.OpenCover
f : X✝ ⟶ Z
g : Y ⟶ Z
inst✝ : ∀ (x : 𝒰✝.J), HasPullback (𝒰✝.map x ≫ f) g
X : Scheme
𝒰 : X.OpenCover
x : ↑↑X.toPresheafedSpace
⊢ ∃ i, x ∈ Set.range ⇑(𝒰.map i).val.base

tactic: exact ⟨𝒰.f x, 𝒰.covers x⟩
state_before: X✝ Y Z : Scheme
𝒰✝ : X✝.OpenCover
f : X✝ ⟶ Z
g : Y ⟶ Z
inst✝ : ∀ (x : 𝒰✝.J), HasPullback (𝒰✝.map x ≫ f) g
X : Scheme
𝒰 : X.OpenCover
x : ↑↑X.toPresheafedSpace
⊢ ∃ i, x ∈ Set.range ⇑(𝒰.map i).val.base
state_after: no goals
Theorem: Turing.PartrecToTM2.K'.elim_update_stack
File: Mathlib/Computability/TMToPartrec.lean

tactic: funext x
state_before: a b c d d' : List Γ'
⊢ update (elim a b c d) stack d' = elim a b c d'
state_after: case h
a b c d d' : List Γ'
x : K'
⊢ update (elim a b c d) stack d' x = elim a b c d' x

tactic: cases x <;> rfl
state_before: case h
a b c d d' : List Γ'
x : K'
⊢ update (elim a b c d) stack d' x = elim a b c d' x
state_after: no goals
Theorem: norm_indicator_le_of_subset
File: Mathlib/Analysis/NormedSpace/IndicatorFunction.lean

tactic: simp only [norm_indicator_eq_indicator_norm]
state_before: α : Type u_1
E : Type u_2
inst✝ : SeminormedAddCommGroup E
s t : Set α
f✝ : α → E
a✝ : α
h : s ⊆ t
f : α → E
a : α
⊢ ‖s.indicator f a‖ ≤ ‖t.indicator f a‖
state_after: α : Type u_1
E : Type u_2
inst✝ : SeminormedAddCommGroup E
s t : Set α
f✝ : α → E
a✝ : α
h : s ⊆ t
f : α → E
a : α
⊢ s.indicator (fun a => ‖f a‖) a ≤ t.indicator (fun a => ‖f a‖) a

tactic: exact indicator_le_indicator_of_subset ‹_› (fun _ => norm_nonneg _) _
state_before: α : Type u_1
E : Type u_2
inst✝ : SeminormedAddCommGroup E
s t : Set α
f✝ : α → E
a✝ : α
h : s ⊆ t
f : α → E
a : α
⊢ s.indicator (fun a => ‖f a‖) a ≤ t.indicator (fun a => ‖f a‖) a
state_after: no goals
Theorem: LocalRing.le_maximalIdeal
File: Mathlib/RingTheory/Ideal/LocalRing.lean

tactic: rcases Ideal.exists_le_maximal J hJ with ⟨M, hM1, hM2⟩
state_before: R : Type u
S : Type v
T : Type w
K : Type u'
inst✝¹ : CommSemiring R
inst✝ : LocalRing R
J : Ideal R
hJ : J ≠ ⊤
⊢ J ≤ maximalIdeal R
state_after: case intro.intro
R : Type u
S : Type v
T : Type w
K : Type u'
inst✝¹ : CommSemiring R
inst✝ : LocalRing R
J : Ideal R
hJ : J ≠ ⊤
M : Ideal R
hM1 : M.IsMaximal
hM2 : J ≤ M
⊢ J ≤ maximalIdeal R

tactic: rwa [← eq_maximalIdeal hM1]
state_before: case intro.intro
R : Type u
S : Type v
T : Type w
K : Type u'
inst✝¹ : CommSemiring R
inst✝ : LocalRing R
J : Ideal R
hJ : J ≠ ⊤
M : Ideal R
hM1 : M.IsMaximal
hM2 : J ≤ M
⊢ J ≤ maximalIdeal R
state_after: no goals
Theorem: LipschitzWith.mul_edist_le
File: Mathlib/Topology/EMetricSpace/Lipschitz.lean

tactic: rw [mul_comm, ← div_eq_mul_inv]
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝² : PseudoEMetricSpace α
inst✝¹ : PseudoEMetricSpace β
inst✝ : PseudoEMetricSpace γ
K : ℝ≥0
f : α → β
x✝ y✝ : α
r : ℝ≥0∞
h : LipschitzWith K f
x y : α
⊢ (↑K)⁻¹ * edist (f x) (f y) ≤ edist x y
state_after: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝² : PseudoEMetricSpace α
inst✝¹ : PseudoEMetricSpace β
inst✝ : PseudoEMetricSpace γ
K : ℝ≥0
f : α → β
x✝ y✝ : α
r : ℝ≥0∞
h : LipschitzWith K f
x y : α
⊢ edist (f x) (f y) / ↑K ≤ edist x y

tactic: exact ENNReal.div_le_of_le_mul' (h x y)
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝² : PseudoEMetricSpace α
inst✝¹ : PseudoEMetricSpace β
inst✝ : PseudoEMetricSpace γ
K : ℝ≥0
f : α → β
x✝ y✝ : α
r : ℝ≥0∞
h : LipschitzWith K f
x y : α
⊢ edist (f x) (f y) / ↑K ≤ edist x y
state_after: no goals
Theorem: NNReal.exists_le_hasSum_of_le
File: Mathlib/Topology/Instances/ENNReal.lean

tactic: refine hasSum_le (fun b => ?_) ENNReal.summable.hasSum (ENNReal.hasSum_coe.2 hfr)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f g : β → ℝ≥0
r : ℝ≥0
hgf : ∀ (b : β), g b ≤ f b
hfr : HasSum f r
⊢ ∑' (b : β), ↑(g b) ≤ ↑r
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
f g : β → ℝ≥0
r : ℝ≥0
hgf : ∀ (b : β), g b ≤ f b
hfr : HasSum f r
b : β
⊢ ↑(g b) ≤ ↑(f b)

tactic: exact ENNReal.coe_le_coe.2 (hgf _)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f g : β → ℝ≥0
r : ℝ≥0
hgf : ∀ (b : β), g b ≤ f b
hfr : HasSum f r
b : β
⊢ ↑(g b) ≤ ↑(f b)
state_after: no goals
Theorem: ContinuousLinearMap.adjoint_comp
File: Mathlib/Analysis/InnerProductSpace/Adjoint.lean

tactic: ext v
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁹ : RCLike 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : InnerProductSpace 𝕜 G
inst✝² : CompleteSpace E
inst✝¹ : CompleteSpace G
inst✝ : CompleteSpace F
A : F →L[𝕜] G
B : E →L[𝕜] F
⊢ adjoint (A.comp B) = (adjoint B).comp (adjoint A)
state_after: case h
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁹ : RCLike 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : InnerProductSpace 𝕜 G
inst✝² : CompleteSpace E
inst✝¹ : CompleteSpace G
inst✝ : CompleteSpace F
A : F →L[𝕜] G
B : E →L[𝕜] F
v : G
⊢ (adjoint (A.comp B)) v = ((adjoint B).comp (adjoint A)) v

tactic: refine ext_inner_left 𝕜 fun w => ?_
state_before: case h
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁹ : RCLike 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : InnerProductSpace 𝕜 G
inst✝² : CompleteSpace E
inst✝¹ : CompleteSpace G
inst✝ : CompleteSpace F
A : F →L[𝕜] G
B : E →L[𝕜] F
v : G
⊢ (adjoint (A.comp B)) v = ((adjoint B).comp (adjoint A)) v
state_after: case h
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁹ : RCLike 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : InnerProductSpace 𝕜 G
inst✝² : CompleteSpace E
inst✝¹ : CompleteSpace G
inst✝ : CompleteSpace F
A : F →L[𝕜] G
B : E →L[𝕜] F
v : G
w : E
⊢ ⟪w, (adjoint (A.comp B)) v⟫_𝕜 = ⟪w, ((adjoint B).comp (adjoint A)) v⟫_𝕜

tactic: simp only [adjoint_inner_right, ContinuousLinearMap.coe_comp', Function.comp_apply]
state_before: case h
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁹ : RCLike 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : InnerProductSpace 𝕜 G
inst✝² : CompleteSpace E
inst✝¹ : CompleteSpace G
inst✝ : CompleteSpace F
A : F →L[𝕜] G
B : E →L[𝕜] F
v : G
w : E
⊢ ⟪w, (adjoint (A.comp B)) v⟫_𝕜 = ⟪w, ((adjoint B).comp (adjoint A)) v⟫_𝕜
state_after: no goals
Theorem: Matrix.fromBlocks_zero
File: Mathlib/Data/Matrix/Block.lean

tactic: ext i j
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
p : Type u_5
q : Type u_6
m' : o → Type u_7
n' : o → Type u_8
p' : o → Type u_9
R : Type u_10
S : Type u_11
α : Type u_12
β : Type u_13
inst✝ : Zero α
⊢ fromBlocks 0 0 0 0 = 0
state_after: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
p : Type u_5
q : Type u_6
m' : o → Type u_7
n' : o → Type u_8
p' : o → Type u_9
R : Type u_10
S : Type u_11
α : Type u_12
β : Type u_13
inst✝ : Zero α
i : n ⊕ o
j : l ⊕ m
⊢ fromBlocks 0 0 0 0 i j = 0 i j

tactic: rcases i with ⟨⟩ <;> rcases j with ⟨⟩ <;> rfl
state_before: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
p : Type u_5
q : Type u_6
m' : o → Type u_7
n' : o → Type u_8
p' : o → Type u_9
R : Type u_10
S : Type u_11
α : Type u_12
β : Type u_13
inst✝ : Zero α
i : n ⊕ o
j : l ⊕ m
⊢ fromBlocks 0 0 0 0 i j = 0 i j
state_after: no goals
Theorem: EllipticCurve.coe_inv_variableChange_Δ'
File: Mathlib/AlgebraicGeometry/EllipticCurve/Weierstrass.lean

tactic: rw [variableChange_Δ', mul_inv, inv_pow, inv_inv]
state_before: R : Type u
inst✝ : CommRing R
E : EllipticCurve R
C : WeierstrassCurve.VariableChange R
⊢ (E.variableChange C).Δ'⁻¹ = C.u ^ 12 * E.Δ'⁻¹
state_after: no goals
Theorem: Algebra.TensorProduct.map_restrictScalars_comp_includeRight
File: Mathlib/RingTheory/TensorProduct/Basic.lean

tactic: simp
state_before: R : Type uR
S : Type uS
A : Type uA
B : Type uB
C : Type uC
D : Type uD
E : Type uE
F : Type uF
inst✝²⁰ : CommSemiring R
inst✝¹⁹ : CommSemiring S
inst✝¹⁸ : Algebra R S
inst✝¹⁷ : Semiring A
inst✝¹⁶ : Algebra R A
inst✝¹⁵ : Algebra S A
inst✝¹⁴ : IsScalarTower R S A
inst✝¹³ : Semiring B
inst✝¹² : Algebra R B
inst✝¹¹ : Algebra S B
inst✝¹⁰ : IsScalarTower R S B
inst✝⁹ : Semiring C
inst✝⁸ : Algebra R C
inst✝⁷ : Algebra S C
inst✝⁶ : IsScalarTower R S C
inst✝⁵ : Semiring D
inst✝⁴ : Algebra R D
inst✝³ : Semiring E
inst✝² : Algebra R E
inst✝¹ : Semiring F
inst✝ : Algebra R F
f : A →ₐ[S] B
g : C →ₐ[R] D
⊢ ∀ (x : C), ((AlgHom.restrictScalars R (map f g)).comp includeRight) x = (includeRight.comp g) x
state_after: no goals
Theorem: SimpleGraph.cliqueFreeOn_univ
File: Mathlib/Combinatorics/SimpleGraph/Clique.lean

tactic: simp [CliqueFree, CliqueFreeOn]
state_before: α : Type u_1
β : Type u_2
G H : SimpleGraph α
s s₁ s₂ : Set α
t : Finset α
a b : α
m n : ℕ
⊢ G.CliqueFreeOn Set.univ n ↔ G.CliqueFree n
state_after: no goals
Theorem: finFunctionFinEquiv_single
File: Mathlib/Algebra/BigOperators/Fin.lean

tactic: rw [finFunctionFinEquiv_apply, Fintype.sum_eq_single i, Pi.single_eq_same]
state_before: α : Type u_1
β : Type u_2
m n : ℕ
inst✝ : NeZero m
i : Fin n
j : Fin m
⊢ ↑(finFunctionFinEquiv (Pi.single i j)) = ↑j * m ^ ↑i
state_after: α : Type u_1
β : Type u_2
m n : ℕ
inst✝ : NeZero m
i : Fin n
j : Fin m
⊢ ∀ (x : Fin n), x ≠ i → ↑(Pi.single i j x) * m ^ ↑x = 0

tactic: rintro x hx
state_before: α : Type u_1
β : Type u_2
m n : ℕ
inst✝ : NeZero m
i : Fin n
j : Fin m
⊢ ∀ (x : Fin n), x ≠ i → ↑(Pi.single i j x) * m ^ ↑x = 0
state_after: α : Type u_1
β : Type u_2
m n : ℕ
inst✝ : NeZero m
i : Fin n
j : Fin m
x : Fin n
hx : x ≠ i
⊢ ↑(Pi.single i j x) * m ^ ↑x = 0

tactic: rw [Pi.single_eq_of_ne hx, Fin.val_zero', zero_mul]
state_before: α : Type u_1
β : Type u_2
m n : ℕ
inst✝ : NeZero m
i : Fin n
j : Fin m
x : Fin n
hx : x ≠ i
⊢ ↑(Pi.single i j x) * m ^ ↑x = 0
state_after: no goals
Theorem: PosNum.cast_to_int
File: Mathlib/Data/Num/Lemmas.lean

tactic: rw [← to_nat_to_int, Int.cast_natCast, cast_to_nat]
state_before: α : Type u_1
inst✝ : AddGroupWithOne α
n : PosNum
⊢ ↑↑n = ↑n
state_after: no goals
Theorem: MeasureTheory.ofReal_integral_norm_eq_lintegral_nnnorm
File: Mathlib/MeasureTheory/Integral/Bochner.lean

tactic: rw [integral_norm_eq_lintegral_nnnorm hf.aestronglyMeasurable,
  ENNReal.ofReal_toReal (lt_top_iff_ne_top.mp hf.2)]
state_before: α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹² : NormedAddCommGroup E
inst✝¹¹ : NormedSpace ℝ E
hE : CompleteSpace E
inst✝¹⁰ : NontriviallyNormedField 𝕜
inst✝⁹ : NormedSpace 𝕜 E
inst✝⁸ : SMulCommClass ℝ 𝕜 E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace ℝ F
inst✝⁵ : CompleteSpace F
G : Type u_5
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace ℝ G
f✝ g : α → E
m : MeasurableSpace α
μ : Measure α
X : Type u_6
inst✝² : TopologicalSpace X
inst✝¹ : FirstCountableTopology X
P : Type u_7
inst✝ : NormedAddCommGroup P
f : α → P
hf : Integrable f μ
⊢ ENNReal.ofReal (∫ (x : α), ‖f x‖ ∂μ) = ∫⁻ (x : α), ↑‖f x‖₊ ∂μ
state_after: no goals
Theorem: supClosure_univ
File: Mathlib/Order/SupClosed.lean

tactic: simp
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : SemilatticeSup α
inst✝ : SemilatticeSup β
s t : Set α
a b : α
⊢ supClosure Set.univ = Set.univ
state_after: no goals
Theorem: smul_nonpos_of_nonneg_of_nonpos
File: Mathlib/Algebra/Order/Module/Defs.lean

tactic: simpa only [smul_zero] using smul_le_smul_of_nonneg_left hb ha
state_before: α : Type u_1
β : Type u_2
a a₁ a₂ : α
b b₁ b₂ : β
inst✝⁵ : Zero α
inst✝⁴ : Zero β
inst✝³ : SMulZeroClass α β
inst✝² : Preorder α
inst✝¹ : Preorder β
inst✝ : PosSMulMono α β
ha : 0 ≤ a
hb : b ≤ 0
⊢ a • b ≤ 0
state_after: no goals
Theorem: SeparatingDual.exists_separating_of_ne
File: Mathlib/Analysis/NormedSpace/HahnBanach/SeparatingDual.lean

tactic: rcases exists_ne_zero (R := R) (sub_ne_zero_of_ne h) with ⟨f, hf⟩
state_before: R : Type u_1
V : Type u_2
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup V
inst✝³ : TopologicalSpace V
inst✝² : TopologicalSpace R
inst✝¹ : Module R V
inst✝ : SeparatingDual R V
x y : V
h : x ≠ y
⊢ ∃ f, f x ≠ f y
state_after: case intro
R : Type u_1
V : Type u_2
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup V
inst✝³ : TopologicalSpace V
inst✝² : TopologicalSpace R
inst✝¹ : Module R V
inst✝ : SeparatingDual R V
x y : V
h : x ≠ y
f : V →L[R] R
hf : f (x - y) ≠ 0
⊢ ∃ f, f x ≠ f y

tactic: exact ⟨f, by simpa [sub_ne_zero] using hf⟩
state_before: case intro
R : Type u_1
V : Type u_2
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup V
inst✝³ : TopologicalSpace V
inst✝² : TopologicalSpace R
inst✝¹ : Module R V
inst✝ : SeparatingDual R V
x y : V
h : x ≠ y
f : V →L[R] R
hf : f (x - y) ≠ 0
⊢ ∃ f, f x ≠ f y
state_after: no goals

tactic: simpa [sub_ne_zero] using hf
state_before: R : Type u_1
V : Type u_2
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup V
inst✝³ : TopologicalSpace V
inst✝² : TopologicalSpace R
inst✝¹ : Module R V
inst✝ : SeparatingDual R V
x y : V
h : x ≠ y
f : V →L[R] R
hf : f (x - y) ≠ 0
⊢ f x ≠ f y
state_after: no goals
Theorem: Complex.sinh_sub
File: Mathlib/Data/Complex/Exponential.lean

tactic: simp [sub_eq_add_neg, sinh_add, sinh_neg, cosh_neg]
state_before: x y : ℂ
⊢ sinh (x - y) = sinh x * cosh y - cosh x * sinh y
state_after: no goals
Theorem: Nat.gcdB_zero_right
File: Mathlib/Data/Int/GCD.lean

tactic: unfold gcdB xgcd
state_before: s : ℕ
h : s ≠ 0
⊢ s.gcdB 0 = 0
state_after: s : ℕ
h : s ≠ 0
⊢ (s.xgcdAux 1 0 0 0 1).2.2 = 0

tactic: obtain ⟨s, rfl⟩ := Nat.exists_eq_succ_of_ne_zero h
state_before: s : ℕ
h : s ≠ 0
⊢ (s.xgcdAux 1 0 0 0 1).2.2 = 0
state_after: case intro
s : ℕ
h : s.succ ≠ 0
⊢ (s.succ.xgcdAux 1 0 0 0 1).2.2 = 0

tactic: rw [xgcdAux]
state_before: case intro
s : ℕ
h : s.succ ≠ 0
⊢ (s.succ.xgcdAux 1 0 0 0 1).2.2 = 0
state_after: case intro
s : ℕ
h : s.succ ≠ 0
⊢ ((0 % s.succ).xgcdAux (0 - ↑(0 / s.succ) * 1) (1 - ↑(0 / s.succ) * 0) s.succ 1 0).2.2 = 0

tactic: simp
state_before: case intro
s : ℕ
h : s.succ ≠ 0
⊢ ((0 % s.succ).xgcdAux (0 - ↑(0 / s.succ) * 1) (1 - ↑(0 / s.succ) * 0) s.succ 1 0).2.2 = 0
state_after: no goals