1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Submodule.IsOrtho.map
File: Mathlib/Analysis/InnerProductSpace/Orthogonal.lean

tactic: rw [isOrtho_iff_inner_eq] at *
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace 𝕜 F
f : E →ₗᵢ[𝕜] F
U V : Submodule 𝕜 E
h : U ⟂ V
⊢ Submodule.map f U ⟂ Submodule.map f V
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace 𝕜 F
f : E →ₗᵢ[𝕜] F
U V : Submodule 𝕜 E
h : ∀ u ∈ U, ∀ v ∈ V, ⟪u, v⟫_𝕜 = 0
⊢ ∀ u ∈ Submodule.map f U, ∀ v ∈ Submodule.map f V, ⟪u, v⟫_𝕜 = 0

tactic: simp_rw [mem_map, forall_exists_index, and_imp, forall_apply_eq_imp_iff₂,
  LinearIsometry.inner_map_map]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace 𝕜 F
f : E →ₗᵢ[𝕜] F
U V : Submodule 𝕜 E
h : ∀ u ∈ U, ∀ v ∈ V, ⟪u, v⟫_𝕜 = 0
⊢ ∀ u ∈ Submodule.map f U, ∀ v ∈ Submodule.map f V, ⟪u, v⟫_𝕜 = 0
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace 𝕜 F
f : E →ₗᵢ[𝕜] F
U V : Submodule 𝕜 E
h : ∀ u ∈ U, ∀ v ∈ V, ⟪u, v⟫_𝕜 = 0
⊢ ∀ a ∈ U, ∀ a_2 ∈ V, ⟪a, a_2⟫_𝕜 = 0

tactic: exact h
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace 𝕜 F
f : E →ₗᵢ[𝕜] F
U V : Submodule 𝕜 E
h : ∀ u ∈ U, ∀ v ∈ V, ⟪u, v⟫_𝕜 = 0
⊢ ∀ a ∈ U, ∀ a_2 ∈ V, ⟪a, a_2⟫_𝕜 = 0
state_after: no goals
Theorem: BddAbove.image2
File: Mathlib/Order/Bounds/Basic.lean

tactic: rintro ⟨a, ha⟩ ⟨b, hb⟩
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝² : Preorder α
inst✝¹ : Preorder β
inst✝ : Preorder γ
f : α → β → γ
s : Set α
t : Set β
a : α
b : β
h₀ : ∀ (b : β), Monotone (swap f b)
h₁ : ∀ (a : α), Monotone (f a)
⊢ BddAbove s → BddAbove t → BddAbove (image2 f s t)
state_after: case intro.intro
α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝² : Preorder α
inst✝¹ : Preorder β
inst✝ : Preorder γ
f : α → β → γ
s : Set α
t : Set β
a✝ : α
b✝ : β
h₀ : ∀ (b : β), Monotone (swap f b)
h₁ : ∀ (a : α), Monotone (f a)
a : α
ha : a ∈ upperBounds s
b : β
hb : b ∈ upperBounds t
⊢ BddAbove (image2 f s t)

tactic: exact ⟨f a b, mem_upperBounds_image2 h₀ h₁ ha hb⟩
state_before: case intro.intro
α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝² : Preorder α
inst✝¹ : Preorder β
inst✝ : Preorder γ
f : α → β → γ
s : Set α
t : Set β
a✝ : α
b✝ : β
h₀ : ∀ (b : β), Monotone (swap f b)
h₁ : ∀ (a : α), Monotone (f a)
a : α
ha : a ∈ upperBounds s
b : β
hb : b ∈ upperBounds t
⊢ BddAbove (image2 f s t)
state_after: no goals
Theorem: AntitoneOn.concaveOn_of_deriv
File: Mathlib/Analysis/Convex/Deriv.lean

tactic: simpa only [← deriv.neg] using h_anti.neg
state_before: D : Set ℝ
hD : Convex ℝ D
f : ℝ → ℝ
hf : ContinuousOn f D
hf' : DifferentiableOn ℝ f (interior D)
h_anti : AntitoneOn (deriv f) (interior D)
⊢ MonotoneOn (deriv (-f)) (interior D)
state_after: no goals
Theorem: Subfield.coe_sSup_of_directedOn
File: Mathlib/Algebra/Field/Subfield.lean

