1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Fin.append_right_cons
File: Mathlib/Data/Fin/Tuple/Basic.lean

tactic: rw [append_left_snoc]
state_before: m✝ n✝ : ℕ
α✝ : Fin (n✝ + 1) → Type u
x : α✝ (last n✝)
q : (i : Fin (n✝ + 1)) → α✝ i
p : (i : Fin n✝) → α✝ i.castSucc
i : Fin n✝
y✝ : α✝ i.castSucc
z : α✝ (last n✝)
n m : ℕ
α : Type u_1
xs : Fin n → α
y : α
ys : Fin m → α
⊢ append xs (cons y ys) = append (snoc xs y) ys ∘ cast ⋯
state_after: m✝ n✝ : ℕ
α✝ : Fin (n✝ + 1) → Type u
x : α✝ (last n✝)
q : (i : Fin (n✝ + 1)) → α✝ i
p : (i : Fin n✝) → α✝ i.castSucc
i : Fin n✝
y✝ : α✝ i.castSucc
z : α✝ (last n✝)
n m : ℕ
α : Type u_1
xs : Fin n → α
y : α
ys : Fin m → α
⊢ append xs (cons y ys) = (append xs (cons y ys) ∘ cast ⋯) ∘ cast ⋯

tactic: rfl
state_before: m✝ n✝ : ℕ
α✝ : Fin (n✝ + 1) → Type u
x : α✝ (last n✝)
q : (i : Fin (n✝ + 1)) → α✝ i
p : (i : Fin n✝) → α✝ i.castSucc
i : Fin n✝
y✝ : α✝ i.castSucc
z : α✝ (last n✝)
n m : ℕ
α : Type u_1
xs : Fin n → α
y : α
ys : Fin m → α
⊢ append xs (cons y ys) = (append xs (cons y ys) ∘ cast ⋯) ∘ cast ⋯
state_after: no goals
Theorem: Set.ncard_eq_three
File: Mathlib/Data/Set/Card.lean

tactic: rw [← encard_eq_three, ncard_def, ← Nat.cast_inj (R := ℕ∞), Nat.cast_ofNat]
state_before: α : Type u_1
β : Type u_2
s t : Set α
f : α → β
⊢ s.ncard = 3 ↔ ∃ x y z, x ≠ y ∧ x ≠ z ∧ y ≠ z ∧ s = {x, y, z}
state_after: α : Type u_1
β : Type u_2
s t : Set α
f : α → β
⊢ ↑s.encard.toNat = 3 ↔ s.encard = 3

tactic: refine ⟨fun h ↦ ?_, fun h ↦ ?_⟩
state_before: α : Type u_1
β : Type u_2
s t : Set α
f : α → β
⊢ ↑s.encard.toNat = 3 ↔ s.encard = 3
state_after: case refine_1
α : Type u_1
β : Type u_2
s t : Set α
f : α → β
h : ↑s.encard.toNat = 3
⊢ s.encard = 3

case refine_2
α : Type u_1
β : Type u_2
s t : Set α
f : α → β
h : s.encard = 3
⊢ ↑s.encard.toNat = 3

tactic: rw [h]
state_before: case refine_2
α : Type u_1
β : Type u_2
s t : Set α
f : α → β
h : s.encard = 3
⊢ ↑s.encard.toNat = 3
state_after: case refine_2
α : Type u_1
β : Type u_2
s t : Set α
f : α → β
h : s.encard = 3
⊢ ↑(ENat.toNat 3) = 3

tactic: rfl
state_before: case refine_2
α : Type u_1
β : Type u_2
s t : Set α
f : α → β
h : s.encard = 3
⊢ ↑(ENat.toNat 3) = 3
state_after: no goals

tactic: rwa [ENat.coe_toNat] at h
state_before: case refine_1
α : Type u_1
β : Type u_2
s t : Set α
f : α → β
h : ↑s.encard.toNat = 3
⊢ s.encard = 3
state_after: case refine_1
α : Type u_1
β : Type u_2
s t : Set α
f : α → β
h : ↑s.encard.toNat = 3
⊢ s.encard ≠ ⊤

tactic: rintro h'
state_before: case refine_1
α : Type u_1
β : Type u_2
s t : Set α
f : α → β
h : ↑s.encard.toNat = 3
⊢ s.encard ≠ ⊤
state_after: case refine_1
α : Type u_1
β : Type u_2
s t : Set α
f : α → β
h : ↑s.encard.toNat = 3
h' : s.encard = ⊤
⊢ False

