1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Subgroup.leftTransversals.diff_mul_diff
File: Mathlib/GroupTheory/Transfer.lean

tactic: simp_rw [Subtype.ext_iff, coe_mul, mul_assoc, mul_inv_cancel_left]
state_before: G : Type u_1
inst✝² : Group G
H : Subgroup G
A : Type u_2
inst✝¹ : CommGroup A
ϕ : ↥H →* A
R S T : ↑(leftTransversals ↑H)
inst✝ : H.FiniteIndex
q : G ⧸ H
x✝ : q ∈ univ
⊢ ⟨(↑((MemLeftTransversals.toEquiv ⋯) q))⁻¹ * ↑((MemLeftTransversals.toEquiv ⋯) q), ⋯⟩ *
      ⟨(↑((MemLeftTransversals.toEquiv ⋯) q))⁻¹ * ↑((MemLeftTransversals.toEquiv ⋯) q), ⋯⟩ =
    ⟨(↑((MemLeftTransversals.toEquiv ⋯) q))⁻¹ * ↑((MemLeftTransversals.toEquiv ⋯) q), ⋯⟩
state_after: no goals
Theorem: invOf_neg
File: Mathlib/Algebra/Ring/Invertible.lean

tactic: simp
state_before: α : Type u
inst✝³ : Monoid α
inst✝² : HasDistribNeg α
a : α
inst✝¹ : Invertible a
inst✝ : Invertible (-a)
⊢ -a * -⅟a = 1
state_after: no goals
Theorem: IsCompact.mem_inf_nhdsSet_of_forall
File: Mathlib/Topology/Compactness/Compact.lean

tactic: simpa using hs
state_before: X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s✝ t K : Set X
l : Filter X
s : Set X
hK : IsCompact K
hs : ∀ y ∈ K, s ∈ l ⊓ 𝓝 y
⊢ s ∈ ⨆ x ∈ K, l ⊓ 𝓝 x
state_after: no goals
Theorem: CategoryTheory.exact_epi_comp
File: Mathlib/Algebra/Homology/Exact.lean

tactic: refine ⟨by simp [hgh.w], ?_⟩
state_before: V : Type u
inst✝⁴ : Category.{v, u} V
inst✝³ : HasImages V
A B C D : V
f : A ⟶ B
g : B ⟶ C
h : C ⟶ D
inst✝² : HasZeroMorphisms V
inst✝¹ : HasEqualizers V
hgh : Exact g h
inst✝ : Epi f
⊢ Exact (f ≫ g) h
state_after: V : Type u
inst✝⁴ : Category.{v, u} V
inst✝³ : HasImages V
A B C D : V
f : A ⟶ B
g : B ⟶ C
h : C ⟶ D
inst✝² : HasZeroMorphisms V
inst✝¹ : HasEqualizers V
hgh : Exact g h
inst✝ : Epi f
⊢ Epi (imageToKernel (f ≫ g) h ⋯)

tactic: rw [imageToKernel_comp_left]
state_before: V : Type u
inst✝⁴ : Category.{v, u} V
inst✝³ : HasImages V
A B C D : V
f : A ⟶ B
g : B ⟶ C
h : C ⟶ D
inst✝² : HasZeroMorphisms V
inst✝¹ : HasEqualizers V
hgh : Exact g h
inst✝ : Epi f
⊢ Epi (imageToKernel (f ≫ g) h ⋯)
state_after: V : Type u
inst✝⁴ : Category.{v, u} V
inst✝³ : HasImages V
A B C D : V
f : A ⟶ B
g : B ⟶ C
h : C ⟶ D
inst✝² : HasZeroMorphisms V
inst✝¹ : HasEqualizers V
hgh : Exact g h
inst✝ : Epi f
⊢ Epi ((imageSubobject (f ≫ g)).ofLE (imageSubobject g) ⋯ ≫ imageToKernel g h ?w)

case w
V : Type u
inst✝⁴ : Category.{v, u} V
inst✝³ : HasImages V
A B C D : V
f : A ⟶ B
g : B ⟶ C
h : C ⟶ D
inst✝² : HasZeroMorphisms V
inst✝¹ : HasEqualizers V
hgh : Exact g h
inst✝ : Epi f
⊢ g ≫ h = 0

