1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: measurable_const'
File: Mathlib/MeasureTheory/MeasurableSpace/Basic.lean

tactic: nontriviality β
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s t u : Set α
f✝ g : α → β
inst✝² : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
f : β → α
hf : ∀ (x y : β), f x = f y
⊢ Measurable f
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s t u : Set α
f✝ g : α → β
inst✝² : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
f : β → α
hf : ∀ (x y : β), f x = f y
a✝ : Nontrivial β
⊢ Measurable f

tactic: inhabit β
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s t u : Set α
f✝ g : α → β
inst✝² : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
f : β → α
hf : ∀ (x y : β), f x = f y
a✝ : Nontrivial β
⊢ Measurable f
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s t u : Set α
f✝ g : α → β
inst✝² : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
f : β → α
hf : ∀ (x y : β), f x = f y
a✝ : Nontrivial β
inhabited_h : Inhabited β
⊢ Measurable f

tactic: convert @measurable_const α β _ _ (f default) using 2
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s t u : Set α
f✝ g : α → β
inst✝² : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
f : β → α
hf : ∀ (x y : β), f x = f y
a✝ : Nontrivial β
inhabited_h : Inhabited β
⊢ Measurable f
state_after: case h.e'_5.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s t u : Set α
f✝ g : α → β
inst✝² : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
f : β → α
hf : ∀ (x y : β), f x = f y
a✝ : Nontrivial β
inhabited_h : Inhabited β
x✝ : β
⊢ f x✝ = f default

tactic: apply hf
state_before: case h.e'_5.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s t u : Set α
f✝ g : α → β
inst✝² : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
f : β → α
hf : ∀ (x y : β), f x = f y
a✝ : Nontrivial β
inhabited_h : Inhabited β
x✝ : β
⊢ f x✝ = f default
state_after: no goals
Theorem: List.modifyNth_nil
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

tactic: cases n <;> rfl
state_before: α : Type u_1
f : α → α
n : Nat
⊢ modifyNth f n [] = []
state_after: no goals
Theorem: finrank_eq_rank
File: Mathlib/NumberTheory/NumberField/Units/DirichletTheorem.lean

tactic: simp only [finrank_fintype_fun_eq_card, Fintype.card_subtype_compl,
  Fintype.card_ofSubsingleton, rank]