tactic: simp [h'] at h
state_before: case refine_1
α : Type u_1
β : Type u_2
s t : Set α
f : α → β
h : ↑s.encard.toNat = 3
h' : s.encard = ⊤
⊢ False
state_after: no goals
Theorem: Batteries.RBNode.reverse_size
File: .lake/packages/batteries/Batteries/Data/RBMap/Lemmas.lean

tactic: simp [size_eq]
state_before: α : Type u_1
t : RBNode α
⊢ t.reverse.size = t.size
state_after: no goals
Theorem: MeasurableSet.sUnion
File: Mathlib/MeasureTheory/MeasurableSpace/Defs.lean

tactic: rw [sUnion_eq_biUnion]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort u_6
s✝ t u : Set α
m : MeasurableSpace α
s : Set (Set α)
hs : s.Countable
h : ∀ t ∈ s, MeasurableSet t
⊢ MeasurableSet (⋃₀ s)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort u_6
s✝ t u : Set α
m : MeasurableSpace α
s : Set (Set α)
hs : s.Countable
h : ∀ t ∈ s, MeasurableSet t
⊢ MeasurableSet (⋃ i ∈ s, i)

tactic: exact .biUnion hs h
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort u_6
s✝ t u : Set α
m : MeasurableSpace α
s : Set (Set α)
hs : s.Countable
h : ∀ t ∈ s, MeasurableSet t
⊢ MeasurableSet (⋃ i ∈ s, i)
state_after: no goals
Theorem: Fin.cons_succ
File: Mathlib/Data/Fin/Tuple/Basic.lean

tactic: simp [cons]
state_before: m n : ℕ
α : Fin (n + 1) → Type u
x : α 0
q : (i : Fin (n + 1)) → α i
p : (i : Fin n) → α i.succ
i : Fin n
y : α i.succ
z : α 0
⊢ cons x p i.succ = p i
state_after: no goals
Theorem: CategoryTheory.shiftFunctorAdd_zero_add_inv_app
File: Mathlib/CategoryTheory/Shift/Basic.lean

tactic: dsimp
state_before: C : Type u
A : Type u_1
inst✝² : Category.{v, u} C
inst✝¹ : AddMonoid A
inst✝ : HasShift C A
a : A
X : C
⊢ (shiftFunctor C a).obj ((𝟭 C).obj X) = (shiftFunctor C (0 + a)).obj X
state_after: C : Type u
A : Type u_1
inst✝² : Category.{v, u} C
inst✝¹ : AddMonoid A
inst✝ : HasShift C A
a : A
X : C
⊢ (shiftFunctor C a).obj X = (shiftFunctor C (0 + a)).obj X

tactic: rw [zero_add]
state_before: C : Type u
A : Type u_1
inst✝² : Category.{v, u} C
inst✝¹ : AddMonoid A
inst✝ : HasShift C A
a : A
X : C
⊢ (shiftFunctor C a).obj X = (shiftFunctor C (0 + a)).obj X
state_after: no goals

tactic: simp [← shiftFunctorAdd'_zero_add_inv_app, shiftFunctorAdd']
state_before: C : Type u
A : Type u_1
inst✝² : Category.{v, u} C
inst✝¹ : AddMonoid A
inst✝ : HasShift C A
a : A
X : C
⊢ (shiftFunctorAdd C 0 a).inv.app X = (shiftFunctor C a).map ((shiftFunctorZero C A).hom.app X) ≫ eqToHom ⋯
state_after: no goals
Theorem: EuclideanGeometry.inversion_mem_perpBisector_inversion_iff
File: Mathlib/Geometry/Euclidean/Inversion/ImageHyperplane.lean

tactic: rw [mem_perpBisector_iff_dist_eq, dist_inversion_inversion hx hy, dist_inversion_center]
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
c x y : P
R : ℝ
hR : R ≠ 0
hx : x ≠ c
hy : y ≠ c
⊢ inversion c R x ∈ perpBisector c (inversion c R y) ↔ dist x y = dist y c
state_after: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
c x y : P
R : ℝ
hR : R ≠ 0
hx : x ≠ c
hy : y ≠ c
⊢ R ^ 2 / dist x c = R ^ 2 / (dist x c * dist y c) * dist x y ↔ dist x y = dist y c

tactic: have hx' := dist_ne_zero.2 hx
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
c x y : P
R : ℝ
hR : R ≠ 0
hx : x ≠ c
hy : y ≠ c
⊢ R ^ 2 / dist x c = R ^ 2 / (dist x c * dist y c) * dist x y ↔ dist x y = dist y c
state_after: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
c x y : P
R : ℝ
hR : R ≠ 0
hx : x ≠ c
hy : y ≠ c
hx' : dist x c ≠ 0
⊢ R ^ 2 / dist x c = R ^ 2 / (dist x c * dist y c) * dist x y ↔ dist x y = dist y c

tactic: have hy' := dist_ne_zero.2 hy
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
c x y : P
R : ℝ
hR : R ≠ 0
hx : x ≠ c
hy : y ≠ c
hx' : dist x c ≠ 0
⊢ R ^ 2 / dist x c = R ^ 2 / (dist x c * dist y c) * dist x y ↔ dist x y = dist y c
state_after: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
c x y : P
R : ℝ
hR : R ≠ 0
hx : x ≠ c
hy : y ≠ c
hx' : dist x c ≠ 0
hy' : dist y c ≠ 0
⊢ R ^ 2 / dist x c = R ^ 2 / (dist x c * dist y c) * dist x y ↔ dist x y = dist y c

tactic: field_simp [mul_assoc, mul_comm, hx, hx.symm, eq_comm]
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
c x y : P
R : ℝ
hR : R ≠ 0
hx : x ≠ c
hy : y ≠ c
hx' : dist x c ≠ 0
hy' : dist y c ≠ 0
⊢ R ^ 2 / dist x c = R ^ 2 / (dist x c * dist y c) * dist x y ↔ dist x y = dist y c
state_after: no goals
Theorem: rank_eq_of_surjective
File: Mathlib/LinearAlgebra/Dimension/RankNullity.lean

tactic: rw [← rank_range_add_rank_ker f, ← rank_range_of_surjective f h]
state_before: R : Type u_1
M M₁ M₂ M₃ : Type u
M' : Type v
inst✝¹¹ : Ring R
inst✝¹⁰ : AddCommGroup M
inst✝⁹ : AddCommGroup M₁
inst✝⁸ : AddCommGroup M₂
inst✝⁷ : AddCommGroup M₃
inst✝⁶ : AddCommGroup M'
inst✝⁵ : Module R M
inst✝⁴ : Module R M₁
inst✝³ : Module R M₂
inst✝² : Module R M₃
inst✝¹ : Module R M'
inst✝ : HasRankNullity.{u, u_1} R
f : M →ₗ[R] M₁
h : Surjective ⇑f
⊢ Module.rank R M = Module.rank R M₁ + Module.rank R ↥(LinearMap.ker f)
state_after: no goals
Theorem: PosNum.cast_le
File: Mathlib/Data/Num/Lemmas.lean

tactic: rw [← not_lt]
state_before: α : Type u_1
inst✝ : LinearOrderedSemiring α
m n : PosNum
⊢ ↑m ≤ ↑n ↔ m ≤ n
state_after: α : Type u_1
inst✝ : LinearOrderedSemiring α
m n : PosNum
⊢ ¬↑n < ↑m ↔ m ≤ n

tactic: exact not_congr cast_lt
state_before: α : Type u_1
inst✝ : LinearOrderedSemiring α
m n : PosNum
⊢ ¬↑n < ↑m ↔ m ≤ n
state_after: no goals
Theorem: nsmul_eq_self
File: Mathlib/Algebra/Order/Kleene.lean

tactic: rw [succ_nsmul, nsmul_eq_self n.succ_ne_zero, add_idem]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
π : ι → Type u_4
inst✝ : IdemSemiring α
a✝ b c : α
n : ℕ
x✝ : n + 2 ≠ 0
a : α
⊢ (n + 2) • a = a
state_after: no goals
Theorem: LieAlgebra.ad_eq_lmul_left_sub_lmul_right
File: Mathlib/Algebra/Lie/OfAssociative.lean

tactic: ext a b
state_before: R : Type u
L : Type v
M : Type w
inst✝⁸ : CommRing R
inst✝⁷ : LieRing L
inst✝⁶ : LieAlgebra R L
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : LieRingModule L M
inst✝² : LieModule R L M
A : Type v
inst✝¹ : Ring A
inst✝ : Algebra R A
⊢ ⇑(ad R A) = LinearMap.mulLeft R - LinearMap.mulRight R
state_after: case h.h
R : Type u
L : Type v
M : Type w
inst✝⁸ : CommRing R
inst✝⁷ : LieRing L
inst✝⁶ : LieAlgebra R L
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : LieRingModule L M
inst✝² : LieModule R L M
A : Type v
inst✝¹ : Ring A
inst✝ : Algebra R A
a b : A
⊢ ((ad R A) a) b = ((LinearMap.mulLeft R - LinearMap.mulRight R) a) b

tactic: simp [LieRing.of_associative_ring_bracket]
state_before: case h.h
R : Type u
L : Type v
M : Type w
inst✝⁸ : CommRing R
inst✝⁷ : LieRing L
inst✝⁶ : LieAlgebra R L
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : LieRingModule L M
inst✝² : LieModule R L M
A : Type v
inst✝¹ : Ring A
inst✝ : Algebra R A
a b : A
⊢ ((ad R A) a) b = ((LinearMap.mulLeft R - LinearMap.mulRight R) a) b
state_after: no goals
Theorem: Finsupp.disjoint_supported_supported
File: Mathlib/LinearAlgebra/Finsupp.lean

tactic: rw [← supported_inter, disjoint_iff_inter_eq_empty.1 h, supported_empty]
state_before: α : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
R : Type u_5
S : Type u_6
inst✝⁷ : Semiring R
inst✝⁶ : Semiring S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid N
inst✝² : Module R N
inst✝¹ : AddCommMonoid P
inst✝ : Module R P
s t : Set α
h : Disjoint s t
⊢ supported M R s ⊓ supported M R t = ⊥
state_after: no goals
Theorem: Submodule.comm_trans_lTensorOne
File: Mathlib/LinearAlgebra/TensorProduct/Submodule.lean

tactic: refine LinearEquiv.toLinearMap_injective <| TensorProduct.ext' fun m r ↦ ?_
state_before: R : Type u
S : Type v
inst✝² : CommSemiring R
inst✝¹ : Semiring S
inst✝ : Algebra R S
M N : Submodule R S
⊢ TensorProduct.comm R ↥M ↥⊥ ≪≫ₗ M.lTensorOne = M.rTensorOne
state_after: R : Type u
S : Type v
inst✝² : CommSemiring R
inst✝¹ : Semiring S
inst✝ : Algebra R S
M N : Submodule R S
m : ↥M
r : ↥⊥
⊢ ↑(TensorProduct.comm R ↥M ↥⊥ ≪≫ₗ M.lTensorOne) (m ⊗ₜ[R] r) = ↑M.rTensorOne (m ⊗ₜ[R] r)

tactic: obtain ⟨x, h⟩ := Algebra.mem_bot.1 r.2
state_before: R : Type u
S : Type v
inst✝² : CommSemiring R
inst✝¹ : Semiring S
inst✝ : Algebra R S
M N : Submodule R S
m : ↥M
r : ↥⊥
⊢ ↑(TensorProduct.comm R ↥M ↥⊥ ≪≫ₗ M.lTensorOne) (m ⊗ₜ[R] r) = ↑M.rTensorOne (m ⊗ₜ[R] r)
state_after: case intro
R : Type u
S : Type v
inst✝² : CommSemiring R
inst✝¹ : Semiring S
inst✝ : Algebra R S
M N : Submodule R S
m : ↥M
r : ↥⊥
x : R
h : (algebraMap R S) x = ↑r
⊢ ↑(TensorProduct.comm R ↥M ↥⊥ ≪≫ₗ M.lTensorOne) (m ⊗ₜ[R] r) = ↑M.rTensorOne (m ⊗ₜ[R] r)

tactic: replace h : algebraMap R _ x = r := Subtype.val_injective h
state_before: case intro
R : Type u
S : Type v
inst✝² : CommSemiring R
inst✝¹ : Semiring S
inst✝ : Algebra R S
M N : Submodule R S
m : ↥M
r : ↥⊥
x : R
h : (algebraMap R S) x = ↑r
⊢ ↑(TensorProduct.comm R ↥M ↥⊥ ≪≫ₗ M.lTensorOne) (m ⊗ₜ[R] r) = ↑M.rTensorOne (m ⊗ₜ[R] r)
state_after: case intro
R : Type u
S : Type v
inst✝² : CommSemiring R
inst✝¹ : Semiring S
inst✝ : Algebra R S
M N : Submodule R S
m : ↥M
r : ↥⊥
x : R
h : (algebraMap R ↥⊥) x = r
⊢ ↑(TensorProduct.comm R ↥M ↥⊥ ≪≫ₗ M.lTensorOne) (m ⊗ₜ[R] r) = ↑M.rTensorOne (m ⊗ₜ[R] r)

tactic: rw [← h]
state_before: case intro
R : Type u
S : Type v
inst✝² : CommSemiring R
inst✝¹ : Semiring S
inst✝ : Algebra R S
M N : Submodule R S
m : ↥M
r : ↥⊥
x : R
h : (algebraMap R ↥⊥) x = r
⊢ ↑(TensorProduct.comm R ↥M ↥⊥ ≪≫ₗ M.lTensorOne) (m ⊗ₜ[R] r) = ↑M.rTensorOne (m ⊗ₜ[R] r)
state_after: case intro
R : Type u
S : Type v
inst✝² : CommSemiring R
inst✝¹ : Semiring S
inst✝ : Algebra R S
M N : Submodule R S
m : ↥M
r : ↥⊥
x : R
h : (algebraMap R ↥⊥) x = r
⊢ ↑(TensorProduct.comm R ↥M ↥⊥ ≪≫ₗ M.lTensorOne) (m ⊗ₜ[R] (algebraMap R ↥⊥) x) =
    ↑M.rTensorOne (m ⊗ₜ[R] (algebraMap R ↥⊥) x)

tactic: simp
state_before: case intro
R : Type u
S : Type v
inst✝² : CommSemiring R
inst✝¹ : Semiring S
inst✝ : Algebra R S
M N : Submodule R S
m : ↥M
r : ↥⊥
x : R
h : (algebraMap R ↥⊥) x = r
⊢ ↑(TensorProduct.comm R ↥M ↥⊥ ≪≫ₗ M.lTensorOne) (m ⊗ₜ[R] (algebraMap R ↥⊥) x) =
    ↑M.rTensorOne (m ⊗ₜ[R] (algebraMap R ↥⊥) x)
state_after: no goals
Theorem: Fin.castPred_le_iff
File: Mathlib/Data/Fin/Basic.lean

tactic: rw [← castSucc_le_castSucc_iff, castSucc_castPred]
state_before: n m : ℕ
j : Fin n
i : Fin (n + 1)
hi : i ≠ last n
⊢ i.castPred hi ≤ j ↔ i ≤ j.castSucc
state_after: no goals
Theorem: Bifunctor.comp_snd
File: Mathlib/Control/Bifunctor.lean

tactic: simp [snd, bimap_bimap]
state_before: F : Type u₀ → Type u₁ → Type u₂
inst✝¹ : Bifunctor F
inst✝ : LawfulBifunctor F
α : Type u₀
β₀ β₁ β₂ : Type u₁
g : β₀ → β₁
g' : β₁ → β₂
x : F α β₀
⊢ snd g' (snd g x) = snd (g' ∘ g) x
state_after: no goals
Theorem: Complex.arg_cos_add_sin_mul_I_coe_angle
File: Mathlib/Analysis/SpecialFunctions/Complex/Arg.lean

