1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: ModuleCat.MonoidalCategory.pentagon_aux
File: Mathlib/Algebra/Category/ModuleCat/Monoidal/Basic.lean

tactic: apply TensorProduct.ext_fourfold
state_before: R : Type u
inst✝⁸ : CommRing R
W : Type u_1
X : Type u_2
Y : Type u_3
Z : Type u_4
inst✝⁷ : AddCommMonoid W
inst✝⁶ : AddCommMonoid X
inst✝⁵ : AddCommMonoid Y
inst✝⁴ : AddCommMonoid Z
inst✝³ : Module R W
inst✝² : Module R X
inst✝¹ : Module R Y
inst✝ : Module R Z
⊢ (LinearMap.lTensor W ↑(assoc R X Y Z) ∘ₗ ↑(assoc R W (X ⊗[R] Y) Z)) ∘ₗ LinearMap.rTensor Z ↑(assoc R W X Y) =
    ↑(assoc R W X (Y ⊗[R] Z)) ∘ₗ ↑(assoc R (W ⊗[R] X) Y Z)
state_after: case H
R : Type u
inst✝⁸ : CommRing R
W : Type u_1
X : Type u_2
Y : Type u_3
Z : Type u_4
inst✝⁷ : AddCommMonoid W
inst✝⁶ : AddCommMonoid X
inst✝⁵ : AddCommMonoid Y
inst✝⁴ : AddCommMonoid Z
inst✝³ : Module R W
inst✝² : Module R X
inst✝¹ : Module R Y
inst✝ : Module R Z
⊢ ∀ (w : W) (x : X) (y : Y) (z : Z),
    ((LinearMap.lTensor W ↑(assoc R X Y Z) ∘ₗ ↑(assoc R W (X ⊗[R] Y) Z)) ∘ₗ LinearMap.rTensor Z ↑(assoc R W X Y))
        (((w ⊗ₜ[R] x) ⊗ₜ[R] y) ⊗ₜ[R] z) =
      (↑(assoc R W X (Y ⊗[R] Z)) ∘ₗ ↑(assoc R (W ⊗[R] X) Y Z)) (((w ⊗ₜ[R] x) ⊗ₜ[R] y) ⊗ₜ[R] z)

tactic: intro w x y z
state_before: case H
R : Type u
inst✝⁸ : CommRing R
W : Type u_1
X : Type u_2
Y : Type u_3
Z : Type u_4
inst✝⁷ : AddCommMonoid W
inst✝⁶ : AddCommMonoid X
inst✝⁵ : AddCommMonoid Y
inst✝⁴ : AddCommMonoid Z
inst✝³ : Module R W
inst✝² : Module R X
inst✝¹ : Module R Y
inst✝ : Module R Z
⊢ ∀ (w : W) (x : X) (y : Y) (z : Z),
    ((LinearMap.lTensor W ↑(assoc R X Y Z) ∘ₗ ↑(assoc R W (X ⊗[R] Y) Z)) ∘ₗ LinearMap.rTensor Z ↑(assoc R W X Y))
        (((w ⊗ₜ[R] x) ⊗ₜ[R] y) ⊗ₜ[R] z) =
      (↑(assoc R W X (Y ⊗[R] Z)) ∘ₗ ↑(assoc R (W ⊗[R] X) Y Z)) (((w ⊗ₜ[R] x) ⊗ₜ[R] y) ⊗ₜ[R] z)
state_after: case H
R : Type u
inst✝⁸ : CommRing R
W : Type u_1
X : Type u_2
Y : Type u_3
Z : Type u_4
inst✝⁷ : AddCommMonoid W
inst✝⁶ : AddCommMonoid X
inst✝⁵ : AddCommMonoid Y
inst✝⁴ : AddCommMonoid Z
inst✝³ : Module R W
inst✝² : Module R X
inst✝¹ : Module R Y
inst✝ : Module R Z
w : W
x : X
y : Y
z : Z
⊢ ((LinearMap.lTensor W ↑(assoc R X Y Z) ∘ₗ ↑(assoc R W (X ⊗[R] Y) Z)) ∘ₗ LinearMap.rTensor Z ↑(assoc R W X Y))
      (((w ⊗ₜ[R] x) ⊗ₜ[R] y) ⊗ₜ[R] z) =
    (↑(assoc R W X (Y ⊗[R] Z)) ∘ₗ ↑(assoc R (W ⊗[R] X) Y Z)) (((w ⊗ₜ[R] x) ⊗ₜ[R] y) ⊗ₜ[R] z)