tactic: simp [hgh.w]
state_before: V : Type u
inst✝⁴ : Category.{v, u} V
inst✝³ : HasImages V
A B C D : V
f : A ⟶ B
g : B ⟶ C
h : C ⟶ D
inst✝² : HasZeroMorphisms V
inst✝¹ : HasEqualizers V
hgh : Exact g h
inst✝ : Epi f
⊢ (f ≫ g) ≫ h = 0
state_after: no goals

tactic: haveI := hgh.epi
state_before: V : Type u
inst✝⁴ : Category.{v, u} V
inst✝³ : HasImages V
A B C D : V
f : A ⟶ B
g : B ⟶ C
h : C ⟶ D
inst✝² : HasZeroMorphisms V
inst✝¹ : HasEqualizers V
hgh : Exact g h
inst✝ : Epi f
⊢ Epi ((imageSubobject (f ≫ g)).ofLE (imageSubobject g) ⋯ ≫ imageToKernel g h ?w)
state_after: V : Type u
inst✝⁴ : Category.{v, u} V
inst✝³ : HasImages V
A B C D : V
f : A ⟶ B
g : B ⟶ C
h : C ⟶ D
inst✝² : HasZeroMorphisms V
inst✝¹ : HasEqualizers V
hgh : Exact g h
inst✝ : Epi f
this : Epi (imageToKernel g h ⋯)
⊢ Epi ((imageSubobject (f ≫ g)).ofLE (imageSubobject g) ⋯ ≫ imageToKernel g h ?w)

tactic: infer_instance
state_before: V : Type u
inst✝⁴ : Category.{v, u} V
inst✝³ : HasImages V
A B C D : V
f : A ⟶ B
g : B ⟶ C
h : C ⟶ D
inst✝² : HasZeroMorphisms V
inst✝¹ : HasEqualizers V
hgh : Exact g h
inst✝ : Epi f
this : Epi (imageToKernel g h ⋯)
⊢ Epi ((imageSubobject (f ≫ g)).ofLE (imageSubobject g) ⋯ ≫ imageToKernel g h ?w)
state_after: no goals
Theorem: ContinuousLinearMap.sSup_closed_unit_ball_eq_norm
File: Mathlib/Analysis/NormedSpace/OperatorNorm/NNNorm.lean

tactic: simpa only [NNReal.coe_sSup, Set.image_image] using
  NNReal.coe_inj.2 f.sSup_closed_unit_ball_eq_nnnorm
state_before: 𝕜✝ : Type u_1
𝕜₂✝ : Type u_2
𝕜₃ : Type u_3
E✝ : Type u_4
Eₗ : Type u_5
F✝ : Type u_6
Fₗ : Type u_7
G : Type u_8
Gₗ : Type u_9
𝓕 : Type u_10
inst✝²⁴ : SeminormedAddCommGroup E✝
inst✝²³ : SeminormedAddCommGroup Eₗ
inst✝²² : SeminormedAddCommGroup F✝
inst✝²¹ : SeminormedAddCommGroup Fₗ
inst✝²⁰ : SeminormedAddCommGroup G
inst✝¹⁹ : SeminormedAddCommGroup Gₗ
inst✝¹⁸ : NontriviallyNormedField 𝕜✝
inst✝¹⁷ : NontriviallyNormedField 𝕜₂✝
inst✝¹⁶ : NontriviallyNormedField 𝕜₃
inst✝¹⁵ : NormedSpace 𝕜✝ E✝
inst✝¹⁴ : NormedSpace 𝕜✝ Eₗ
inst✝¹³ : NormedSpace 𝕜₂✝ F✝
inst✝¹² : NormedSpace 𝕜✝ Fₗ
inst✝¹¹ : NormedSpace 𝕜₃ G
inst✝¹⁰ : NormedSpace 𝕜✝ Gₗ
σ₁₂✝ : 𝕜✝ →+* 𝕜₂✝
σ₂₃ : 𝕜₂✝ →+* 𝕜₃
σ₁₃ : 𝕜✝ →+* 𝕜₃
inst✝⁹ : RingHomCompTriple σ₁₂✝ σ₂₃ σ₁₃
inst✝⁸ : FunLike 𝓕 E✝ F✝
inst✝⁷ : RingHomIsometric σ₁₂✝
𝕜 : Type u_11
𝕜₂ : Type u_12
E : Type u_13
F : Type u_14
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : SeminormedAddCommGroup F
inst✝⁴ : DenselyNormedField 𝕜
inst✝³ : NontriviallyNormedField 𝕜₂
σ₁₂ : 𝕜 →+* 𝕜₂
inst✝² : NormedSpace 𝕜 E
inst✝¹ : NormedSpace 𝕜₂ F
inst✝ : RingHomIsometric σ₁₂
f : E →SL[σ₁₂] F
⊢ sSup ((fun x => ‖f x‖) '' closedBall 0 1) = ‖f‖
state_after: no goals
Theorem: Set.iUnion_eq_univ_iff
File: Mathlib/Data/Set/Lattice.lean