tactic: rw [← one_mul (_ + _), ← ofReal_one, arg_mul_cos_add_sin_mul_I_coe_angle zero_lt_one]
state_before: a x z : ℂ
θ : Real.Angle
⊢ ↑(↑θ.cos + ↑θ.sin * I).arg = θ
state_after: no goals
Theorem: WeierstrassCurve.natDegree_Φ_pos
File: Mathlib/AlgebraicGeometry/EllipticCurve/DivisionPolynomial/Degree.lean

tactic: rwa [natDegree_Φ, pow_pos_iff two_ne_zero, Int.natAbs_pos]
state_before: R : Type u
inst✝¹ : CommRing R
W : WeierstrassCurve R
inst✝ : Nontrivial R
n : ℤ
hn : n ≠ 0
⊢ 0 < (W.Φ n).natDegree
state_after: no goals
Theorem: Set.indicator_mul_right
File: Mathlib/Algebra/GroupWithZero/Indicator.lean

tactic: simp only [indicator]
state_before: ι : Type u_1
κ : Type u_2
G₀ : Type u_3
M₀ : Type u_4
R : Type u_5
inst✝ : MulZeroClass M₀
s✝ t : Set ι
f✝ g✝ : ι → M₀
i : ι
s : Set ι
f g : ι → M₀
⊢ s.indicator (fun j => f j * g j) i = f i * s.indicator g i
state_after: ι : Type u_1
κ : Type u_2
G₀ : Type u_3
M₀ : Type u_4
R : Type u_5
inst✝ : MulZeroClass M₀
s✝ t : Set ι
f✝ g✝ : ι → M₀
i : ι
s : Set ι
f g : ι → M₀
⊢ (if i ∈ s then f i * g i else 0) = f i * if i ∈ s then g i else 0