tactic: rfl
state_before: case H
R : Type u
inst✝⁸ : CommRing R
W : Type u_1
X : Type u_2
Y : Type u_3
Z : Type u_4
inst✝⁷ : AddCommMonoid W
inst✝⁶ : AddCommMonoid X
inst✝⁵ : AddCommMonoid Y
inst✝⁴ : AddCommMonoid Z
inst✝³ : Module R W
inst✝² : Module R X
inst✝¹ : Module R Y
inst✝ : Module R Z
w : W
x : X
y : Y
z : Z
⊢ ((LinearMap.lTensor W ↑(assoc R X Y Z) ∘ₗ ↑(assoc R W (X ⊗[R] Y) Z)) ∘ₗ LinearMap.rTensor Z ↑(assoc R W X Y))
      (((w ⊗ₜ[R] x) ⊗ₜ[R] y) ⊗ₜ[R] z) =
    (↑(assoc R W X (Y ⊗[R] Z)) ∘ₗ ↑(assoc R (W ⊗[R] X) Y Z)) (((w ⊗ₜ[R] x) ⊗ₜ[R] y) ⊗ₜ[R] z)
state_after: no goals
Theorem: UpperHalfPlane.denom_cocycle
File: Mathlib/Analysis/Complex/UpperHalfPlane/Basic.lean

tactic: change _ = (_ * (_ / _) + _) * _
state_before: x y : ↥GL(2, ℝ)⁺
z : ℍ
⊢ denom (x * y) z = denom x (smulAux y z) * denom y z
state_after: x y : ↥GL(2, ℝ)⁺
z : ℍ
⊢ denom (x * y) z = (↑(↑↑x 1 0) * (num y z / denom y z) + ↑(↑↑x 1 1)) * denom y z

tactic: field_simp [denom_ne_zero]
state_before: x y : ↥GL(2, ℝ)⁺
z : ℍ
⊢ denom (x * y) z = (↑(↑↑x 1 0) * (num y z / denom y z) + ↑(↑↑x 1 1)) * denom y z
state_after: x y : ↥GL(2, ℝ)⁺
z : ℍ
⊢ denom (x * y) z = ↑(↑↑x 1 0) * num y z + ↑(↑↑x 1 1) * denom y z

tactic: simp only [Matrix.mul_apply, dotProduct, Fin.sum_univ_succ, denom, num, Subgroup.coe_mul,
  GeneralLinearGroup.coe_mul, Fintype.univ_ofSubsingleton, Fin.mk_zero, Finset.sum_singleton,
  Fin.succ_zero_eq_one, Complex.ofReal_add, Complex.ofReal_mul]
state_before: x y : ↥GL(2, ℝ)⁺
z : ℍ
⊢ denom (x * y) z = ↑(↑↑x 1 0) * num y z + ↑(↑↑x 1 1) * denom y z
state_after: x y : ↥GL(2, ℝ)⁺
z : ℍ
⊢ (↑(↑↑x 1 0) * ↑(↑↑y 0 0) + ↑(↑↑x 1 1) * ↑(↑↑y 1 0)) * ↑z + (↑(↑↑x 1 0) * ↑(↑↑y 0 1) + ↑(↑↑x 1 1) * ↑(↑↑y 1 1)) =
    ↑(↑↑x 1 0) * (↑(↑↑y 0 0) * ↑z + ↑(↑↑y 0 1)) + ↑(↑↑x 1 1) * (↑(↑↑y 1 0) * ↑z + ↑(↑↑y 1 1))

tactic: ring
state_before: x y : ↥GL(2, ℝ)⁺
z : ℍ
⊢ (↑(↑↑x 1 0) * ↑(↑↑y 0 0) + ↑(↑↑x 1 1) * ↑(↑↑y 1 0)) * ↑z + (↑(↑↑x 1 0) * ↑(↑↑y 0 1) + ↑(↑↑x 1 1) * ↑(↑↑y 1 1)) =
    ↑(↑↑x 1 0) * (↑(↑↑y 0 0) * ↑z + ↑(↑↑y 0 1)) + ↑(↑↑x 1 1) * (↑(↑↑y 1 0) * ↑z + ↑(↑↑y 1 1))
state_after: no goals
Theorem: Matrix.blockDiagonal'_transpose
File: Mathlib/Data/Matrix/Block.lean

