1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: SimpleGraph.cliqueFree_completeMultipartiteGraph
File: Mathlib/Combinatorics/SimpleGraph/Clique.lean

tactic: rw [cliqueFree_iff, isEmpty_iff]
state_before: α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
ι : Type u_3
inst✝ : Fintype ι
V : ι → Type u_4
hc : Fintype.card ι < n
⊢ (completeMultipartiteGraph V).CliqueFree n
state_after: α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
ι : Type u_3
inst✝ : Fintype ι
V : ι → Type u_4
hc : Fintype.card ι < n
⊢ ⊤ ↪g completeMultipartiteGraph V → False

tactic: intro f
state_before: α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
ι : Type u_3
inst✝ : Fintype ι
V : ι → Type u_4
hc : Fintype.card ι < n
⊢ ⊤ ↪g completeMultipartiteGraph V → False
state_after: α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
ι : Type u_3
inst✝ : Fintype ι
V : ι → Type u_4
hc : Fintype.card ι < n
f : ⊤ ↪g completeMultipartiteGraph V
⊢ False

tactic: obtain ⟨v, w, hn, he⟩ := exists_ne_map_eq_of_card_lt (Sigma.fst ∘ f) (by simp [hc])
state_before: α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
ι : Type u_3
inst✝ : Fintype ι
V : ι → Type u_4
hc : Fintype.card ι < n
f : ⊤ ↪g completeMultipartiteGraph V
⊢ False
state_after: case intro.intro.intro
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
ι : Type u_3
inst✝ : Fintype ι
V : ι → Type u_4
hc : Fintype.card ι < n
f : ⊤ ↪g completeMultipartiteGraph V
v w : Fin n
hn : v ≠ w
he : (Sigma.fst ∘ ⇑f) v = (Sigma.fst ∘ ⇑f) w
⊢ False

tactic: rw [← top_adj, ← f.map_adj_iff, comap_adj, top_adj] at hn
state_before: case intro.intro.intro
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
ι : Type u_3
inst✝ : Fintype ι
V : ι → Type u_4
hc : Fintype.card ι < n
f : ⊤ ↪g completeMultipartiteGraph V
v w : Fin n
hn : v ≠ w
he : (Sigma.fst ∘ ⇑f) v = (Sigma.fst ∘ ⇑f) w
⊢ False
state_after: case intro.intro.intro
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
ι : Type u_3
inst✝ : Fintype ι
V : ι → Type u_4
hc : Fintype.card ι < n
f : ⊤ ↪g completeMultipartiteGraph V
v w : Fin n
hn : (f v).fst ≠ (f w).fst
he : (Sigma.fst ∘ ⇑f) v = (Sigma.fst ∘ ⇑f) w
⊢ False

tactic: exact absurd he hn
state_before: case intro.intro.intro
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
ι : Type u_3
inst✝ : Fintype ι
V : ι → Type u_4
hc : Fintype.card ι < n
f : ⊤ ↪g completeMultipartiteGraph V
v w : Fin n
hn : (f v).fst ≠ (f w).fst
he : (Sigma.fst ∘ ⇑f) v = (Sigma.fst ∘ ⇑f) w
⊢ False
state_after: no goals

tactic: simp [hc]
state_before: α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
ι : Type u_3
inst✝ : Fintype ι
V : ι → Type u_4
hc : Fintype.card ι < n
f : ⊤ ↪g completeMultipartiteGraph V
⊢ Fintype.card ι < Fintype.card (Fin n)
state_after: no goals
Theorem: factorization_zero
File: Mathlib/RingTheory/UniqueFactorizationDomain.lean

tactic: simp [factorization]
state_before: α : Type u_1
inst✝³ : CancelCommMonoidWithZero α
inst✝² : UniqueFactorizationMonoid α
inst✝¹ : NormalizationMonoid α
inst✝ : DecidableEq α
⊢ factorization 0 = 0
state_after: no goals
Theorem: Valuation.supp_quot_supp
File: Mathlib/RingTheory/Valuation/Quotient.lean