tactic: simp [mem_sSup_of_directedOn Sne hS]
state_before: K : Type u
L : Type v
M : Type w
inst✝² : DivisionRing K
inst✝¹ : DivisionRing L
inst✝ : DivisionRing M
S : Set (Subfield K)
Sne : S.Nonempty
hS : DirectedOn (fun x x_1 => x ≤ x_1) S
x : K
⊢ x ∈ ↑(sSup S) ↔ x ∈ ⋃ s ∈ S, ↑s
state_after: no goals
Theorem: SimpleGraph.IsSRGWith.top
File: Mathlib/Combinatorics/SimpleGraph/StronglyRegular.lean

tactic: rw [card_commonNeighbors_top]
state_before: V : Type u
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n k ℓ μ : ℕ
v w : V
h : ⊤.Adj v w
⊢ Fintype.card ↑(⊤.commonNeighbors v w) = Fintype.card V - 2
state_after: V : Type u
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n k ℓ μ : ℕ
v w : V
h : ⊤.Adj v w
⊢ v ≠ w

tactic: exact h
state_before: V : Type u
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n k ℓ μ : ℕ
v w : V
h : ⊤.Adj v w
⊢ v ≠ w
state_after: no goals
Theorem: Filter.cofinite.limsup_set_eq
File: Mathlib/Order/LiminfLimsup.lean

tactic: simp only [← cofinite.blimsup_true s, cofinite.blimsup_set_eq, true_and_iff]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
p : ι → Prop
s : ι → Set α
𝓕 : Filter ι
a : α
⊢ limsup s cofinite = {x | {n | x ∈ s n}.Infinite}
state_after: no goals
Theorem: Stream'.WSeq.think_equiv
File: Mathlib/Data/Seq/WSeq.lean

tactic: unfold Equiv
state_before: α : Type u
β : Type v
γ : Type w
s : WSeq α
⊢ s.think ~ʷ s
state_after: α : Type u
β : Type v
γ : Type w
s : WSeq α
⊢ LiftRel (fun x x_1 => x = x_1) s.think s

tactic: simpa using Equiv.refl _
state_before: α : Type u
β : Type v
γ : Type w
s : WSeq α
⊢ LiftRel (fun x x_1 => x = x_1) s.think s
state_after: no goals
Theorem: measurable_ereal_toReal
File: Mathlib/MeasureTheory/Constructions/BorelSpace/Real.lean

tactic: simpa using measurable_id
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s t u : Set α
inst✝ : MeasurableSpace α
⊢ Measurable fun p => (↑p).toReal
state_after: no goals
Theorem: AlgebraicGeometry.PresheafedSpace.IsOpenImmersion.locallyRingedSpace_toLocallyRingedSpace
File: Mathlib/Geometry/RingedSpace/OpenImmersion.lean

tactic: cases X
state_before: C : Type u
inst✝¹ : Category.{v, u} C
X✝ : PresheafedSpace CommRingCat
Y✝ : LocallyRingedSpace
f✝ : X✝ ⟶ Y✝.toPresheafedSpace
H : IsOpenImmersion f✝
X Y : LocallyRingedSpace
f : X ⟶ Y
inst✝ : LocallyRingedSpace.IsOpenImmersion f
⊢ toLocallyRingedSpace Y f.val = X
state_after: case mk
C : Type u
inst✝¹ : Category.{v, u} C
X : PresheafedSpace CommRingCat
Y✝ : LocallyRingedSpace
f✝ : X ⟶ Y✝.toPresheafedSpace
H : IsOpenImmersion f✝
Y : LocallyRingedSpace
toSheafedSpace✝ : SheafedSpace CommRingCat
localRing✝ : ∀ (x : ↑↑toSheafedSpace✝.toPresheafedSpace), LocalRing ↑(toSheafedSpace✝.presheaf.stalk x)
f : { toSheafedSpace := toSheafedSpace✝, localRing := localRing✝ } ⟶ Y
inst✝ : LocallyRingedSpace.IsOpenImmersion f
⊢ toLocallyRingedSpace Y f.val = { toSheafedSpace := toSheafedSpace✝, localRing := localRing✝ }

