tasksource/leandojo huggingface dataset:
Theorem: dist_midpoint_midpoint_le'
File: Mathlib/Analysis/NormedSpace/AddTorsor.lean

tactic: rw [dist_eq_norm_vsub V, dist_eq_norm_vsub V, dist_eq_norm_vsub V, midpoint_vsub_midpoint]
state_before: α : Type ?u.73606
V : Type u_3
P : Type u_1
W : Type ?u.73615
Q : Type ?u.73618
inst✝⁹ : SeminormedAddCommGroup V
inst✝⁸ : PseudoMetricSpace P
inst✝⁷ : NormedAddTorsor V P
inst✝⁶ : NormedAddCommGroup W
inst✝⁵ : MetricSpace Q
inst✝⁴ : NormedAddTorsor W Q
𝕜 : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedSpace 𝕜 V
inst✝¹ : NormedSpace 𝕜 W
inst✝ : Invertible 2
p₁ p₂ p₃ p₄ : P
⊢ dist (midpoint 𝕜 p₁ p₂) (midpoint 𝕜 p₃ p₄) ≤ (dist p₁ p₃ + dist p₂ p₄) / ‖2‖

tactic: try infer_instance
state_before: α : Type ?u.73606
V : Type u_3
P : Type u_1
W : Type ?u.73615
Q : Type ?u.73618
inst✝⁹ : SeminormedAddCommGroup V
inst✝⁸ : PseudoMetricSpace P
inst✝⁷ : NormedAddTorsor V P
inst✝⁶ : NormedAddCommGroup W
inst✝⁵ : MetricSpace Q
inst✝⁴ : NormedAddTorsor W Q
𝕜 : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedSpace 𝕜 V
inst✝¹ : NormedSpace 𝕜 W
inst✝ : Invertible 2
p₁ p₂ p₃ p₄ : P
⊢ ‖midpoint 𝕜 (p₁ -ᵥ p₃) (p₂ -ᵥ p₄)‖ ≤ (‖p₁ -ᵥ p₃‖ + ‖p₂ -ᵥ p₄‖) / ‖2‖

tactic: rw [midpoint_eq_smul_add, norm_smul, invOf_eq_inv, norm_inv, ← div_eq_inv_mul]
state_before: α : Type ?u.73606
V : Type u_3
P : Type u_1
W : Type ?u.73615
Q : Type ?u.73618
inst✝⁹ : SeminormedAddCommGroup V
inst✝⁸ : PseudoMetricSpace P
inst✝⁷ : NormedAddTorsor V P
inst✝⁶ : NormedAddCommGroup W
inst✝⁵ : MetricSpace Q
inst✝⁴ : NormedAddTorsor W Q
𝕜 : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedSpace 𝕜 V
inst✝¹ : NormedSpace 𝕜 W
inst✝ : Invertible 2
p₁ p₂ p₃ p₄ : P
⊢ ‖midpoint 𝕜 (p₁ -ᵥ p₃) (p₂ -ᵥ p₄)‖ ≤ (‖p₁ -ᵥ p₃‖ + ‖p₂ -ᵥ p₄‖) / ‖2‖

tactic: exact div_le_div_of_le_of_nonneg (norm_add_le _ _) (norm_nonneg _)
state_before: α : Type ?u.73606
V : Type u_3
P : Type u_1
W : Type ?u.73615
Q : Type ?u.73618
inst✝⁹ : SeminormedAddCommGroup V
inst✝⁸ : PseudoMetricSpace P
inst✝⁷ : NormedAddTorsor V P
inst✝⁶ : NormedAddCommGroup W
inst✝⁵ : MetricSpace Q
inst✝⁴ : NormedAddTorsor W Q
𝕜 : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedSpace 𝕜 V
inst✝¹ : NormedSpace 𝕜 W
inst✝ : Invertible 2
p₁ p₂ p₃ p₄ : P
⊢ ‖p₁ -ᵥ p₃ + (p₂ -ᵥ p₄)‖ / ‖2‖ ≤ (‖p₁ -ᵥ p₃‖ + ‖p₂ -ᵥ p₄‖) / ‖2‖

tactic: infer_instance
state_before: α : Type ?u.73606
V : Type u_3
P : Type u_1
W : Type ?u.73615
Q : Type ?u.73618
inst✝⁹ : SeminormedAddCommGroup V
inst✝⁸ : PseudoMetricSpace P
inst✝⁷ : NormedAddTorsor V P
inst✝⁶ : NormedAddCommGroup W
inst✝⁵ : MetricSpace Q
inst✝⁴ : NormedAddTorsor W Q
𝕜 : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedSpace 𝕜 V
inst✝¹ : NormedSpace 𝕜 W
inst✝ : Invertible 2
p₁ p₂ p₃ p₄ : P
⊢ ‖midpoint 𝕜 (p₁ -ᵥ p₃) (p₂ -ᵥ p₄)‖ ≤ (‖p₁ -ᵥ p₃‖ + ‖p₂ -ᵥ p₄‖) / ‖2‖
Theorem: FractionalIdeal.div_eq_mul_inv
File: Mathlib/RingTheory/DedekindDomain/Ideal.lean

