tasksource/leandojo huggingface dataset:
Theorem: Fin.coe_sub_iff_lt
File: Mathlib/Data/Fin/Basic.lean

tactic: cases' n with n
state_before: n✝ m n : ℕ
a b : Fin n
⊢ ↑(a - b) = n + ↑a - ↑b ↔ a < b

tactic: rw [lt_iff_val_lt_val, Fin.coe_sub, add_comm]
state_before: case succ
n✝ m n : ℕ
a b : Fin (Nat.succ n)
⊢ ↑(a - b) = Nat.succ n + ↑a - ↑b ↔ a < b

tactic: cases' le_or_lt (b : ℕ) a with h h
state_before: case succ
n✝ m n : ℕ
a b : Fin (Nat.succ n)
⊢ (Nat.succ n - ↑b + ↑a) % Nat.succ n = Nat.succ n + ↑a - ↑b ↔ ↑a < ↑b

tactic: exact @finZeroElim (fun _ => _) a
state_before: case zero
n m : ℕ
a b : Fin zero
⊢ ↑(a - b) = zero + ↑a - ↑b ↔ a < b

tactic: refine iff_of_false ?_ (not_lt_of_le h)
state_before: case succ.inl
n✝ m n : ℕ
a b : Fin (Nat.succ n)
h : ↑b ≤ ↑a
⊢ (Nat.succ n - ↑b + ↑a) % Nat.succ n = Nat.succ n + ↑a - ↑b ↔ ↑a < ↑b

tactic: simpa [add_tsub_assoc_of_le h] using
  ((Nat.mod_lt _ (Nat.succ_pos _)).trans_le le_self_add).ne
state_before: case succ.inl
n✝ m n : ℕ
a b : Fin (Nat.succ n)
h : ↑b ≤ ↑a
⊢ ¬(Nat.succ n - ↑b + ↑a) % Nat.succ n = Nat.succ n + ↑a - ↑b

tactic: simp [← tsub_tsub_assoc b.is_lt.le h.le, ← tsub_add_eq_add_tsub b.is_lt.le,
  Nat.mod_eq_of_lt (tsub_lt_self (Nat.succ_pos _) (tsub_pos_of_lt h)), val_fin_le.mp _]
state_before: case succ.inr
n✝ m n : ℕ
a b : Fin (Nat.succ n)
h : ↑a < ↑b
⊢ (Nat.succ n - ↑b + ↑a) % Nat.succ n = Nat.succ n + ↑a - ↑b ↔ ↑a < ↑b

tactic: exact h
state_before: case succ.inr
n✝ m n : ℕ
a b : Fin (Nat.succ n)
h : ↑a < ↑b
⊢ a < b
Theorem: Vector3.append_add
File: Mathlib/Data/Vector3.lean

tactic: simp [append_add, add]
state_before: α : Type u_1
m✝ n✝ m : ℕ
v : Vector3 α (succ m)
n : ℕ
w : Vector3 α n
i : Fin2 n
_a : α
t : Vector3 α m
⊢ ((_a :: t) +-+ w) (add i (succ m)) = w i
Theorem: Odd.zpow_nonneg_iff
File: Mathlib/Algebra/Order/Field/Power.lean

tactic: cases' hn with k hk
state_before: α : Type u_1
inst✝ : LinearOrderedField α
a b c d : α
n : ℤ
hn : Odd n
⊢ 0 ≤ a ^ n ↔ 0 ≤ a

tactic: simpa only [hk, two_mul] using zpow_bit1_nonneg_iff
state_before: case intro
α : Type u_1
inst✝ : LinearOrderedField α
a b c d : α
n k : ℤ
hk : n = 2 * k + 1
⊢ 0 ≤ a ^ n ↔ 0 ≤ a
Theorem: Real.abs_rpow_of_nonneg
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: have h_rpow_nonneg : 0 ≤ x ^ y := Real.rpow_nonneg_of_nonneg hx_nonneg _
state_before: x y : ℝ
hx_nonneg : 0 ≤ x
⊢ abs (x ^ y) = abs x ^ y

tactic: rw [abs_eq_self.mpr hx_nonneg, abs_eq_self.mpr h_rpow_nonneg]
state_before: x y : ℝ
hx_nonneg : 0 ≤ x
h_rpow_nonneg : 0 ≤ x ^ y
⊢ abs (x ^ y) = abs x ^ y
Theorem: Set.infinite_univ_iff
File: Mathlib/Data/Set/Finite.lean