tactic: split_ifs
state_before: ι : Type u_1
κ : Type u_2
G₀ : Type u_3
M₀ : Type u_4
R : Type u_5
inst✝ : MulZeroClass M₀
s✝ t : Set ι
f✝ g✝ : ι → M₀
i : ι
s : Set ι
f g : ι → M₀
⊢ (if i ∈ s then f i * g i else 0) = f i * if i ∈ s then g i else 0
state_after: case pos
ι : Type u_1
κ : Type u_2
G₀ : Type u_3
M₀ : Type u_4
R : Type u_5
inst✝ : MulZeroClass M₀
s✝ t : Set ι
f✝ g✝ : ι → M₀
i : ι
s : Set ι
f g : ι → M₀
h✝ : i ∈ s
⊢ f i * g i = f i * g i

case neg
ι : Type u_1
κ : Type u_2
G₀ : Type u_3
M₀ : Type u_4
R : Type u_5
inst✝ : MulZeroClass M₀
s✝ t : Set ι
f✝ g✝ : ι → M₀
i : ι
s : Set ι
f g : ι → M₀
h✝ : i ∉ s
⊢ 0 = f i * 0

tactic: rfl
state_before: case pos
ι : Type u_1
κ : Type u_2
G₀ : Type u_3
M₀ : Type u_4
R : Type u_5
inst✝ : MulZeroClass M₀
s✝ t : Set ι
f✝ g✝ : ι → M₀
i : ι
s : Set ι
f g : ι → M₀
h✝ : i ∈ s
⊢ f i * g i = f i * g i
state_after: no goals

