1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Nat.not_isWellOrderLimitElement
File: Mathlib/Order/IsWellOrderLimitElement.lean

tactic: obtain _|a := a
state_before: α : Type u_1
inst✝² : LinearOrder α
inst✝¹ : IsWellOrder α fun x x_1 => x < x_1
a✝ : α
ha : IsWellOrderLimitElement a✝
a : ℕ
inst✝ : IsWellOrderLimitElement a
⊢ False
state_after: case zero
α : Type u_1
inst✝² : LinearOrder α
inst✝¹ : IsWellOrder α fun x x_1 => x < x_1
a : α
ha : IsWellOrderLimitElement a
inst✝ : IsWellOrderLimitElement 0
⊢ False

case succ
α : Type u_1
inst✝² : LinearOrder α
inst✝¹ : IsWellOrder α fun x x_1 => x < x_1
a✝ : α
ha : IsWellOrderLimitElement a✝
a : ℕ
inst✝ : IsWellOrderLimitElement (a + 1)
⊢ False

tactic: simpa using IsWellOrderLimitElement.neq_bot (0 : ℕ)
state_before: case zero
α : Type u_1
inst✝² : LinearOrder α
inst✝¹ : IsWellOrder α fun x x_1 => x < x_1
a : α
ha : IsWellOrderLimitElement a
inst✝ : IsWellOrderLimitElement 0
⊢ False
state_after: no goals

tactic: simpa using IsWellOrderLimitElement.wellOrderSucc_lt (Nat.lt_succ_self a)
state_before: case succ
α : Type u_1
inst✝² : LinearOrder α
inst✝¹ : IsWellOrder α fun x x_1 => x < x_1
a✝ : α
ha : IsWellOrderLimitElement a✝
a : ℕ
inst✝ : IsWellOrderLimitElement (a + 1)
⊢ False
state_after: no goals
Theorem: MeasureTheory.snorm'_norm
File: Mathlib/MeasureTheory/Function/LpSeminorm/Basic.lean