tactic: simp only [eq_univ_iff_forall, mem_iUnion]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
f : ι → Set α
⊢ ⋃ i, f i = univ ↔ ∀ (x : α), ∃ i, x ∈ f i
state_after: no goals
Theorem: CategoryTheory.MorphismProperty.map_respectsIso
File: Mathlib/CategoryTheory/MorphismProperty/Basic.lean

tactic: apply RespectsIso.of_respects_arrow_iso
state_before: C : Type u
inst✝¹ : Category.{v, u} C
D : Type u_1
inst✝ : Category.{u_2, u_1} D
P : MorphismProperty C
F : C ⥤ D
⊢ (P.map F).RespectsIso
state_after: case hP
C : Type u
inst✝¹ : Category.{v, u} C
D : Type u_1
inst✝ : Category.{u_2, u_1} D
P : MorphismProperty C
F : C ⥤ D
⊢ ∀ (f g : Arrow D), (f ≅ g) → P.map F f.hom → P.map F g.hom

tactic: intro f g e ⟨X', Y', f', hf', ⟨e'⟩⟩
state_before: case hP
C : Type u
inst✝¹ : Category.{v, u} C
D : Type u_1
inst✝ : Category.{u_2, u_1} D
P : MorphismProperty C
F : C ⥤ D
⊢ ∀ (f g : Arrow D), (f ≅ g) → P.map F f.hom → P.map F g.hom
state_after: case hP
C : Type u
inst✝¹ : Category.{v, u} C
D : Type u_1
inst✝ : Category.{u_2, u_1} D
P : MorphismProperty C
F : C ⥤ D
f g : Arrow D
e : f ≅ g
X' Y' : C
f' : X' ⟶ Y'
hf' : P f'
e' : Arrow.mk (F.map f') ≅ Arrow.mk f.hom
⊢ P.map F g.hom

tactic: exact ⟨X', Y', f', hf', ⟨e' ≪≫ e⟩⟩
state_before: case hP
C : Type u
inst✝¹ : Category.{v, u} C
D : Type u_1
inst✝ : Category.{u_2, u_1} D
P : MorphismProperty C
F : C ⥤ D
f g : Arrow D
e : f ≅ g
X' Y' : C
f' : X' ⟶ Y'
hf' : P f'
e' : Arrow.mk (F.map f') ≅ Arrow.mk f.hom
⊢ P.map F g.hom
state_after: no goals
Theorem: List.neg_one_mem_of_prod_eq_neg_one
File: Mathlib/Algebra/BigOperators/Group/List.lean

tactic: obtain ⟨x, h₁, h₂⟩ := exists_mem_ne_one_of_prod_ne_one (ne_of_eq_of_ne h (by decide))
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
l : List ℤ
h : l.prod = -1
⊢ -1 ∈ l
state_after: case intro.intro
ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
l : List ℤ
h : l.prod = -1
x : ℤ
h₁ : x ∈ l
h₂ : x ≠ 1
⊢ -1 ∈ l

tactic: exact Or.resolve_left
  (Int.isUnit_iff.mp (prod_isUnit_iff.mp
    (h.symm ▸ ⟨⟨-1, -1, by decide, by decide⟩, rfl⟩ : IsUnit l.prod) x h₁)) h₂ ▸ h₁
state_before: case intro.intro
ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
l : List ℤ
h : l.prod = -1
x : ℤ
h₁ : x ∈ l
h₂ : x ≠ 1
⊢ -1 ∈ l
state_after: no goals

tactic: decide
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
l : List ℤ
h : l.prod = -1
⊢ -1 ≠ 1
state_after: no goals

tactic: decide
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
l : List ℤ
h : l.prod = -1
x : ℤ
h₁ : x ∈ l
h₂ : x ≠ 1
⊢ -1 * -1 = 1
state_after: no goals
Theorem: WithBot.map₂_coe_right
File: Mathlib/Order/WithBot.lean