tactic: delta toLocallyRingedSpace
state_before: case mk
C : Type u
inst✝¹ : Category.{v, u} C
X : PresheafedSpace CommRingCat
Y✝ : LocallyRingedSpace
f✝ : X ⟶ Y✝.toPresheafedSpace
H : IsOpenImmersion f✝
Y : LocallyRingedSpace
toSheafedSpace✝ : SheafedSpace CommRingCat
localRing✝ : ∀ (x : ↑↑toSheafedSpace✝.toPresheafedSpace), LocalRing ↑(toSheafedSpace✝.presheaf.stalk x)
f : { toSheafedSpace := toSheafedSpace✝, localRing := localRing✝ } ⟶ Y
inst✝ : LocallyRingedSpace.IsOpenImmersion f
⊢ toLocallyRingedSpace Y f.val = { toSheafedSpace := toSheafedSpace✝, localRing := localRing✝ }
state_after: case mk
C : Type u
inst✝¹ : Category.{v, u} C
X : PresheafedSpace CommRingCat
Y✝ : LocallyRingedSpace
f✝ : X ⟶ Y✝.toPresheafedSpace
H : IsOpenImmersion f✝
Y : LocallyRingedSpace
toSheafedSpace✝ : SheafedSpace CommRingCat
localRing✝ : ∀ (x : ↑↑toSheafedSpace✝.toPresheafedSpace), LocalRing ↑(toSheafedSpace✝.presheaf.stalk x)
f : { toSheafedSpace := toSheafedSpace✝, localRing := localRing✝ } ⟶ Y
inst✝ : LocallyRingedSpace.IsOpenImmersion f
⊢ { toSheafedSpace := toSheafedSpace Y.toSheafedSpace f.val, localRing := ⋯ } =
    { toSheafedSpace := toSheafedSpace✝, localRing := localRing✝ }

tactic: simp
state_before: case mk
C : Type u
inst✝¹ : Category.{v, u} C
X : PresheafedSpace CommRingCat
Y✝ : LocallyRingedSpace
f✝ : X ⟶ Y✝.toPresheafedSpace
H : IsOpenImmersion f✝
Y : LocallyRingedSpace
toSheafedSpace✝ : SheafedSpace CommRingCat
localRing✝ : ∀ (x : ↑↑toSheafedSpace✝.toPresheafedSpace), LocalRing ↑(toSheafedSpace✝.presheaf.stalk x)
f : { toSheafedSpace := toSheafedSpace✝, localRing := localRing✝ } ⟶ Y
inst✝ : LocallyRingedSpace.IsOpenImmersion f
⊢ { toSheafedSpace := toSheafedSpace Y.toSheafedSpace f.val, localRing := ⋯ } =
    { toSheafedSpace := toSheafedSpace✝, localRing := localRing✝ }
state_after: no goals
Theorem: Function.ext_iff_mulSupport
File: Mathlib/Algebra/Group/Support.lean

tactic: if hx : x ∈ f.mulSupport then exact h₂ x hx
else rw [nmem_mulSupport.1 hx, nmem_mulSupport.1 (mt (Set.ext_iff.1 h₁ x).2 hx)]
state_before: α : Type u_1
β : Type u_2
A : Type u_3
B : Type u_4
M : Type u_5
N : Type u_6
P : Type u_7
G : Type u_8
inst✝² : One M
inst✝¹ : One N
inst✝ : One P
f g : α → M
x✝ : mulSupport f = mulSupport g ∧ ∀ x ∈ mulSupport f, f x = g x
h₁ : mulSupport f = mulSupport g
h₂ : ∀ x ∈ mulSupport f, f x = g x
x : α
⊢ f x = g x
state_after: no goals

tactic: exact h₂ x hx
state_before: α : Type u_1
β : Type u_2
A : Type u_3
B : Type u_4
M : Type u_5
N : Type u_6
P : Type u_7
G : Type u_8
inst✝² : One M
inst✝¹ : One N
inst✝ : One P
f g : α → M
x✝ : mulSupport f = mulSupport g ∧ ∀ x ∈ mulSupport f, f x = g x
h₁ : mulSupport f = mulSupport g
h₂ : ∀ x ∈ mulSupport f, f x = g x
x : α
hx : x ∈ mulSupport f
⊢ f x = g x
state_after: no goals