tactic: simp [snorm']
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → F
⊢ snorm' (fun a => ‖f a‖) q μ = snorm' f q μ
state_after: no goals
Theorem: Units.mul_left_dvd
File: Mathlib/Algebra/Divisibility/Units.lean

tactic: rw [mul_comm]
state_before: α : Type u_1
inst✝ : CommMonoid α
a b : α
u : αˣ
⊢ ↑u * a ∣ b ↔ a ∣ b
state_after: α : Type u_1
inst✝ : CommMonoid α
a b : α
u : αˣ
⊢ a * ↑u ∣ b ↔ a ∣ b

tactic: apply mul_right_dvd
state_before: α : Type u_1
inst✝ : CommMonoid α
a b : α
u : αˣ
⊢ a * ↑u ∣ b ↔ a ∣ b
state_after: no goals
Theorem: multiplicity.finite_of_not_isUnit
File: Mathlib/RingTheory/UniqueFactorizationDomain.lean

tactic: obtain ⟨n, c, ndvd, rfl⟩ := WfDvdMonoid.max_power_factor' hb ha
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : WfDvdMonoid α
a b : α
ha : ¬IsUnit a
hb : b ≠ 0
⊢ Finite a b
state_after: case intro.intro.intro
α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : WfDvdMonoid α
a : α
ha : ¬IsUnit a
n : ℕ
c : α
ndvd : ¬a ∣ c
hb : a ^ n * c ≠ 0
⊢ Finite a (a ^ n * c)

tactic: exact ⟨n, by rwa [pow_succ, mul_dvd_mul_iff_left (left_ne_zero_of_mul hb)]⟩
state_before: case intro.intro.intro
α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : WfDvdMonoid α
a : α
ha : ¬IsUnit a
n : ℕ
c : α
ndvd : ¬a ∣ c
hb : a ^ n * c ≠ 0
⊢ Finite a (a ^ n * c)
state_after: no goals

tactic: rwa [pow_succ, mul_dvd_mul_iff_left (left_ne_zero_of_mul hb)]
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : WfDvdMonoid α
a : α
ha : ¬IsUnit a
n : ℕ
c : α
ndvd : ¬a ∣ c
hb : a ^ n * c ≠ 0
⊢ ¬a ^ (n + 1) ∣ a ^ n * c
state_after: no goals
Theorem: AlgebraicTopology.DoldKan.hσ'_eq
File: Mathlib/AlgebraicTopology/DoldKan/Homotopies.lean

tactic: congr
state_before: C : Type u_1
inst✝¹ : Category.{?u.10692, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
q n a m : ℕ
ha : n = a + q
hnm : c.Rel m n
⊢ X _[n + 1] = K[X].X m
state_after: no goals

tactic: simp only [hσ', hσ]
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
q n a m : ℕ
ha : n = a + q
hnm : c.Rel m n
⊢ hσ' q n m hnm = ((-1) ^ a • X.σ ⟨a, ⋯⟩) ≫ eqToHom ⋯
state_after: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
q n a m : ℕ
ha : n = a + q
hnm : c.Rel m n
⊢ (if n < q then 0 else (-1) ^ (n - q) • X.σ ⟨n - q, ⋯⟩) ≫ eqToHom ⋯ = ((-1) ^ a • X.σ ⟨a, ⋯⟩) ≫ eqToHom ⋯

tactic: split_ifs
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
q n a m : ℕ
ha : n = a + q
hnm : c.Rel m n
⊢ (if n < q then 0 else (-1) ^ (n - q) • X.σ ⟨n - q, ⋯⟩) ≫ eqToHom ⋯ = ((-1) ^ a • X.σ ⟨a, ⋯⟩) ≫ eqToHom ⋯
state_after: case pos
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
q n a m : ℕ
ha : n = a + q
hnm : c.Rel m n
h✝ : n < q
⊢ 0 ≫ eqToHom ⋯ = ((-1) ^ a • X.σ ⟨a, ⋯⟩) ≫ eqToHom ⋯

case neg
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
q n a m : ℕ
ha : n = a + q
hnm : c.Rel m n
h✝ : ¬n < q
⊢ ((-1) ^ (n - q) • X.σ ⟨n - q, ⋯⟩) ≫ eqToHom ⋯ = ((-1) ^ a • X.σ ⟨a, ⋯⟩) ≫ eqToHom ⋯

tactic: omega
state_before: case pos
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
q n a m : ℕ
ha : n = a + q
hnm : c.Rel m n
h✝ : n < q
⊢ 0 ≫ eqToHom ⋯ = ((-1) ^ a • X.σ ⟨a, ⋯⟩) ≫ eqToHom ⋯
state_after: no goals

tactic: have h' := tsub_eq_of_eq_add ha
state_before: case neg
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
q n a m : ℕ
ha : n = a + q
hnm : c.Rel m n
h✝ : ¬n < q
⊢ ((-1) ^ (n - q) • X.σ ⟨n - q, ⋯⟩) ≫ eqToHom ⋯ = ((-1) ^ a • X.σ ⟨a, ⋯⟩) ≫ eqToHom ⋯
state_after: case neg
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
q n a m : ℕ
ha : n = a + q
hnm : c.Rel m n
h✝ : ¬n < q
h' : n - q = a
⊢ ((-1) ^ (n - q) • X.σ ⟨n - q, ⋯⟩) ≫ eqToHom ⋯ = ((-1) ^ a • X.σ ⟨a, ⋯⟩) ≫ eqToHom ⋯

tactic: congr
state_before: case neg
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
q n a m : ℕ
ha : n = a + q
hnm : c.Rel m n
h✝ : ¬n < q
h' : n - q = a
⊢ ((-1) ^ (n - q) • X.σ ⟨n - q, ⋯⟩) ≫ eqToHom ⋯ = ((-1) ^ a • X.σ ⟨a, ⋯⟩) ≫ eqToHom ⋯
state_after: no goals
Theorem: ContinuousMap.Homotopic.equivalence
File: Mathlib/Topology/Homotopy/Basic.lean

tactic: apply symm
state_before: F : Type u_1
X : Type u
Y : Type v
Z : Type w
Z' : Type x
ι : Type u_2
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
⊢ ∀ {x y : C(X, Y)}, x.Homotopic y → y.Homotopic x
state_after: no goals

tactic: apply trans
state_before: F : Type u_1
X : Type u
Y : Type v
Z : Type w
Z' : Type x
ι : Type u_2
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
⊢ ∀ {x y z : C(X, Y)}, x.Homotopic y → y.Homotopic z → x.Homotopic z
state_after: no goals
Theorem: Rat.toNNRat_lt_iff_lt_coe
File: Mathlib/Data/NNRat/Defs.lean

tactic: rw [← coe_lt_coe, Rat.coe_toNNRat q hq]
state_before: p✝ q : ℚ
p : ℚ≥0
hq : 0 ≤ q
⊢ q.toNNRat < p ↔ q < ↑p
state_after: no goals
Theorem: Filter.tendsto_prod_iff
File: Mathlib/Order/Filter/Prod.lean

tactic: simp only [tendsto_def, mem_prod_iff, prod_sub_preimage_iff, exists_prop, iff_self_iff]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
s : Set α
t : Set β
f✝ : Filter α
g : Filter β
f : α × β → γ
x : Filter α
y : Filter β
z : Filter γ
⊢ Tendsto f (x ×ˢ y) z ↔ ∀ W ∈ z, ∃ U ∈ x, ∃ V ∈ y, ∀ (x : α) (y : β), x ∈ U → y ∈ V → f (x, y) ∈ W
state_after: no goals
Theorem: vsub_add_vsub_cancel
File: Mathlib/Algebra/AddTorsor.lean

tactic: apply vadd_right_cancel p₃
state_before: G : Type u_1
P : Type u_2
inst✝ : AddGroup G
T : AddTorsor G P
p₁ p₂ p₃ : P
⊢ p₁ -ᵥ p₂ + (p₂ -ᵥ p₃) = p₁ -ᵥ p₃
state_after: G : Type u_1
P : Type u_2
inst✝ : AddGroup G
T : AddTorsor G P
p₁ p₂ p₃ : P
⊢ p₁ -ᵥ p₂ + (p₂ -ᵥ p₃) +ᵥ p₃ = p₁ -ᵥ p₃ +ᵥ p₃

tactic: rw [add_vadd, vsub_vadd, vsub_vadd, vsub_vadd]
state_before: G : Type u_1
P : Type u_2
inst✝ : AddGroup G
T : AddTorsor G P
p₁ p₂ p₃ : P
⊢ p₁ -ᵥ p₂ + (p₂ -ᵥ p₃) +ᵥ p₃ = p₁ -ᵥ p₃ +ᵥ p₃
state_after: no goals
Theorem: Nat.odd_iff
File: Mathlib/Algebra/Ring/Parity.lean

tactic: omega
state_before: F : Type u_1
α : Type u_2
β : Type u_3
R : Type u_4
m✝ n : ℕ
x✝ : Odd n
m : ℕ
hm : n = 2 * m + 1
⊢ n % 2 = 1
state_after: no goals

tactic: rw [h, add_comm]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
R : Type u_4
m n : ℕ
h : n % 2 = 1
⊢ n % 2 + 2 * (n / 2) = 2 * (n / 2) + 1
state_after: no goals
Theorem: InnerProductGeometry.norm_add_eq_add_norm_iff_angle_eq_zero
File: Mathlib/Geometry/Euclidean/Angle/Unoriented/Basic.lean

tactic: refine ⟨fun h => ?_, norm_add_eq_add_norm_of_angle_eq_zero⟩
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x✝ y✝ x y : V
hx : x ≠ 0
hy : y ≠ 0
⊢ ‖x + y‖ = ‖x‖ + ‖y‖ ↔ angle x y = 0
state_after: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x✝ y✝ x y : V
hx : x ≠ 0
hy : y ≠ 0
h : ‖x + y‖ = ‖x‖ + ‖y‖
⊢ angle x y = 0

tactic: rw [← inner_eq_mul_norm_iff_angle_eq_zero hx hy]
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x✝ y✝ x y : V
hx : x ≠ 0
hy : y ≠ 0
h : ‖x + y‖ = ‖x‖ + ‖y‖
⊢ angle x y = 0
state_after: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x✝ y✝ x y : V
hx : x ≠ 0
hy : y ≠ 0
h : ‖x + y‖ = ‖x‖ + ‖y‖
⊢ ⟪x, y⟫_ℝ = ‖x‖ * ‖y‖

tactic: obtain ⟨hxy₁, hxy₂⟩ := norm_nonneg (x + y), add_nonneg (norm_nonneg x) (norm_nonneg y)
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x✝ y✝ x y : V
hx : x ≠ 0
hy : y ≠ 0
h : ‖x + y‖ = ‖x‖ + ‖y‖
⊢ ⟪x, y⟫_ℝ = ‖x‖ * ‖y‖
state_after: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x✝ y✝ x y : V
hx : x ≠ 0
hy : y ≠ 0
h : ‖x + y‖ = ‖x‖ + ‖y‖
hxy₁ : 0 ≤ ‖x + y‖
hxy₂ : 0 ≤ ‖x‖ + ‖y‖
⊢ ⟪x, y⟫_ℝ = ‖x‖ * ‖y‖

tactic: rw [← sq_eq_sq hxy₁ hxy₂, norm_add_pow_two_real] at h
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x✝ y✝ x y : V
hx : x ≠ 0
hy : y ≠ 0
h : ‖x + y‖ = ‖x‖ + ‖y‖
hxy₁ : 0 ≤ ‖x + y‖
hxy₂ : 0 ≤ ‖x‖ + ‖y‖
⊢ ⟪x, y⟫_ℝ = ‖x‖ * ‖y‖
state_after: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x✝ y✝ x y : V
hx : x ≠ 0
hy : y ≠ 0
h : ‖x‖ ^ 2 + 2 * ⟪x, y⟫_ℝ + ‖y‖ ^ 2 = (‖x‖ + ‖y‖) ^ 2
hxy₁ : 0 ≤ ‖x + y‖
hxy₂ : 0 ≤ ‖x‖ + ‖y‖
⊢ ⟪x, y⟫_ℝ = ‖x‖ * ‖y‖

tactic: calc
  ⟪x, y⟫ = ((‖x‖ + ‖y‖) ^ 2 - ‖x‖ ^ 2 - ‖y‖ ^ 2) / 2 := by linarith
  _ = ‖x‖ * ‖y‖ := by ring
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x✝ y✝ x y : V
hx : x ≠ 0
hy : y ≠ 0
h : ‖x‖ ^ 2 + 2 * ⟪x, y⟫_ℝ + ‖y‖ ^ 2 = (‖x‖ + ‖y‖) ^ 2
hxy₁ : 0 ≤ ‖x + y‖
hxy₂ : 0 ≤ ‖x‖ + ‖y‖
⊢ ⟪x, y⟫_ℝ = ‖x‖ * ‖y‖
state_after: no goals

tactic: linarith
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x✝ y✝ x y : V
hx : x ≠ 0
hy : y ≠ 0
h : ‖x‖ ^ 2 + 2 * ⟪x, y⟫_ℝ + ‖y‖ ^ 2 = (‖x‖ + ‖y‖) ^ 2
hxy₁ : 0 ≤ ‖x + y‖
hxy₂ : 0 ≤ ‖x‖ + ‖y‖
⊢ ⟪x, y⟫_ℝ = ((‖x‖ + ‖y‖) ^ 2 - ‖x‖ ^ 2 - ‖y‖ ^ 2) / 2
state_after: no goals

tactic: ring
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x✝ y✝ x y : V
hx : x ≠ 0
hy : y ≠ 0
h : ‖x‖ ^ 2 + 2 * ⟪x, y⟫_ℝ + ‖y‖ ^ 2 = (‖x‖ + ‖y‖) ^ 2
hxy₁ : 0 ≤ ‖x + y‖
hxy₂ : 0 ≤ ‖x‖ + ‖y‖
⊢ ((‖x‖ + ‖y‖) ^ 2 - ‖x‖ ^ 2 - ‖y‖ ^ 2) / 2 = ‖x‖ * ‖y‖
state_after: no goals
Theorem: Pell.Solution₁.prop_y
File: Mathlib/NumberTheory/Pell.lean

tactic: rw [← a.prop]
state_before: d : ℤ
a : Solution₁ d
⊢ d * a.y ^ 2 = a.x ^ 2 - 1
state_after: d : ℤ
a : Solution₁ d
⊢ d * a.y ^ 2 = a.x ^ 2 - (a.x ^ 2 - d * a.y ^ 2)

tactic: ring
state_before: d : ℤ
a : Solution₁ d
⊢ d * a.y ^ 2 = a.x ^ 2 - (a.x ^ 2 - d * a.y ^ 2)
state_after: no goals
Theorem: HomologicalComplex.mono_homologyMap_of_mono_of_not_rel
File: Mathlib/Algebra/Homology/ShortComplex/HomologicalComplex.lean

tactic: tauto
state_before: C : Type u_1
inst✝⁴ : Category.{u_3, u_1} C
inst✝³ : HasZeroMorphisms C
ι : Type u_2
c : ComplexShape ι
K L : HomologicalComplex C c
i j✝ k : ι
φ : K ⟶ L
j : ι
inst✝² : K.HasHomology j
inst✝¹ : L.HasHomology j
inst✝ : Mono (φ.f j)
hj : ∀ (i : ι), ¬c.Rel i j
⊢ ¬c.Rel (c.prev j) j
state_after: no goals
Theorem: EuclideanGeometry.oangle_eq_oangle_of_dist_eq
File: Mathlib/Geometry/Euclidean/Angle/Oriented/Affine.lean

tactic: simp_rw [dist_eq_norm_vsub V] at h
state_before: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
hd2 : Fact (finrank ℝ V = 2)
inst✝ : Module.Oriented ℝ V (Fin 2)
p₁ p₂ p₃ : P
h : dist p₁ p₂ = dist p₁ p₃
⊢ ∡ p₁ p₂ p₃ = ∡ p₂ p₃ p₁
state_after: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
hd2 : Fact (finrank ℝ V = 2)
inst✝ : Module.Oriented ℝ V (Fin 2)
p₁ p₂ p₃ : P
h : ‖p₁ -ᵥ p₂‖ = ‖p₁ -ᵥ p₃‖
⊢ ∡ p₁ p₂ p₃ = ∡ p₂ p₃ p₁

tactic: rw [oangle, oangle, ← vsub_sub_vsub_cancel_left p₃ p₂ p₁, ← vsub_sub_vsub_cancel_left p₂ p₃ p₁,
  o.oangle_sub_eq_oangle_sub_rev_of_norm_eq h]
state_before: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
hd2 : Fact (finrank ℝ V = 2)
inst✝ : Module.Oriented ℝ V (Fin 2)
p₁ p₂ p₃ : P
h : ‖p₁ -ᵥ p₂‖ = ‖p₁ -ᵥ p₃‖
⊢ ∡ p₁ p₂ p₃ = ∡ p₂ p₃ p₁
state_after: no goals
Theorem: DenseInducing.mk'
File: Mathlib/Topology/DenseEmbedding.lean

tactic: simpa [Filter.le_def] using H a
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
i✝ : α → β
di : DenseInducing i✝
inst✝¹ : TopologicalSpace δ
f : γ → α
g : γ → δ
h : δ → β
inst✝ : TopologicalSpace γ
i : α → β
c : Continuous i
dense : ∀ (x : β), x ∈ closure (range i)
H : ∀ (a : α), ∀ s ∈ 𝓝 a, ∃ t ∈ 𝓝 (i a), ∀ (b : α), i b ∈ t → b ∈ s
a : α
⊢ comap i (𝓝 (i a)) ≤ 𝓝 a
state_after: no goals
Theorem: coe_finRotate
File: Mathlib/Logic/Equiv/Fin.lean

tactic: rw [finRotate_succ_apply, Fin.val_add_one i]
state_before: m n : ℕ
i : Fin n.succ
⊢ ↑((finRotate n.succ) i) = if i = Fin.last n then 0 else ↑i + 1
state_after: no goals
Theorem: Complex.arg_of_im_nonneg_of_ne_zero
File: Mathlib/Analysis/SpecialFunctions/Complex/Arg.lean

tactic: rw [← cos_arg h₂, Real.arccos_cos (arg_nonneg_iff.2 h₁) (arg_le_pi _)]
state_before: a x z✝ z : ℂ
h₁ : 0 ≤ z.im
h₂ : z ≠ 0
⊢ z.arg = Real.arccos (z.re / abs z)
state_after: no goals
Theorem: Matroid.map_val_restrictSubtype_ground_eq
File: Mathlib/Data/Matroid/Map.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
f : α → β
E✝ I✝ s : Set α
M✝¹ : Matroid α
N : Matroid β
E X I : Set α
M✝ M : Matroid α
⊢ (M.restrictSubtype M.E).map Subtype.val ⋯ = M
state_after: no goals
Theorem: Finset.gcd_mul_left
File: Mathlib/Algebra/GCDMonoid/Finset.lean

tactic: refine s.induction_on ?_ ?_
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
s s₁ s₂ : Finset β
f : β → α
a : α
⊢ (s.gcd fun x => a * f x) = normalize a * s.gcd f
state_after: case refine_1
ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
s s₁ s₂ : Finset β
f : β → α
a : α
⊢ (∅.gcd fun x => a * f x) = normalize a * ∅.gcd f

case refine_2
ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
s s₁ s₂ : Finset β
f : β → α
a : α
⊢ ∀ ⦃a_1 : β⦄ {s : Finset β},
    a_1 ∉ s →
      (s.gcd fun x => a * f x) = normalize a * s.gcd f →
        ((insert a_1 s).gcd fun x => a * f x) = normalize a * (insert a_1 s).gcd f

tactic: simp
state_before: case refine_1
ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
s s₁ s₂ : Finset β
f : β → α
a : α
⊢ (∅.gcd fun x => a * f x) = normalize a * ∅.gcd f
state_after: no goals

tactic: intro b t _ h
state_before: case refine_2
ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
s s₁ s₂ : Finset β
f : β → α
a : α
⊢ ∀ ⦃a_1 : β⦄ {s : Finset β},
    a_1 ∉ s →
      (s.gcd fun x => a * f x) = normalize a * s.gcd f →
        ((insert a_1 s).gcd fun x => a * f x) = normalize a * (insert a_1 s).gcd f
state_after: case refine_2
ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
s s₁ s₂ : Finset β
f : β → α
a : α
b : β
t : Finset β
a✝ : b ∉ t
h : (t.gcd fun x => a * f x) = normalize a * t.gcd f
⊢ ((insert b t).gcd fun x => a * f x) = normalize a * (insert b t).gcd f

tactic: rw [gcd_insert, gcd_insert, h, ← gcd_mul_left]
state_before: case refine_2
ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
s s₁ s₂ : Finset β
f : β → α
a : α
b : β
t : Finset β
a✝ : b ∉ t
h : (t.gcd fun x => a * f x) = normalize a * t.gcd f
⊢ ((insert b t).gcd fun x => a * f x) = normalize a * (insert b t).gcd f
state_after: case refine_2
ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
s s₁ s₂ : Finset β
f : β → α
a : α
b : β
t : Finset β
a✝ : b ∉ t
h : (t.gcd fun x => a * f x) = normalize a * t.gcd f
⊢ GCDMonoid.gcd (a * f b) (normalize a * t.gcd f) = GCDMonoid.gcd (a * f b) (a * t.gcd f)

tactic: apply ((normalize_associated a).mul_right _).gcd_eq_right
state_before: case refine_2
ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
s s₁ s₂ : Finset β
f : β → α
a : α
b : β
t : Finset β
a✝ : b ∉ t
h : (t.gcd fun x => a * f x) = normalize a * t.gcd f
⊢ GCDMonoid.gcd (a * f b) (normalize a * t.gcd f) = GCDMonoid.gcd (a * f b) (a * t.gcd f)
state_after: no goals
Theorem: Set.preimage_val_sUnion
File: Mathlib/Data/Set/Subset.lean

tactic: erw [sUnion_image]
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
⊢ A ↓∩ ⋃₀ S = ⋃₀ {x | ∃ B ∈ S, A ↓∩ B = x}
state_after: ι : 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
⊢ A ↓∩ ⋃₀ S = ⋃ x ∈ S, A ↓∩ x

tactic: simp_rw [sUnion_eq_biUnion, preimage_iUnion]
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
⊢ A ↓∩ ⋃₀ S = ⋃ x ∈ S, A ↓∩ x
state_after: no goals
Theorem: CategoryTheory.Subgroupoid.full_empty
File: Mathlib/CategoryTheory/Groupoid/Subgroupoid.lean

tactic: ext
state_before: C : Type u
inst✝ : Groupoid C
S : Subgroupoid C
D : Set C
⊢ full ∅ = ⊥
state_after: case arrows.h.h.h
C : Type u
inst✝ : Groupoid C
S : Subgroupoid C
D : Set C
x✝² x✝¹ : C
x✝ : x✝² ⟶ x✝¹
⊢ x✝ ∈ (full ∅).arrows x✝² x✝¹ ↔ x✝ ∈ ⊥.arrows x✝² x✝¹

tactic: simp only [Bot.bot, mem_full_iff, mem_empty_iff_false, and_self_iff]
state_before: case arrows.h.h.h
C : Type u
inst✝ : Groupoid C
S : Subgroupoid C
D : Set C
x✝² x✝¹ : C
x✝ : x✝² ⟶ x✝¹
⊢ x✝ ∈ (full ∅).arrows x✝² x✝¹ ↔ x✝ ∈ ⊥.arrows x✝² x✝¹
state_after: no goals
Theorem: TensorProduct.zero_smul
File: Mathlib/LinearAlgebra/TensorProduct/Basic.lean

tactic: rw [TensorProduct.smul_zero]
state_before: R : Type u_1
inst✝¹⁸ : CommSemiring R
R' : Type u_2
inst✝¹⁷ : Monoid R'
R'' : Type u_3
inst✝¹⁶ : Semiring R''
M : Type u_4
N : Type u_5
P : Type u_6
Q : Type u_7
S : Type u_8
T : Type u_9
inst✝¹⁵ : AddCommMonoid M
inst✝¹⁴ : AddCommMonoid N
inst✝¹³ : AddCommMonoid P
inst✝¹² : AddCommMonoid Q
inst✝¹¹ : AddCommMonoid S
inst✝¹⁰ : AddCommMonoid T
inst✝⁹ : Module R M
inst✝⁸ : Module R N
inst✝⁷ : Module R P
inst✝⁶ : Module R Q
inst✝⁵ : Module R S
inst✝⁴ : Module R T
inst✝³ : DistribMulAction R' M
inst✝² : Module R'' M
inst✝¹ : SMulCommClass R R' M
inst✝ : SMulCommClass R R'' M
x : M ⊗[R] N
this : ∀ (r : R'') (m : M) (n : N), r • m ⊗ₜ[R] n = (r • m) ⊗ₜ[R] n
⊢ 0 • 0 = 0
state_after: no goals

tactic: rw [this, zero_smul, zero_tmul]
state_before: R : Type u_1
inst✝¹⁸ : CommSemiring R
R' : Type u_2
inst✝¹⁷ : Monoid R'
R'' : Type u_3
inst✝¹⁶ : Semiring R''
M : Type u_4
N : Type u_5
P : Type u_6
Q : Type u_7
S : Type u_8
T : Type u_9
inst✝¹⁵ : AddCommMonoid M
inst✝¹⁴ : AddCommMonoid N
inst✝¹³ : AddCommMonoid P
inst✝¹² : AddCommMonoid Q
inst✝¹¹ : AddCommMonoid S
inst✝¹⁰ : AddCommMonoid T
inst✝⁹ : Module R M
inst✝⁸ : Module R N
inst✝⁷ : Module R P
inst✝⁶ : Module R Q
inst✝⁵ : Module R S
inst✝⁴ : Module R T
inst✝³ : DistribMulAction R' M
inst✝² : Module R'' M
inst✝¹ : SMulCommClass R R' M
inst✝ : SMulCommClass R R'' M
x : M ⊗[R] N
this : ∀ (r : R'') (m : M) (n : N), r • m ⊗ₜ[R] n = (r • m) ⊗ₜ[R] n
m : M
n : N
⊢ 0 • m ⊗ₜ[R] n = 0
state_after: no goals

tactic: rw [TensorProduct.smul_add, ihx, ihy, add_zero]
state_before: R : Type u_1
inst✝¹⁸ : CommSemiring R
R' : Type u_2
inst✝¹⁷ : Monoid R'
R'' : Type u_3
inst✝¹⁶ : Semiring R''
M : Type u_4
N : Type u_5
P : Type u_6
Q : Type u_7
S : Type u_8
T : Type u_9
inst✝¹⁵ : AddCommMonoid M
inst✝¹⁴ : AddCommMonoid N
inst✝¹³ : AddCommMonoid P
inst✝¹² : AddCommMonoid Q
inst✝¹¹ : AddCommMonoid S
inst✝¹⁰ : AddCommMonoid T
inst✝⁹ : Module R M
inst✝⁸ : Module R N
inst✝⁷ : Module R P
inst✝⁶ : Module R Q
inst✝⁵ : Module R S
inst✝⁴ : Module R T
inst✝³ : DistribMulAction R' M
inst✝² : Module R'' M
inst✝¹ : SMulCommClass R R' M
inst✝ : SMulCommClass R R'' M
x✝ : M ⊗[R] N
this : ∀ (r : R'') (m : M) (n : N), r • m ⊗ₜ[R] n = (r • m) ⊗ₜ[R] n
x y : M ⊗[R] N
ihx : 0 • x = 0
ihy : 0 • y = 0
⊢ 0 • (x + y) = 0
state_after: no goals
Theorem: Multiset.sup_powerset_len
File: Mathlib/Algebra/Order/BigOperators/Group/Finset.lean

tactic: convert bind_powerset_len x using 1
state_before: ι : Type u_1
α✝ : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
G : Type u_6
k : Type u_7
R : Type u_8
α : Type u_9
inst✝ : DecidableEq α
x : Multiset α
⊢ ((Finset.range (card x + 1)).sup fun k => powersetCard k x) = x.powerset
state_after: case h.e'_2
ι : Type u_1
α✝ : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
G : Type u_6
k : Type u_7
R : Type u_8
α : Type u_9
inst✝ : DecidableEq α
x : Multiset α
⊢ ((Finset.range (card x + 1)).sup fun k => powersetCard k x) = (range (card x + 1)).bind fun k => powersetCard k x

tactic: rw [Multiset.bind, Multiset.join, ← Finset.range_val, ← Finset.sum_eq_multiset_sum]
state_before: case h.e'_2
ι : Type u_1
α✝ : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
G : Type u_6
k : Type u_7
R : Type u_8
α : Type u_9
inst✝ : DecidableEq α
x : Multiset α
⊢ ((Finset.range (card x + 1)).sup fun k => powersetCard k x) = (range (card x + 1)).bind fun k => powersetCard k x
state_after: case h.e'_2
ι : Type u_1
α✝ : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
G : Type u_6
k : Type u_7
R : Type u_8
α : Type u_9
inst✝ : DecidableEq α
x : Multiset α
⊢ ((Finset.range (card x + 1)).sup fun k => powersetCard k x) = ∑ x_1 ∈ Finset.range (card x + 1), powersetCard x_1 x

tactic: exact
  Eq.symm (finset_sum_eq_sup_iff_disjoint.mpr fun _ _ _ _ h => pairwise_disjoint_powersetCard x h)
state_before: case h.e'_2
ι : Type u_1
α✝ : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
G : Type u_6
k : Type u_7
R : Type u_8
α : Type u_9
inst✝ : DecidableEq α
x : Multiset α
⊢ ((Finset.range (card x + 1)).sup fun k => powersetCard k x) = ∑ x_1 ∈ Finset.range (card x + 1), powersetCard x_1 x
state_after: no goals
Theorem: NormedSpace.eq_zero_iff_forall_dual_eq_zero
File: Mathlib/Analysis/NormedSpace/Dual.lean

tactic: simp [hx]
state_before: 𝕜 : Type v
inst✝² : RCLike 𝕜
E : Type u
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
x : E
hx : x = 0
⊢ ∀ (g : Dual 𝕜 E), g x = 0
state_after: no goals
Theorem: Equiv.Perm.pow_apply_eq_of_apply_apply_eq_self
File: Mathlib/GroupTheory/Perm/Support.lean

tactic: rw [pow_succ', mul_apply, h]
state_before: α : Type u_1
f g h✝ : Perm α
x : α
hffx : f (f x) = x
n : ℕ
h : (f ^ n) x = x
⊢ (f ^ (n + 1)) x = f x
state_after: no goals

tactic: rw [pow_succ', mul_apply, h, hffx]
state_before: α : Type u_1
f g h✝ : Perm α
x : α
hffx : f (f x) = x
n : ℕ
h : (f ^ n) x = f x
⊢ (f ^ (n + 1)) x = x
state_after: no goals