tactic: cases a <;> rfl
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
a✝ b✝ : α
f : α → β → γ
a : WithBot α
b : β
⊢ map₂ f a ↑b = map (fun x => f x b) a
state_after: no goals
Theorem: Set.Iio_union_Ico
File: Mathlib/Order/Interval/Set/Basic.lean

tactic: rcases le_total c d with hcd | hcd <;> simp [hcd] at h
state_before: α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
h : min c d ≤ b
⊢ Iio b ∪ Ico c d = Iio (max b d)
state_after: case inl
α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
hcd : c ≤ d
h : c ≤ b
⊢ Iio b ∪ Ico c d = Iio (max b d)

case inr
α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
hcd : d ≤ c
h : d ≤ b
⊢ Iio b ∪ Ico c d = Iio (max b d)

tactic: exact Iio_union_Ico' h
state_before: case inl
α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
hcd : c ≤ d
h : c ≤ b
⊢ Iio b ∪ Ico c d = Iio (max b d)
state_after: no goals

tactic: simp [*]
state_before: case inr
α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
hcd : d ≤ c
h : d ≤ b
⊢ Iio b ∪ Ico c d = Iio (max b d)
state_after: no goals
Theorem: Nat.one_lt_iff_ne_zero_and_ne_one
File: Mathlib/Data/Nat/Defs.lean

tactic: decide
state_before: a b c d m n k : ℕ
p q : ℕ → Prop
⊢ 1 < 0 ↔ 0 ≠ 0 ∧ 0 ≠ 1
state_after: no goals

tactic: decide
state_before: a b c d m n k : ℕ
p q : ℕ → Prop
⊢ 1 < 1 ↔ 1 ≠ 0 ∧ 1 ≠ 1
state_after: no goals

tactic: omega
state_before: a b c d m n✝ k : ℕ
p q : ℕ → Prop
n : ℕ
⊢ 1 < n + 2 ↔ n + 2 ≠ 0 ∧ n + 2 ≠ 1
state_after: no goals
Theorem: SemidirectProduct.mk_eq_inl_mul_inr
File: Mathlib/GroupTheory/SemidirectProduct.lean

tactic: ext <;> simp
state_before: N : Type u_1
G : Type u_2
H : Type u_3
inst✝² : Group N
inst✝¹ : Group G
inst✝ : Group H
φ : G →* MulAut N
g : G
n : N
⊢ { left := n, right := g } = inl n * inr g
state_after: no goals
Theorem: Fin.le_of_castSucc_lt_of_succ_lt
File: Mathlib/Data/Fin/Basic.lean

tactic: simp [Fin.lt_def, -val_fin_lt] at *
state_before: n m : ℕ
a b : Fin (n + 1)
i : Fin n
hl : i.castSucc < a
hu : b < i.succ
⊢ b < a
state_after: n m : ℕ
a b : Fin (n + 1)
i : Fin n
hl : ↑i < ↑a
hu : ↑b < ↑i + 1
⊢ ↑b < ↑a

tactic: omega
state_before: n m : ℕ
a b : Fin (n + 1)
i : Fin n
hl : ↑i < ↑a
hu : ↑b < ↑i + 1
⊢ ↑b < ↑a
state_after: no goals
Theorem: Set.Iio_subset_Iic_iff
File: Mathlib/Order/Interval/Set/Basic.lean

tactic: rw [← diff_eq_empty, Iio_diff_Iic, Ioo_eq_empty_iff, not_lt]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
inst✝ : DenselyOrdered α
⊢ Iio a ⊆ Iic b ↔ a ≤ b
state_after: no goals
Theorem: DFinsupp.mapRange_neLocus_eq
File: Mathlib/Data/DFinsupp/NeLocus.lean