tactic: rw [Set.Infinite, finite_univ_iff, not_finite_iff_infinite]
state_before: α : Type u
β : Type v
ι : Sort w
γ : Type x
⊢ Set.Infinite univ ↔ Infinite α
Theorem: SimpleGraph.adjMatrix_vecMul_apply
File: Mathlib/Combinatorics/SimpleGraph/AdjMatrix.lean

tactic: simp only [← dotProduct_adjMatrix, vecMul]
state_before: V : Type u_2
α : Type u_1
β : Type ?u.43997
G : SimpleGraph V
inst✝² : DecidableRel G.Adj
inst✝¹ : Fintype V
inst✝ : NonAssocSemiring α
v : V
vec : V → α
⊢ vecMul vec (adjMatrix α G) v = ∑ u in neighborFinset G v, vec u

tactic: refine' congr rfl _
state_before: V : Type u_2
α : Type u_1
β : Type ?u.43997
G : SimpleGraph V
inst✝² : DecidableRel G.Adj
inst✝¹ : Fintype V
inst✝ : NonAssocSemiring α
v : V
vec : V → α
⊢ (vec ⬝ᵥ fun i => adjMatrix α G i v) = (fun u => vec u) ⬝ᵥ adjMatrix α G v

tactic: ext x
state_before: V : Type u_2
α : Type u_1
β : Type ?u.43997
G : SimpleGraph V
inst✝² : DecidableRel G.Adj
inst✝¹ : Fintype V
inst✝ : NonAssocSemiring α
v : V
vec : V → α
⊢ (fun i => adjMatrix α G i v) = adjMatrix α G v

tactic: rw [← transpose_apply (adjMatrix α G) x v, transpose_adjMatrix]
state_before: case h
V : Type u_2
α : Type u_1
β : Type ?u.43997
G : SimpleGraph V
inst✝² : DecidableRel G.Adj
inst✝¹ : Fintype V
inst✝ : NonAssocSemiring α
v : V
vec : V → α
x : V
⊢ adjMatrix α G x v = adjMatrix α G v x
Theorem: MeasureTheory.LipschitzWith.integrable_comp_iff_of_antilipschitz
File: Mathlib/MeasureTheory/Function/L1Space.lean