tactic: rw [nmem_mulSupport.1 hx, nmem_mulSupport.1 (mt (Set.ext_iff.1 h₁ x).2 hx)]
state_before: α : Type u_1
β : Type u_2
A : Type u_3
B : Type u_4
M : Type u_5
N : Type u_6
P : Type u_7
G : Type u_8
inst✝² : One M
inst✝¹ : One N
inst✝ : One P
f g : α → M
x✝ : mulSupport f = mulSupport g ∧ ∀ x ∈ mulSupport f, f x = g x
h₁ : mulSupport f = mulSupport g
h₂ : ∀ x ∈ mulSupport f, f x = g x
x : α
hx : x ∉ mulSupport f
⊢ f x = g x
state_after: no goals
Theorem: Matrix.rank_mul_le_left
File: Mathlib/Data/Matrix/Rank.lean

tactic: rw [rank, rank, mulVecLin_mul]
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
R : Type u_5
inst✝³ : Fintype n
inst✝² : Fintype o
inst✝¹ : CommRing R
inst✝ : StrongRankCondition R
A : Matrix m n R
B : Matrix n o R
⊢ (A * B).rank ≤ A.rank
state_after: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
R : Type u_5
inst✝³ : Fintype n
inst✝² : Fintype o
inst✝¹ : CommRing R
inst✝ : StrongRankCondition R
A : Matrix m n R
B : Matrix n o R
⊢ finrank R ↥(LinearMap.range (A.mulVecLin ∘ₗ B.mulVecLin)) ≤ finrank R ↥(LinearMap.range A.mulVecLin)

tactic: exact Cardinal.toNat_le_toNat (LinearMap.rank_comp_le_left _ _) (rank_lt_aleph0 _ _)
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
R : Type u_5
inst✝³ : Fintype n
inst✝² : Fintype o
inst✝¹ : CommRing R
inst✝ : StrongRankCondition R
A : Matrix m n R
B : Matrix n o R
⊢ finrank R ↥(LinearMap.range (A.mulVecLin ∘ₗ B.mulVecLin)) ≤ finrank R ↥(LinearMap.range A.mulVecLin)
state_after: no goals
Theorem: Finset.isUnit_coe
File: Mathlib/Data/Finset/Pointwise.lean

tactic: simp_rw [isUnit_iff, Set.isUnit_iff, coe_eq_singleton]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝² : DecidableEq α
inst✝¹ : DecidableEq β
inst✝ : DivisionMonoid α
s t : Finset α
⊢ IsUnit ↑s ↔ IsUnit s
state_after: no goals
Theorem: IsGroupHom.trivial_ker_of_injective
File: Mathlib/Deprecated/Subgroup.lean

tactic: suffices f x = f 1 by simpa using h this
state_before: G : Type u_1
H : Type u_2
A : Type u_3
a a₁ a₂ b c : G
inst✝¹ : Group G
inst✝ : Group H
f : G → H
hf : IsGroupHom f
h : Injective f
x : G
hx : x ∈ ker f
⊢ x ∈ IsSubgroup.trivial G
state_after: G : Type u_1
H : Type u_2
A : Type u_3
a a₁ a₂ b c : G
inst✝¹ : Group G
inst✝ : Group H
f : G → H
hf : IsGroupHom f
h : Injective f
x : G
hx : x ∈ ker f
⊢ f x = f 1

tactic: simp [hf.map_one]
state_before: G : Type u_1
H : Type u_2
A : Type u_3
a a₁ a₂ b c : G
inst✝¹ : Group G
inst✝ : Group H
f : G → H
hf : IsGroupHom f
h : Injective f
x : G
hx : x ∈ ker f
⊢ f x = f 1
state_after: G : Type u_1
H : Type u_2
A : Type u_3
a a₁ a₂ b c : G
inst✝¹ : Group G
inst✝ : Group H
f : G → H
hf : IsGroupHom f
h : Injective f
x : G
hx : x ∈ ker f
⊢ f x = 1