tactic: rw [mul_zero]
state_before: case neg
ι : Type u_1
κ : Type u_2
G₀ : Type u_3
M₀ : Type u_4
R : Type u_5
inst✝ : MulZeroClass M₀
s✝ t : Set ι
f✝ g✝ : ι → M₀
i : ι
s : Set ι
f g : ι → M₀
h✝ : i ∉ s
⊢ 0 = f i * 0
state_after: no goals
Theorem: SimpleGraph.edgeSet_sdiff
File: Mathlib/Combinatorics/SimpleGraph/Basic.lean

tactic: ext ⟨x, y⟩
state_before: ι : Sort u_1
V : Type u
G : SimpleGraph V
a b c u v w : V
e : Sym2 V
G₁ G₂ : SimpleGraph V
⊢ (G₁ \ G₂).edgeSet = G₁.edgeSet \ G₂.edgeSet
state_after: case h.mk.mk
ι : Sort u_1
V : Type u
G : SimpleGraph V
a b c u v w : V
e : Sym2 V
G₁ G₂ : SimpleGraph V
x✝ : Sym2 V
x y : V
⊢ Quot.mk (Sym2.Rel V) (x, y) ∈ (G₁ \ G₂).edgeSet ↔ Quot.mk (Sym2.Rel V) (x, y) ∈ G₁.edgeSet \ G₂.edgeSet

