1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: WeierstrassCurve.Jacobian.addZ_of_Z_eq_zero_right
File: Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian.lean

tactic: rw [addZ, hQz]
state_before: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P Q : Fin 3 → R
hQz : Q z = 0
⊢ addZ P Q = -(Q x * P z) * P z
state_after: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P Q : Fin 3 → R
hQz : Q z = 0
⊢ P x * 0 ^ 2 - Q x * P z ^ 2 = -(Q x * P z) * P z

tactic: ring1
state_before: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P Q : Fin 3 → R
hQz : Q z = 0
⊢ P x * 0 ^ 2 - Q x * P z ^ 2 = -(Q x * P z) * P z
state_after: no goals
Theorem: BiheytingHom.cancel_left
File: Mathlib/Order/Heyting/Hom.lean

tactic: rw [← comp_apply, h, comp_apply]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
inst✝⁴ : FunLike F α β
inst✝³ : BiheytingAlgebra α
inst✝² : BiheytingAlgebra β
inst✝¹ : BiheytingAlgebra γ
inst✝ : BiheytingAlgebra δ
f f₁ f₂ : BiheytingHom α β
g g₁ g₂ : BiheytingHom β γ
hg : Injective ⇑g
h : g.comp f₁ = g.comp f₂
a : α
⊢ g (f₁ a) = g (f₂ a)
state_after: no goals
Theorem: Finset.prod_eraseNone
File: Mathlib/Algebra/BigOperators/Option.lean