tactic: by_cases hJ : J = 0
state_before: R : Type ?u.709535
A : Type u_1
K : Type u_2
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Field K
inst✝³ : IsDomain A
inst✝² : Algebra A K
inst✝¹ : IsFractionRing A K
inst✝ : IsDedekindDomain A
I J : FractionalIdeal A⁰ K
⊢ I / J = I * J⁻¹

tactic: refine' le_antisymm ((mul_right_le_iff hJ).mp _) ((le_div_iff_mul_le hJ).mpr _)
state_before: case neg
R : Type ?u.709535
A : Type u_1
K : Type u_2
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Field K
inst✝³ : IsDomain A
inst✝² : Algebra A K
inst✝¹ : IsFractionRing A K
inst✝ : IsDedekindDomain A
I J : FractionalIdeal A⁰ K
hJ : ¬J = 0
⊢ I / J = I * J⁻¹

tactic: rw [mul_assoc, mul_comm J⁻¹, FractionalIdeal.mul_inv_cancel hJ, mul_one]
state_before: case neg.refine'_2
R : Type ?u.709535
A : Type u_1
K : Type u_2
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Field K
inst✝³ : IsDomain A
inst✝² : Algebra A K
inst✝¹ : IsFractionRing A K
inst✝ : IsDedekindDomain A
I J : FractionalIdeal A⁰ K
hJ : ¬J = 0
⊢ I * J⁻¹ * J ≤ I