tactic: rfl
state_before: case h.mk.mk
ι : Sort u_1
V : Type u
G : SimpleGraph V
a b c u v w : V
e : Sym2 V
G₁ G₂ : SimpleGraph V
x✝ : Sym2 V
x y : V
⊢ Quot.mk (Sym2.Rel V) (x, y) ∈ (G₁ \ G₂).edgeSet ↔ Quot.mk (Sym2.Rel V) (x, y) ∈ G₁.edgeSet \ G₂.edgeSet
state_after: no goals
Theorem: volume_euclideanSpace_eq_dirac
File: Mathlib/MeasureTheory/Measure/Haar/InnerProductSpace.lean

tactic: ext s hs
state_before: ι✝ : Type u_1
E : Type u_2
F : Type u_3
inst✝⁷ : Fintype ι✝
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : InnerProductSpace ℝ F
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
ι : Type u_4
inst✝¹ : Fintype ι
inst✝ : IsEmpty ι
⊢ volume = dirac 0
state_after: case h
ι✝ : Type u_1
E : Type u_2
F : Type u_3
inst✝⁷ : Fintype ι✝
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : InnerProductSpace ℝ F
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
ι : Type u_4
inst✝¹ : Fintype ι
inst✝ : IsEmpty ι
s : Set (EuclideanSpace ℝ ι)
hs : MeasurableSet s
⊢ volume s = (dirac 0) s