tactic: classical calc
    ∏ x ∈ eraseNone s, f x = ∏ x ∈ (eraseNone s).map Embedding.some, Option.elim' 1 f x :=
      (prod_map (eraseNone s) Embedding.some <| Option.elim' 1 f).symm
    _ = ∏ x ∈ s.erase none, Option.elim' 1 f x := by rw [map_some_eraseNone]
    _ = ∏ x ∈ s, Option.elim' 1 f x := prod_erase _ rfl
state_before: α : Type u_1
M : Type u_2
inst✝ : CommMonoid M
f : α → M
s : Finset (Option α)
⊢ ∏ x ∈ eraseNone s, f x = ∏ x ∈ s, Option.elim' 1 f x
state_after: no goals

tactic: calc
∏ x ∈ eraseNone s, f x = ∏ x ∈ (eraseNone s).map Embedding.some, Option.elim' 1 f x :=
(prod_map (eraseNone s) Embedding.some <| Option.elim' 1 f).symm
_ = ∏ x ∈ s.erase none, Option.elim' 1 f x := by rw [map_some_eraseNone]
_ = ∏ x ∈ s, Option.elim' 1 f x := prod_erase _ rfl
state_before: α : Type u_1
M : Type u_2
inst✝ : CommMonoid M
f : α → M
s : Finset (Option α)
⊢ ∏ x ∈ eraseNone s, f x = ∏ x ∈ s, Option.elim' 1 f x
state_after: no goals

tactic: rw [map_some_eraseNone]
state_before: α : Type u_1
M : Type u_2
inst✝ : CommMonoid M
f : α → M
s : Finset (Option α)
⊢ ∏ x ∈ map Embedding.some (eraseNone s), Option.elim' 1 f x = ∏ x ∈ s.erase none, Option.elim' 1 f x
state_after: no goals
Theorem: Real.rpow_zero_pos
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: simp
state_before: x✝ y z x : ℝ
⊢ 0 < x ^ 0
state_after: no goals
Theorem: SimpleGraph.Hom.mapEdgeSet.injective
File: Mathlib/Combinatorics/SimpleGraph/Maps.lean

tactic: rintro ⟨e₁, h₁⟩ ⟨e₂, h₂⟩
state_before: V : Type u_1
W : Type u_2
X : Type u_3
G : SimpleGraph V
G' : SimpleGraph W
u v : V
G₁ G₂ : SimpleGraph V
H : SimpleGraph W
f : G →g G'
hinj : Injective ⇑f
⊢ Injective f.mapEdgeSet
state_after: case mk.mk
V : Type u_1
W : Type u_2
X : Type u_3
G : SimpleGraph V
G' : SimpleGraph W
u v : V
G₁ G₂ : SimpleGraph V
H : SimpleGraph W
f : G →g G'
hinj : Injective ⇑f
e₁ : Sym2 V
h₁ : e₁ ∈ G.edgeSet
e₂ : Sym2 V
h₂ : e₂ ∈ G.edgeSet
⊢ f.mapEdgeSet ⟨e₁, h₁⟩ = f.mapEdgeSet ⟨e₂, h₂⟩ → ⟨e₁, h₁⟩ = ⟨e₂, h₂⟩

tactic: dsimp [Hom.mapEdgeSet]
state_before: case mk.mk
V : Type u_1
W : Type u_2
X : Type u_3
G : SimpleGraph V
G' : SimpleGraph W
u v : V
G₁ G₂ : SimpleGraph V
H : SimpleGraph W
f : G →g G'
hinj : Injective ⇑f
e₁ : Sym2 V
h₁ : e₁ ∈ G.edgeSet
e₂ : Sym2 V
h₂ : e₂ ∈ G.edgeSet
⊢ f.mapEdgeSet ⟨e₁, h₁⟩ = f.mapEdgeSet ⟨e₂, h₂⟩ → ⟨e₁, h₁⟩ = ⟨e₂, h₂⟩
state_after: case mk.mk
V : Type u_1
W : Type u_2
X : Type u_3
G : SimpleGraph V
G' : SimpleGraph W
u v : V
G₁ G₂ : SimpleGraph V
H : SimpleGraph W
f : G →g G'
hinj : Injective ⇑f
e₁ : Sym2 V
h₁ : e₁ ∈ G.edgeSet
e₂ : Sym2 V
h₂ : e₂ ∈ G.edgeSet
⊢ ⟨Sym2.map (⇑f) e₁, ⋯⟩ = ⟨Sym2.map (⇑f) e₂, ⋯⟩ → ⟨e₁, h₁⟩ = ⟨e₂, h₂⟩

tactic: repeat rw [Subtype.mk_eq_mk]
state_before: case mk.mk
V : Type u_1
W : Type u_2
X : Type u_3
G : SimpleGraph V
G' : SimpleGraph W
u v : V
G₁ G₂ : SimpleGraph V
H : SimpleGraph W
f : G →g G'
hinj : Injective ⇑f
e₁ : Sym2 V
h₁ : e₁ ∈ G.edgeSet
e₂ : Sym2 V
h₂ : e₂ ∈ G.edgeSet
⊢ ⟨Sym2.map (⇑f) e₁, ⋯⟩ = ⟨Sym2.map (⇑f) e₂, ⋯⟩ → ⟨e₁, h₁⟩ = ⟨e₂, h₂⟩
state_after: case mk.mk
V : Type u_1
W : Type u_2
X : Type u_3
G : SimpleGraph V
G' : SimpleGraph W
u v : V
G₁ G₂ : SimpleGraph V
H : SimpleGraph W
f : G →g G'
hinj : Injective ⇑f
e₁ : Sym2 V
h₁ : e₁ ∈ G.edgeSet
e₂ : Sym2 V
h₂ : e₂ ∈ G.edgeSet
⊢ Sym2.map (⇑f) e₁ = Sym2.map (⇑f) e₂ → e₁ = e₂

tactic: apply Sym2.map.injective hinj
state_before: case mk.mk
V : Type u_1
W : Type u_2
X : Type u_3
G : SimpleGraph V
G' : SimpleGraph W
u v : V
G₁ G₂ : SimpleGraph V
H : SimpleGraph W
f : G →g G'
hinj : Injective ⇑f
e₁ : Sym2 V
h₁ : e₁ ∈ G.edgeSet
e₂ : Sym2 V
h₂ : e₂ ∈ G.edgeSet
⊢ Sym2.map (⇑f) e₁ = Sym2.map (⇑f) e₂ → e₁ = e₂
state_after: no goals

tactic: rw [Subtype.mk_eq_mk]
state_before: case mk.mk
V : Type u_1
W : Type u_2
X : Type u_3
G : SimpleGraph V
G' : SimpleGraph W
u v : V
G₁ G₂ : SimpleGraph V
H : SimpleGraph W
f : G →g G'
hinj : Injective ⇑f
e₁ : Sym2 V
h₁ : e₁ ∈ G.edgeSet
e₂ : Sym2 V
h₂ : e₂ ∈ G.edgeSet
⊢ Sym2.map (⇑f) e₁ = Sym2.map (⇑f) e₂ → ⟨e₁, h₁⟩ = ⟨e₂, h₂⟩
state_after: case mk.mk
V : Type u_1
W : Type u_2
X : Type u_3
G : SimpleGraph V
G' : SimpleGraph W
u v : V
G₁ G₂ : SimpleGraph V
H : SimpleGraph W
f : G →g G'
hinj : Injective ⇑f
e₁ : Sym2 V
h₁ : e₁ ∈ G.edgeSet
e₂ : Sym2 V
h₂ : e₂ ∈ G.edgeSet
⊢ Sym2.map (⇑f) e₁ = Sym2.map (⇑f) e₂ → e₁ = e₂
Theorem: IsSelfAdjoint.star_iff
File: Mathlib/Algebra/Star/SelfAdjoint.lean

tactic: simpa only [IsSelfAdjoint, star_star] using eq_comm
state_before: R : Type u_1
A : Type u_2
inst✝ : InvolutiveStar R
x : R
⊢ IsSelfAdjoint (star x) ↔ IsSelfAdjoint x
state_after: no goals
Theorem: CategoryTheory.Limits.diagonalObjPullbackFstIso_hom_fst_fst
File: Mathlib/CategoryTheory/Limits/Shapes/Diagonal.lean

tactic: delta diagonalObjPullbackFstIso
state_before: C : Type u_1
inst✝⁵ : Category.{u_2, u_1} C
X✝ Y✝ Z✝ : C
inst✝⁴ : HasPullbacks C
S T : C
f✝ : X✝ ⟶ T
g✝ : Y✝ ⟶ T
i : T ⟶ S
inst✝³ : HasPullback i i
inst✝² : HasPullback f✝ g✝
inst✝¹ : HasPullback (f✝ ≫ i) (g✝ ≫ i)
inst✝ : HasPullback (diagonal i) (map (f✝ ≫ i) (g✝ ≫ i) i i f✝ g✝ (𝟙 S) ⋯ ⋯)
X Y Z : C
f : X ⟶ Z
g : Y ⟶ Z
⊢ (diagonalObjPullbackFstIso f g).hom ≫ fst ≫ fst = fst ≫ snd
state_after: C : Type u_1
inst✝⁵ : Category.{u_2, u_1} C
X✝ Y✝ Z✝ : C
inst✝⁴ : HasPullbacks C
S T : C
f✝ : X✝ ⟶ T
g✝ : Y✝ ⟶ T
i : T ⟶ S
inst✝³ : HasPullback i i
inst✝² : HasPullback f✝ g✝
inst✝¹ : HasPullback (f✝ ≫ i) (g✝ ≫ i)
inst✝ : HasPullback (diagonal i) (map (f✝ ≫ i) (g✝ ≫ i) i i f✝ g✝ (𝟙 S) ⋯ ⋯)
X Y Z : C
f : X ⟶ Z
g : Y ⟶ Z
⊢ (pullbackRightPullbackFstIso f g fst ≪≫
          congrHom ⋯ ⋯ ≪≫ pullbackAssoc f g g g ≪≫ pullbackSymmetry f (fst ≫ g) ≪≫ congrHom ⋯ ⋯).hom ≫
      fst ≫ fst =
    fst ≫ snd

tactic: simp
state_before: C : Type u_1
inst✝⁵ : Category.{u_2, u_1} C
X✝ Y✝ Z✝ : C
inst✝⁴ : HasPullbacks C
S T : C
f✝ : X✝ ⟶ T
g✝ : Y✝ ⟶ T
i : T ⟶ S
inst✝³ : HasPullback i i
inst✝² : HasPullback f✝ g✝
inst✝¹ : HasPullback (f✝ ≫ i) (g✝ ≫ i)
inst✝ : HasPullback (diagonal i) (map (f✝ ≫ i) (g✝ ≫ i) i i f✝ g✝ (𝟙 S) ⋯ ⋯)
X Y Z : C
f : X ⟶ Z
g : Y ⟶ Z
⊢ (pullbackRightPullbackFstIso f g fst ≪≫
          congrHom ⋯ ⋯ ≪≫ pullbackAssoc f g g g ≪≫ pullbackSymmetry f (fst ≫ g) ≪≫ congrHom ⋯ ⋯).hom ≫
      fst ≫ fst =
    fst ≫ snd
state_after: no goals
Theorem: WittVector.one_coeff_eq_of_pos
File: Mathlib/RingTheory/WittVector/Defs.lean

tactic: simp only [hn, wittOne_pos_eq_zero, AlgHom.map_zero]
state_before: p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝ : CommRing R
n : ℕ
hn : 0 < n
⊢ (aeval (Function.uncurry fun i => (![] i).coeff)) (wittOne p n) = 0
state_after: no goals
Theorem: List.getElem_set_of_ne
File: Mathlib/Data/List/Basic.lean

tactic: simpa using hj
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ l : List α
i j : ℕ
h : i ≠ j
a : α
hj : j < (l.set i a).length
⊢ j < l.length
state_after: no goals

tactic: rw [← Option.some_inj, ← List.getElem?_eq_getElem, List.getElem?_set_ne h,
  List.getElem?_eq_getElem]
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ l : List α
i j : ℕ
h : i ≠ j
a : α
hj : j < (l.set i a).length
⊢ (l.set i a)[j] = l[j]
state_after: no goals
Theorem: WeierstrassCurve.Affine.evalEval_baseChange_polynomial_X_Y
File: Mathlib/AlgebraicGeometry/EllipticCurve/Affine.lean

tactic: rw [baseChange, toAffine, map_polynomial, evalEval, eval_map, eval_C_X_eval₂_map_C_X]
state_before: R : Type u
inst✝¹ : CommRing R
W : Affine R
S : Type v
inst✝ : CommRing S
f : R →+* S
⊢ evalEval (C X) Y (baseChange W R[X][Y]).toAffine.polynomial = W.polynomial
state_after: no goals
Theorem: Batteries.RBSet.mem_iff_mem_toList
File: .lake/packages/batteries/Batteries/Data/RBMap/Lemmas.lean

tactic: simp [mem_toList]
state_before: α : Type u_1
cmp : α → α → Ordering
x : α
t : RBSet α cmp
⊢ (∃ y, y ∈ t.val ∧ cmp x y = Ordering.eq) ↔ ∃ y, y ∈ t.toList ∧ cmp x y = Ordering.eq
state_after: no goals
Theorem: EMetric.mem_closedBall'
File: Mathlib/Topology/EMetricSpace/Basic.lean

tactic: rw [edist_comm, mem_closedBall]
state_before: α : Type u
β : Type v
X : Type u_1
inst✝ : PseudoEMetricSpace α
x y z : α
ε ε₁ ε₂ : ℝ≥0∞
s t : Set α
⊢ y ∈ closedBall x ε ↔ edist x y ≤ ε
state_after: no goals
Theorem: Fin.neg_last
File: Mathlib/Algebra/Group/Fin.lean

tactic: simp [neg_eq_iff_add_eq_zero]
state_before: m n✝ n : ℕ
⊢ -last n = 1
state_after: no goals
Theorem: image_segment
File: Mathlib/Analysis/Convex/Segment.lean

tactic: simp_rw [segment_eq_image_lineMap, mem_image, exists_exists_and_eq_and, AffineMap.apply_lineMap]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
ι : Type u_5
π : ι → Type u_6
inst✝⁵ : OrderedRing 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : AddCommGroup F
inst✝² : AddCommGroup G
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
f : E →ᵃ[𝕜] F
a b : E
x : F
⊢ x ∈ ⇑f '' [a-[𝕜]b] ↔ x ∈ [f a-[𝕜]f b]
state_after: no goals
Theorem: Matrix.isAdjMatrix_compl
File: Mathlib/Combinatorics/SimpleGraph/AdjMatrix.lean

tactic: simp [h]
state_before: V : Type u_1
α : Type u_2
β : Type u_3
inst✝³ : DecidableEq α
inst✝² : DecidableEq V
A : Matrix V V α
inst✝¹ : Zero α
inst✝ : One α
h : A.IsSymm
⊢ A.compl.IsSymm
state_after: no goals
Theorem: Ordinal.familyOfBFamily'_enum
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: rwa [ho]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r✝ : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
ι : Type u
r : ι → ι → Prop
inst✝ : IsWellOrder ι r
o : Ordinal.{u}
ho : type r = o
f : (a : Ordinal.{u}) → a < o → α
i : Ordinal.{u}
hi : i < o
⊢ i < type r
state_after: no goals

tactic: simp only [familyOfBFamily', typein_enum]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r✝ : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
ι : Type u
r : ι → ι → Prop
inst✝ : IsWellOrder ι r
o : Ordinal.{u}
ho : type r = o
f : (a : Ordinal.{u}) → a < o → α
i : Ordinal.{u}
hi : i < o
⊢ familyOfBFamily' r ho f (enum r i ⋯) = f i hi
state_after: no goals
Theorem: Submodule.finrank_quotient_add_finrank
File: Mathlib/LinearAlgebra/FiniteDimensional.lean

tactic: have := rank_quotient_add_rank s
state_before: K : Type u
V : Type v
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
s : Submodule K V
⊢ finrank K (V ⧸ s) + finrank K ↥s = finrank K V
state_after: K : Type u
V : Type v
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
s : Submodule K V
this : Module.rank K (V ⧸ s) + Module.rank K ↥s = Module.rank K V
⊢ finrank K (V ⧸ s) + finrank K ↥s = finrank K V

tactic: rw [← finrank_eq_rank, ← finrank_eq_rank, ← finrank_eq_rank] at this
state_before: K : Type u
V : Type v
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
s : Submodule K V
this : Module.rank K (V ⧸ s) + Module.rank K ↥s = Module.rank K V
⊢ finrank K (V ⧸ s) + finrank K ↥s = finrank K V
state_after: K : Type u
V : Type v
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
s : Submodule K V
this : ↑(finrank K (V ⧸ s)) + ↑(finrank K ↥s) = ↑(finrank K V)
⊢ finrank K (V ⧸ s) + finrank K ↥s = finrank K V

tactic: exact mod_cast this
state_before: K : Type u
V : Type v
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
s : Submodule K V
this : ↑(finrank K (V ⧸ s)) + ↑(finrank K ↥s) = ↑(finrank K V)
⊢ finrank K (V ⧸ s) + finrank K ↥s = finrank K V
state_after: no goals
Theorem: subset_closure_inter_of_isPreirreducible_of_isOpen
File: Mathlib/Topology/Irreducible.lean

tactic: by_contra h'
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t S U : Set X
hS : IsPreirreducible S
hU : IsOpen U
h : (S ∩ U).Nonempty
⊢ S ⊆ closure (S ∩ U)
state_after: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t S U : Set X
hS : IsPreirreducible S
hU : IsOpen U
h : (S ∩ U).Nonempty
h' : ¬S ⊆ closure (S ∩ U)
⊢ False

tactic: obtain ⟨x, h₁, h₂, h₃⟩ :=
  hS _ (closure (S ∩ U))ᶜ hU isClosed_closure.isOpen_compl h (inter_compl_nonempty_iff.mpr h')
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t S U : Set X
hS : IsPreirreducible S
hU : IsOpen U
h : (S ∩ U).Nonempty
h' : ¬S ⊆ closure (S ∩ U)
⊢ False
state_after: case intro.intro.intro
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t S U : Set X
hS : IsPreirreducible S
hU : IsOpen U
h : (S ∩ U).Nonempty
h' : ¬S ⊆ closure (S ∩ U)
x : X
h₁ : x ∈ S
h₂ : x ∈ U
h₃ : x ∈ (closure (S ∩ U))ᶜ
⊢ False

tactic: exact h₃ (subset_closure ⟨h₁, h₂⟩)
state_before: case intro.intro.intro
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t S U : Set X
hS : IsPreirreducible S
hU : IsOpen U
h : (S ∩ U).Nonempty
h' : ¬S ⊆ closure (S ∩ U)
x : X
h₁ : x ∈ S
h₂ : x ∈ U
h₃ : x ∈ (closure (S ∩ U))ᶜ
⊢ False
state_after: no goals
Theorem: Polynomial.mem_nthRoots
File: Mathlib/Algebra/Polynomial/Roots.lean

tactic: rw [nthRoots, mem_roots (X_pow_sub_C_ne_zero hn a), IsRoot.def, eval_sub, eval_C, eval_pow,
  eval_X, sub_eq_zero]
state_before: R : Type u
S : Type v
T : Type w
a✝ b : R
n✝ : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p q : R[X]
n : ℕ
hn : 0 < n
a x : R
⊢ x ∈ nthRoots n a ↔ x ^ n = a
state_after: no goals
Theorem: Set.image_val_compl
File: Mathlib/Data/Set/Subset.lean

tactic: rw [compl_eq_univ_diff, image_val_diff, image_univ, Subtype.range_coe_subtype, setOf_mem_eq]
state_before: ι : Sort u_1
α : Type u_2
A B C : Set α
D E : Set ↑A
S : Set (Set α)
T : Set (Set ↑A)
s : ι → Set α
t : ι → Set ↑A
⊢ ↑Dᶜ = A \ ↑D
state_after: no goals
Theorem: MeasureTheory.zero_trim
File: Mathlib/MeasureTheory/Measure/Trim.lean

tactic: simp [Measure.trim, @OuterMeasure.toMeasure_zero _ m]
state_before: α : Type u_1
m m0 : MeasurableSpace α
μ : Measure α
s : Set α
hm : m ≤ m0
⊢ Measure.trim 0 hm = 0
state_after: no goals
Theorem: Finset.piecewise_cases
File: Mathlib/Data/Finset/Piecewise.lean

tactic: by_cases hi : i ∈ s <;> simpa [hi]
state_before: ι : Type u_1
π : ι → Sort u_2
s : Finset ι
f g : (i : ι) → π i
inst✝ : (j : ι) → Decidable (j ∈ s)
i : ι
p : π i → Prop
hf : p (f i)
hg : p (g i)
⊢ p (s.piecewise f g i)
state_after: no goals
Theorem: Polynomial.coeff_X_pow_mul
File: Mathlib/Algebra/Polynomial/Coeff.lean

tactic: rw [(commute_X_pow p n).eq, coeff_mul_X_pow]
state_before: R : Type u
S : Type v
a b : R
n✝ m : ℕ
inst✝ : Semiring R
p✝ q r p : R[X]
n d : ℕ
⊢ (X ^ n * p).coeff (d + n) = p.coeff d
state_after: no goals
Theorem: PiTensorProduct.mapL_coe
File: Mathlib/Analysis/NormedSpace/PiTensorProduct/InjectiveSeminorm.lean

tactic: ext
state_before: ι : Type uι
inst✝⁹ : Fintype ι
𝕜 : Type u𝕜
inst✝⁸ : NontriviallyNormedField 𝕜
E : ι → Type uE
inst✝⁷ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝⁶ : (i : ι) → NormedSpace 𝕜 (E i)
F : Type uF
inst✝⁵ : SeminormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
E' : ι → Type u_1
E'' : ι → Type u_2
inst✝³ : (i : ι) → SeminormedAddCommGroup (E' i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E' i)
inst✝¹ : (i : ι) → SeminormedAddCommGroup (E'' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (E'' i)
g : (i : ι) → E' i →L[𝕜] E'' i
f : (i : ι) → E i →L[𝕜] E' i
⊢ ↑(mapL f) = map fun i => ↑(f i)
state_after: case H.H
ι : Type uι
inst✝⁹ : Fintype ι
𝕜 : Type u𝕜
inst✝⁸ : NontriviallyNormedField 𝕜
E : ι → Type uE
inst✝⁷ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝⁶ : (i : ι) → NormedSpace 𝕜 (E i)
F : Type uF
inst✝⁵ : SeminormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
E' : ι → Type u_1
E'' : ι → Type u_2
inst✝³ : (i : ι) → SeminormedAddCommGroup (E' i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E' i)
inst✝¹ : (i : ι) → SeminormedAddCommGroup (E'' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (E'' i)
g : (i : ι) → E' i →L[𝕜] E'' i
f : (i : ι) → E i →L[𝕜] E' i
x✝ : (i : ι) → E i
⊢ ((↑(mapL f)).compMultilinearMap (tprod 𝕜)) x✝ = ((map fun i => ↑(f i)).compMultilinearMap (tprod 𝕜)) x✝

tactic: simp only [mapL, LinearMap.compMultilinearMap_apply, ContinuousLinearMap.coe_coe,
  liftIsometry_apply_apply, lift.tprod, ContinuousMultilinearMap.coe_coe,
  ContinuousMultilinearMap.compContinuousLinearMap_apply, tprodL_toFun, map_tprod]
state_before: case H.H
ι : Type uι
inst✝⁹ : Fintype ι
𝕜 : Type u𝕜
inst✝⁸ : NontriviallyNormedField 𝕜
E : ι → Type uE
inst✝⁷ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝⁶ : (i : ι) → NormedSpace 𝕜 (E i)
F : Type uF
inst✝⁵ : SeminormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
E' : ι → Type u_1
E'' : ι → Type u_2
inst✝³ : (i : ι) → SeminormedAddCommGroup (E' i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E' i)
inst✝¹ : (i : ι) → SeminormedAddCommGroup (E'' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (E'' i)
g : (i : ι) → E' i →L[𝕜] E'' i
f : (i : ι) → E i →L[𝕜] E' i
x✝ : (i : ι) → E i
⊢ ((↑(mapL f)).compMultilinearMap (tprod 𝕜)) x✝ = ((map fun i => ↑(f i)).compMultilinearMap (tprod 𝕜)) x✝
state_after: no goals
Theorem: LieModule.mem_posFittingComp
File: Mathlib/Algebra/Lie/Weights/Basic.lean

tactic: rfl
state_before: K : Type u_1
R : Type u_2
L : Type u_3
M : Type u_4
inst✝⁷ : CommRing R
inst✝⁶ : LieRing L
inst✝⁵ : LieAlgebra R L
inst✝⁴ : LieAlgebra.IsNilpotent R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
m : M
⊢ m ∈ posFittingComp R L M ↔ m ∈ ⨆ x, posFittingCompOf R M x
state_after: no goals
Theorem: differentiableAt_comp_neg_iff
File: Mathlib/Analysis/Calculus/Deriv/Add.lean

tactic: refine ⟨fun H ↦ H.comp a differentiable_neg.differentiableAt, fun H ↦ ?_⟩
state_before: 𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type v
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type w
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L : Filter 𝕜
a : 𝕜
⊢ DifferentiableAt 𝕜 f (-a) ↔ DifferentiableAt 𝕜 (fun x => f (-x)) a
state_after: 𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type v
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type w
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L : Filter 𝕜
a : 𝕜
H : DifferentiableAt 𝕜 (fun x => f (-x)) a
⊢ DifferentiableAt 𝕜 f (-a)

tactic: convert ((neg_neg a).symm ▸ H).comp (-a) differentiable_neg.differentiableAt
state_before: 𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type v
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type w
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L : Filter 𝕜
a : 𝕜
H : DifferentiableAt 𝕜 (fun x => f (-x)) a
⊢ DifferentiableAt 𝕜 f (-a)
state_after: case h.e'_9
𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type v
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type w
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L : Filter 𝕜
a : 𝕜
H : DifferentiableAt 𝕜 (fun x => f (-x)) a
⊢ f = (fun x => f (-x)) ∘ Neg.neg

tactic: ext
state_before: case h.e'_9
𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type v
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type w
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L : Filter 𝕜
a : 𝕜
H : DifferentiableAt 𝕜 (fun x => f (-x)) a
⊢ f = (fun x => f (-x)) ∘ Neg.neg
state_after: case h.e'_9.h
𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type v
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type w
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L : Filter 𝕜
a : 𝕜
H : DifferentiableAt 𝕜 (fun x => f (-x)) a
x✝ : 𝕜
⊢ f x✝ = ((fun x => f (-x)) ∘ Neg.neg) x✝

tactic: simp only [Function.comp_apply, neg_neg]
state_before: case h.e'_9.h
𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type v
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type w
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L : Filter 𝕜
a : 𝕜
H : DifferentiableAt 𝕜 (fun x => f (-x)) a
x✝ : 𝕜
⊢ f x✝ = ((fun x => f (-x)) ∘ Neg.neg) x✝
state_after: no goals
Theorem: WeierstrassCurve.Affine.CoordinateRing.basis_one
File: Mathlib/AlgebraicGeometry/EllipticCurve/Group.lean

tactic: simpa only [basis_apply] using pow_one _
state_before: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
W : Affine R
f : R →+* S
⊢ (CoordinateRing.basis W) 1 = (mk W) Y
state_after: no goals
Theorem: SimpleGraph.toGraph_adjMatrix_eq
File: Mathlib/Combinatorics/SimpleGraph/AdjMatrix.lean

tactic: ext
state_before: V : Type u_1
α : Type u_2
β : Type u_3
G : SimpleGraph V
inst✝² : DecidableRel G.Adj
inst✝¹ : MulZeroOneClass α
inst✝ : Nontrivial α
⊢ ⋯.toGraph = G
state_after: case Adj.h.h.a
V : Type u_1
α : Type u_2
β : Type u_3
G : SimpleGraph V
inst✝² : DecidableRel G.Adj
inst✝¹ : MulZeroOneClass α
inst✝ : Nontrivial α
x✝¹ x✝ : V
⊢ ⋯.toGraph.Adj x✝¹ x✝ ↔ G.Adj x✝¹ x✝

tactic: simp only [IsAdjMatrix.toGraph_adj, adjMatrix_apply, ite_eq_left_iff, zero_ne_one]
state_before: case Adj.h.h.a
V : Type u_1
α : Type u_2
β : Type u_3
G : SimpleGraph V
inst✝² : DecidableRel G.Adj
inst✝¹ : MulZeroOneClass α
inst✝ : Nontrivial α
x✝¹ x✝ : V
⊢ ⋯.toGraph.Adj x✝¹ x✝ ↔ G.Adj x✝¹ x✝
state_after: case Adj.h.h.a
V : Type u_1
α : Type u_2
β : Type u_3
G : SimpleGraph V
inst✝² : DecidableRel G.Adj
inst✝¹ : MulZeroOneClass α
inst✝ : Nontrivial α
x✝¹ x✝ : V
⊢ ¬G.Adj x✝¹ x✝ → False ↔ G.Adj x✝¹ x✝

tactic: apply Classical.not_not
state_before: case Adj.h.h.a
V : Type u_1
α : Type u_2
β : Type u_3
G : SimpleGraph V
inst✝² : DecidableRel G.Adj
inst✝¹ : MulZeroOneClass α
inst✝ : Nontrivial α
x✝¹ x✝ : V
⊢ ¬G.Adj x✝¹ x✝ → False ↔ G.Adj x✝¹ x✝
state_after: no goals
Theorem: divp_mul_eq_mul_divp
File: Mathlib/Algebra/Group/Units.lean

tactic: rw [divp, divp, mul_right_comm]
state_before: α : Type u
inst✝ : CommMonoid α
x y : α
u : αˣ
⊢ x /ₚ u * y = x * y /ₚ u
state_after: no goals
Theorem: Int.card_fintype_Ioc_of_le
File: Mathlib/Data/Int/Interval.lean

tactic: rw [card_fintype_Ioc, toNat_sub_of_le h]
state_before: a b : ℤ
h : a ≤ b
⊢ ↑(Fintype.card ↑(Set.Ioc a b)) = b - a
state_after: no goals