tactic: ext a
state_before: α : Type u_1
N : α → Type u_2
inst✝⁵ : DecidableEq α
M : α → Type u_3
P : α → Type u_4
inst✝⁴ : (a : α) → Zero (N a)
inst✝³ : (a : α) → Zero (M a)
inst✝² : (a : α) → Zero (P a)
inst✝¹ : (a : α) → DecidableEq (N a)
inst✝ : (a : α) → DecidableEq (M a)
f g : Π₀ (a : α), N a
F : (a : α) → N a → M a
F0 : ∀ (a : α), F a 0 = 0
hF : ∀ (a : α), Function.Injective (F a)
⊢ (mapRange F F0 f).neLocus (mapRange F F0 g) = f.neLocus g
state_after: case a
α : Type u_1
N : α → Type u_2
inst✝⁵ : DecidableEq α
M : α → Type u_3
P : α → Type u_4
inst✝⁴ : (a : α) → Zero (N a)
inst✝³ : (a : α) → Zero (M a)
inst✝² : (a : α) → Zero (P a)
inst✝¹ : (a : α) → DecidableEq (N a)
inst✝ : (a : α) → DecidableEq (M a)
f g : Π₀ (a : α), N a
F : (a : α) → N a → M a
F0 : ∀ (a : α), F a 0 = 0
hF : ∀ (a : α), Function.Injective (F a)
a : α
⊢ a ∈ (mapRange F F0 f).neLocus (mapRange F F0 g) ↔ a ∈ f.neLocus g

tactic: simpa only [mem_neLocus] using (hF a).ne_iff
state_before: case a
α : Type u_1
N : α → Type u_2
inst✝⁵ : DecidableEq α
M : α → Type u_3
P : α → Type u_4
inst✝⁴ : (a : α) → Zero (N a)
inst✝³ : (a : α) → Zero (M a)
inst✝² : (a : α) → Zero (P a)
inst✝¹ : (a : α) → DecidableEq (N a)
inst✝ : (a : α) → DecidableEq (M a)
f g : Π₀ (a : α), N a
F : (a : α) → N a → M a
F0 : ∀ (a : α), F a 0 = 0
hF : ∀ (a : α), Function.Injective (F a)
a : α
⊢ a ∈ (mapRange F F0 f).neLocus (mapRange F F0 g) ↔ a ∈ f.neLocus g
state_after: no goals
Theorem: Hyperreal.infinitePos_iff_infinitesimal_inv_pos
File: Mathlib/Data/Real/Hyperreal.lean

tactic: convert hip r⁻¹
state_before: x : ℝ*
hip : x.InfinitePos
r : ℝ
hr : 0 < r
⊢ (↑r)⁻¹ < x
state_after: no goals
Theorem: IsTensorProduct.map_eq
File: Mathlib/RingTheory/IsTensorProduct.lean

tactic: delta IsTensorProduct.map
state_before: R : Type u_1
inst✝¹⁴ : CommSemiring R
M₁ : Type u_2
M₂ : Type u_3
M : Type u_4
M' : Type u_5
inst✝¹³ : AddCommMonoid M₁
inst✝¹² : AddCommMonoid M₂
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : AddCommMonoid M'
inst✝⁹ : Module R M₁
inst✝⁸ : Module R M₂
inst✝⁷ : Module R M
inst✝⁶ : Module R M'
f : M₁ →ₗ[R] M₂ →ₗ[R] M
N₁ : Type u_6
N₂ : Type u_7
N : Type u_8
inst✝⁵ : AddCommMonoid N₁
inst✝⁴ : AddCommMonoid N₂
inst✝³ : AddCommMonoid N
inst✝² : Module R N₁
inst✝¹ : Module R N₂
inst✝ : Module R N
g : N₁ →ₗ[R] N₂ →ₗ[R] N
hf : IsTensorProduct f
hg : IsTensorProduct g
i₁ : M₁ →ₗ[R] N₁
i₂ : M₂ →ₗ[R] N₂
x₁ : M₁
x₂ : M₂
⊢ (hf.map hg i₁ i₂) ((f x₁) x₂) = (g (i₁ x₁)) (i₂ x₂)
state_after: R : Type u_1
inst✝¹⁴ : CommSemiring R
M₁ : Type u_2
M₂ : Type u_3
M : Type u_4
M' : Type u_5
inst✝¹³ : AddCommMonoid M₁
inst✝¹² : AddCommMonoid M₂
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : AddCommMonoid M'
inst✝⁹ : Module R M₁
inst✝⁸ : Module R M₂
inst✝⁷ : Module R M
inst✝⁶ : Module R M'
f : M₁ →ₗ[R] M₂ →ₗ[R] M
N₁ : Type u_6
N₂ : Type u_7
N : Type u_8
inst✝⁵ : AddCommMonoid N₁
inst✝⁴ : AddCommMonoid N₂
inst✝³ : AddCommMonoid N
inst✝² : Module R N₁
inst✝¹ : Module R N₂
inst✝ : Module R N
g : N₁ →ₗ[R] N₂ →ₗ[R] N
hf : IsTensorProduct f
hg : IsTensorProduct g
i₁ : M₁ →ₗ[R] N₁
i₂ : M₂ →ₗ[R] N₂
x₁ : M₁
x₂ : M₂
⊢ (↑hg.equiv ∘ₗ TensorProduct.map i₁ i₂ ∘ₗ ↑hf.equiv.symm) ((f x₁) x₂) = (g (i₁ x₁)) (i₂ x₂)