tactic: simp only [← ((EuclideanSpace.volume_preserving_measurableEquiv ι).symm).measure_preimage hs,
  volume_pi_eq_dirac 0, MeasurableEquiv.measurableSet_preimage, hs, dirac_apply', indicator,
  mem_preimage, Pi.one_apply]
state_before: case h
ι✝ : Type u_1
E : Type u_2
F : Type u_3
inst✝⁷ : Fintype ι✝
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : InnerProductSpace ℝ F
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
ι : Type u_4
inst✝¹ : Fintype ι
inst✝ : IsEmpty ι
s : Set (EuclideanSpace ℝ ι)
hs : MeasurableSet s
⊢ volume s = (dirac 0) s
state_after: case h
ι✝ : Type u_1
E : Type u_2
F : Type u_3
inst✝⁷ : Fintype ι✝
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : InnerProductSpace ℝ F
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
ι : Type u_4
inst✝¹ : Fintype ι
inst✝ : IsEmpty ι
s : Set (EuclideanSpace ℝ ι)
hs : MeasurableSet s
⊢ (if 0 ∈ ⇑(EuclideanSpace.measurableEquiv ι).symm ⁻¹' s then 1 else 0) = if 0 ∈ s then 1 else 0

tactic: rfl
state_before: case h
ι✝ : Type u_1
E : Type u_2
F : Type u_3
inst✝⁷ : Fintype ι✝
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : InnerProductSpace ℝ F
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
ι : Type u_4
inst✝¹ : Fintype ι
inst✝ : IsEmpty ι
s : Set (EuclideanSpace ℝ ι)
hs : MeasurableSet s
⊢ (if 0 ∈ ⇑(EuclideanSpace.measurableEquiv ι).symm ⁻¹' s then 1 else 0) = if 0 ∈ s then 1 else 0
state_after: no goals
Theorem: Module.End_algebraMap_isUnit_inv_apply_eq_iff'
File: Mathlib/Algebra/Algebra/Basic.lean

tactic: apply_fun (↑h.unit : M → M) using ((Module.End_isUnit_iff _).mp h).injective
state_before: R : Type u
S : Type v
M : Type w
inst✝⁷ : CommSemiring R
inst✝⁶ : Semiring S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : Module S M
inst✝² : SMulCommClass S R M
inst✝¹ : SMul R S
inst✝ : IsScalarTower R S M
x : R
h : IsUnit ((algebraMap R (End S M)) x)
m m' : M
H : m = x • m'
⊢ m' = ↑h.unit⁻¹ (x • m')
state_after: R : Type u
S : Type v
M : Type w
inst✝⁷ : CommSemiring R
inst✝⁶ : Semiring S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : Module S M
inst✝² : SMulCommClass S R M
inst✝¹ : SMul R S
inst✝ : IsScalarTower R S M
x : R
h : IsUnit ((algebraMap R (End S M)) x)
m m' : M
H : m = x • m'
⊢ ↑h.unit m' = ↑h.unit (↑h.unit⁻¹ (x • m'))