tactic: rw [supp_quot]
state_before: R : Type u_1
Γ₀ : Type u_2
inst✝¹ : CommRing R
inst✝ : LinearOrderedCommMonoidWithZero Γ₀
v : Valuation R Γ₀
⊢ (v.onQuot ⋯).supp = 0
state_after: R : Type u_1
Γ₀ : Type u_2
inst✝¹ : CommRing R
inst✝ : LinearOrderedCommMonoidWithZero Γ₀
v : Valuation R Γ₀
⊢ Ideal.map (Ideal.Quotient.mk v.supp) v.supp = 0

tactic: exact Ideal.map_quotient_self _
state_before: R : Type u_1
Γ₀ : Type u_2
inst✝¹ : CommRing R
inst✝ : LinearOrderedCommMonoidWithZero Γ₀
v : Valuation R Γ₀
⊢ Ideal.map (Ideal.Quotient.mk v.supp) v.supp = 0
state_after: no goals
Theorem: Nat.size_one
File: Mathlib/Data/Nat/Size.lean

tactic: rw [size_bit1, size_zero]
state_before: ⊢ (bit1 0).size = 1
state_after: no goals
Theorem: Ordinal.mod_opow_log_lt_self
File: Mathlib/SetTheory/Ordinal/Exponential.lean

tactic: rcases eq_or_ne b 0 with (rfl | hb)
state_before: b o : Ordinal.{u_1}
ho : o ≠ 0
⊢ o % b ^ log b o < o
state_after: case inl
o : Ordinal.{u_1}
ho : o ≠ 0
⊢ o % 0 ^ log 0 o < o

case inr
b o : Ordinal.{u_1}
ho : o ≠ 0
hb : b ≠ 0
⊢ o % b ^ log b o < o

tactic: simpa using Ordinal.pos_iff_ne_zero.2 ho
state_before: case inl
o : Ordinal.{u_1}
ho : o ≠ 0
⊢ o % 0 ^ log 0 o < o
state_after: no goals

tactic: exact (mod_lt _ <| opow_ne_zero _ hb).trans_le (opow_log_le_self _ ho)
state_before: case inr
b o : Ordinal.{u_1}
ho : o ≠ 0
hb : b ≠ 0
⊢ o % b ^ log b o < o
state_after: no goals
Theorem: Con.div
File: Mathlib/GroupTheory/Congruence/Basic.lean

tactic: simpa only [div_eq_mul_inv] using c.mul h1 (c.inv h2)
state_before: M : Type u_1
N : Type u_2
P : Type u_3
inst✝² : Group M
inst✝¹ : Group N
inst✝ : Group P
c : Con M
w x y z : M
h1 : c w x
h2 : c y z
⊢ c (w / y) (x / z)
state_after: no goals
Theorem: dvd_and_not_dvd_iff
File: Mathlib/Algebra/GroupWithZero/Divisibility.lean

tactic: simp [hx0] at hyx
state_before: α : Type u_1
inst✝ : CancelCommMonoidWithZero α
x y : α
x✝ : x ∣ y ∧ ¬y ∣ x
d : α
hd : y = x * d
hyx : ¬y ∣ x
hx0 : x = 0
⊢ False
state_after: no goals

tactic: rw [hd, mul_assoc, ← he, mul_one]
state_before: α : Type u_1
inst✝ : CancelCommMonoidWithZero α
x y : α
x✝¹ : x ∣ y ∧ ¬y ∣ x
d : α
hd : y = x * d
hyx : ¬y ∣ x
x✝ : d ∣ 1
e : α
he : 1 = d * e
⊢ x = y * e
state_after: no goals

tactic: conv =>
lhs
rw [he, hdx]
simp [mul_assoc]
state_before: α : Type u_1
inst✝ : CancelCommMonoidWithZero α
x y : α
x✝¹ : DvdNotUnit x y
hx0 : x ≠ 0
d : α
hdu : ¬IsUnit d
hdx : y = x * d
x✝ : y ∣ x
e : α
he : x = y * e
⊢ x * 1 = x * (d * e)
state_after: no goals
Theorem: Submodule.exists_mem_and_smul_eq_self_of_fg_of_le_smul
File: Mathlib/RingTheory/Finiteness.lean