tactic: simp
state_before: R : Type u_1
inst✝¹⁴ : CommSemiring R
M₁ : Type u_2
M₂ : Type u_3
M : Type u_4
M' : Type u_5
inst✝¹³ : AddCommMonoid M₁
inst✝¹² : AddCommMonoid M₂
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : AddCommMonoid M'
inst✝⁹ : Module R M₁
inst✝⁸ : Module R M₂
inst✝⁷ : Module R M
inst✝⁶ : Module R M'
f : M₁ →ₗ[R] M₂ →ₗ[R] M
N₁ : Type u_6
N₂ : Type u_7
N : Type u_8
inst✝⁵ : AddCommMonoid N₁
inst✝⁴ : AddCommMonoid N₂
inst✝³ : AddCommMonoid N
inst✝² : Module R N₁
inst✝¹ : Module R N₂
inst✝ : Module R N
g : N₁ →ₗ[R] N₂ →ₗ[R] N
hf : IsTensorProduct f
hg : IsTensorProduct g
i₁ : M₁ →ₗ[R] N₁
i₂ : M₂ →ₗ[R] N₂
x₁ : M₁
x₂ : M₂
⊢ (↑hg.equiv ∘ₗ TensorProduct.map i₁ i₂ ∘ₗ ↑hf.equiv.symm) ((f x₁) x₂) = (g (i₁ x₁)) (i₂ x₂)
state_after: no goals
Theorem: Mathlib.Meta.NormNum.isRat_rpow_neg
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: rwa [pb.out, Real.rpow_intCast]
state_before: a b : ℝ
nb : ℕ
num : ℤ
den : ℕ
pb : IsInt b (Int.negOfNat nb)
pe' : IsRat (a ^ Int.negOfNat nb) num den
⊢ IsRat (a ^ b) num den
state_after: no goals
Theorem: Module.nontrivial_dual_iff
File: Mathlib/LinearAlgebra/Dual.lean

tactic: rw [← not_iff_not, not_nontrivial_iff_subsingleton, not_nontrivial_iff_subsingleton,
  subsingleton_dual_iff]
state_before: K : Type uK
V : Type uV
inst✝³ : CommRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : Free K V
⊢ Nontrivial (Dual K V) ↔ Nontrivial V
state_after: no goals
Theorem: Real.sqrt_le_iff
File: Mathlib/Data/Real/Sqrt.lean

tactic: rw [← and_iff_right_of_imp fun h => (sqrt_nonneg x).trans h, and_congr_right_iff]
state_before: x y : ℝ
⊢ √x ≤ y ↔ 0 ≤ y ∧ x ≤ y ^ 2
state_after: x y : ℝ
⊢ 0 ≤ y → (√x ≤ y ↔ x ≤ y ^ 2)

tactic: exact sqrt_le_left
state_before: x y : ℝ
⊢ 0 ≤ y → (√x ≤ y ↔ x ≤ y ^ 2)
state_after: no goals
Theorem: SymAlg.sym_mul_self
File: Mathlib/Algebra/Symmetrized.lean

tactic: rw [sym_mul_sym, ← two_mul, invOf_mul_self_assoc]
state_before: α : Type u_1
inst✝¹ : Semiring α
inst✝ : Invertible 2
a : α
⊢ sym (a * a) = sym a * sym a
state_after: no goals
Theorem: Finset.prod_range_div_prod_range
File: Mathlib/Algebra/BigOperators/Intervals.lean