tactic: ext ⟨ii, ix⟩ ⟨ji, jx⟩
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✝² : DecidableEq o
inst✝¹ : Zero α
inst✝ : Zero β
M : (i : o) → Matrix (m' i) (n' i) α
⊢ (blockDiagonal' M)ᵀ = blockDiagonal' fun k => (M k)ᵀ
state_after: case a.mk.mk
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✝² : DecidableEq o
inst✝¹ : Zero α
inst✝ : Zero β
M : (i : o) → Matrix (m' i) (n' i) α
ii : o
ix : n' ii
ji : o
jx : m' ji
⊢ (blockDiagonal' M)ᵀ ⟨ii, ix⟩ ⟨ji, jx⟩ = blockDiagonal' (fun k => (M k)ᵀ) ⟨ii, ix⟩ ⟨ji, jx⟩

tactic: simp only [transpose_apply, blockDiagonal'_apply]
state_before: case a.mk.mk
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✝² : DecidableEq o
inst✝¹ : Zero α
inst✝ : Zero β
M : (i : o) → Matrix (m' i) (n' i) α
ii : o
ix : n' ii
ji : o
jx : m' ji
⊢ (blockDiagonal' M)ᵀ ⟨ii, ix⟩ ⟨ji, jx⟩ = blockDiagonal' (fun k => (M k)ᵀ) ⟨ii, ix⟩ ⟨ji, jx⟩
state_after: case a.mk.mk
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✝² : DecidableEq o
inst✝¹ : Zero α
inst✝ : Zero β
M : (i : o) → Matrix (m' i) (n' i) α
ii : o
ix : n' ii
ji : o
jx : m' ji
⊢ (if h : ji = ii then M ji jx (cast ⋯ ix) else 0) = if h : ii = ji then M ii (cast ⋯ jx) ix else 0

tactic: split_ifs <;> cc
state_before: case a.mk.mk
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✝² : DecidableEq o
inst✝¹ : Zero α
inst✝ : Zero β
M : (i : o) → Matrix (m' i) (n' i) α
ii : o
ix : n' ii
ji : o
jx : m' ji
⊢ (if h : ji = ii then M ji jx (cast ⋯ ix) else 0) = if h : ii = ji then M ii (cast ⋯ jx) ix else 0
state_after: no goals
Theorem: Ordinal.add_sub_add_cancel
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: rw [← sub_sub, add_sub_cancel]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b c : Ordinal.{u_4}
⊢ a + b - (a + c) = b - c
state_after: no goals
Theorem: Ico_mem_nhds_iff
File: Mathlib/Topology/Order/DenselyOrdered.lean

tactic: rw [← interior_Ico, mem_interior_iff_mem_nhds]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝⁴ : TopologicalSpace α
inst✝³ : LinearOrder α
inst✝² : OrderTopology α
inst✝¹ : DenselyOrdered α
a✝ b✝ : α
s : Set α
inst✝ : NoMinOrder α
a b x : α
⊢ Ico a b ∈ 𝓝 x ↔ x ∈ Ioo a b
state_after: no goals
Theorem: CategoryTheory.Over.CreatesConnected.raised_cone_lowers_to_original
File: Mathlib/CategoryTheory/Limits/Constructions/Over/Connected.lean

tactic: aesop_cat
state_before: J : Type v
inst✝² : SmallCategory J
C : Type u
inst✝¹ : Category.{v, u} C
X : C
inst✝ : IsConnected J
B : C
F : J ⥤ Over B
c : Cone (F ⋙ forget B)
⊢ (forget B).mapCone (raiseCone c) = c
state_after: no goals
Theorem: SimpleGraph.card_edgeFinset_top_eq_card_choose_two
File: Mathlib/Combinatorics/SimpleGraph/Finite.lean

tactic: simp_rw [Set.toFinset_card, edgeSet_top, Set.coe_setOf, ← Sym2.card_subtype_not_diag]
state_before: V : Type u_1
G : SimpleGraph V
e : Sym2 V
G₁ G₂ : SimpleGraph V
inst✝⁴ : Fintype ↑G.edgeSet
inst✝³ : Fintype ↑G₁.edgeSet
inst✝² : Fintype ↑G₂.edgeSet
inst✝¹ : Fintype V
inst✝ : DecidableEq V
⊢ ⊤.edgeFinset.card = (Fintype.card V).choose 2
state_after: no goals
Theorem: QPF.Wequiv.refl
File: Mathlib/Data/QPF/Univariate/Basic.lean

tactic: cases' x with a f
state_before: F : Type u → Type u
q : QPF F
x : (P F).W
⊢ Wequiv x x
state_after: case mk
F : Type u → Type u
q : QPF F
a : (P F).A
f : (P F).B a → WType (P F).B
⊢ Wequiv (WType.mk a f) (WType.mk a f)

tactic: exact Wequiv.abs a f a f rfl
state_before: case mk
F : Type u → Type u
q : QPF F
a : (P F).A
f : (P F).B a → WType (P F).B
⊢ Wequiv (WType.mk a f) (WType.mk a f)
state_after: no goals
Theorem: Polynomial.map_cyclotomic_int
File: Mathlib/RingTheory/Polynomial/Cyclotomic/Basic.lean

tactic: by_cases hzero : n = 0
state_before: n : ℕ
R : Type u_1
inst✝ : Ring R
⊢ map (Int.castRingHom R) (cyclotomic n ℤ) = cyclotomic n R
state_after: case pos
n : ℕ
R : Type u_1
inst✝ : Ring R
hzero : n = 0
⊢ map (Int.castRingHom R) (cyclotomic n ℤ) = cyclotomic n R

case neg
n : ℕ
R : Type u_1
inst✝ : Ring R
hzero : ¬n = 0
⊢ map (Int.castRingHom R) (cyclotomic n ℤ) = cyclotomic n R

tactic: simp [cyclotomic, hzero]
state_before: case neg
n : ℕ
R : Type u_1
inst✝ : Ring R
hzero : ¬n = 0
⊢ map (Int.castRingHom R) (cyclotomic n ℤ) = cyclotomic n R
state_after: no goals

tactic: simp only [hzero, cyclotomic, dif_pos, Polynomial.map_one]
state_before: case pos
n : ℕ
R : Type u_1
inst✝ : Ring R
hzero : n = 0
⊢ map (Int.castRingHom R) (cyclotomic n ℤ) = cyclotomic n R
state_after: no goals
Theorem: eq_natCast'
File: Mathlib/Data/Nat/Cast/Basic.lean

tactic: simp [map_zero f]
state_before: α : Type u_1
β : Type u_2
A : Type u_3
B : Type u_4
F : Type u_5
inst✝³ : AddMonoidWithOne B
inst✝² : FunLike F ℕ A
inst✝¹ : AddMonoidWithOne A
inst✝ : AddMonoidHomClass F ℕ A
f : F
h1 : f 1 = 1
⊢ f 0 = ↑0
state_after: no goals

tactic: rw [map_add, h1, eq_natCast' f h1 n, Nat.cast_add_one]
state_before: α : Type u_1
β : Type u_2
A : Type u_3
B : Type u_4
F : Type u_5
inst✝³ : AddMonoidWithOne B
inst✝² : FunLike F ℕ A
inst✝¹ : AddMonoidWithOne A
inst✝ : AddMonoidHomClass F ℕ A
f : F
h1 : f 1 = 1
n : ℕ
⊢ f (n + 1) = ↑(n + 1)
state_after: no goals
Theorem: TopologicalSpace.Closeds.isAtom_iff
File: Mathlib/Topology/Sets/Closeds.lean

tactic: simp [← Closeds.isAtom_coe, Set.isAtom_iff, SetLike.ext_iff, Set.ext_iff]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : T1Space α
s : Closeds α
⊢ IsAtom s ↔ ∃ x, s = singleton x
state_after: no goals
Theorem: Set.insert_diff_eq_singleton
File: Mathlib/Data/Set/Basic.lean

tactic: ext
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
a✝ b : α
s✝ s₁ s₂ t t₁ t₂ u : Set α
a : α
s : Set α
h : a ∉ s
⊢ insert a s \ s = {a}
state_after: case h
α : Type u
β : Type v
γ : Type w
ι : Sort x
a✝ b : α
s✝ s₁ s₂ t t₁ t₂ u : Set α
a : α
s : Set α
h : a ∉ s
x✝ : α
⊢ x✝ ∈ insert a s \ s ↔ x✝ ∈ {a}

tactic: rw [Set.mem_diff, Set.mem_insert_iff, Set.mem_singleton_iff, or_and_right, and_not_self_iff,
  or_false_iff, and_iff_left_iff_imp]
state_before: case h
α : Type u
β : Type v
γ : Type w
ι : Sort x
a✝ b : α
s✝ s₁ s₂ t t₁ t₂ u : Set α
a : α
s : Set α
h : a ∉ s
x✝ : α
⊢ x✝ ∈ insert a s \ s ↔ x✝ ∈ {a}
state_after: case h
α : Type u
β : Type v
γ : Type w
ι : Sort x
a✝ b : α
s✝ s₁ s₂ t t₁ t₂ u : Set α
a : α
s : Set α
h : a ∉ s
x✝ : α
⊢ x✝ = a → x✝ ∉ s

tactic: rintro rfl
state_before: case h
α : Type u
β : Type v
γ : Type w
ι : Sort x
a✝ b : α
s✝ s₁ s₂ t t₁ t₂ u : Set α
a : α
s : Set α
h : a ∉ s
x✝ : α
⊢ x✝ = a → x✝ ∉ s
state_after: case h
α : Type u
β : Type v
γ : Type w
ι : Sort x
a b : α
s✝ s₁ s₂ t t₁ t₂ u s : Set α
x✝ : α
h : x✝ ∉ s
⊢ x✝ ∉ s

tactic: exact h
state_before: case h
α : Type u
β : Type v
γ : Type w
ι : Sort x
a b : α
s✝ s₁ s₂ t t₁ t₂ u s : Set α
x✝ : α
h : x✝ ∉ s
⊢ x✝ ∉ s
state_after: no goals
Theorem: NonUnitalNonAssocCommRing.ext_iff
File: Mathlib/Algebra/Ring/Ext.lean

tactic: rintro rfl
state_before: R : Type u
inst₁ inst₂ : NonUnitalNonAssocCommRing R
⊢ inst₁ = inst₂ → HAdd.hAdd = HAdd.hAdd ∧ HMul.hMul = HMul.hMul
state_after: R : Type u
inst₁ : NonUnitalNonAssocCommRing R
⊢ HAdd.hAdd = HAdd.hAdd ∧ HMul.hMul = HMul.hMul

tactic: constructor <;> rfl
state_before: R : Type u
inst₁ : NonUnitalNonAssocCommRing R
⊢ HAdd.hAdd = HAdd.hAdd ∧ HMul.hMul = HMul.hMul
state_after: no goals
Theorem: NNReal.mul_eq_mul_left
File: Mathlib/Data/NNReal/Basic.lean

tactic: rw [mul_eq_mul_left_iff, or_iff_left h]
state_before: a b c : ℝ≥0
h : a ≠ 0
⊢ a * b = a * c ↔ b = c
state_after: no goals
Theorem: lowerBounds_insert
File: Mathlib/Order/Bounds/Basic.lean

tactic: rw [insert_eq, lowerBounds_union, lowerBounds_singleton]
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝¹ : Preorder α
inst✝ : Preorder β
s✝ t : Set α
a✝ b a : α
s : Set α
⊢ lowerBounds (insert a s) = Iic a ∩ lowerBounds s
state_after: no goals
Theorem: WeierstrassCurve.natDegree_preΨ'_pos
File: Mathlib/AlgebraicGeometry/EllipticCurve/DivisionPolynomial/Degree.lean

tactic: rw [W.natDegree_preΨ' h, Nat.div_pos_iff two_ne_zero]
state_before: R : Type u
inst✝ : CommRing R
W : WeierstrassCurve R
n : ℕ
hn : 2 < n
h : ↑n ≠ 0
⊢ 0 < (W.preΨ' n).natDegree
state_after: R : Type u
inst✝ : CommRing R
W : WeierstrassCurve R
n : ℕ
hn : 2 < n
h : ↑n ≠ 0
⊢ 2 ≤ n ^ 2 - if Even n then 4 else 1

tactic: split_ifs <;>
  exact Nat.AtLeastTwo.prop.trans <| Nat.sub_le_sub_right (Nat.pow_le_pow_of_le_left hn 2) _
state_before: R : Type u
inst✝ : CommRing R
W : WeierstrassCurve R
n : ℕ
hn : 2 < n
h : ↑n ≠ 0
⊢ 2 ≤ n ^ 2 - if Even n then 4 else 1
state_after: no goals
Theorem: Cardinal.one_lt_lift_iff
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: simpa using nat_lt_lift_iff (n := 1)
state_before: α β : Type u
a : Cardinal.{u}
⊢ 1 < lift.{v, u} a ↔ 1 < a
state_after: no goals
Theorem: Int.cast_abs
File: Mathlib/Algebra/Order/Ring/Cast.lean

tactic: simp [abs_eq_max_neg]
state_before: R : Type u_1
inst✝ : LinearOrderedRing R
a b n : ℤ
x : R
⊢ ↑|a| = |↑a|
state_after: no goals
Theorem: Basis.det_self
File: Mathlib/LinearAlgebra/Determinant.lean

tactic: simp [e.det_apply]
state_before: R : Type u_1
inst✝⁶ : CommRing R
M : Type u_2
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
M' : Type u_3
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : Fintype ι
e : Basis ι R M
⊢ e.det ⇑e = 1
state_after: no goals
Theorem: Finmap.not_mem_erase_self
File: Mathlib/Data/Finmap.lean

tactic: rw [mem_erase, not_and_or, not_not]
state_before: α : Type u
β : α → Type v
inst✝ : DecidableEq α
a : α
s : Finmap β
⊢ a ∉ erase a s
state_after: α : Type u
β : α → Type v
inst✝ : DecidableEq α
a : α
s : Finmap β
⊢ a = a ∨ a ∉ s

tactic: left
state_before: α : Type u
β : α → Type v
inst✝ : DecidableEq α
a : α
s : Finmap β
⊢ a = a ∨ a ∉ s
state_after: case h
α : Type u
β : α → Type v
inst✝ : DecidableEq α
a : α
s : Finmap β
⊢ a = a

tactic: rfl
state_before: case h
α : Type u
β : α → Type v
inst✝ : DecidableEq α
a : α
s : Finmap β
⊢ a = a
state_after: no goals
Theorem: Finset.max'_singleton
File: Mathlib/Data/Finset/Lattice.lean

tactic: simp [max']
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
s : Finset α
H : s.Nonempty
x a : α
⊢ {a}.max' ⋯ = a
state_after: no goals
Theorem: Basis.toMatrix_smul
File: Mathlib/LinearAlgebra/Matrix/Basis.lean

tactic: ext
state_before: ι : Type u_1
ι' : Type u_2
κ : Type u_3
κ' : Type u_4
R : Type u_5
M : Type u_6
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
R₂ : Type u_7
M₂ : Type u_8
inst✝⁷ : CommRing R₂
inst✝⁶ : AddCommGroup M₂
inst✝⁵ : Module R₂ M₂
e : Basis ι R M
v : ι' → M
i : ι
j : ι'
R₁ : Type u_9
S : Type u_10
inst✝⁴ : CommRing R₁
inst✝³ : Ring S
inst✝² : Algebra R₁ S
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
x : S
b : Basis ι R₁ S
w : ι → S
⊢ b.toMatrix (x • w) = (Algebra.leftMulMatrix b) x * b.toMatrix w
state_after: case a
ι : Type u_1
ι' : Type u_2
κ : Type u_3
κ' : Type u_4
R : Type u_5
M : Type u_6
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
R₂ : Type u_7
M₂ : Type u_8
inst✝⁷ : CommRing R₂
inst✝⁶ : AddCommGroup M₂
inst✝⁵ : Module R₂ M₂
e : Basis ι R M
v : ι' → M
i : ι
j : ι'
R₁ : Type u_9
S : Type u_10
inst✝⁴ : CommRing R₁
inst✝³ : Ring S
inst✝² : Algebra R₁ S
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
x : S
b : Basis ι R₁ S
w : ι → S
i✝ j✝ : ι
⊢ b.toMatrix (x • w) i✝ j✝ = ((Algebra.leftMulMatrix b) x * b.toMatrix w) i✝ j✝

tactic: rw [Basis.toMatrix_apply, Pi.smul_apply, smul_eq_mul, ← Algebra.leftMulMatrix_mulVec_repr]
state_before: case a
ι : Type u_1
ι' : Type u_2
κ : Type u_3
κ' : Type u_4
R : Type u_5
M : Type u_6
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
R₂ : Type u_7
M₂ : Type u_8
inst✝⁷ : CommRing R₂
inst✝⁶ : AddCommGroup M₂
inst✝⁵ : Module R₂ M₂
e : Basis ι R M
v : ι' → M
i : ι
j : ι'
R₁ : Type u_9
S : Type u_10
inst✝⁴ : CommRing R₁
inst✝³ : Ring S
inst✝² : Algebra R₁ S
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
x : S
b : Basis ι R₁ S
w : ι → S
i✝ j✝ : ι
⊢ b.toMatrix (x • w) i✝ j✝ = ((Algebra.leftMulMatrix b) x * b.toMatrix w) i✝ j✝
state_after: case a
ι : Type u_1
ι' : Type u_2
κ : Type u_3
κ' : Type u_4
R : Type u_5
M : Type u_6
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
R₂ : Type u_7
M₂ : Type u_8
inst✝⁷ : CommRing R₂
inst✝⁶ : AddCommGroup M₂
inst✝⁵ : Module R₂ M₂
e : Basis ι R M
v : ι' → M
i : ι
j : ι'
R₁ : Type u_9
S : Type u_10
inst✝⁴ : CommRing R₁
inst✝³ : Ring S
inst✝² : Algebra R₁ S
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
x : S
b : Basis ι R₁ S
w : ι → S
i✝ j✝ : ι
⊢ ((Algebra.leftMulMatrix b) x *ᵥ ⇑(b.repr (w j✝))) i✝ = ((Algebra.leftMulMatrix b) x * b.toMatrix w) i✝ j✝

tactic: rfl
state_before: case a
ι : Type u_1
ι' : Type u_2
κ : Type u_3
κ' : Type u_4
R : Type u_5
M : Type u_6
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
R₂ : Type u_7
M₂ : Type u_8
inst✝⁷ : CommRing R₂
inst✝⁶ : AddCommGroup M₂
inst✝⁵ : Module R₂ M₂
e : Basis ι R M
v : ι' → M
i : ι
j : ι'
R₁ : Type u_9
S : Type u_10
inst✝⁴ : CommRing R₁
inst✝³ : Ring S
inst✝² : Algebra R₁ S
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
x : S
b : Basis ι R₁ S
w : ι → S
i✝ j✝ : ι
⊢ ((Algebra.leftMulMatrix b) x *ᵥ ⇑(b.repr (w j✝))) i✝ = ((Algebra.leftMulMatrix b) x * b.toMatrix w) i✝ j✝
state_after: no goals
Theorem: FinEnum.pi.mem_enum
File: Mathlib/Data/FinEnum.lean

tactic: simp [pi.enum]
state_before: α : Type u
β✝ : α → Type v
β : α → Type (max u v)
inst✝¹ : FinEnum α
inst✝ : (a : α) → FinEnum (β a)
f : (a : α) → β a
⊢ f ∈ enum β
state_after: α : Type u
β✝ : α → Type v
β : α → Type (max u v)
inst✝¹ : FinEnum α
inst✝ : (a : α) → FinEnum (β a)
f : (a : α) → β a
⊢ ∃ a ∈ pi (toList α) fun x => toList (β x), (fun x => a x ⋯) = f

tactic: refine ⟨fun a _ => f a, mem_pi _ _, rfl⟩
state_before: α : Type u
β✝ : α → Type v
β : α → Type (max u v)
inst✝¹ : FinEnum α
inst✝ : (a : α) → FinEnum (β a)
f : (a : α) → β a
⊢ ∃ a ∈ pi (toList α) fun x => toList (β x), (fun x => a x ⋯) = f
state_after: no goals
Theorem: dist_ne_zero
File: Mathlib/Topology/MetricSpace/Basic.lean

tactic: simpa only [not_iff_not] using dist_eq_zero
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝¹ : PseudoMetricSpace α
γ : Type w
inst✝ : MetricSpace γ
x y : γ
⊢ dist x y ≠ 0 ↔ x ≠ y
state_after: no goals
Theorem: closedBall_mul_singleton
File: Mathlib/Analysis/Normed/Group/Pointwise.lean

tactic: simp [mul_comm _ {y}, mul_comm y]
state_before: E : Type u_1
inst✝ : SeminormedCommGroup E
ε δ : ℝ
s t : Set E
x y : E
⊢ closedBall x δ * {y} = closedBall (x * y) δ
state_after: no goals
Theorem: Cardinal.mk_equiv_eq_zero_iff_lift_ne
File: Mathlib/SetTheory/Cardinal/Ordinal.lean

tactic: rw [mk_eq_zero_iff, ← not_nonempty_iff, ← lift_mk_eq']
state_before: α β : Type u
β' : Type v
⊢ #(α ≃ β') = 0 ↔ lift.{v, u} #α ≠ lift.{u, v} #β'
state_after: no goals
Theorem: List.Nodup.union
File: Mathlib/Data/List/Nodup.lean

tactic: induction' l₁ with a l₁ ih generalizing l₂
state_before: α : Type u
β : Type v
l l₁✝ l₂ : List α
r : α → α → Prop
a b : α
inst✝ : DecidableEq α
l₁ : List α
h : l₂.Nodup
⊢ (l₁ ∪ l₂).Nodup
state_after: case nil
α : Type u
β : Type v
l l₁ : List α
r : α → α → Prop
a b : α
inst✝ : DecidableEq α
l₂ : List α
h : l₂.Nodup
⊢ ([] ∪ l₂).Nodup

case cons
α : Type u
β : Type v
l l₁✝ : List α
r : α → α → Prop
a✝ b : α
inst✝ : DecidableEq α
a : α
l₁ : List α
ih : ∀ {l₂ : List α}, l₂.Nodup → (l₁ ∪ l₂).Nodup
l₂ : List α
h : l₂.Nodup
⊢ (a :: l₁ ∪ l₂).Nodup

tactic: exact h
state_before: case nil
α : Type u
β : Type v
l l₁ : List α
r : α → α → Prop
a b : α
inst✝ : DecidableEq α
l₂ : List α
h : l₂.Nodup
⊢ ([] ∪ l₂).Nodup
state_after: no goals

tactic: exact (ih h).insert
state_before: case cons
α : Type u
β : Type v
l l₁✝ : List α
r : α → α → Prop
a✝ b : α
inst✝ : DecidableEq α
a : α
l₁ : List α
ih : ∀ {l₂ : List α}, l₂.Nodup → (l₁ ∪ l₂).Nodup
l₂ : List α
h : l₂.Nodup
⊢ (a :: l₁ ∪ l₂).Nodup
state_after: no goals
Theorem: mdifferentiableWithinAt_iff'
File: Mathlib/Geometry/Manifold/MFDeriv/Defs.lean

tactic: rw [MDifferentiableWithinAt, liftPropWithinAt_iff']
state_before: 𝕜 : Type u_1
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
H : Type u_3
inst✝⁷ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝⁶ : TopologicalSpace M
inst✝⁵ : ChartedSpace H M
E' : Type u_5
inst✝⁴ : NormedAddCommGroup E'
inst✝³ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝² : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹ : TopologicalSpace M'
inst✝ : ChartedSpace H' M'
f : M → M'
s : Set M
x : M
⊢ MDifferentiableWithinAt I I' f s x ↔
    ContinuousWithinAt f s x ∧
      DifferentiableWithinAt 𝕜 (writtenInExtChartAt I I' x f) (↑(extChartAt I x).symm ⁻¹' s ∩ range ↑I)
        (↑(extChartAt I x) x)
state_after: 𝕜 : Type u_1
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
H : Type u_3
inst✝⁷ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝⁶ : TopologicalSpace M
inst✝⁵ : ChartedSpace H M
E' : Type u_5
inst✝⁴ : NormedAddCommGroup E'
inst✝³ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝² : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹ : TopologicalSpace M'
inst✝ : ChartedSpace H' M'
f : M → M'
s : Set M
x : M
⊢ ContinuousWithinAt f s x ∧
      DifferentiableWithinAtProp I I' (↑(chartAt H' (f x)) ∘ f ∘ ↑(chartAt H x).symm) (↑(chartAt H x).symm ⁻¹' s)
        (↑(chartAt H x) x) ↔
    ContinuousWithinAt f s x ∧
      DifferentiableWithinAt 𝕜 (writtenInExtChartAt I I' x f) (↑(extChartAt I x).symm ⁻¹' s ∩ range ↑I)
        (↑(extChartAt I x) x)

tactic: rfl
state_before: 𝕜 : Type u_1
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
H : Type u_3
inst✝⁷ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝⁶ : TopologicalSpace M
inst✝⁵ : ChartedSpace H M
E' : Type u_5
inst✝⁴ : NormedAddCommGroup E'
inst✝³ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝² : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹ : TopologicalSpace M'
inst✝ : ChartedSpace H' M'
f : M → M'
s : Set M
x : M
⊢ ContinuousWithinAt f s x ∧
      DifferentiableWithinAtProp I I' (↑(chartAt H' (f x)) ∘ f ∘ ↑(chartAt H x).symm) (↑(chartAt H x).symm ⁻¹' s)
        (↑(chartAt H x) x) ↔
    ContinuousWithinAt f s x ∧
      DifferentiableWithinAt 𝕜 (writtenInExtChartAt I I' x f) (↑(extChartAt I x).symm ⁻¹' s ∩ range ↑I)
        (↑(extChartAt I x) x)
state_after: no goals
Theorem: Real.iUnion_Iic_rat
File: Mathlib/Data/Real/Archimedean.lean

tactic: exact iUnion_Iic_of_not_bddAbove_range not_bddAbove_coe
state_before: ⊢ ⋃ r, Iic ↑r = univ
state_after: no goals