tactic: rwa [mem_ker] at hx
state_before: G : Type u_1
H : Type u_2
A : Type u_3
a a₁ a₂ b c : G
inst✝¹ : Group G
inst✝ : Group H
f : G → H
hf : IsGroupHom f
h : Injective f
x : G
hx : x ∈ ker f
⊢ f x = 1
state_after: no goals

tactic: simpa using h this
state_before: G : Type u_1
H : Type u_2
A : Type u_3
a a₁ a₂ b c : G
inst✝¹ : Group G
inst✝ : Group H
f : G → H
hf : IsGroupHom f
h : Injective f
x : G
hx : x ∈ ker f
this : f x = f 1
⊢ x ∈ IsSubgroup.trivial G
state_after: no goals

tactic: simp (config := { contextual := true }) [mem_ker, hf.map_one]
state_before: G : Type u_1
H : Type u_2
A : Type u_3
a a₁ a₂ b c : G
inst✝¹ : Group G
inst✝ : Group H
f : G → H
hf : IsGroupHom f
h : Injective f
x : G
⊢ x ∈ IsSubgroup.trivial G → x ∈ ker f
state_after: no goals
Theorem: Finset.prod_range_diag_flip
File: Mathlib/Algebra/BigOperators/Intervals.lean

tactic: rw [prod_sigma', prod_sigma']
state_before: α : Type u_1
M : Type u_2
inst✝ : CommMonoid M
s₂ s₁ s : Finset α
a : α
g f✝ : α → M
n : ℕ
f : ℕ → ℕ → M
⊢ ∏ m ∈ range n, ∏ k ∈ range (m + 1), f k (m - k) = ∏ m ∈ range n, ∏ k ∈ range (n - m), f m k
state_after: α : Type u_1
M : Type u_2
inst✝ : CommMonoid M
s₂ s₁ s : Finset α
a : α
g f✝ : α → M
n : ℕ
f : ℕ → ℕ → M
⊢ ∏ x ∈ (range n).sigma fun m => range (m + 1), f x.snd (x.fst - x.snd) =
    ∏ x ∈ (range n).sigma fun m => range (n - m), f x.fst x.snd

tactic: refine prod_nbij' (fun a ↦ ⟨a.2, a.1 - a.2⟩) (fun a ↦ ⟨a.1 + a.2, a.1⟩) ?_ ?_ ?_ ?_ ?_ <;>
  simp (config := { contextual := true }) only [mem_sigma, mem_range, lt_tsub_iff_left,
    Nat.lt_succ_iff, le_add_iff_nonneg_right, Nat.zero_le, and_true, and_imp, imp_self,
    implies_true, Sigma.forall, forall_const, add_tsub_cancel_of_le, Sigma.mk.inj_iff,
    add_tsub_cancel_left, heq_eq_eq]
state_before: α : Type u_1
M : Type u_2
inst✝ : CommMonoid M
s₂ s₁ s : Finset α
a : α
g f✝ : α → M
n : ℕ
f : ℕ → ℕ → M
⊢ ∏ x ∈ (range n).sigma fun m => range (m + 1), f x.snd (x.fst - x.snd) =
    ∏ x ∈ (range n).sigma fun m => range (n - m), f x.fst x.snd
state_after: case refine_1
α : Type u_1
M : Type u_2
inst✝ : CommMonoid M
s₂ s₁ s : Finset α
a : α
g f✝ : α → M
n : ℕ
f : ℕ → ℕ → M
⊢ ∀ (a b : ℕ), a < n → b ≤ a → b < n

tactic: exact fun a b han hba ↦ lt_of_le_of_lt hba han
state_before: case refine_1
α : Type u_1
M : Type u_2
inst✝ : CommMonoid M
s₂ s₁ s : Finset α
a : α
g f✝ : α → M
n : ℕ
f : ℕ → ℕ → M
⊢ ∀ (a b : ℕ), a < n → b ≤ a → b < n
state_after: no goals
Theorem: mdifferentiableWithinAt_iff_differentiableWithinAt
File: Mathlib/Geometry/Manifold/MFDeriv/FDeriv.lean