tactic: rw [← prod_Ico_eq_div f hnm]
state_before: α✝ : Type u_1
M : Type u_2
inst✝¹ : CommMonoid M
s₂ s₁ s : Finset α✝
a : α✝
g f✝ : α✝ → M
α : Type u_3
inst✝ : CommGroup α
f : ℕ → α
n m : ℕ
hnm : n ≤ m
⊢ (∏ k ∈ range m, f k) / ∏ k ∈ range n, f k = ∏ k ∈ filter (fun k => n ≤ k) (range m), f k
state_after: α✝ : Type u_1
M : Type u_2
inst✝¹ : CommMonoid M
s₂ s₁ s : Finset α✝
a : α✝
g f✝ : α✝ → M
α : Type u_3
inst✝ : CommGroup α
f : ℕ → α
n m : ℕ
hnm : n ≤ m
⊢ ∏ k ∈ Ico n m, f k = ∏ k ∈ filter (fun k => n ≤ k) (range m), f k

tactic: congr
state_before: α✝ : Type u_1
M : Type u_2
inst✝¹ : CommMonoid M
s₂ s₁ s : Finset α✝
a : α✝
g f✝ : α✝ → M
α : Type u_3
inst✝ : CommGroup α
f : ℕ → α
n m : ℕ
hnm : n ≤ m
⊢ ∏ k ∈ Ico n m, f k = ∏ k ∈ filter (fun k => n ≤ k) (range m), f k
state_after: case e_s
α✝ : Type u_1
M : Type u_2
inst✝¹ : CommMonoid M
s₂ s₁ s : Finset α✝
a : α✝
g f✝ : α✝ → M
α : Type u_3
inst✝ : CommGroup α
f : ℕ → α
n m : ℕ
hnm : n ≤ m
⊢ Ico n m = filter (fun k => n ≤ k) (range m)

tactic: apply Finset.ext
state_before: case e_s
α✝ : Type u_1
M : Type u_2
inst✝¹ : CommMonoid M
s₂ s₁ s : Finset α✝
a : α✝
g f✝ : α✝ → M
α : Type u_3
inst✝ : CommGroup α
f : ℕ → α
n m : ℕ
hnm : n ≤ m
⊢ Ico n m = filter (fun k => n ≤ k) (range m)
state_after: case e_s.a
α✝ : Type u_1
M : Type u_2
inst✝¹ : CommMonoid M
s₂ s₁ s : Finset α✝
a : α✝
g f✝ : α✝ → M
α : Type u_3
inst✝ : CommGroup α
f : ℕ → α
n m : ℕ
hnm : n ≤ m
⊢ ∀ (a : ℕ), a ∈ Ico n m ↔ a ∈ filter (fun k => n ≤ k) (range m)

tactic: simp only [mem_Ico, mem_filter, mem_range, *]
state_before: case e_s.a
α✝ : Type u_1
M : Type u_2
inst✝¹ : CommMonoid M
s₂ s₁ s : Finset α✝
a : α✝
g f✝ : α✝ → M
α : Type u_3
inst✝ : CommGroup α
f : ℕ → α
n m : ℕ
hnm : n ≤ m
⊢ ∀ (a : ℕ), a ∈ Ico n m ↔ a ∈ filter (fun k => n ≤ k) (range m)
state_after: case e_s.a
α✝ : Type u_1
M : Type u_2
inst✝¹ : CommMonoid M
s₂ s₁ s : Finset α✝
a : α✝
g f✝ : α✝ → M
α : Type u_3
inst✝ : CommGroup α
f : ℕ → α
n m : ℕ
hnm : n ≤ m
⊢ ∀ (a : ℕ), n ≤ a ∧ a < m ↔ a < m ∧ n ≤ a

tactic: tauto
state_before: case e_s.a
α✝ : Type u_1
M : Type u_2
inst✝¹ : CommMonoid M
s₂ s₁ s : Finset α✝
a : α✝
g f✝ : α✝ → M
α : Type u_3
inst✝ : CommGroup α
f : ℕ → α
n m : ℕ
hnm : n ≤ m
⊢ ∀ (a : ℕ), n ≤ a ∧ a < m ↔ a < m ∧ n ≤ a
state_after: no goals
Theorem: Affine.Triangle.orthocenter_eq_smul_vsub_vadd_circumcenter
File: Mathlib/Geometry/Euclidean/MongePoint.lean