tactic: simp [← memℒp_one_iff_integrable, hg.memℒp_comp_iff_of_antilipschitz hg' g0]
state_before: α : Type u_3
β : Type u_1
γ : Type u_2
δ : Type ?u.992421
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
K K' : ℝ≥0
f : α → β
g : β → γ
hg : LipschitzWith K g
hg' : AntilipschitzWith K' g
g0 : g 0 = 0
⊢ Integrable (g ∘ f) ↔ Integrable f
Theorem: AddSubgroup.nsmul_mem_zmultiples_iff_exists_sub_div
File: Mathlib/Algebra/CharZero/Quotient.lean

tactic: rw [← coe_nat_zsmul r, zsmul_mem_zmultiples_iff_exists_sub_div (Int.coe_nat_ne_zero.mpr hn),
  Int.cast_ofNat]
state_before: R : Type u_1
inst✝¹ : DivisionRing R
inst✝ : CharZero R
p r : R
n : ℕ
hn : n ≠ 0
⊢ n • r ∈ zmultiples p ↔ ∃ k, r - ↑k • (p / ↑n) ∈ zmultiples p

tactic: rfl
state_before: R : Type u_1
inst✝¹ : DivisionRing R
inst✝ : CharZero R
p r : R
n : ℕ
hn : n ≠ 0
⊢ (∃ k, r - ↑k • (p / ↑n) ∈ zmultiples p) ↔ ∃ k, r - ↑k • (p / ↑n) ∈ zmultiples p
Theorem: padicNormE.nonarchimedean
File: Mathlib/NumberTheory/Padics/PadicNumbers.lean

tactic: dsimp [norm]
state_before: p : ℕ
hp : Fact (Nat.Prime p)
q r : ℚ_[p]
⊢ ‖q + r‖ ≤ max ‖q‖ ‖r‖

tactic: exact_mod_cast nonarchimedean' _ _
state_before: p : ℕ
hp : Fact (Nat.Prime p)
q r : ℚ_[p]
⊢ ↑(↑padicNormE (q + r)) ≤ max ↑(↑padicNormE q) ↑(↑padicNormE r)
Theorem: Polynomial.Monic.natDegree_mul'
File: Mathlib/Data/Polynomial/Monic.lean

tactic: rw [natDegree_mul', add_comm]
state_before: R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Semiring R
p q r : R[X]
hp : Monic p
hq : q ≠ 0
⊢ natDegree (p * q) = natDegree p + natDegree q

tactic: simpa [hp.leadingCoeff, leadingCoeff_ne_zero]
state_before: R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Semiring R
p q r : R[X]
hp : Monic p
hq : q ≠ 0
⊢ Polynomial.leadingCoeff p * Polynomial.leadingCoeff q ≠ 0
Theorem: le_mul_of_one_le_right
File: Mathlib/Algebra/Order/Ring/Lemmas.lean

tactic: simpa only [mul_one] using mul_le_mul_of_nonneg_left h ha
state_before: α : Type u_1
a b c d : α
inst✝³ : MulOneClass α
inst✝² : Zero α
inst✝¹ : Preorder α
inst✝ : PosMulMono α
ha : 0 ≤ a
h : 1 ≤ b
⊢ a ≤ a * b
Theorem: Polynomial.natDegree_eq_of_degree_eq_some
File: Mathlib/Data/Polynomial/Degree/Definitions.lean

tactic: rw [hp0] at h
state_before: R : Type u
S : Type v
a b c d : R
n✝ m : ℕ
inst✝ : Semiring R
p✝ q r p : R[X]
n : ℕ
h : degree p = ↑n
hp0 : p = 0
⊢ False

tactic: exact Option.noConfusion h
state_before: R : Type u
S : Type v
a b c d : R
n✝ m : ℕ
inst✝ : Semiring R
p✝ q r p : R[X]
n : ℕ
h : degree 0 = ↑n
hp0 : p = 0
⊢ False

tactic: rwa [← degree_eq_natDegree hp0]
state_before: R : Type u
S : Type v
a b c d : R
n✝ m : ℕ
inst✝ : Semiring R
p✝ q r p : R[X]
n : ℕ
h : degree p = ↑n
hp0 : p ≠ 0
⊢ ↑(natDegree p) = ↑n
Theorem: Equiv.swap_apply_apply
File: Mathlib/GroupTheory/Perm/Basic.lean

tactic: rw [mul_swap_eq_swap_mul, mul_inv_cancel_right]
state_before: α : Type u
β : Type v
inst✝ : DecidableEq α
f : Perm α
x y : α
⊢ swap (↑f x) (↑f y) = f * swap x y * f⁻¹
Theorem: Function.iterate_succ_apply'
File: Mathlib/Logic/Function/Iterate.lean

tactic: rw [iterate_succ']
state_before: α : Type u
β : Type v
f : α → α
n : ℕ
x : α
⊢ (f^[Nat.succ n]) x = f ((f^[n]) x)

tactic: rfl
state_before: α : Type u
β : Type v
f : α → α
n : ℕ
x : α
⊢ (f ∘ f^[n]) x = f ((f^[n]) x)
Theorem: Polynomial.dvd_C_mul
File: Mathlib/Data/Polynomial/FieldDivision.lean

tactic: rw [mul_left_comm p, ← hr, ← mul_assoc, ← C.map_mul, _root_.inv_mul_cancel ha, C.map_one,
  one_mul]
state_before: R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n : ℕ
inst✝ : Field R
p q : R[X]
ha : a ≠ 0
x✝ : p ∣ ↑C a * q
r : R[X]
hr : ↑C a * q = p * r
⊢ q = p * (↑C a⁻¹ * r)
Theorem: StrictConvex.affine_preimage
File: Mathlib/Analysis/Convex/Strict.lean

tactic: intro x hx y hy hxy a b ha hb hab
state_before: 𝕜 : Type u_2
𝕝 : Type ?u.200813
E : Type u_3
F : Type u_1
β : Type ?u.200822
inst✝⁶ : OrderedRing 𝕜
inst✝⁵ : TopologicalSpace E
inst✝⁴ : TopologicalSpace F
inst✝³ : AddCommGroup E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
s✝ t : Set E
x y : E
s : Set F
hs : StrictConvex 𝕜 s
f : E →ᵃ[𝕜] F
hf : Continuous ↑f
hfinj : Injective ↑f
⊢ StrictConvex 𝕜 (↑f ⁻¹' s)

tactic: refine' preimage_interior_subset_interior_preimage hf _
state_before: 𝕜 : Type u_2
𝕝 : Type ?u.200813
E : Type u_3
F : Type u_1
β : Type ?u.200822
inst✝⁶ : OrderedRing 𝕜
inst✝⁵ : TopologicalSpace E
inst✝⁴ : TopologicalSpace F
inst✝³ : AddCommGroup E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
s✝ t : Set E
x✝ y✝ : E
s : Set F
hs : StrictConvex 𝕜 s
f : E →ᵃ[𝕜] F
hf : Continuous ↑f
hfinj : Injective ↑f
x : E
hx : x ∈ ↑f ⁻¹' s
y : E
hy : y ∈ ↑f ⁻¹' s
hxy : x ≠ y
a b : 𝕜
ha : 0 < a
hb : 0 < b
hab : a + b = 1
⊢ a • x + b • y ∈ interior (↑f ⁻¹' s)

tactic: rw [mem_preimage, Convex.combo_affine_apply hab]
state_before: 𝕜 : Type u_2
𝕝 : Type ?u.200813
E : Type u_3
F : Type u_1
β : Type ?u.200822
inst✝⁶ : OrderedRing 𝕜
inst✝⁵ : TopologicalSpace E
inst✝⁴ : TopologicalSpace F
inst✝³ : AddCommGroup E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
s✝ t : Set E
x✝ y✝ : E
s : Set F
hs : StrictConvex 𝕜 s
f : E →ᵃ[𝕜] F
hf : Continuous ↑f
hfinj : Injective ↑f
x : E
hx : x ∈ ↑f ⁻¹' s
y : E
hy : y ∈ ↑f ⁻¹' s
hxy : x ≠ y
a b : 𝕜
ha : 0 < a
hb : 0 < b
hab : a + b = 1
⊢ a • x + b • y ∈ ↑f ⁻¹' interior s

tactic: exact hs hx hy (hfinj.ne hxy) ha hb hab
state_before: 𝕜 : Type u_2
𝕝 : Type ?u.200813
E : Type u_3
F : Type u_1
β : Type ?u.200822
inst✝⁶ : OrderedRing 𝕜
inst✝⁵ : TopologicalSpace E
inst✝⁴ : TopologicalSpace F
inst✝³ : AddCommGroup E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
s✝ t : Set E
x✝ y✝ : E
s : Set F
hs : StrictConvex 𝕜 s
f : E →ᵃ[𝕜] F
hf : Continuous ↑f
hfinj : Injective ↑f
x : E
hx : x ∈ ↑f ⁻¹' s
y : E
hy : y ∈ ↑f ⁻¹' s
hxy : x ≠ y
a b : 𝕜
ha : 0 < a
hb : 0 < b
hab : a + b = 1
⊢ a • ↑f x + b • ↑f y ∈ interior s
Theorem: Fin.castPred_one
File: Mathlib/Data/Fin/Basic.lean

tactic: cases n
state_before: n m : ℕ
⊢ castPred 1 = 1

tactic: rfl
state_before: case zero
m : ℕ
⊢ castPred 1 = 1

tactic: rfl
state_before: case succ
m n✝ : ℕ
⊢ castPred 1 = 1
Theorem: Nat.dist_self
File: Mathlib/Data/Nat/Dist.lean

tactic: simp [dist.def, tsub_self]
state_before: n : ℕ
⊢ dist n n = 0
Theorem: InnerProductSpace.Core.inner_zero_left
File: Mathlib/Analysis/InnerProductSpace/Basic.lean

tactic: rw [← zero_smul 𝕜 (0 : F), inner_smul_left]
state_before: 𝕜 : Type u_1
E : Type ?u.531909
F : Type u_2
inst✝² : IsROrC 𝕜
inst✝¹ : AddCommGroup F
inst✝ : Module 𝕜 F
c : Core 𝕜 F
x : F
⊢ inner 0 x = 0

tactic: simp only [MulZeroClass.zero_mul, RingHom.map_zero]
state_before: 𝕜 : Type u_1
E : Type ?u.531909
F : Type u_2
inst✝² : IsROrC 𝕜
inst✝¹ : AddCommGroup F
inst✝ : Module 𝕜 F
c : Core 𝕜 F
x : F
⊢ ↑(starRingEnd 𝕜) 0 * inner 0 x = 0
Theorem: Set.ordConnected_range
File: Mathlib/Data/Set/Intervals/OrdConnected.lean

tactic: simp_rw [← image_univ]
state_before: α : Type u_2
β : Type u_3
inst✝² : Preorder α
inst✝¹ : Preorder β
s t : Set α
E : Type u_1
inst✝ : OrderIsoClass E α β
e : E
⊢ OrdConnected (range ↑e)

tactic: exact ordConnected_image (e : α ≃o β)
state_before: α : Type u_2
β : Type u_3
inst✝² : Preorder α
inst✝¹ : Preorder β
s t : Set α
E : Type u_1
inst✝ : OrderIsoClass E α β
e : E
⊢ OrdConnected (↑e '' univ)
Theorem: FiberBundleCore.mem_trivChange_source
File: Mathlib/Topology/FiberBundle/Basic.lean

tactic: erw [mem_prod]
state_before: ι : Type u_3
B : Type u_1
F : Type u_2
X : Type ?u.29164
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace B
inst✝ : TopologicalSpace F
Z : FiberBundleCore ι B F
i j : ι
p : B × F
⊢ p ∈ (trivChange Z i j).toLocalEquiv.source ↔ p.fst ∈ baseSet Z i ∩ baseSet Z j

tactic: simp
state_before: ι : Type u_3
B : Type u_1
F : Type u_2
X : Type ?u.29164
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace B
inst✝ : TopologicalSpace F
Z : FiberBundleCore ι B F
i j : ι
p : B × F
⊢ p.fst ∈ baseSet Z i ∩ baseSet Z j ∧ p.snd ∈ univ ↔ p.fst ∈ baseSet Z i ∩ baseSet Z j
Theorem: EReal.abs_eq_zero_iff
File: Mathlib/Data/Real/EReal.lean

tactic: induction x using EReal.rec
state_before: x : EReal
⊢ EReal.abs x = 0 ↔ x = 0

tactic: simp only [abs_bot, ENNReal.top_ne_zero, bot_ne_zero]
state_before: case h_bot

⊢ EReal.abs ⊥ = 0 ↔ ⊥ = 0

tactic: simp only [abs_def, coe_eq_zero, ENNReal.ofReal_eq_zero, abs_nonpos_iff]
state_before: case h_real
a✝ : ℝ
⊢ EReal.abs ↑a✝ = 0 ↔ ↑a✝ = 0

tactic: simp only [abs_top, ENNReal.top_ne_zero, top_ne_zero]
state_before: case h_top

⊢ EReal.abs ⊤ = 0 ↔ ⊤ = 0
Theorem: Commute.mul_pow
File: Mathlib/Algebra/GroupPower/Basic.lean

tactic: induction' n with n ih
state_before: α : Type ?u.18278
M : Type u
N : Type v
G : Type w
H : Type x
A : Type y
B : Type z
R : Type u₁
S : Type u₂
inst✝¹ : Monoid M
inst✝ : AddMonoid A
a b : M
h : Commute a b
n : ℕ
⊢ (a * b) ^ n = a ^ n * b ^ n

tactic: rw [pow_zero, pow_zero, pow_zero, one_mul]
state_before: case zero
α : Type ?u.18278
M : Type u
N : Type v
G : Type w
H : Type x
A : Type y
B : Type z
R : Type u₁
S : Type u₂
inst✝¹ : Monoid M
inst✝ : AddMonoid A
a b : M
h : Commute a b
⊢ (a * b) ^ Nat.zero = a ^ Nat.zero * b ^ Nat.zero

tactic: simp only [pow_succ, ih, ← mul_assoc, (h.pow_left n).right_comm]
state_before: case succ
α : Type ?u.18278
M : Type u
N : Type v
G : Type w
H : Type x
A : Type y
B : Type z
R : Type u₁
S : Type u₂
inst✝¹ : Monoid M
inst✝ : AddMonoid A
a b : M
h : Commute a b
n : ℕ
ih : (a * b) ^ n = a ^ n * b ^ n
⊢ (a * b) ^ Nat.succ n = a ^ Nat.succ n * b ^ Nat.succ n
Theorem: ContinuousLinearEquiv.comp_differentiableOn_iff
File: Mathlib/Analysis/Calculus/FDeriv/Equiv.lean

tactic: rw [DifferentiableOn, DifferentiableOn]
state_before: 𝕜 : Type u_2
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_4
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type u_1
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type ?u.72452
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f✝ f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x : E
s✝ t : Set E
L L₁ L₂ : Filter E
iso : E ≃L[𝕜] F
f : G → E
s : Set G
⊢ DifferentiableOn 𝕜 (↑iso ∘ f) s ↔ DifferentiableOn 𝕜 f s

tactic: simp only [iso.comp_differentiableWithinAt_iff]
state_before: 𝕜 : Type u_2
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_4
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type u_1
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type ?u.72452
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f✝ f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x : E
s✝ t : Set E
L L₁ L₂ : Filter E
iso : E ≃L[𝕜] F
f : G → E
s : Set G
⊢ (∀ (x : G), x ∈ s → DifferentiableWithinAt 𝕜 (↑iso ∘ f) s x) ↔ ∀ (x : G), x ∈ s → DifferentiableWithinAt 𝕜 f s x
Theorem: Equiv.Perm.IsThreeCycle.inv
File: Mathlib/GroupTheory/Perm/Cycle/Type.lean

tactic: rwa [IsThreeCycle, cycleType_inv]
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ f : Perm α
h : IsThreeCycle f
⊢ IsThreeCycle f⁻¹
Theorem: Traversable.comp_sequence
File: Mathlib/Control/Traversable/Lemmas.lean

tactic: simp [sequence, traverse_map]
state_before: t : Type u → Type u
inst✝⁵ : Traversable t
inst✝⁴ : IsLawfulTraversable t
F G : Type u → Type u
inst✝³ : Applicative F
inst✝² : LawfulApplicative F
inst✝¹ : Applicative G
inst✝ : LawfulApplicative G
α β γ : Type u
g : α → F β
h : β → G γ
f : β → γ
x✝ : t β
x : t (F (G α))
⊢ sequence (Comp.mk <$> x) = Comp.mk (sequence <$> sequence x)

tactic: rw [← comp_traverse]
state_before: t : Type u → Type u
inst✝⁵ : Traversable t
inst✝⁴ : IsLawfulTraversable t
F G : Type u → Type u
inst✝³ : Applicative F
inst✝² : LawfulApplicative F
inst✝¹ : Applicative G
inst✝ : LawfulApplicative G
α β γ : Type u
g : α → F β
h : β → G γ
f : β → γ
x✝ : t β
x : t (F (G α))
⊢ traverse Comp.mk x = Comp.mk (traverse id <$> traverse id x)

tactic: simp [map_id]
state_before: t : Type u → Type u
inst✝⁵ : Traversable t
inst✝⁴ : IsLawfulTraversable t
F G : Type u → Type u
inst✝³ : Applicative F
inst✝² : LawfulApplicative F
inst✝¹ : Applicative G
inst✝ : LawfulApplicative G
α β γ : Type u
g : α → F β
h : β → G γ
f : β → γ
x✝ : t β
x : t (F (G α))
⊢ traverse Comp.mk x = traverse (Comp.mk ∘ map id ∘ id) x
Theorem: Nat.divisorsAntidiagonal_one
File: Mathlib/NumberTheory/Divisors.lean

tactic: ext
state_before: n : ℕ
⊢ divisorsAntidiagonal 1 = {(1, 1)}

tactic: simp [mul_eq_one, Prod.ext_iff]
state_before: case a
n : ℕ
a✝ : ℕ × ℕ
⊢ a✝ ∈ divisorsAntidiagonal 1 ↔ a✝ ∈ {(1, 1)}
Theorem: List.ilast'_mem
File: Mathlib/Data/List/Basic.lean

tactic: simp [ilast']
state_before: ι : Type ?u.487859
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
a : α
⊢ ilast' a [] ∈ [a]

tactic: rw [mem_cons]
state_before: ι : Type ?u.487859
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
a b : α
l : List α
⊢ ilast' a (b :: l) ∈ a :: b :: l

tactic: exact Or.inr (ilast'_mem b l)
state_before: ι : Type ?u.487859
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
a b : α
l : List α
⊢ ilast' a (b :: l) = a ∨ ilast' a (b :: l) ∈ b :: l
Theorem: exists_open_superset_and_isCompact_closure
File: Mathlib/Topology/Separation.lean

tactic: rcases exists_compact_superset hK with ⟨K', hK', hKK'⟩
state_before: α : Type u
β : Type v
inst✝⁴ : TopologicalSpace α
γ : Type ?u.141263
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
inst✝¹ : LocallyCompactSpace α
inst✝ : T2Space α
K : Set α
hK : IsCompact K
⊢ ∃ V, IsOpen V ∧ K ⊆ V ∧ IsCompact (closure V)

tactic: refine'
  ⟨interior K', isOpen_interior, hKK', isCompact_closure_of_subset_compact hK' interior_subset⟩
state_before: case intro.intro
α : Type u
β : Type v
inst✝⁴ : TopologicalSpace α
γ : Type ?u.141263
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
inst✝¹ : LocallyCompactSpace α
inst✝ : T2Space α
K : Set α
hK : IsCompact K
K' : Set α
hK' : IsCompact K'
hKK' : K ⊆ interior K'
⊢ ∃ V, IsOpen V ∧ K ⊆ V ∧ IsCompact (closure V)
Theorem: CategoryTheory.NonPreadditiveAbelian.add_zero
File: Mathlib/CategoryTheory/Abelian/NonPreadditive.lean

tactic: rw [add_def, neg_def, sub_self, sub_zero]
state_before: C : Type u
inst✝¹ : Category C
inst✝ : NonPreadditiveAbelian C
X Y : C
a : X ⟶ Y
⊢ a + 0 = a
Theorem: Filter.frequently_top
File: Mathlib/Order/Filter/Basic.lean

tactic: simp [Filter.Frequently]
state_before: α : Type u
β : Type v
γ : Type w
δ : Type ?u.170210
ι : Sort x
p : α → Prop
⊢ (∃ᶠ (x : α) in ⊤, p x) ↔ ∃ x, p x
Theorem: Matrix.transpose_row
File: Mathlib/Data/Matrix/Basic.lean

tactic: ext
state_before: l : Type ?u.1214001
m : Type u_1
n : Type ?u.1214007
o : Type ?u.1214010
m' : o → Type ?u.1214015
n' : o → Type ?u.1214020
R : Type ?u.1214023
S : Type ?u.1214026
α : Type v
β : Type w
γ : Type ?u.1214033
v : m → α
⊢ (row v)ᵀ = col v

tactic: rfl
state_before: case a.h
l : Type ?u.1214001
m : Type u_1
n : Type ?u.1214007
o : Type ?u.1214010
m' : o → Type ?u.1214015
n' : o → Type ?u.1214020
R : Type ?u.1214023
S : Type ?u.1214026
α : Type v
β : Type w
γ : Type ?u.1214033
v : m → α
i✝ : m
x✝ : Unit
⊢ (row v)ᵀ i✝ x✝ = col v i✝ x✝
Theorem: List.zipWith_flip
File: Mathlib/Data/List/Basic.lean

tactic: simp! [zipWith_flip]
state_before: ι : Type ?u.144626
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
f : α → β → γ
a : α
as : List α
b : β
bs : List β
⊢ zipWith (flip f) (b :: bs) (a :: as) = zipWith f (a :: as) (b :: bs)

tactic: rfl
state_before: ι : Type ?u.144626
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
f : α → β → γ
a : α
as : List α
b : β
bs : List β
⊢ flip f b a = f a b
Theorem: Ordinal.isNormal_iff_lt_succ_and_bsup_eq
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: rw [← h₂ o ho]
state_before: α : Type ?u.366416
β : Type ?u.366419
γ : Type ?u.366422
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
f : Ordinal → Ordinal
x✝ : (∀ (a : Ordinal), f a < f (succ a)) ∧ ∀ (o : Ordinal), IsLimit o → (bsup o fun x x_1 => f x) = f o
h₁ : ∀ (a : Ordinal), f a < f (succ a)
h₂ : ∀ (o : Ordinal), IsLimit o → (bsup o fun x x_1 => f x) = f o
o : Ordinal
ho : IsLimit o
a : Ordinal
⊢ f o ≤ a ↔ ∀ (b : Ordinal), b < o → f b ≤ a

tactic: exact bsup_le_iff
state_before: α : Type ?u.366416
β : Type ?u.366419
γ : Type ?u.366422
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
f : Ordinal → Ordinal
x✝ : (∀ (a : Ordinal), f a < f (succ a)) ∧ ∀ (o : Ordinal), IsLimit o → (bsup o fun x x_1 => f x) = f o
h₁ : ∀ (a : Ordinal), f a < f (succ a)
h₂ : ∀ (o : Ordinal), IsLimit o → (bsup o fun x x_1 => f x) = f o
o : Ordinal
ho : IsLimit o
a : Ordinal
⊢ (bsup o fun x x_1 => f x) ≤ a ↔ ∀ (b : Ordinal), b < o → f b ≤ a
Theorem: List.range'_1_concat
File: Std/Data/List/Lemmas.lean

tactic: simp [range'_concat]
state_before: s n : Nat
⊢ range' s (n + 1) = range' s n ++ [s + n]
Theorem: EMetric.hausdorffEdist_le_of_mem_edist
File: Mathlib/Topology/MetricSpace/HausdorffDistance.lean

tactic: refine hausdorffEdist_le_of_infEdist (fun x xs ↦ ?_) (fun x xt ↦ ?_)
state_before: ι : Sort ?u.36912
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x y : α
s t u : Set α
Φ : α → β
r : ℝ≥0∞
H1 : ∀ (x : α), x ∈ s → ∃ y, y ∈ t ∧ edist x y ≤ r
H2 : ∀ (x : α), x ∈ t → ∃ y, y ∈ s ∧ edist x y ≤ r
⊢ hausdorffEdist s t ≤ r

tactic: rcases H1 x xs with ⟨y, yt, hy⟩
state_before: case refine_1
ι : Sort ?u.36912
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x✝ y : α
s t u : Set α
Φ : α → β
r : ℝ≥0∞
H1 : ∀ (x : α), x ∈ s → ∃ y, y ∈ t ∧ edist x y ≤ r
H2 : ∀ (x : α), x ∈ t → ∃ y, y ∈ s ∧ edist x y ≤ r
x : α
xs : x ∈ s
⊢ infEdist x t ≤ r

tactic: exact le_trans (infEdist_le_edist_of_mem yt) hy
state_before: case refine_1.intro.intro
ι : Sort ?u.36912
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x✝ y✝ : α
s t u : Set α
Φ : α → β
r : ℝ≥0∞
H1 : ∀ (x : α), x ∈ s → ∃ y, y ∈ t ∧ edist x y ≤ r
H2 : ∀ (x : α), x ∈ t → ∃ y, y ∈ s ∧ edist x y ≤ r
x : α
xs : x ∈ s
y : α
yt : y ∈ t
hy : edist x y ≤ r
⊢ infEdist x t ≤ r

tactic: rcases H2 x xt with ⟨y, ys, hy⟩
state_before: case refine_2
ι : Sort ?u.36912
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x✝ y : α
s t u : Set α
Φ : α → β
r : ℝ≥0∞
H1 : ∀ (x : α), x ∈ s → ∃ y, y ∈ t ∧ edist x y ≤ r
H2 : ∀ (x : α), x ∈ t → ∃ y, y ∈ s ∧ edist x y ≤ r
x : α
xt : x ∈ t
⊢ infEdist x s ≤ r

tactic: exact le_trans (infEdist_le_edist_of_mem ys) hy
state_before: case refine_2.intro.intro
ι : Sort ?u.36912
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x✝ y✝ : α
s t u : Set α
Φ : α → β
r : ℝ≥0∞
H1 : ∀ (x : α), x ∈ s → ∃ y, y ∈ t ∧ edist x y ≤ r
H2 : ∀ (x : α), x ∈ t → ∃ y, y ∈ s ∧ edist x y ≤ r
x : α
xt : x ∈ t
y : α
ys : y ∈ s
hy : edist x y ≤ r
⊢ infEdist x s ≤ r
Theorem: Equiv.Perm.pow_apply_mem_support
File: Mathlib/GroupTheory/Perm/Support.lean

tactic: simp only [mem_support, ne_eq, apply_pow_apply_eq_iff]
state_before: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f g : Perm α
n : ℕ
x : α
⊢ ↑(f ^ n) x ∈ support f ↔ x ∈ support f
Theorem: Asymptotics.isBigO_iff_eventually
File: Mathlib/Analysis/Asymptotics/Asymptotics.lean

tactic: simp only [IsBigOWith_def]
state_before: α : Type u_1
β : Type ?u.43255
E : Type u_2
F : Type ?u.43261
G : Type ?u.43264
E' : Type ?u.43267
F' : Type u_3
G' : Type ?u.43273
E'' : Type ?u.43276
F'' : Type ?u.43279
G'' : Type ?u.43282
R : Type ?u.43285
R' : Type ?u.43288
𝕜 : Type ?u.43291
𝕜' : Type ?u.43294
inst✝¹² : Norm E
inst✝¹¹ : Norm F
inst✝¹⁰ : Norm G
inst✝⁹ : SeminormedAddCommGroup E'
inst✝⁸ : SeminormedAddCommGroup F'
inst✝⁷ : SeminormedAddCommGroup G'
inst✝⁶ : NormedAddCommGroup E''
inst✝⁵ : NormedAddCommGroup F''
inst✝⁴ : NormedAddCommGroup G''
inst✝³ : SeminormedRing R
inst✝² : SeminormedRing R'
inst✝¹ : NormedField 𝕜
inst✝ : NormedField 𝕜'
c c' c₁ c₂ : ℝ
f : α → E
g : α → F
k : α → G
f' : α → E'
g' : α → F'
k' : α → G'
f'' : α → E''
g'' : α → F''
k'' : α → G''
l l' : Filter α
⊢ (∀ᶠ (c : ℝ) in atTop, IsBigOWith c l f g') ↔ ∀ᶠ (c : ℝ) in atTop, ∀ᶠ (x : α) in l, ‖f x‖ ≤ c * ‖g' x‖
Theorem: EMetric.ball_zero
File: Mathlib/Topology/MetricSpace/EMetricSpace.lean

tactic: rw [EMetric.ball_eq_empty_iff]
state_before: α : Type u
β : Type v
X : Type ?u.197038
inst✝ : PseudoEMetricSpace α
x y z : α
ε ε₁ ε₂ : ℝ≥0∞
s t : Set α
⊢ ball x 0 = ∅