tactic: rw [hJ, div_zero, inv_zero', MulZeroClass.mul_zero]
state_before: case pos
R : Type ?u.709535
A : Type u_1
K : Type u_2
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Field K
inst✝³ : IsDomain A
inst✝² : Algebra A K
inst✝¹ : IsFractionRing A K
inst✝ : IsDedekindDomain A
I J : FractionalIdeal A⁰ K
hJ : J = 0
⊢ I / J = I * J⁻¹

tactic: rw [mul_assoc, mul_comm J⁻¹, FractionalIdeal.mul_inv_cancel hJ, mul_one, mul_le]
state_before: case neg.refine'_1
R : Type ?u.709535
A : Type u_1
K : Type u_2
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Field K
inst✝³ : IsDomain A
inst✝² : Algebra A K
inst✝¹ : IsFractionRing A K
inst✝ : IsDedekindDomain A
I J : FractionalIdeal A⁰ K
hJ : ¬J = 0
⊢ I / J * J ≤ I * J⁻¹ * J

tactic: intro x hx y hy
state_before: case neg.refine'_1
R : Type ?u.709535
A : Type u_1
K : Type u_2
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Field K
inst✝³ : IsDomain A
inst✝² : Algebra A K
inst✝¹ : IsFractionRing A K
inst✝ : IsDedekindDomain A
I J : FractionalIdeal A⁰ K
hJ : ¬J = 0
⊢ ∀ (i : K), i ∈ I / J → ∀ (j : K), j ∈ J → i * j ∈ I

tactic: rw [mem_div_iff_of_nonzero hJ] at hx
state_before: case neg.refine'_1
R : Type ?u.709535
A : Type u_1
K : Type u_2
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Field K
inst✝³ : IsDomain A
inst✝² : Algebra A K
inst✝¹ : IsFractionRing A K
inst✝ : IsDedekindDomain A
I J : FractionalIdeal A⁰ K
hJ : ¬J = 0
x : K
hx : x ∈ I / J
y : K
hy : y ∈ J
⊢ x * y ∈ I

tactic: exact hx y hy
state_before: case neg.refine'_1
R : Type ?u.709535
A : Type u_1
K : Type u_2
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Field K
inst✝³ : IsDomain A
inst✝² : Algebra A K
inst✝¹ : IsFractionRing A K
inst✝ : IsDedekindDomain A
I J : FractionalIdeal A⁰ K
hJ : ¬J = 0
x : K
hx : ∀ (y : K), y ∈ J → x * y ∈ I
y : K
hy : y ∈ J
⊢ x * y ∈ I
Theorem: Path.Homotopy.transAssocReparamAux_mem_I
File: Mathlib/AlgebraicTopology/FundamentalGroupoid/Basic.lean

tactic: unfold transAssocReparamAux
state_before: X : Type u
Y : Type v
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x₀ x₁ : X
t : ↑I
⊢ transAssocReparamAux t ∈ I

tactic: split_ifs <;> constructor <;> linarith [unitInterval.le_one t, unitInterval.nonneg t]
state_before: X : Type u
Y : Type v
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x₀ x₁ : X
t : ↑I
⊢ (if ↑t ≤ 1 / 4 then 2 * ↑t else if ↑t ≤ 1 / 2 then ↑t + 1 / 4 else 1 / 2 * (↑t + 1)) ∈ I
Theorem: ball_sub_ball
File: Mathlib/Analysis/NormedSpace/Pointwise.lean

tactic: simp_rw [sub_eq_add_neg, neg_ball, ball_add_ball hε hδ]
state_before: 𝕜 : Type ?u.798220
E : Type u_1
inst✝³ : NormedField 𝕜
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : NormedSpace ℝ E
x y z : E
δ ε : ℝ
hε : 0 < ε
hδ : 0 < δ
a b : E
⊢ Metric.ball a ε - Metric.ball b δ = Metric.ball (a - b) (ε + δ)
Theorem: CategoryTheory.Limits.kernelIsoOfEq_refl
File: Mathlib/CategoryTheory/Limits/Shapes/Kernels.lean

tactic: ext
state_before: C : Type u
inst✝² : Category C
inst✝¹ : HasZeroMorphisms C
X Y : C
f : X ⟶ Y
inst✝ : HasKernel f
h : f = f
⊢ kernelIsoOfEq h = Iso.refl (kernel f)

tactic: simp [kernelIsoOfEq]
state_before: case w.h
C : Type u
inst✝² : Category C
inst✝¹ : HasZeroMorphisms C
X Y : C
f : X ⟶ Y
inst✝ : HasKernel f
h : f = f
⊢ (kernelIsoOfEq h).hom ≫ equalizer.ι f 0 = (Iso.refl (kernel f)).hom ≫ equalizer.ι f 0
Theorem: Set.ncard_le_ncard_insert
File: Mathlib/Data/Set/Ncard.lean

tactic: classical
refine'
  s.finite_or_infinite.elim (fun h ↦ _) (fun h ↦ by (rw [h.ncard]; exact Nat.zero_le _))
rw [ncard_insert_eq_ite h]; split_ifs <;> simp
state_before: α : Type u_1
β : Type ?u.11853
s✝ t : Set α
a✝ b x y : α
f : α → β
a : α
s : Set α
⊢ ncard s ≤ ncard (insert a s)

tactic: refine'
  s.finite_or_infinite.elim (fun h ↦ _) (fun h ↦ by (rw [h.ncard]; exact Nat.zero_le _))
state_before: α : Type u_1
β : Type ?u.11853
s✝ t : Set α
a✝ b x y : α
f : α → β
a : α
s : Set α
⊢ ncard s ≤ ncard (insert a s)

tactic: rw [ncard_insert_eq_ite h]
state_before: α : Type u_1
β : Type ?u.11853
s✝ t : Set α
a✝ b x y : α
f : α → β
a : α
s : Set α
h : Set.Finite s
⊢ ncard s ≤ ncard (insert a s)

tactic: split_ifs <;> simp
state_before: α : Type u_1
β : Type ?u.11853
s✝ t : Set α
a✝ b x y : α
f : α → β
a : α
s : Set α
h : Set.Finite s
⊢ ncard s ≤ if a ∈ s then ncard s else ncard s + 1

tactic: (rw [h.ncard]; exact Nat.zero_le _)
state_before: α : Type u_1
β : Type ?u.11853
s✝ t : Set α
a✝ b x y : α
f : α → β
a : α
s : Set α
h : Set.Infinite s
⊢ ncard s ≤ ncard (insert a s)

tactic: rw [h.ncard]
state_before: α : Type u_1
β : Type ?u.11853
s✝ t : Set α
a✝ b x y : α
f : α → β
a : α
s : Set α
h : Set.Infinite s
⊢ ncard s ≤ ncard (insert a s)

tactic: exact Nat.zero_le _
state_before: α : Type u_1
β : Type ?u.11853
s✝ t : Set α
a✝ b x y : α
f : α → β
a : α
s : Set α
h : Set.Infinite s
⊢ 0 ≤ ncard (insert a s)
Theorem: Field.DirectLimit.inv_mul_cancel
File: Mathlib/Algebra/DirectLimit.lean

tactic: rw [_root_.mul_comm, DirectLimit.mul_inv_cancel G f hp]
state_before: R : Type u
inst✝⁴ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝³ : Preorder ι
G : ι → Type w
inst✝² : Nonempty ι
inst✝¹ : IsDirected ι fun x x_1 => x ≤ x_1
inst✝ : (i : ι) → Field (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
p : Ring.DirectLimit G f
hp : p ≠ 0
⊢ inv G f p * p = 1
Theorem: HasDerivAtFilter.star
File: Mathlib/Analysis/Calculus/Deriv/Star.lean

tactic: simpa using h.star.hasDerivAtFilter
state_before: 𝕜 : Type u
inst✝⁷ : NontriviallyNormedField 𝕜
F : Type v
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace 𝕜 F
f : 𝕜 → F
inst✝⁴ : StarRing 𝕜
inst✝³ : TrivialStar 𝕜
inst✝² : StarAddMonoid F
inst✝¹ : ContinuousStar F
inst✝ : StarModule 𝕜 F
f' : F
x : 𝕜
L : Filter 𝕜
h : HasDerivAtFilter f f' x L
⊢ HasDerivAtFilter (fun x => star (f x)) (star f') x L
Theorem: Basis.exists_op_nnnorm_le
File: Mathlib/Analysis/NormedSpace/FiniteDimension.lean

tactic: cases nonempty_fintype ι
state_before: 𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
ι : Type u_1
inst✝ : Finite ι
v : Basis ι 𝕜 E
⊢ ∃ C, C > 0 ∧ ∀ {u : E →L[𝕜] F} (M : ℝ≥0), (∀ (i : ι), ‖↑u (↑v i)‖₊ ≤ M) → ‖u‖₊ ≤ C * M

tactic: exact
  ⟨max (Fintype.card ι • ‖v.equivFunL.toContinuousLinearMap‖₊) 1,
    zero_lt_one.trans_le (le_max_right _ _), fun {u} M hu =>
    (v.op_nnnorm_le M hu).trans <| mul_le_mul_of_nonneg_right (le_max_left _ _) (zero_le M)⟩
state_before: case intro
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
ι : Type u_1
inst✝ : Finite ι
v : Basis ι 𝕜 E
val✝ : Fintype ι
⊢ ∃ C, C > 0 ∧ ∀ {u : E →L[𝕜] F} (M : ℝ≥0), (∀ (i : ι), ‖↑u (↑v i)‖₊ ≤ M) → ‖u‖₊ ≤ C * M
Theorem: Tropical.mul_eq_zero_iff
File: Mathlib/Algebra/Tropical/Basic.lean

tactic: simp [← untrop_inj_iff, WithTop.add_eq_top]
state_before: R✝ : Type u
inst✝¹ : LinearOrderedAddCommMonoidWithTop R✝
R : Type u_1
inst✝ : LinearOrderedAddCommMonoid R
a b : Tropical (WithTop R)
⊢ a * b = 0 ↔ a = 0 ∨ b = 0
Theorem: Real.uniformContinuous_neg
File: Mathlib/Topology/Instances/Real.lean

tactic: rw [dist_comm] at h
state_before: α : Type u
β : Type v
γ : Type w
ε : ℝ
ε0 : ε > 0
a✝ b✝ : ℝ
h : dist a✝ b✝ < ε
⊢ dist (-a✝) (-b✝) < ε

tactic: simpa only [Real.dist_eq, neg_sub_neg] using h
state_before: α : Type u
β : Type v
γ : Type w
ε : ℝ
ε0 : ε > 0
a✝ b✝ : ℝ
h : dist b✝ a✝ < ε
⊢ dist (-a✝) (-b✝) < ε
Theorem: padicNormE.is_rat
File: Mathlib/NumberTheory/Padics/PadicNumbers.lean

tactic: simp [h]
state_before: p : ℕ
hp : Fact (Nat.Prime p)
q : ℚ_[p]
h : q = 0
⊢ ‖q‖ = ↑0
Theorem: FiniteField.even_card_iff_char_two
File: Mathlib/FieldTheory/Finite/Basic.lean

tactic: rcases FiniteField.card F (ringChar F) with ⟨n, hp, h⟩
state_before: K : Type ?u.1097070
R : Type ?u.1097073
F : Type u_1
inst✝¹ : Field F
inst✝ : Fintype F
⊢ ringChar F = 2 ↔ Fintype.card F % 2 = 0

tactic: rw [h, Nat.pow_mod]
state_before: case intro.intro
K : Type ?u.1097070
R : Type ?u.1097073
F : Type u_1
inst✝¹ : Field F
inst✝ : Fintype F
n : ℕ+
hp : Nat.Prime (ringChar F)
h : Fintype.card F = ringChar F ^ ↑n
⊢ ringChar F = 2 ↔ Fintype.card F % 2 = 0

tactic: constructor
state_before: case intro.intro
K : Type ?u.1097070
R : Type ?u.1097073
F : Type u_1
inst✝¹ : Field F
inst✝ : Fintype F
n : ℕ+
hp : Nat.Prime (ringChar F)
h : Fintype.card F = ringChar F ^ ↑n
⊢ ringChar F = 2 ↔ (ringChar F % 2) ^ ↑n % 2 = 0

tactic: intro hF
state_before: case intro.intro.mp
K : Type ?u.1097070
R : Type ?u.1097073
F : Type u_1
inst✝¹ : Field F
inst✝ : Fintype F
n : ℕ+
hp : Nat.Prime (ringChar F)
h : Fintype.card F = ringChar F ^ ↑n
⊢ ringChar F = 2 → (ringChar F % 2) ^ ↑n % 2 = 0

tactic: simp [hF]
state_before: case intro.intro.mp
K : Type ?u.1097070
R : Type ?u.1097073
F : Type u_1
inst✝¹ : Field F
inst✝ : Fintype F
n : ℕ+
hp : Nat.Prime (ringChar F)
h : Fintype.card F = ringChar F ^ ↑n
hF : ringChar F = 2
⊢ (ringChar F % 2) ^ ↑n % 2 = 0

tactic: rw [← Nat.even_iff, Nat.even_pow]
state_before: case intro.intro.mpr
K : Type ?u.1097070
R : Type ?u.1097073
F : Type u_1
inst✝¹ : Field F
inst✝ : Fintype F
n : ℕ+
hp : Nat.Prime (ringChar F)
h : Fintype.card F = ringChar F ^ ↑n
⊢ (ringChar F % 2) ^ ↑n % 2 = 0 → ringChar F = 2

tactic: rintro ⟨hev, hnz⟩
state_before: case intro.intro.mpr
K : Type ?u.1097070
R : Type ?u.1097073
F : Type u_1
inst✝¹ : Field F
inst✝ : Fintype F
n : ℕ+
hp : Nat.Prime (ringChar F)
h : Fintype.card F = ringChar F ^ ↑n
⊢ Even (ringChar F % 2) ∧ ↑n ≠ 0 → ringChar F = 2

tactic: rw [Nat.even_iff, Nat.mod_mod] at hev
state_before: case intro.intro.mpr.intro
K : Type ?u.1097070
R : Type ?u.1097073
F : Type u_1
inst✝¹ : Field F
inst✝ : Fintype F
n : ℕ+
hp : Nat.Prime (ringChar F)
h : Fintype.card F = ringChar F ^ ↑n
hev : Even (ringChar F % 2)
hnz : ↑n ≠ 0
⊢ ringChar F = 2

tactic: exact (Nat.Prime.eq_two_or_odd hp).resolve_right (ne_of_eq_of_ne hev zero_ne_one)
state_before: case intro.intro.mpr.intro
K : Type ?u.1097070
R : Type ?u.1097073
F : Type u_1
inst✝¹ : Field F
inst✝ : Fintype F
n : ℕ+
hp : Nat.Prime (ringChar F)
h : Fintype.card F = ringChar F ^ ↑n
hev : ringChar F % 2 = 0
hnz : ↑n ≠ 0
⊢ ringChar F = 2
Theorem: Complex.frontier_setOf_le_re_and_im_le
File: Mathlib/Analysis/Complex/ReImTopology.lean

tactic: simpa only [closure_Ici, closure_Iic, frontier_Ici, frontier_Iic] using
  frontier_reProdIm (Ici a) (Iic b)
state_before: a b : ℝ
⊢ frontier {z | a ≤ z.re ∧ z.im ≤ b} = {z | a ≤ z.re ∧ z.im = b ∨ z.re = a ∧ z.im ≤ b}
Theorem: DiscreteValuationRing.unit_mul_pow_congr_unit
File: Mathlib/RingTheory/DiscreteValuationRing/Basic.lean

tactic: obtain rfl : m = n := unit_mul_pow_congr_pow hirr hirr u v m n h
state_before: R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : DiscreteValuationRing R
ϖ : R
hirr : Irreducible ϖ
u v : Rˣ
m n : ℕ
h : ↑u * ϖ ^ m = ↑v * ϖ ^ n
⊢ u = v

tactic: rw [← sub_eq_zero] at h
state_before: R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : DiscreteValuationRing R
ϖ : R
hirr : Irreducible ϖ
u v : Rˣ
m : ℕ
h : ↑u * ϖ ^ m = ↑v * ϖ ^ m
⊢ u = v

tactic: rw [← sub_mul, mul_eq_zero] at h
state_before: R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : DiscreteValuationRing R
ϖ : R
hirr : Irreducible ϖ
u v : Rˣ
m : ℕ
h✝ : ↑u * ϖ ^ m = ↑v * ϖ ^ m
h : ↑u * ϖ ^ m - ↑v * ϖ ^ m = 0
⊢ u = v

tactic: cases' h with h h
state_before: R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : DiscreteValuationRing R
ϖ : R
hirr : Irreducible ϖ
u v : Rˣ
m : ℕ
h✝ : ↑u * ϖ ^ m = ↑v * ϖ ^ m
h : ↑u - ↑v = 0 ∨ ϖ ^ m = 0
⊢ u = v

tactic: rw [sub_eq_zero] at h
state_before: case inl
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : DiscreteValuationRing R
ϖ : R
hirr : Irreducible ϖ
u v : Rˣ
m : ℕ
h✝ : ↑u * ϖ ^ m = ↑v * ϖ ^ m
h : ↑u - ↑v = 0
⊢ u = v

tactic: exact_mod_cast h
state_before: case inl
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : DiscreteValuationRing R
ϖ : R
hirr : Irreducible ϖ
u v : Rˣ
m : ℕ
h✝ : ↑u * ϖ ^ m = ↑v * ϖ ^ m
h : ↑u = ↑v
⊢ u = v

tactic: apply (hirr.ne_zero (pow_eq_zero h)).elim
state_before: case inr
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : DiscreteValuationRing R
ϖ : R
hirr : Irreducible ϖ
u v : Rˣ
m : ℕ
h✝ : ↑u * ϖ ^ m = ↑v * ϖ ^ m
h : ϖ ^ m = 0
⊢ u = v
Theorem: AddMonoidAlgebra.mul_single_zero_apply
File: Mathlib/Algebra/MonoidAlgebra/Basic.lean

tactic: rw [add_zero]
state_before: k : Type u₁
G : Type u₂
R : Type ?u.2056792
inst✝¹ : Semiring k
inst✝ : AddZeroClass G
f : AddMonoidAlgebra k G
r : k
x a : G
⊢ a + 0 = x ↔ a = x
Theorem: CategoryTheory.Sieve.pullback_comp
File: Mathlib/CategoryTheory/Sites/Sieves.lean

tactic: simp [Sieve.ext_iff]
state_before: C : Type u₁
inst✝¹ : Category C
D : Type u₂
inst✝ : Category D
F : C ⥤ D
X Y Z : C
f✝ : Y ⟶ X
S✝ R : Sieve X
f : Y ⟶ X
g : Z ⟶ Y
S : Sieve X
⊢ pullback (g ≫ f) S = pullback g (pullback f S)
Theorem: List.destutter'_sublist
File: Mathlib/Data/List/Destutter.lean

tactic: induction' l with b l hl generalizing a
state_before: α : Type u_1
l : List α
R : α → α → Prop
inst✝ : DecidableRel R
a✝ b a : α
⊢ destutter' R a l <+ a :: l

tactic: rw [destutter']
state_before: case cons
α : Type u_1
l✝ : List α
R : α → α → Prop
inst✝ : DecidableRel R
a✝¹ b✝ a✝ b : α
l : List α
hl : ∀ (a : α), destutter' R a l <+ a :: l
a : α
⊢ destutter' R a (b :: l) <+ a :: b :: l

tactic: split_ifs
state_before: case cons
α : Type u_1
l✝ : List α
R : α → α → Prop
inst✝ : DecidableRel R
a✝¹ b✝ a✝ b : α
l : List α
hl : ∀ (a : α), destutter' R a l <+ a :: l
a : α
⊢ (if R a b then a :: destutter' R b l else destutter' R a l) <+ a :: b :: l

tactic: simp
state_before: case nil
α : Type u_1
l : List α
R : α → α → Prop
inst✝ : DecidableRel R
a✝¹ b a✝ a : α
⊢ destutter' R a [] <+ [a]

tactic: exact Sublist.cons₂ a (hl b)
state_before: case cons.inl
α : Type u_1
l✝ : List α
R : α → α → Prop
inst✝ : DecidableRel R
a✝¹ b✝ a✝ b : α
l : List α
hl : ∀ (a : α), destutter' R a l <+ a :: l
a : α
h✝ : R a b
⊢ a :: destutter' R b l <+ a :: b :: l

tactic: exact (hl a).trans ((l.sublist_cons b).cons_cons a)
state_before: case cons.inr
α : Type u_1
l✝ : List α
R : α → α → Prop
inst✝ : DecidableRel R
a✝¹ b✝ a✝ b : α
l : List α
hl : ∀ (a : α), destutter' R a l <+ a :: l
a : α
h✝ : ¬R a b
⊢ destutter' R a l <+ a :: b :: l
Theorem: AffineSubspace.direction_bot
File: Mathlib/LinearAlgebra/AffineSpace/AffineSubspace.lean

tactic: rw [direction_eq_vectorSpan, bot_coe, vectorSpan_def, vsub_empty, Submodule.span_empty]
state_before: k : Type u_2
V : Type u_1
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
p₁ p₂ : P
⊢ direction ⊥ = ⊥
Theorem: Finset.mem_inv_smul_finset_iff
File: Mathlib/Data/Finset/Pointwise.lean

tactic: rw [← smul_mem_smul_finset_iff a, smul_inv_smul]
state_before: F : Type ?u.832295
α : Type u_2
β : Type u_1
γ : Type ?u.832304
inst✝² : DecidableEq β
inst✝¹ : Group α
inst✝ : MulAction α β
s t : Finset β
a : α
b : β
⊢ b ∈ a⁻¹ • s ↔ a • b ∈ s
Theorem: SubgroupClass.inclusion_self
File: Mathlib/GroupTheory/Subgroup/Basic.lean

tactic: cases x
state_before: G : Type u_1
G' : Type ?u.59883
inst✝⁶ : Group G
inst✝⁵ : Group G'
A : Type ?u.59892
inst✝⁴ : AddGroup A
M : Type ?u.59898
S : Type u_2
inst✝³ : DivInvMonoid M
inst✝² : SetLike S M
hSM : SubgroupClass S M
H K : S
inst✝¹ : SetLike S G
inst✝ : SubgroupClass S G
x : { x // x ∈ H }
⊢ ↑(inclusion (_ : H ≤ H)) x = x

tactic: rfl
state_before: case mk
G : Type u_1
G' : Type ?u.59883
inst✝⁶ : Group G
inst✝⁵ : Group G'
A : Type ?u.59892
inst✝⁴ : AddGroup A
M : Type ?u.59898
S : Type u_2
inst✝³ : DivInvMonoid M
inst✝² : SetLike S M
hSM : SubgroupClass S M
H K : S
inst✝¹ : SetLike S G
inst✝ : SubgroupClass S G
val✝ : G
property✝ : val✝ ∈ H
⊢ ↑(inclusion (_ : H ≤ H)) { val := val✝, property := property✝ } = { val := val✝, property := property✝ }
Theorem: Balanced.mem_smul_iff
File: Mathlib/Analysis/LocallyConvex/Basic.lean

tactic: obtain rfl | hb := eq_or_ne b 0
state_before: 𝕜 : Type u_1
𝕝 : Type ?u.103382
E : Type u_2
ι : Sort ?u.103388
κ : ι → Sort ?u.103393
inst✝⁶ : NormedField 𝕜
inst✝⁵ : NormedRing 𝕝
inst✝⁴ : NormedSpace 𝕜 𝕝
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : SMulWithZero 𝕝 E
inst✝ : IsScalarTower 𝕜 𝕝 E
s t u v A B : Set E
x : E
a b : 𝕜
hs : Balanced 𝕜 s
h : ‖a‖ = ‖b‖
⊢ a • x ∈ s ↔ b • x ∈ s

tactic: have ha : a ≠ 0 := norm_ne_zero_iff.1 (ne_of_eq_of_ne h <| norm_ne_zero_iff.2 hb)
state_before: case inr
𝕜 : Type u_1
𝕝 : Type ?u.103382
E : Type u_2
ι : Sort ?u.103388
κ : ι → Sort ?u.103393
inst✝⁶ : NormedField 𝕜
inst✝⁵ : NormedRing 𝕝
inst✝⁴ : NormedSpace 𝕜 𝕝
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : SMulWithZero 𝕝 E
inst✝ : IsScalarTower 𝕜 𝕝 E
s t u v A B : Set E
x : E
a b : 𝕜
hs : Balanced 𝕜 s
h : ‖a‖ = ‖b‖
hb : b ≠ 0
⊢ a • x ∈ s ↔ b • x ∈ s

tactic: rw [norm_zero, norm_eq_zero] at h
state_before: case inl
𝕜 : Type u_1
𝕝 : Type ?u.103382
E : Type u_2
ι : Sort ?u.103388
κ : ι → Sort ?u.103393
inst✝⁶ : NormedField 𝕜
inst✝⁵ : NormedRing 𝕝
inst✝⁴ : NormedSpace 𝕜 𝕝
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : SMulWithZero 𝕝 E
inst✝ : IsScalarTower 𝕜 𝕝 E
s t u v A B : Set E
x : E
a : 𝕜
hs : Balanced 𝕜 s
h : ‖a‖ = ‖0‖
⊢ a • x ∈ s ↔ 0 • x ∈ s

tactic: rw [h]
state_before: case inl
𝕜 : Type u_1
𝕝 : Type ?u.103382
E : Type u_2
ι : Sort ?u.103388
κ : ι → Sort ?u.103393
inst✝⁶ : NormedField 𝕜
inst✝⁵ : NormedRing 𝕝
inst✝⁴ : NormedSpace 𝕜 𝕝
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : SMulWithZero 𝕝 E
inst✝ : IsScalarTower 𝕜 𝕝 E
s t u v A B : Set E
x : E
a : 𝕜
hs : Balanced 𝕜 s
h : a = 0
⊢ a • x ∈ s ↔ 0 • x ∈ s

tactic: rw [← smul_eq_mul, smul_assoc]
state_before: case inr.mpr
𝕜 : Type u_1
𝕝 : Type ?u.103382
E : Type u_2
ι : Sort ?u.103388
κ : ι → Sort ?u.103393
inst✝⁶ : NormedField 𝕜
inst✝⁵ : NormedRing 𝕝
inst✝⁴ : NormedSpace 𝕜 𝕝
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : SMulWithZero 𝕝 E
inst✝ : IsScalarTower 𝕜 𝕝 E
s t u v A B : Set E
x : E
a b : 𝕜
hs : Balanced 𝕜 s
h : ‖a‖ = ‖b‖
hb : b ≠ 0
ha : a ≠ 0
h' : b • x ∈ s
⊢ (a * b⁻¹ * b) • x ∈ s

tactic: refine' hs.smul_mem _ h'
state_before: case inr.mpr
𝕜 : Type u_1
𝕝 : Type ?u.103382
E : Type u_2
ι : Sort ?u.103388
κ : ι → Sort ?u.103393
inst✝⁶ : NormedField 𝕜
inst✝⁵ : NormedRing 𝕝
inst✝⁴ : NormedSpace 𝕜 𝕝
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : SMulWithZero 𝕝 E
inst✝ : IsScalarTower 𝕜 𝕝 E
s t u v A B : Set E
x : E
a b : 𝕜
hs : Balanced 𝕜 s
h : ‖a‖ = ‖b‖
hb : b ≠ 0
ha : a ≠ 0
h' : b • x ∈ s
⊢ (a * b⁻¹) • b • x ∈ s

tactic: simp [← h, ha]
state_before: case inr.mpr
𝕜 : Type u_1
𝕝 : Type ?u.103382
E : Type u_2
ι : Sort ?u.103388
κ : ι → Sort ?u.103393
inst✝⁶ : NormedField 𝕜
inst✝⁵ : NormedRing 𝕝
inst✝⁴ : NormedSpace 𝕜 𝕝
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : SMulWithZero 𝕝 E
inst✝ : IsScalarTower 𝕜 𝕝 E
s t u v A B : Set E
x : E
a b : 𝕜
hs : Balanced 𝕜 s
h : ‖a‖ = ‖b‖
hb : b ≠ 0
ha : a ≠ 0
h' : b • x ∈ s
⊢ ‖a * b⁻¹‖ ≤ 1
Theorem: AlgEquiv.comp_symm
File: Mathlib/Algebra/Algebra/Equiv.lean

tactic: ext
state_before: R : Type u
A₁ : Type v
A₂ : Type w
A₃ : Type u₁
inst✝⁶ : CommSemiring R
inst✝⁵ : Semiring A₁
inst✝⁴ : Semiring A₂
inst✝³ : Semiring A₃
inst✝² : Algebra R A₁
inst✝¹ : Algebra R A₂
inst✝ : Algebra R A₃
e✝ e : A₁ ≃ₐ[R] A₂
⊢ AlgHom.comp ↑e ↑(symm e) = AlgHom.id R A₂

tactic: simp
state_before: case H
R : Type u
A₁ : Type v
A₂ : Type w
A₃ : Type u₁
inst✝⁶ : CommSemiring R
inst✝⁵ : Semiring A₁
inst✝⁴ : Semiring A₂
inst✝³ : Semiring A₃
inst✝² : Algebra R A₁
inst✝¹ : Algebra R A₂
inst✝ : Algebra R A₃
e✝ e : A₁ ≃ₐ[R] A₂
x✝ : A₂
⊢ ↑(AlgHom.comp ↑e ↑(symm e)) x✝ = ↑(AlgHom.id R A₂) x✝