tactic: rw [orthocenter_eq_mongePoint, mongePoint_eq_smul_vsub_vadd_circumcenter]
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
t : Triangle ℝ P
⊢ t.orthocenter = 3 • (centroid ℝ univ t.points -ᵥ circumcenter t) +ᵥ circumcenter t
state_after: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
t : Triangle ℝ P
⊢ (↑(2 + 1) / ↑(2 - 1)) • (centroid ℝ univ t.points -ᵥ circumcenter t) +ᵥ circumcenter t =
    3 • (centroid ℝ univ t.points -ᵥ circumcenter t) +ᵥ circumcenter t

tactic: norm_num
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
t : Triangle ℝ P
⊢ (↑(2 + 1) / ↑(2 - 1)) • (centroid ℝ univ t.points -ᵥ circumcenter t) +ᵥ circumcenter t =
    3 • (centroid ℝ univ t.points -ᵥ circumcenter t) +ᵥ circumcenter t
state_after: no goals
Theorem: Filter.blimsup_eq_limsup_subtype
File: Mathlib/Order/LiminfLimsup.lean

tactic: rw [blimsup_eq_limsup, limsup, limsup, ← map_map, map_comap_setCoe_val]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
inst✝ : ConditionallyCompleteLattice α
f : Filter β
u : β → α
p : β → Prop
⊢ blimsup u f p = limsup (u ∘ Subtype.val) (comap Subtype.val f)
state_after: no goals
Theorem: Localization.add_mk_self
File: Mathlib/RingTheory/Localization/Basic.lean

tactic: rw [add_mk, mk_eq_mk_iff, r_eq_r']
state_before: R : Type u_1
inst✝³ : CommSemiring R
M : Submonoid R
S : Type u_2
inst✝² : CommSemiring S
inst✝¹ : Algebra R S
P : Type u_3
inst✝ : CommSemiring P
a : R
b : ↥M
c : R
⊢ mk a b + mk c b = mk (a + c) b
state_after: R : Type u_1
inst✝³ : CommSemiring R
M : Submonoid R
S : Type u_2
inst✝² : CommSemiring S
inst✝¹ : Algebra R S
P : Type u_3
inst✝ : CommSemiring P
a : R
b : ↥M
c : R
⊢ (r' M) (↑b * c + ↑b * a, b * b) (a + c, b)

tactic: refine (r' M).symm ⟨1, ?_⟩
state_before: R : Type u_1
inst✝³ : CommSemiring R
M : Submonoid R
S : Type u_2
inst✝² : CommSemiring S
inst✝¹ : Algebra R S
P : Type u_3
inst✝ : CommSemiring P
a : R
b : ↥M
c : R
⊢ (r' M) (↑b * c + ↑b * a, b * b) (a + c, b)
state_after: R : Type u_1
inst✝³ : CommSemiring R
M : Submonoid R
S : Type u_2
inst✝² : CommSemiring S
inst✝¹ : Algebra R S
P : Type u_3
inst✝ : CommSemiring P
a : R
b : ↥M
c : R
⊢ ↑1 * (↑(↑b * c + ↑b * a, b * b).2 * (a + c, b).1) = ↑1 * (↑(a + c, b).2 * (↑b * c + ↑b * a, b * b).1)

tactic: simp only [Submonoid.coe_one, Submonoid.coe_mul]
state_before: R : Type u_1
inst✝³ : CommSemiring R
M : Submonoid R
S : Type u_2
inst✝² : CommSemiring S
inst✝¹ : Algebra R S
P : Type u_3
inst✝ : CommSemiring P
a : R
b : ↥M
c : R
⊢ ↑1 * (↑(↑b * c + ↑b * a, b * b).2 * (a + c, b).1) = ↑1 * (↑(a + c, b).2 * (↑b * c + ↑b * a, b * b).1)
state_after: R : Type u_1
inst✝³ : CommSemiring R
M : Submonoid R
S : Type u_2
inst✝² : CommSemiring S
inst✝¹ : Algebra R S
P : Type u_3
inst✝ : CommSemiring P
a : R
b : ↥M
c : R
⊢ 1 * (↑b * ↑b * (a + c)) = 1 * (↑b * (↑b * c + ↑b * a))

tactic: ring
state_before: R : Type u_1
inst✝³ : CommSemiring R
M : Submonoid R
S : Type u_2
inst✝² : CommSemiring S
inst✝¹ : Algebra R S
P : Type u_3
inst✝ : CommSemiring P
a : R
b : ↥M
c : R
⊢ 1 * (↑b * ↑b * (a + c)) = 1 * (↑b * (↑b * c + ↑b * a))
state_after: no goals