tactic: simp only [mdifferentiableWithinAt_iff', mfld_simps]
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
E' : Type u_3
inst✝¹ : NormedAddCommGroup E'
inst✝ : NormedSpace 𝕜 E'
f : E → E'
s : Set E
x : E
⊢ MDifferentiableWithinAt 𝓘(𝕜, E) 𝓘(𝕜, E') f s x ↔ DifferentiableWithinAt 𝕜 f s x
state_after: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
E' : Type u_3
inst✝¹ : NormedAddCommGroup E'
inst✝ : NormedSpace 𝕜 E'
f : E → E'
s : Set E
x : E
⊢ ContinuousWithinAt f s x ∧ DifferentiableWithinAt 𝕜 f s x ↔ DifferentiableWithinAt 𝕜 f s x

tactic: exact ⟨fun H => H.2, fun H => ⟨H.continuousWithinAt, H⟩⟩
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
E' : Type u_3
inst✝¹ : NormedAddCommGroup E'
inst✝ : NormedSpace 𝕜 E'
f : E → E'
s : Set E
x : E
⊢ ContinuousWithinAt f s x ∧ DifferentiableWithinAt 𝕜 f s x ↔ DifferentiableWithinAt 𝕜 f s x
state_after: no goals
Theorem: toIcoDiv_add_zsmul
File: Mathlib/Algebra/Order/ToIntervalMod.lean

tactic: simpa only [add_smul, add_sub_add_right_eq_sub] using sub_toIcoDiv_zsmul_mem_Ico hp a b
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a✝ b✝ c : α
n : ℤ
a b : α
m : ℤ
⊢ b + m • p - (toIcoDiv hp a b + m) • p ∈ Set.Ico a (a + p)
state_after: no goals
Theorem: sameRay_neg_iff
File: Mathlib/LinearAlgebra/Ray.lean

tactic: simp only [SameRay, neg_eq_zero, smul_neg, neg_inj]
state_before: R : Type u_1
inst✝⁴ : StrictOrderedCommRing R
M : Type u_2
N : Type u_3
inst✝³ : AddCommGroup M
inst✝² : AddCommGroup N
inst✝¹ : Module R M
inst✝ : Module R N
x y : M
⊢ SameRay R (-x) (-y) ↔ SameRay R x y
state_after: no goals
Theorem: mem_closure_iff_nhds_basis
File: Mathlib/Topology/Basic.lean

tactic: simp only [Set.Nonempty, mem_inter_iff, exists_prop, and_comm]
state_before: X : Type u
Y : Type v
ι : Sort w
α : Type u_1
β : Type u_2
x : X
s✝ s₁ s₂ t : Set X
p✝ p₁ p₂ : X → Prop
inst✝ : TopologicalSpace X
p : ι → Prop
s : ι → Set X
h : (𝓝 x).HasBasis p s
⊢ (∀ (i : ι), p i → (s i ∩ t).Nonempty) ↔ ∀ (i : ι), p i → ∃ y ∈ t, y ∈ s i
state_after: no goals
Theorem: MeasureTheory.lintegral_mul_const''
File: Mathlib/MeasureTheory/Integral/Lebesgue.lean

tactic: simp_rw [mul_comm, lintegral_const_mul'' r hf]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hf : AEMeasurable f μ
⊢ ∫⁻ (a : α), f a * r ∂μ = (∫⁻ (a : α), f a ∂μ) * r
state_after: no goals
Theorem: ssubset_of_ssubset_of_eq
File: Mathlib/Order/RelClasses.lean

tactic: rwa [← hbc]
state_before: α : Type u
β : Type v
r : α → α → Prop
s : β → β → Prop
inst✝ : HasSSubset α
a b c : α
hab : a ⊂ b
hbc : b = c
⊢ a ⊂ c
state_after: no goals
Theorem: CategoryTheory.ComposableArrows.map'_inv_eq_inv_map'
File: Mathlib/CategoryTheory/ComposableArrows.lean

tactic: rw [← cancel_epi app.hom, ← reassoc_of% w, app'.hom_inv_id, comp_id, app.hom_inv_id_assoc]
state_before: C : Type u_1
inst✝ : Category.{u_2, u_1} C
n✝ m✝ : ℕ
F G : ComposableArrows C n✝
n m : ℕ
h : n + 1 ≤ m
f g : ComposableArrows C m
app : f.obj' n ⋯ ≅ g.obj' n ⋯
app' : f.obj' (n + 1) h ≅ g.obj' (n + 1) h
w : f.map' n (n + 1) ⋯ h ≫ app'.hom = app.hom ≫ g.map' n (n + 1) ⋯ h
⊢ g.map' n (n + 1) ⋯ h ≫ app'.inv = app.inv ≫ f.map' n (n + 1) ⋯ h
state_after: no goals
Theorem: FormalMultilinearSeries.norm_apply_eq_norm_coef
File: Mathlib/Analysis/Calculus/FormalMultilinearSeries.lean

tactic: rw [← mkPiRing_coeff_eq p, ContinuousMultilinearMap.norm_mkPiRing]
state_before: 𝕜 : Type u
𝕜' : Type u'
E : Type v
F : Type w
G : Type x
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : E
p : FormalMultilinearSeries 𝕜 𝕜 E
f : 𝕜 → E
n : ℕ
z z₀ : 𝕜
y : Fin n → 𝕜
⊢ ‖p n‖ = ‖p.coeff n‖
state_after: no goals
Theorem: CliffordAlgebra.toProd_one_tmul_ι
File: Mathlib/LinearAlgebra/CliffordAlgebra/Prod.lean

tactic: rw [toProd, GradedTensorProduct.lift_tmul, map_one, one_mul, map_apply_ι,
  QuadraticForm.Isometry.inr_apply]
state_before: R : Type u_1
M₁ : Type u_2
M₂ : Type u_3
N : Type u_4
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M₁
inst✝⁴ : AddCommGroup M₂
inst✝³ : AddCommGroup N
inst✝² : Module R M₁
inst✝¹ : Module R M₂
inst✝ : Module R N
Q₁ : QuadraticForm R M₁
Q₂ : QuadraticForm R M₂
Qₙ : QuadraticForm R N
m₂ : M₂
⊢ (toProd Q₁ Q₂) (1 ᵍ⊗ₜ[R] (ι Q₂) m₂) = (ι (Q₁.prod Q₂)) (0, m₂)
state_after: no goals
Theorem: Matrix.add_cons
File: Mathlib/Data/Fin/VecNotation.lean

tactic: ext i
state_before: α : Type u
m n o : ℕ
m' : Type u_1
n' : Type u_2
o' : Type u_3
inst✝ : Add α
v : Fin n.succ → α
y : α
w : Fin n → α
⊢ v + vecCons y w = vecCons (vecHead v + y) (vecTail v + w)
state_after: case h
α : Type u
m n o : ℕ
m' : Type u_1
n' : Type u_2
o' : Type u_3
inst✝ : Add α
v : Fin n.succ → α
y : α
w : Fin n → α
i : Fin n.succ
⊢ (v + vecCons y w) i = vecCons (vecHead v + y) (vecTail v + w) i

tactic: refine Fin.cases ?_ ?_ i <;> simp [vecHead, vecTail]
state_before: case h
α : Type u
m n o : ℕ
m' : Type u_1
n' : Type u_2
o' : Type u_3
inst✝ : Add α
v : Fin n.succ → α
y : α
w : Fin n → α
i : Fin n.succ
⊢ (v + vecCons y w) i = vecCons (vecHead v + y) (vecTail v + w) i
state_after: no goals
Theorem: Filter.map₂_right_identity
File: Mathlib/Order/Filter/NAry.lean

tactic: rw [map₂_pure_right, funext h, map_id']
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
γ' : Type u_6
δ : Type u_7
δ' : Type u_8
ε : Type u_9
ε' : Type u_10
m : α → β → γ
f✝ f₁ f₂ : Filter α
g g₁ g₂ : Filter β
h✝ h₁ h₂ : Filter γ
s s₁ s₂ : Set α
t t₁ t₂ : Set β
u : Set γ
v : Set δ
a : α
b✝ : β
c : γ
f : α → β → α
b : β
h : ∀ (a : α), f a b = a
l : Filter α
⊢ map₂ f l (pure b) = l
state_after: no goals
Theorem: Polynomial.coe_eq_zero_iff
File: Mathlib/RingTheory/PowerSeries/Basic.lean

tactic: rw [← coe_zero, coe_inj]
state_before: σ : Type u_1
R : Type u_2
inst✝ : CommSemiring R
φ ψ : R[X]
⊢ ↑φ = 0 ↔ φ = 0
state_after: no goals
Theorem: Matrix.fromBlocks_eq_of_invertible₂₂
File: Mathlib/LinearAlgebra/Matrix/SchurComplement.lean

tactic: simpa [reindex_apply, Equiv.sumComm_symm, ← submatrix_mul_equiv _ _ _ (Equiv.sumComm n m), ←
  submatrix_mul_equiv _ _ _ (Equiv.sumComm n l), Equiv.sumComm_apply,
  fromBlocks_submatrix_sum_swap_sum_swap] using fromBlocks_eq_of_invertible₁₁ D C B A
state_before: l : Type u_1
m : Type u_2
n : Type u_3
α : Type u_4
inst✝⁷ : Fintype l
inst✝⁶ : Fintype m
inst✝⁵ : Fintype n
inst✝⁴ : DecidableEq l
inst✝³ : DecidableEq m
inst✝² : DecidableEq n
inst✝¹ : CommRing α
A : Matrix l m α
B : Matrix l n α
C : Matrix n m α
D : Matrix n n α
inst✝ : Invertible D
⊢ (reindex (Equiv.sumComm l n) (Equiv.sumComm m n)) (fromBlocks A B C D) =
    (reindex (Equiv.sumComm l n) (Equiv.sumComm m n))
      (fromBlocks 1 (B * ⅟D) 0 1 * fromBlocks (A - B * ⅟D * C) 0 0 D * fromBlocks 1 0 (⅟D * C) 1)
state_after: no goals
Theorem: EulerProduct.eulerProduct_hasProd_mulIndicator
File: Mathlib/NumberTheory/EulerProduct/Basic.lean

tactic: rw [← hasProd_subtype_iff_mulIndicator]
state_before: R : Type u_1
inst✝¹ : NormedCommRing R
inst✝ : CompleteSpace R
f : ℕ → R
hf₁ : f 1 = 1
hmul : ∀ {m n : ℕ}, m.Coprime n → f (m * n) = f m * f n
hsum : Summable fun x => ‖f x‖
hf₀ : f 0 = 0
⊢ HasProd ({p | Nat.Prime p}.mulIndicator fun p => ∑' (e : ℕ), f (p ^ e)) (∑' (n : ℕ), f n)
state_after: R : Type u_1
inst✝¹ : NormedCommRing R
inst✝ : CompleteSpace R
f : ℕ → R
hf₁ : f 1 = 1
hmul : ∀ {m n : ℕ}, m.Coprime n → f (m * n) = f m * f n
hsum : Summable fun x => ‖f x‖
hf₀ : f 0 = 0
⊢ HasProd ((fun p => ∑' (e : ℕ), f (p ^ e)) ∘ Subtype.val) (∑' (n : ℕ), f n)

tactic: exact eulerProduct_hasProd hf₁ hmul hsum hf₀
state_before: R : Type u_1
inst✝¹ : NormedCommRing R
inst✝ : CompleteSpace R
f : ℕ → R
hf₁ : f 1 = 1
hmul : ∀ {m n : ℕ}, m.Coprime n → f (m * n) = f m * f n
hsum : Summable fun x => ‖f x‖
hf₀ : f 0 = 0
⊢ HasProd ((fun p => ∑' (e : ℕ), f (p ^ e)) ∘ Subtype.val) (∑' (n : ℕ), f n)
state_after: no goals
Theorem: toIocMod_add_zsmul
File: Mathlib/Algebra/Order/ToIntervalMod.lean

tactic: rw [toIocMod, toIocDiv_add_zsmul, toIocMod, add_smul]
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a✝ b✝ c : α
n : ℤ
a b : α
m : ℤ
⊢ toIocMod hp a (b + m • p) = toIocMod hp a b
state_after: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a✝ b✝ c : α
n : ℤ
a b : α
m : ℤ
⊢ b + m • p - (toIocDiv hp a b • p + m • p) = b - toIocDiv hp a b • p

tactic: abel
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a✝ b✝ c : α
n : ℤ
a b : α
m : ℤ
⊢ b + m • p - (toIocDiv hp a b • p + m • p) = b - toIocDiv hp a b • p
state_after: no goals