state_before: K : Type u_1
inst✝² : Field K
inst✝¹ inst✝ : NumberField K
⊢ finrank ℝ ({ w // w ≠ w₀ } → ℝ) = rank K
state_after: no goals
Theorem: Complex.cos_int_mul_two_pi_add_pi
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

tactic: simpa only [cos_zero] using (cos_periodic.int_mul n).add_antiperiod_eq cos_antiperiodic
state_before: n : ℤ
⊢ cos (↑n * (2 * ↑π) + ↑π) = -1
state_after: no goals
Theorem: MeasureTheory.Measure.sum_apply_eq_zero
File: Mathlib/MeasureTheory/Measure/MeasureSpace.lean

tactic: simp [sum_apply_of_countable]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
μ✝ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t : Set α
f : α → β
inst✝ : Countable ι
μ : ι → Measure α
s : Set α
⊢ (sum μ) s = 0 ↔ ∀ (i : ι), (μ i) s = 0
state_after: no goals
Theorem: MeasureTheory.JordanDecomposition.toJordanDecomposition_toSignedMeasure
File: Mathlib/MeasureTheory/Decomposition/Jordan.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j : JordanDecomposition α
⊢ j.toSignedMeasure = j.toSignedMeasure.toJordanDecomposition.toSignedMeasure
state_after: no goals
Theorem: Matrix.adjugate_pow
File: Mathlib/LinearAlgebra/Matrix/Adjugate.lean

tactic: induction' k with k IH
state_before: m : Type u
n : Type v
α : Type w
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : Fintype m
inst✝ : CommRing α
A : Matrix n n α
k : ℕ
⊢ (A ^ k).adjugate = A.adjugate ^ k
state_after: case zero
m : Type u
n : Type v
α : Type w
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : Fintype m
inst✝ : CommRing α
A : Matrix n n α
⊢ (A ^ 0).adjugate = A.adjugate ^ 0

case succ
m : Type u
n : Type v
α : Type w
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : Fintype m
inst✝ : CommRing α
A : Matrix n n α
k : ℕ
IH : (A ^ k).adjugate = A.adjugate ^ k
⊢ (A ^ (k + 1)).adjugate = A.adjugate ^ (k + 1)

tactic: simp
state_before: case zero
m : Type u
n : Type v
α : Type w
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : Fintype m
inst✝ : CommRing α
A : Matrix n n α
⊢ (A ^ 0).adjugate = A.adjugate ^ 0
state_after: no goals

tactic: rw [pow_succ', adjugate_mul_distrib, IH, pow_succ]
state_before: case succ
m : Type u
n : Type v
α : Type w
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : Fintype m
inst✝ : CommRing α
A : Matrix n n α
k : ℕ
IH : (A ^ k).adjugate = A.adjugate ^ k
⊢ (A ^ (k + 1)).adjugate = A.adjugate ^ (k + 1)
state_after: no goals
Theorem: Submonoid.LocalizationMap.inv_inj
File: Mathlib/GroupTheory/MonoidLocalization.lean

tactic: rw [← mul_one (f y), eq_comm, ← mul_inv_left hf y (f z) 1, h]
state_before: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
f : M →* N
hf : ∀ (y : ↥S), IsUnit (f ↑y)
y z : ↥S
h : ((IsUnit.liftRight (f.restrict S) hf) y)⁻¹ = ((IsUnit.liftRight (f.restrict S) hf) z)⁻¹
⊢ f ↑y = f ↑z
state_after: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
f : M →* N
hf : ∀ (y : ↥S), IsUnit (f ↑y)
y z : ↥S
h : ((IsUnit.liftRight (f.restrict S) hf) y)⁻¹ = ((IsUnit.liftRight (f.restrict S) hf) z)⁻¹
⊢ f ↑z * ↑((IsUnit.liftRight (f.restrict S) hf) z)⁻¹ = 1

tactic: exact Units.inv_mul (IsUnit.liftRight (f.restrict S) hf z)⁻¹
state_before: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
f : M →* N
hf : ∀ (y : ↥S), IsUnit (f ↑y)
y z : ↥S
h : ((IsUnit.liftRight (f.restrict S) hf) y)⁻¹ = ((IsUnit.liftRight (f.restrict S) hf) z)⁻¹
⊢ f ↑z * ↑((IsUnit.liftRight (f.restrict S) hf) z)⁻¹ = 1
state_after: no goals
Theorem: Real.IsConjExponent.conj_eq
File: Mathlib/Data/Real/ConjExponents.lean

tactic: have := h.inv_add_inv_conj
state_before: a b p q : ℝ
h : p.IsConjExponent q
⊢ q = p / (p - 1)
state_after: a b p q : ℝ
h : p.IsConjExponent q
this : p⁻¹ + q⁻¹ = 1
⊢ q = p / (p - 1)

tactic: rw [← eq_sub_iff_add_eq', inv_eq_iff_eq_inv] at this
state_before: a b p q : ℝ
h : p.IsConjExponent q
this : p⁻¹ + q⁻¹ = 1
⊢ q = p / (p - 1)
state_after: a b p q : ℝ
h : p.IsConjExponent q
this : q = (1 - p⁻¹)⁻¹
⊢ q = p / (p - 1)

tactic: field_simp [this, h.ne_zero]
state_before: a b p q : ℝ
h : p.IsConjExponent q
this : q = (1 - p⁻¹)⁻¹
⊢ q = p / (p - 1)
state_after: no goals
Theorem: symmetrize_mem_uniformity
File: Mathlib/Topology/UniformSpace/Basic.lean

tactic: apply (𝓤 α).inter_sets h
state_before: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort u_1
inst✝ : UniformSpace α
V : Set (α × α)
h : V ∈ 𝓤 α
⊢ symmetrizeRel V ∈ 𝓤 α
state_after: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort u_1
inst✝ : UniformSpace α
V : Set (α × α)
h : V ∈ 𝓤 α
⊢ Prod.swap ⁻¹' V ∈ (𝓤 α).sets

tactic: rw [← image_swap_eq_preimage_swap, uniformity_eq_symm]
state_before: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort u_1
inst✝ : UniformSpace α
V : Set (α × α)
h : V ∈ 𝓤 α
⊢ Prod.swap ⁻¹' V ∈ (𝓤 α).sets
state_after: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort u_1
inst✝ : UniformSpace α
V : Set (α × α)
h : V ∈ 𝓤 α
⊢ Prod.swap '' V ∈ (Prod.swap <$> 𝓤 α).sets

tactic: exact image_mem_map h
state_before: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort u_1
inst✝ : UniformSpace α
V : Set (α × α)
h : V ∈ 𝓤 α
⊢ Prod.swap '' V ∈ (Prod.swap <$> 𝓤 α).sets
state_after: no goals
Theorem: UniqueMul.to_mulOpposite
File: Mathlib/Algebra/Group/UniqueProds.lean

tactic: simp_rw [map_map]
state_before: G : Type u_1
H : Type u_2
inst✝¹ : Mul G
inst✝ : Mul H
A B : Finset G
a0 b0 : G
h : UniqueMul A B a0 b0
⊢ UniqueMul (map { toFun := op, inj' := ⋯ } (map { toFun := op, inj' := ⋯ } A))
    (map { toFun := op, inj' := ⋯ } (map { toFun := op, inj' := ⋯ } B)) (op (op a0)) (op (op b0))
state_after: G : Type u_1
H : Type u_2
inst✝¹ : Mul G
inst✝ : Mul H
A B : Finset G
a0 b0 : G
h : UniqueMul A B a0 b0
⊢ UniqueMul (map ({ toFun := op, inj' := ⋯ }.trans { toFun := op, inj' := ⋯ }) A)
    (map ({ toFun := op, inj' := ⋯ }.trans { toFun := op, inj' := ⋯ }) B) (op (op a0)) (op (op b0))

tactic: exact (mulHom_map_iff _ fun _ _ ↦ by rfl).mpr h
state_before: G : Type u_1
H : Type u_2
inst✝¹ : Mul G
inst✝ : Mul H
A B : Finset G
a0 b0 : G
h : UniqueMul A B a0 b0
⊢ UniqueMul (map ({ toFun := op, inj' := ⋯ }.trans { toFun := op, inj' := ⋯ }) A)
    (map ({ toFun := op, inj' := ⋯ }.trans { toFun := op, inj' := ⋯ }) B) (op (op a0)) (op (op b0))
state_after: no goals

tactic: rfl
state_before: G : Type u_1
H : Type u_2
inst✝¹ : Mul G
inst✝ : Mul H
A B : Finset G
a0 b0 : G
h : UniqueMul A B a0 b0
x✝¹ x✝ : G
⊢ ({ toFun := op, inj' := ⋯ }.trans { toFun := op, inj' := ⋯ }) (x✝¹ * x✝) =
    ({ toFun := op, inj' := ⋯ }.trans { toFun := op, inj' := ⋯ }) x✝¹ *
      ({ toFun := op, inj' := ⋯ }.trans { toFun := op, inj' := ⋯ }) x✝
state_after: no goals
Theorem: Polynomial.X_pow_mul_assoc
File: Mathlib/Algebra/Polynomial/Basic.lean

tactic: rw [mul_assoc, X_pow_mul, ← mul_assoc]
state_before: R : Type u
a b : R
m n✝ : ℕ
inst✝ : Semiring R
p q : R[X]
n : ℕ
⊢ p * X ^ n * q = p * q * X ^ n
state_after: no goals
Theorem: Pell.eq_pellZd
File: Mathlib/NumberTheory/PellMatiyasevic.lean

tactic: rw [Zsqrtd.natCast_val]
state_before: a : ℕ
a1 : 1 < a
b : ℤ√↑(Pell.d a1)
b1 : 1 ≤ b
hp : IsPell b
n : ℕ
h : b ≤ ↑n
⊢ ↑n ≤ pellZd a1 n
state_after: a : ℕ
a1 : 1 < a
b : ℤ√↑(Pell.d a1)
b1 : 1 ≤ b
hp : IsPell b
n : ℕ
h : b ≤ ↑n
⊢ { re := ↑n, im := 0 } ≤ pellZd a1 n

tactic: exact
  Zsqrtd.le_of_le_le (Int.ofNat_le_ofNat_of_le <| le_of_lt <| n_lt_xn _ _)
    (Int.ofNat_zero_le _)
state_before: a : ℕ
a1 : 1 < a
b : ℤ√↑(Pell.d a1)
b1 : 1 ≤ b
hp : IsPell b
n : ℕ
h : b ≤ ↑n
⊢ { re := ↑n, im := 0 } ≤ pellZd a1 n
state_after: no goals
Theorem: Bool.and_eq_true_eq_eq_true_and_eq_true
File: Mathlib/Init/Data/Bool/Lemmas.lean

tactic: simp
state_before: a b : Bool
⊢ ((a && b) = true) = (a = true ∧ b = true)
state_after: no goals
Theorem: Cardinal.lt_aleph0_iff_finite
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: simp only [lt_aleph0, mk_eq_nat_iff, finite_iff_exists_equiv_fin]
state_before: α✝ β α : Type u
⊢ #α < ℵ₀ ↔ Finite α
state_after: no goals
Theorem: Real.Angle.sign_antiperiodic
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Angle.lean

tactic: rw [sign, sign, sin_add_pi, Left.sign_neg]
state_before: θ : Angle
⊢ (θ + ↑π).sign = -θ.sign
state_after: no goals
Theorem: CategoryTheory.ShortComplex.zero_apply
File: Mathlib/Algebra/Homology/ShortComplex/ConcreteCategory.lean

tactic: erw [← comp_apply, ← Functor.map_comp, S.zero, Functor.map_zero]
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : ConcreteCategory C
inst✝² : HasForget₂ C Ab
inst✝¹ : HasZeroMorphisms C
inst✝ : (forget₂ C Ab).PreservesZeroMorphisms
S : ShortComplex C
x : ↑((forget₂ C Ab).obj S.X₁)
⊢ ((forget₂ C Ab).map S.g) (((forget₂ C Ab).map S.f) x) = 0
state_after: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : ConcreteCategory C
inst✝² : HasForget₂ C Ab
inst✝¹ : HasZeroMorphisms C
inst✝ : (forget₂ C Ab).PreservesZeroMorphisms
S : ShortComplex C
x : ↑((forget₂ C Ab).obj S.X₁)
⊢ 0 x = 0

tactic: rfl
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : ConcreteCategory C
inst✝² : HasForget₂ C Ab
inst✝¹ : HasZeroMorphisms C
inst✝ : (forget₂ C Ab).PreservesZeroMorphisms
S : ShortComplex C
x : ↑((forget₂ C Ab).obj S.X₁)
⊢ 0 x = 0
state_after: no goals
Theorem: Cardinal.power_lt_aleph0
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: rw [← natCast_pow]
state_before: α β : Type u
a b : Cardinal.{u_1}
m n : ℕ
ha : ↑m < ℵ₀
hb : ↑n < ℵ₀
⊢ ↑m ^ ↑n < ℵ₀
state_after: α β : Type u
a b : Cardinal.{u_1}
m n : ℕ
ha : ↑m < ℵ₀
hb : ↑n < ℵ₀
⊢ ↑(m ^ n) < ℵ₀

tactic: apply nat_lt_aleph0
state_before: α β : Type u
a b : Cardinal.{u_1}
m n : ℕ
ha : ↑m < ℵ₀
hb : ↑n < ℵ₀
⊢ ↑(m ^ n) < ℵ₀
state_after: no goals
Theorem: Int.gcd_eq_zero_iff
File: Mathlib/Data/Int/GCD.lean

tactic: rw [gcd, Nat.gcd_eq_zero_iff, natAbs_eq_zero, natAbs_eq_zero]
state_before: i j : ℤ
⊢ i.gcd j = 0 ↔ i = 0 ∧ j = 0
state_after: no goals
Theorem: CircleDeg1Lift.map_int_of_map_zero
File: Mathlib/Dynamics/Circle/RotationNumber/TranslationNumber.lean

tactic: rw [← f.map_add_int, zero_add]
state_before: f g : CircleDeg1Lift
n : ℤ
⊢ f ↑n = f 0 + ↑n
state_after: no goals
Theorem: InnerProductGeometry.tan_angle_sub_mul_norm_of_inner_eq_zero
File: Mathlib/Geometry/Euclidean/Angle/Unoriented/RightAngle.lean

tactic: rw [← neg_eq_zero, ← inner_neg_right] at h
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
h : ⟪x, y⟫_ℝ = 0
h0 : x ≠ 0 ∨ y = 0
⊢ Real.tan (angle x (x - y)) * ‖x‖ = ‖y‖
state_after: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
h : ⟪x, -y⟫_ℝ = 0
h0 : x ≠ 0 ∨ y = 0
⊢ Real.tan (angle x (x - y)) * ‖x‖ = ‖y‖

tactic: rw [← neg_eq_zero] at h0
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
h : ⟪x, -y⟫_ℝ = 0
h0 : x ≠ 0 ∨ y = 0
⊢ Real.tan (angle x (x - y)) * ‖x‖ = ‖y‖
state_after: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
h : ⟪x, -y⟫_ℝ = 0
h0 : x ≠ 0 ∨ -y = 0
⊢ Real.tan (angle x (x - y)) * ‖x‖ = ‖y‖

tactic: rw [sub_eq_add_neg, tan_angle_add_mul_norm_of_inner_eq_zero h h0, norm_neg]
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
h : ⟪x, -y⟫_ℝ = 0
h0 : x ≠ 0 ∨ -y = 0
⊢ Real.tan (angle x (x - y)) * ‖x‖ = ‖y‖
state_after: no goals
Theorem: uniqueDiffWithinAt_Iio
File: Mathlib/Analysis/Calculus/TangentCone.lean

tactic: simp
state_before: 𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
F : Type u_3
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
G : Type u_4
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace ℝ G
x y : E
s t : Set E
a : ℝ
⊢ (interior (Iio a)).Nonempty
state_after: no goals

tactic: simp
state_before: 𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
F : Type u_3
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
G : Type u_4
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace ℝ G
x y : E
s t : Set E
a : ℝ
⊢ a ∈ closure (Iio a)
state_after: no goals
Theorem: List.count_concat
File: .lake/packages/batteries/Batteries/Data/List/Count.lean

tactic: simp
state_before: α : Type u_1
inst✝ : DecidableEq α
a : α
l : List α
⊢ count a (l.concat a) = (count a l).succ
state_after: no goals
Theorem: StructureGroupoid.mem_maximalAtlas_of_mem_groupoid
File: Mathlib/Geometry/Manifold/ChartedSpace.lean

tactic: rintro e (rfl : e = PartialHomeomorph.refl H)
state_before: H : Type u
H' : Type u_1
M : Type u_2
M' : Type u_3
M'' : Type u_4
inst✝² : TopologicalSpace H
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
G : StructureGroupoid H
f : PartialHomeomorph H H
hf : f ∈ G
⊢ f ∈ maximalAtlas H G
state_after: H : Type u
H' : Type u_1
M : Type u_2
M' : Type u_3
M'' : Type u_4
inst✝² : TopologicalSpace H
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
G : StructureGroupoid H
f : PartialHomeomorph H H
hf : f ∈ G
⊢ f.symm ≫ₕ PartialHomeomorph.refl H ∈ G ∧ (PartialHomeomorph.refl H).symm ≫ₕ f ∈ G

tactic: exact ⟨G.trans (G.symm hf) G.id_mem, G.trans (G.symm G.id_mem) hf⟩
state_before: H : Type u
H' : Type u_1
M : Type u_2
M' : Type u_3
M'' : Type u_4
inst✝² : TopologicalSpace H
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
G : StructureGroupoid H
f : PartialHomeomorph H H
hf : f ∈ G
⊢ f.symm ≫ₕ PartialHomeomorph.refl H ∈ G ∧ (PartialHomeomorph.refl H).symm ≫ₕ f ∈ G
state_after: no goals
Theorem: Polynomial.revAt_zero
File: Mathlib/Algebra/Polynomial/Reverse.lean

tactic: simp
state_before: R : Type u_1
inst✝ : Semiring R
f : R[X]
N : ℕ
⊢ (revAt N) 0 = N
state_after: no goals
Theorem: Matrix.mul_unitOf
File: Mathlib/Analysis/Matrix.lean

tactic: simp [unitOf]
state_before: R : Type u_1
l : Type u_2
m : Type u_3
n : Type u_4
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁶ : Fintype l
inst✝⁵ : Fintype m
inst✝⁴ : Fintype n
inst✝³ : Unique ι
inst✝² : NormedDivisionRing α
inst✝¹ : NormedAlgebra ℝ α
inst✝ : CompleteSpace α
a : α
⊢ a * Matrix.unitOf a = (algebraMap ℝ α) ↑‖a‖₊
state_after: R : Type u_1
l : Type u_2
m : Type u_3
n : Type u_4
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁶ : Fintype l
inst✝⁵ : Fintype m
inst✝⁴ : Fintype n
inst✝³ : Unique ι
inst✝² : NormedDivisionRing α
inst✝¹ : NormedAlgebra ℝ α
inst✝ : CompleteSpace α
a : α
⊢ (a * if a = 0 then 1 else ‖a‖ • a⁻¹) = (algebraMap ℝ α) ‖a‖

tactic: split_ifs with h
state_before: R : Type u_1
l : Type u_2
m : Type u_3
n : Type u_4
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁶ : Fintype l
inst✝⁵ : Fintype m
inst✝⁴ : Fintype n
inst✝³ : Unique ι
inst✝² : NormedDivisionRing α
inst✝¹ : NormedAlgebra ℝ α
inst✝ : CompleteSpace α
a : α
⊢ (a * if a = 0 then 1 else ‖a‖ • a⁻¹) = (algebraMap ℝ α) ‖a‖
state_after: case pos
R : Type u_1
l : Type u_2
m : Type u_3
n : Type u_4
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁶ : Fintype l
inst✝⁵ : Fintype m
inst✝⁴ : Fintype n
inst✝³ : Unique ι
inst✝² : NormedDivisionRing α
inst✝¹ : NormedAlgebra ℝ α
inst✝ : CompleteSpace α
a : α
h : a = 0
⊢ a * 1 = (algebraMap ℝ α) ‖a‖

case neg
R : Type u_1
l : Type u_2
m : Type u_3
n : Type u_4
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁶ : Fintype l
inst✝⁵ : Fintype m
inst✝⁴ : Fintype n
inst✝³ : Unique ι
inst✝² : NormedDivisionRing α
inst✝¹ : NormedAlgebra ℝ α
inst✝ : CompleteSpace α
a : α
h : ¬a = 0
⊢ a * ‖a‖ • a⁻¹ = (algebraMap ℝ α) ‖a‖

tactic: simp [h]
state_before: case pos
R : Type u_1
l : Type u_2
m : Type u_3
n : Type u_4
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁶ : Fintype l
inst✝⁵ : Fintype m
inst✝⁴ : Fintype n
inst✝³ : Unique ι
inst✝² : NormedDivisionRing α
inst✝¹ : NormedAlgebra ℝ α
inst✝ : CompleteSpace α
a : α
h : a = 0
⊢ a * 1 = (algebraMap ℝ α) ‖a‖
state_after: no goals

tactic: rw [mul_smul_comm, mul_inv_cancel h, Algebra.algebraMap_eq_smul_one]
state_before: case neg
R : Type u_1
l : Type u_2
m : Type u_3
n : Type u_4
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁶ : Fintype l
inst✝⁵ : Fintype m
inst✝⁴ : Fintype n
inst✝³ : Unique ι
inst✝² : NormedDivisionRing α
inst✝¹ : NormedAlgebra ℝ α
inst✝ : CompleteSpace α
a : α
h : ¬a = 0
⊢ a * ‖a‖ • a⁻¹ = (algebraMap ℝ α) ‖a‖
state_after: no goals
Theorem: LinearIndependent.image_of_comp
File: Mathlib/LinearAlgebra/LinearIndependent.lean

tactic: nontriviality R
state_before: ι✝ : Type u'
ι'✝ : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι✝ → M
inst✝⁶ : Ring R
inst✝⁵ : AddCommGroup M
inst✝⁴ : AddCommGroup M'
inst✝³ : AddCommGroup M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
ι : Type u_8
ι' : Type u_9
s : Set ι
f : ι → ι'
g : ι' → M
hs : LinearIndependent R fun (x : ↑s) => g (f ↑x)
⊢ LinearIndependent R fun (x : ↑(f '' s)) => g ↑x
state_after: ι✝ : Type u'
ι'✝ : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι✝ → M
inst✝⁶ : Ring R
inst✝⁵ : AddCommGroup M
inst✝⁴ : AddCommGroup M'
inst✝³ : AddCommGroup M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
ι : Type u_8
ι' : Type u_9
s : Set ι
f : ι → ι'
g : ι' → M
hs : LinearIndependent R fun (x : ↑s) => g (f ↑x)
a✝ : Nontrivial R
⊢ LinearIndependent R fun (x : ↑(f '' s)) => g ↑x

tactic: have : InjOn f s := injOn_iff_injective.2 hs.injective.of_comp
state_before: ι✝ : Type u'
ι'✝ : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι✝ → M
inst✝⁶ : Ring R
inst✝⁵ : AddCommGroup M
inst✝⁴ : AddCommGroup M'
inst✝³ : AddCommGroup M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
ι : Type u_8
ι' : Type u_9
s : Set ι
f : ι → ι'
g : ι' → M
hs : LinearIndependent R fun (x : ↑s) => g (f ↑x)
a✝ : Nontrivial R
⊢ LinearIndependent R fun (x : ↑(f '' s)) => g ↑x
state_after: ι✝ : Type u'
ι'✝ : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι✝ → M
inst✝⁶ : Ring R
inst✝⁵ : AddCommGroup M
inst✝⁴ : AddCommGroup M'
inst✝³ : AddCommGroup M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
ι : Type u_8
ι' : Type u_9
s : Set ι
f : ι → ι'
g : ι' → M
hs : LinearIndependent R fun (x : ↑s) => g (f ↑x)
a✝ : Nontrivial R
this : InjOn f s
⊢ LinearIndependent R fun (x : ↑(f '' s)) => g ↑x

tactic: exact (linearIndependent_equiv' (Equiv.Set.imageOfInjOn f s this) rfl).1 hs
state_before: ι✝ : Type u'
ι'✝ : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι✝ → M
inst✝⁶ : Ring R
inst✝⁵ : AddCommGroup M
inst✝⁴ : AddCommGroup M'
inst✝³ : AddCommGroup M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
ι : Type u_8
ι' : Type u_9
s : Set ι
f : ι → ι'
g : ι' → M
hs : LinearIndependent R fun (x : ↑s) => g (f ↑x)
a✝ : Nontrivial R
this : InjOn f s
⊢ LinearIndependent R fun (x : ↑(f '' s)) => g ↑x
state_after: no goals
Theorem: Complex.div_ratCast_im
File: Mathlib/Data/Complex/Basic.lean

tactic: rw [div_ratCast]
state_before: z : ℂ
x : ℚ
⊢ (z / ↑x).im = z.im / ↑x
state_after: no goals
Theorem: Convex.isPathConnected
File: Mathlib/Analysis/Convex/Topology.lean

tactic: refine isPathConnected_iff.mpr ⟨hne, ?_⟩
state_before: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
inst✝⁴ : AddCommGroup E
inst✝³ : Module ℝ E
inst✝² : TopologicalSpace E
inst✝¹ : TopologicalAddGroup E
inst✝ : ContinuousSMul ℝ E
s : Set E
hconv : Convex ℝ s
hne : s.Nonempty
⊢ IsPathConnected s
state_after: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
inst✝⁴ : AddCommGroup E
inst✝³ : Module ℝ E
inst✝² : TopologicalSpace E
inst✝¹ : TopologicalAddGroup E
inst✝ : ContinuousSMul ℝ E
s : Set E
hconv : Convex ℝ s
hne : s.Nonempty
⊢ ∀ x ∈ s, ∀ y ∈ s, JoinedIn s x y

tactic: intro x x_in y y_in
state_before: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
inst✝⁴ : AddCommGroup E
inst✝³ : Module ℝ E
inst✝² : TopologicalSpace E
inst✝¹ : TopologicalAddGroup E
inst✝ : ContinuousSMul ℝ E
s : Set E
hconv : Convex ℝ s
hne : s.Nonempty
⊢ ∀ x ∈ s, ∀ y ∈ s, JoinedIn s x y
state_after: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
inst✝⁴ : AddCommGroup E
inst✝³ : Module ℝ E
inst✝² : TopologicalSpace E
inst✝¹ : TopologicalAddGroup E
inst✝ : ContinuousSMul ℝ E
s : Set E
hconv : Convex ℝ s
hne : s.Nonempty
x : E
x_in : x ∈ s
y : E
y_in : y ∈ s
⊢ JoinedIn s x y

tactic: exact JoinedIn.of_segment_subset ((segment_subset_iff ℝ).2 (hconv x_in y_in))
state_before: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
inst✝⁴ : AddCommGroup E
inst✝³ : Module ℝ E
inst✝² : TopologicalSpace E
inst✝¹ : TopologicalAddGroup E
inst✝ : ContinuousSMul ℝ E
s : Set E
hconv : Convex ℝ s
hne : s.Nonempty
x : E
x_in : x ∈ s
y : E
y_in : y ∈ s
⊢ JoinedIn s x y
state_after: no goals
Theorem: exterior_singleton_subset_iff_mem_nhds
File: Mathlib/Topology/AlexandrovDiscrete.lean

tactic: simp [exterior_subset_iff_mem_nhdsSet]
state_before: ι : Sort u_1
κ : ι → Sort u_2
α : Type u_3
β : Type u_4
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
s t : Set α
a x y : α
inst✝¹ : AlexandrovDiscrete α
inst✝ : AlexandrovDiscrete β
⊢ exterior {a} ⊆ t ↔ t ∈ 𝓝 a
state_after: no goals