tactic: obtain ⟨r, hr, hr'⟩ := exists_sub_one_mem_and_smul_eq_zero_of_fg_of_le_smul I N hn hin
state_before: R✝ : Type u_1
M✝ : Type u_2
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_3
inst✝² : CommRing R
M : Type u_4
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
hn : N.FG
hin : N ≤ I • N
⊢ ∃ r ∈ I, ∀ n ∈ N, r • n = n
state_after: case intro.intro
R✝ : Type u_1
M✝ : Type u_2
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_3
inst✝² : CommRing R
M : Type u_4
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
hn : N.FG
hin : N ≤ I • N
r : R
hr : r - 1 ∈ I
hr' : ∀ n ∈ N, r • n = 0
⊢ ∃ r ∈ I, ∀ n ∈ N, r • n = n

tactic: exact ⟨-(r - 1), I.neg_mem hr, fun n hn => by simpa [sub_smul] using hr' n hn⟩
state_before: case intro.intro
R✝ : Type u_1
M✝ : Type u_2
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_3
inst✝² : CommRing R
M : Type u_4
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
hn : N.FG
hin : N ≤ I • N
r : R
hr : r - 1 ∈ I
hr' : ∀ n ∈ N, r • n = 0
⊢ ∃ r ∈ I, ∀ n ∈ N, r • n = n
state_after: no goals

tactic: simpa [sub_smul] using hr' n hn
state_before: R✝ : Type u_1
M✝ : Type u_2
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_3
inst✝² : CommRing R
M : Type u_4
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
hn✝ : N.FG
hin : N ≤ I • N
r : R
hr : r - 1 ∈ I
hr' : ∀ n ∈ N, r • n = 0
n : M
hn : n ∈ N
⊢ -(r - 1) • n = n
state_after: no goals
Theorem: Nat.multichoose_eq
File: Mathlib/Data/Nat/Choose/Basic.lean

tactic: simp
state_before: x✝ : ℕ
⊢ x✝.multichoose 0 = (x✝ + 0 - 1).choose 0
state_after: no goals

tactic: simp
state_before: k : ℕ
⊢ multichoose 0 (k + 1) = (0 + (k + 1) - 1).choose (k + 1)
state_after: no goals

tactic: have : n + (k + 1) < (n + 1) + (k + 1) := Nat.add_lt_add_right (Nat.lt_succ_self _) _
state_before: n k : ℕ
⊢ (n + 1).multichoose (k + 1) = (n + 1 + (k + 1) - 1).choose (k + 1)
state_after: n k : ℕ
this : n + (k + 1) < n + 1 + (k + 1)
⊢ (n + 1).multichoose (k + 1) = (n + 1 + (k + 1) - 1).choose (k + 1)

tactic: have : (n + 1) + k < (n + 1) + (k + 1) := Nat.add_lt_add_left (Nat.lt_succ_self _) _
state_before: n k : ℕ
this : n + (k + 1) < n + 1 + (k + 1)
⊢ (n + 1).multichoose (k + 1) = (n + 1 + (k + 1) - 1).choose (k + 1)
state_after: n k : ℕ
this✝ : n + (k + 1) < n + 1 + (k + 1)
this : n + 1 + k < n + 1 + (k + 1)
⊢ (n + 1).multichoose (k + 1) = (n + 1 + (k + 1) - 1).choose (k + 1)

tactic: erw [multichoose_succ_succ, Nat.add_comm, Nat.succ_add_sub_one, ← Nat.add_assoc,
  Nat.choose_succ_succ]
state_before: n k : ℕ
this✝ : n + (k + 1) < n + 1 + (k + 1)
this : n + 1 + k < n + 1 + (k + 1)
⊢ (n + 1).multichoose (k + 1) = (n + 1 + (k + 1) - 1).choose (k + 1)
state_after: n k : ℕ
this✝ : n + (k + 1) < n + 1 + (k + 1)
this : n + 1 + k < n + 1 + (k + 1)
⊢ (n + 1).multichoose k + n.multichoose (k + 1) = (n + k).choose k + (n + k).choose k.succ

tactic: simp [multichoose_eq n (k+1), multichoose_eq (n+1) k]
state_before: n k : ℕ
this✝ : n + (k + 1) < n + 1 + (k + 1)
this : n + 1 + k < n + 1 + (k + 1)
⊢ (n + 1).multichoose k + n.multichoose (k + 1) = (n + k).choose k + (n + k).choose k.succ
state_after: no goals