tactic: erw [End_isUnit_apply_inv_apply_of_isUnit]
state_before: R : Type u
S : Type v
M : Type w
inst✝⁷ : CommSemiring R
inst✝⁶ : Semiring S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : Module S M
inst✝² : SMulCommClass S R M
inst✝¹ : SMul R S
inst✝ : IsScalarTower R S M
x : R
h : IsUnit ((algebraMap R (End S M)) x)
m m' : M
H : m = x • m'
⊢ ↑h.unit m' = ↑h.unit (↑h.unit⁻¹ (x • m'))
state_after: R : Type u
S : Type v
M : Type w
inst✝⁷ : CommSemiring R
inst✝⁶ : Semiring S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : Module S M
inst✝² : SMulCommClass S R M
inst✝¹ : SMul R S
inst✝ : IsScalarTower R S M
x : R
h : IsUnit ((algebraMap R (End S M)) x)
m m' : M
H : m = x • m'
⊢ ↑h.unit m' = x • m'

tactic: rfl
state_before: R : Type u
S : Type v
M : Type w
inst✝⁷ : CommSemiring R
inst✝⁶ : Semiring S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : Module S M
inst✝² : SMulCommClass S R M
inst✝¹ : SMul R S
inst✝ : IsScalarTower R S M
x : R
h : IsUnit ((algebraMap R (End S M)) x)
m m' : M
H : m = x • m'
⊢ ↑h.unit m' = x • m'
state_after: no goals
Theorem: iteratedDerivWithin_eq_equiv_comp
File: Mathlib/Analysis/Calculus/IteratedDeriv/Defs.lean

tactic: ext x
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
n : ℕ
f : 𝕜 → F
s : Set 𝕜
x : 𝕜
⊢ iteratedDerivWithin n f s = ⇑(ContinuousMultilinearMap.piFieldEquiv 𝕜 (Fin n) F).symm ∘ iteratedFDerivWithin 𝕜 n f s
state_after: case h
𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
n : ℕ
f : 𝕜 → F
s : Set 𝕜
x✝ x : 𝕜
⊢ iteratedDerivWithin n f s x =
    (⇑(ContinuousMultilinearMap.piFieldEquiv 𝕜 (Fin n) F).symm ∘ iteratedFDerivWithin 𝕜 n f s) x

tactic: rfl
state_before: case h
𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
n : ℕ
f : 𝕜 → F
s : Set 𝕜
x✝ x : 𝕜
⊢ iteratedDerivWithin n f s x =
    (⇑(ContinuousMultilinearMap.piFieldEquiv 𝕜 (Fin n) F).symm ∘ iteratedFDerivWithin 𝕜 n f s) x
state_after: no goals
Theorem: Cardinal.sum_le_sum
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: have := H i
state_before: α β : Type u
ι : Type u_1
f g : ι → Cardinal.{u_2}
H : ∀ (i : ι), f i ≤ g i
i : ι
⊢ Nonempty (Quotient.out (f i) ↪ Quotient.out (g ((Embedding.refl ι) i)))
state_after: α β : Type u
ι : Type u_1
f g : ι → Cardinal.{u_2}
H : ∀ (i : ι), f i ≤ g i
i : ι
this : f i ≤ g i
⊢ Nonempty (Quotient.out (f i) ↪ Quotient.out (g ((Embedding.refl ι) i)))

tactic: rwa [← Quot.out_eq (f i), ← Quot.out_eq (g i)] at this
state_before: α β : Type u
ι : Type u_1
f g : ι → Cardinal.{u_2}
H : ∀ (i : ι), f i ≤ g i
i : ι
this : f i ≤ g i
⊢ Nonempty (Quotient.out (f i) ↪ Quotient.out (g ((Embedding.refl ι) i)))
state_after: no goals
Theorem: Cardinal.mk_univ_real
File: Mathlib/Data/Real/Cardinality.lean

tactic: rw [mk_univ, mk_real]
state_before: c : ℝ
f g : ℕ → Bool
n : ℕ
⊢ #↑Set.univ = 𝔠
state_after: no goals
Theorem: Polynomial.bit1_comp
File: Mathlib/Algebra/Polynomial/Eval.lean

tactic: simp only [bit1, add_comp, bit0_comp, one_comp]
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝ : Semiring R
p q r : R[X]
⊢ (bit1 p).comp q = bit1 (p.comp q)
state_after: no goals
Theorem: ArithmeticFunction.abs_moebius_eq_one_of_squarefree
File: Mathlib/NumberTheory/ArithmeticFunction.lean

tactic: simp only [moebius_apply_of_squarefree hl, abs_pow, abs_neg, abs_one, one_pow]
state_before: R : Type u_1
l : ℕ
hl : Squarefree l
⊢ |μ l| = 1
state_after: no goals