tactic: all_goals assumption
state_before: n k : ℕ
x✝ :
  ∀ (y : (_ : ℕ) ×' ℕ),
    (invImage (fun x => PSigma.casesOn x fun n k => n + k) instWellFoundedRelationOfSizeOf).1 y ⟨n.succ, k.succ⟩ →
      y.1.multichoose y.2 = (y.1 + y.2 - 1).choose y.2
this✝ : n + (k + 1) < n + 1 + (k + 1)
this : n + 1 + k < n + 1 + (k + 1)
⊢ (invImage (fun x => PSigma.casesOn x fun n k => n + k) instWellFoundedRelationOfSizeOf).1 ⟨n + 1, k⟩ ⟨n.succ, k.succ⟩

n k : ℕ
x✝ :
  ∀ (y : (_ : ℕ) ×' ℕ),
    (invImage (fun x => PSigma.casesOn x fun n k => n + k) instWellFoundedRelationOfSizeOf).1 y ⟨n.succ, k.succ⟩ →
      y.1.multichoose y.2 = (y.1 + y.2 - 1).choose y.2
this✝ : n + (k + 1) < n + 1 + (k + 1)
this : n + 1 + k < n + 1 + (k + 1)
⊢ (invImage (fun x => PSigma.casesOn x fun n k => n + k) instWellFoundedRelationOfSizeOf).1 ⟨n, k + 1⟩ ⟨n.succ, k.succ⟩
state_after: no goals

tactic: assumption
state_before: n k : ℕ
x✝ :
  ∀ (y : (_ : ℕ) ×' ℕ),
    (invImage (fun x => PSigma.casesOn x fun n k => n + k) instWellFoundedRelationOfSizeOf).1 y ⟨n.succ, k.succ⟩ →
      y.1.multichoose y.2 = (y.1 + y.2 - 1).choose y.2
this✝ : n + (k + 1) < n + 1 + (k + 1)
this : n + 1 + k < n + 1 + (k + 1)
⊢ (invImage (fun x => PSigma.casesOn x fun n k => n + k) instWellFoundedRelationOfSizeOf).1 ⟨n, k + 1⟩ ⟨n.succ, k.succ⟩
state_after: no goals
Theorem: min_self
File: Mathlib/Init/Order/LinearOrder.lean

tactic: simp [min_def]
state_before: α : Type u
inst✝ : LinearOrder α
a : α
⊢ min a a = a
state_after: no goals
Theorem: Equiv.Perm.isCycle_swap
File: Mathlib/GroupTheory/Perm/Cycle/Basic.lean

tactic: rwa [swap_apply_right]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
x y : α
inst✝ : DecidableEq α
hxy : x ≠ y
⊢ (swap x y) y ≠ y
state_after: no goals

tactic: rw [zpow_one, swap_apply_def]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
x y : α
inst✝ : DecidableEq α
hxy : x ≠ y
a : α
ha : (if a = x then y else if a = y then x else a) ≠ a
hya : ¬y = a
⊢ (swap x y ^ 1) y = a
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
x y : α
inst✝ : DecidableEq α
hxy : x ≠ y
a : α
ha : (if a = x then y else if a = y then x else a) ≠ a
hya : ¬y = a
⊢ (if y = x then y else if y = y then x else y) = a

tactic: split_ifs at * <;> tauto
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
x y : α
inst✝ : DecidableEq α
hxy : x ≠ y
a : α
ha : (if a = x then y else if a = y then x else a) ≠ a
hya : ¬y = a
⊢ (if y = x then y else if y = y then x else y) = a
state_after: no goals
Theorem: BoundedContinuousFunction.lintegral_nnnorm_le
File: Mathlib/MeasureTheory/Integral/BoundedContinuousFunction.lean

tactic: calc  ∫⁻ x, ‖f x‖₊ ∂μ
  _ ≤ ∫⁻ _, ‖f‖₊ ∂μ         := by gcongr; apply nnnorm_coe_le_nnnorm
  _ = ‖f‖₊ * (μ Set.univ)   := by rw [lintegral_const]
state_before: X : Type u_1
inst✝⁶ : MeasurableSpace X
inst✝⁵ : TopologicalSpace X
inst✝⁴ : OpensMeasurableSpace X
μ : Measure X
E : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : SecondCountableTopology E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
f : X →ᵇ E
⊢ ∫⁻ (x : X), ↑‖f x‖₊ ∂μ ≤ ↑‖f‖₊ * μ Set.univ
state_after: no goals

tactic: gcongr
state_before: X : Type u_1
inst✝⁶ : MeasurableSpace X
inst✝⁵ : TopologicalSpace X
inst✝⁴ : OpensMeasurableSpace X
μ : Measure X
E : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : SecondCountableTopology E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
f : X →ᵇ E
⊢ ∫⁻ (x : X), ↑‖f x‖₊ ∂μ ≤ ∫⁻ (x : X), ↑‖f‖₊ ∂μ
state_after: case hfg.a
X : Type u_1
inst✝⁶ : MeasurableSpace X
inst✝⁵ : TopologicalSpace X
inst✝⁴ : OpensMeasurableSpace X
μ : Measure X
E : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : SecondCountableTopology E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
f : X →ᵇ E
x✝ : X
⊢ ‖f x✝‖₊ ≤ ‖f‖₊

tactic: apply nnnorm_coe_le_nnnorm
state_before: case hfg.a
X : Type u_1
inst✝⁶ : MeasurableSpace X
inst✝⁵ : TopologicalSpace X
inst✝⁴ : OpensMeasurableSpace X
μ : Measure X
E : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : SecondCountableTopology E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
f : X →ᵇ E
x✝ : X
⊢ ‖f x✝‖₊ ≤ ‖f‖₊
state_after: no goals

tactic: rw [lintegral_const]
state_before: X : Type u_1
inst✝⁶ : MeasurableSpace X
inst✝⁵ : TopologicalSpace X
inst✝⁴ : OpensMeasurableSpace X
μ : Measure X
E : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : SecondCountableTopology E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
f : X →ᵇ E
⊢ ∫⁻ (x : X), ↑‖f‖₊ ∂μ = ↑‖f‖₊ * μ Set.univ
state_after: no goals
Theorem: MulAction.IsBlock.subgroup
File: Mathlib/GroupTheory/GroupAction/Blocks.lean

tactic: rw [IsBlock.def_one]
state_before: G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
H : Subgroup G
B : Set X
hfB : IsBlock G B
⊢ IsBlock (↥H) B
state_after: G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
H : Subgroup G
B : Set X
hfB : IsBlock G B
⊢ ∀ (g : ↥H), g • B = B ∨ Disjoint (g • B) B

tactic: rintro ⟨g, _⟩
state_before: G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
H : Subgroup G
B : Set X
hfB : IsBlock G B
⊢ ∀ (g : ↥H), g • B = B ∨ Disjoint (g • B) B
state_after: case mk
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
H : Subgroup G
B : Set X
hfB : IsBlock G B
g : G
property✝ : g ∈ H
⊢ ⟨g, property✝⟩ • B = B ∨ Disjoint (⟨g, property✝⟩ • B) B

tactic: simpa only using hfB.smul_eq_or_disjoint g
state_before: case mk
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
H : Subgroup G
B : Set X
hfB : IsBlock G B
g : G
property✝ : g ∈ H
⊢ ⟨g, property✝⟩ • B = B ∨ Disjoint (⟨g, property✝⟩ • B) B
state_after: no goals
Theorem: Ordinal.one_opow
File: Mathlib/SetTheory/Ordinal/Exponential.lean

tactic: induction a using limitRecOn with
| H₁ => simp only [opow_zero]
| H₂ _ ih =>
  simp only [opow_succ, ih, mul_one]
| H₃ b l IH =>
  refine eq_of_forall_ge_iff fun c => ?_
  rw [opow_le_of_limit Ordinal.one_ne_zero l]
  exact ⟨fun H => by simpa only [opow_zero] using H 0 l.pos, fun H b' h => by rwa [IH _ h]⟩
state_before: a : Ordinal.{u_1}
⊢ 1 ^ a = 1
state_after: no goals

tactic: simp only [opow_zero]
state_before: case H₁

⊢ 1 ^ 0 = 1
state_after: no goals

tactic: simp only [opow_succ, ih, mul_one]
state_before: case H₂
o✝ : Ordinal.{u_1}
ih : 1 ^ o✝ = 1
⊢ 1 ^ succ o✝ = 1
state_after: no goals

tactic: refine eq_of_forall_ge_iff fun c => ?_
state_before: case H₃
b : Ordinal.{u_1}
l : b.IsLimit
IH : ∀ o' < b, 1 ^ o' = 1
⊢ 1 ^ b = 1
state_after: case H₃
b : Ordinal.{u_1}
l : b.IsLimit
IH : ∀ o' < b, 1 ^ o' = 1
c : Ordinal.{u_1}
⊢ 1 ^ b ≤ c ↔ 1 ≤ c

tactic: rw [opow_le_of_limit Ordinal.one_ne_zero l]
state_before: case H₃
b : Ordinal.{u_1}
l : b.IsLimit
IH : ∀ o' < b, 1 ^ o' = 1
c : Ordinal.{u_1}
⊢ 1 ^ b ≤ c ↔ 1 ≤ c
state_after: case H₃
b : Ordinal.{u_1}
l : b.IsLimit
IH : ∀ o' < b, 1 ^ o' = 1
c : Ordinal.{u_1}
⊢ (∀ b' < b, 1 ^ b' ≤ c) ↔ 1 ≤ c

tactic: exact ⟨fun H => by simpa only [opow_zero] using H 0 l.pos, fun H b' h => by rwa [IH _ h]⟩
state_before: case H₃
b : Ordinal.{u_1}
l : b.IsLimit
IH : ∀ o' < b, 1 ^ o' = 1
c : Ordinal.{u_1}
⊢ (∀ b' < b, 1 ^ b' ≤ c) ↔ 1 ≤ c
state_after: no goals

tactic: simpa only [opow_zero] using H 0 l.pos
state_before: b : Ordinal.{u_1}
l : b.IsLimit
IH : ∀ o' < b, 1 ^ o' = 1
c : Ordinal.{u_1}
H : ∀ b' < b, 1 ^ b' ≤ c
⊢ 1 ≤ c
state_after: no goals

tactic: rwa [IH _ h]
state_before: b : Ordinal.{u_1}
l : b.IsLimit
IH : ∀ o' < b, 1 ^ o' = 1
c : Ordinal.{u_1}
H : 1 ≤ c
b' : Ordinal.{u_1}
h : b' < b
⊢ 1 ^ b' ≤ c
state_after: no goals
Theorem: String.utf8Len_reverseAux
File: .lake/packages/batteries/Batteries/Data/String/Lemmas.lean

tactic: induction cs₁ generalizing cs₂ <;> simp [*, ← Nat.add_assoc, Nat.add_right_comm]
state_before: cs₁ cs₂ : List Char
⊢ utf8Len (cs₁.reverseAux cs₂) = utf8Len cs₁ + utf8Len cs₂
state_after: no goals
Theorem: Order.Ico_succ_right_eq_insert_of_not_isMax
File: Mathlib/Order/SuccPred/Basic.lean

tactic: simp_rw [← Iio_inter_Ici, Iio_succ_eq_insert_of_not_isMax h₂, insert_inter_of_mem (mem_Ici.2 h₁)]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : SuccOrder α
a b : α
h₁ : a ≤ b
h₂ : ¬IsMax b
⊢ Ico a (succ b) = insert b (Ico a b)
state_after: no goals
Theorem: ContinuousLinearMap.norm_iteratedFDeriv_le_of_bilinear
File: Mathlib/Analysis/Calculus/ContDiff/Bounds.lean

tactic: simp_rw [← iteratedFDerivWithin_univ]
state_before: 𝕜 : Type u_1
inst✝⁸ : NontriviallyNormedField 𝕜
D : Type uD
inst✝⁷ : NormedAddCommGroup D
inst✝⁶ : NormedSpace 𝕜 D
E : Type uE
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
F : Type uF
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
G : Type uG
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
s s₁ t u : Set E
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
hf : ContDiff 𝕜 N f
hg : ContDiff 𝕜 N g
x : D
n : ℕ
hn : ↑n ≤ N
⊢ ‖iteratedFDeriv 𝕜 n (fun y => (B (f y)) (g y)) x‖ ≤
    ‖B‖ * ∑ i ∈ Finset.range (n + 1), ↑(n.choose i) * ‖iteratedFDeriv 𝕜 i f x‖ * ‖iteratedFDeriv 𝕜 (n - i) g x‖
state_after: 𝕜 : Type u_1
inst✝⁸ : NontriviallyNormedField 𝕜
D : Type uD
inst✝⁷ : NormedAddCommGroup D
inst✝⁶ : NormedSpace 𝕜 D
E : Type uE
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
F : Type uF
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
G : Type uG
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
s s₁ t u : Set E
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
hf : ContDiff 𝕜 N f
hg : ContDiff 𝕜 N g
x : D
n : ℕ
hn : ↑n ≤ N
⊢ ‖iteratedFDerivWithin 𝕜 n (fun y => (B (f y)) (g y)) univ x‖ ≤
    ‖B‖ *
      ∑ x_1 ∈ Finset.range (n + 1),
        ↑(n.choose x_1) * ‖iteratedFDerivWithin 𝕜 x_1 f univ x‖ * ‖iteratedFDerivWithin 𝕜 (n - x_1) g univ x‖

tactic: exact B.norm_iteratedFDerivWithin_le_of_bilinear hf.contDiffOn hg.contDiffOn uniqueDiffOn_univ
  (mem_univ x) hn
state_before: 𝕜 : Type u_1
inst✝⁸ : NontriviallyNormedField 𝕜
D : Type uD
inst✝⁷ : NormedAddCommGroup D
inst✝⁶ : NormedSpace 𝕜 D
E : Type uE
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
F : Type uF
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
G : Type uG
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
s s₁ t u : Set E
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
hf : ContDiff 𝕜 N f
hg : ContDiff 𝕜 N g
x : D
n : ℕ
hn : ↑n ≤ N
⊢ ‖iteratedFDerivWithin 𝕜 n (fun y => (B (f y)) (g y)) univ x‖ ≤
    ‖B‖ *
      ∑ x_1 ∈ Finset.range (n + 1),
        ↑(n.choose x_1) * ‖iteratedFDerivWithin 𝕜 x_1 f univ x‖ * ‖iteratedFDerivWithin 𝕜 (n - x_1) g univ x‖
state_after: no goals
Theorem: CategoryTheory.ShortComplex.SnakeInput.op_δ
File: Mathlib/Algebra/Homology/ShortComplex/SnakeLemma.lean

tactic: rw [Quiver.Hom.unop_op, ← cancel_mono (pushout.inr : _ ⟶ S.P'),
  ← cancel_epi (pullback.snd : S.P ⟶ _), S.snd_δ_inr,
  ← cancel_mono S.P'IsoUnopOpP.hom, ← cancel_epi S.PIsoUnopOpP'.inv,
  P'IsoUnopOpP, PIsoUnopOpP', assoc, assoc, assoc, assoc,
  pushoutIsoUnopPullback_inr_hom, pullbackIsoUnopPushout_inv_snd_assoc,
  pushoutIsoUnopPullback_inl_hom, pullbackIsoUnopPushout_inv_fst_assoc]
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Abelian C
S : SnakeInput C
⊢ S.op.δ.unop = S.δ.op.unop
state_after: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Abelian C
S : SnakeInput C
⊢ pushout.inr.unop ≫ S.op.δ.unop ≫ pullback.snd.unop = pushout.inl.unop ≫ S.v₁₂.τ₂ ≫ pullback.fst.unop

tactic: apply Quiver.Hom.op_inj
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Abelian C
S : SnakeInput C
⊢ pushout.inr.unop ≫ S.op.δ.unop ≫ pullback.snd.unop = pushout.inl.unop ≫ S.v₁₂.τ₂ ≫ pullback.fst.unop
state_after: case a
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Abelian C
S : SnakeInput C
⊢ (pushout.inr.unop ≫ S.op.δ.unop ≫ pullback.snd.unop).op = (pushout.inl.unop ≫ S.v₁₂.τ₂ ≫ pullback.fst.unop).op

tactic: simpa only [op_comp, Quiver.Hom.op_unop, assoc] using S.op.snd_δ_inr
state_before: case a
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Abelian C
S : SnakeInput C
⊢ (pushout.inr.unop ≫ S.op.δ.unop ≫ pullback.snd.unop).op = (pushout.inl.unop ≫ S.v₁₂.τ₂ ≫ pullback.fst.unop).op
state_after: no goals
Theorem: WithLp.prod_norm_sq_eq_of_L2
File: Mathlib/Analysis/NormedSpace/ProdLp.lean

tactic: suffices ‖x‖₊ ^ 2 = ‖x.fst‖₊ ^ 2 + ‖x.snd‖₊ ^ 2 by
  simpa only [NNReal.coe_sum] using congr_arg ((↑) : ℝ≥0 → ℝ) this
state_before: p : ℝ≥0∞
𝕜 : Type u_1
α : Type u_2
β : Type u_3
hp : Fact (1 ≤ p)
inst✝¹ : SeminormedAddCommGroup α
inst✝ : SeminormedAddCommGroup β
x : WithLp 2 (α × β)
⊢ ‖x‖ ^ 2 = ‖x.1‖ ^ 2 + ‖x.2‖ ^ 2
state_after: p : ℝ≥0∞
𝕜 : Type u_1
α : Type u_2
β : Type u_3
hp : Fact (1 ≤ p)
inst✝¹ : SeminormedAddCommGroup α
inst✝ : SeminormedAddCommGroup β
x : WithLp 2 (α × β)
⊢ ‖x‖₊ ^ 2 = ‖x.1‖₊ ^ 2 + ‖x.2‖₊ ^ 2

tactic: rw [prod_nnnorm_eq_of_L2, NNReal.sq_sqrt]
state_before: p : ℝ≥0∞
𝕜 : Type u_1
α : Type u_2
β : Type u_3
hp : Fact (1 ≤ p)
inst✝¹ : SeminormedAddCommGroup α
inst✝ : SeminormedAddCommGroup β
x : WithLp 2 (α × β)
⊢ ‖x‖₊ ^ 2 = ‖x.1‖₊ ^ 2 + ‖x.2‖₊ ^ 2
state_after: no goals

tactic: simpa only [NNReal.coe_sum] using congr_arg ((↑) : ℝ≥0 → ℝ) this
state_before: p : ℝ≥0∞
𝕜 : Type u_1
α : Type u_2
β : Type u_3
hp : Fact (1 ≤ p)
inst✝¹ : SeminormedAddCommGroup α
inst✝ : SeminormedAddCommGroup β
x : WithLp 2 (α × β)
this : ‖x‖₊ ^ 2 = ‖x.1‖₊ ^ 2 + ‖x.2‖₊ ^ 2
⊢ ‖x‖ ^ 2 = ‖x.1‖ ^ 2 + ‖x.2‖ ^ 2
state_after: no goals
Theorem: NonUnitalAlgHom.ext_iff
File: Mathlib/Algebra/Algebra/NonUnitalHom.lean

tactic: rintro rfl x
state_before: R : Type u
S : Type u₁
T : Type u_1
inst✝⁸ : Monoid R
inst✝⁷ : Monoid S
inst✝⁶ : Monoid T
φ : R →* S
A : Type v
B : Type w
C : Type w₁
inst✝⁵ : NonUnitalNonAssocSemiring A
inst✝⁴ : DistribMulAction R A
inst✝³ : NonUnitalNonAssocSemiring B
inst✝² : DistribMulAction S B
inst✝¹ : NonUnitalNonAssocSemiring C
inst✝ : DistribMulAction T C
f g : A →ₛₙₐ[φ] B
⊢ f = g → ∀ (x : A), f x = g x
state_after: R : Type u
S : Type u₁
T : Type u_1
inst✝⁸ : Monoid R
inst✝⁷ : Monoid S
inst✝⁶ : Monoid T
φ : R →* S
A : Type v
B : Type w
C : Type w₁
inst✝⁵ : NonUnitalNonAssocSemiring A
inst✝⁴ : DistribMulAction R A
inst✝³ : NonUnitalNonAssocSemiring B
inst✝² : DistribMulAction S B
inst✝¹ : NonUnitalNonAssocSemiring C
inst✝ : DistribMulAction T C
f : A →ₛₙₐ[φ] B
x : A
⊢ f x = f x

tactic: rfl
state_before: R : Type u
S : Type u₁
T : Type u_1
inst✝⁸ : Monoid R
inst✝⁷ : Monoid S
inst✝⁶ : Monoid T
φ : R →* S
A : Type v
B : Type w
C : Type w₁
inst✝⁵ : NonUnitalNonAssocSemiring A
inst✝⁴ : DistribMulAction R A
inst✝³ : NonUnitalNonAssocSemiring B
inst✝² : DistribMulAction S B
inst✝¹ : NonUnitalNonAssocSemiring C
inst✝ : DistribMulAction T C
f : A →ₛₙₐ[φ] B
x : A
⊢ f x = f x
state_after: no goals