1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: EventuallyMeasurableSet.congr
File: Mathlib/MeasureTheory/Constructions/EventuallyMeasurable.lean

tactic: rcases ht with ⟨t', ht', htt'⟩
state_before: α : Type u_1
m : MeasurableSpace α
l : Filter α
inst✝ : CountableInterFilter l
s t : Set α
ht : EventuallyMeasurableSet m l t
hst : s =ᶠ[l] t
⊢ EventuallyMeasurableSet m l s
state_after: case intro.intro
α : Type u_1
m : MeasurableSpace α
l : Filter α
inst✝ : CountableInterFilter l
s t : Set α
hst : s =ᶠ[l] t
t' : Set α
ht' : MeasurableSet t'
htt' : t =ᶠ[l] t'
⊢ EventuallyMeasurableSet m l s

tactic: exact ⟨t', ht', hst.trans htt'⟩
state_before: case intro.intro
α : Type u_1
m : MeasurableSpace α
l : Filter α
inst✝ : CountableInterFilter l
s t : Set α
hst : s =ᶠ[l] t
t' : Set α
ht' : MeasurableSet t'
htt' : t =ᶠ[l] t'
⊢ EventuallyMeasurableSet m l s
state_after: no goals
Theorem: Nat.lt_two_pow
File: Mathlib/Data/Nat/Defs.lean

tactic: decide
state_before: a b c d m n✝ k : ℕ
p q : ℕ → Prop
n : ℕ
⊢ 1 < 2
state_after: no goals
Theorem: multiplicity.Nat.pow_add_pow
File: Mathlib/NumberTheory/Multiplicity.lean

tactic: iterate 2 rw [← Int.natCast_multiplicity]
state_before: R : Type u_1
n✝ : ℕ
inst✝ : CommRing R
a b x✝ y✝ : R
p : ℕ
hp : Nat.Prime p
hp1 : Odd p
x y : ℕ
hxy : p ∣ x + y
hx : ¬p ∣ x
n : ℕ
hn : Odd n
⊢ multiplicity p (x ^ n + y ^ n) = multiplicity p (x + y) + multiplicity p n
state_after: R : Type u_1
n✝ : ℕ
inst✝ : CommRing R
a b x✝ y✝ : R
p : ℕ
hp : Nat.Prime p
hp1 : Odd p
x y : ℕ
hxy : p ∣ x + y
hx : ¬p ∣ x
n : ℕ
hn : Odd n
⊢ multiplicity ↑p ↑(x ^ n + y ^ n) = multiplicity ↑p ↑(x + y) + multiplicity p n

tactic: rw [← Int.natCast_dvd_natCast] at hxy hx
state_before: R : Type u_1
n✝ : ℕ
inst✝ : CommRing R
a b x✝ y✝ : R
p : ℕ
hp : Nat.Prime p
hp1 : Odd p
x y : ℕ
hxy : p ∣ x + y
hx : ¬p ∣ x
n : ℕ
hn : Odd n
⊢ multiplicity ↑p ↑(x ^ n + y ^ n) = multiplicity ↑p ↑(x + y) + multiplicity p n
state_after: R : Type u_1
n✝ : ℕ
inst✝ : CommRing R
a b x✝ y✝ : R
p : ℕ
hp : Nat.Prime p
hp1 : Odd p
x y : ℕ
hxy : ↑p ∣ ↑(x + y)
hx : ¬↑p ∣ ↑x
n : ℕ
hn : Odd n
⊢ multiplicity ↑p ↑(x ^ n + y ^ n) = multiplicity ↑p ↑(x + y) + multiplicity p n

tactic: push_cast at *
state_before: R : Type u_1
n✝ : ℕ
inst✝ : CommRing R
a b x✝ y✝ : R
p : ℕ
hp : Nat.Prime p
hp1 : Odd p
x y : ℕ
hxy : ↑p ∣ ↑(x + y)
hx : ¬↑p ∣ ↑x
n : ℕ
hn : Odd n
⊢ multiplicity ↑p ↑(x ^ n + y ^ n) = multiplicity ↑p ↑(x + y) + multiplicity p n
state_after: R : Type u_1
n✝ : ℕ
inst✝ : CommRing R
a b x✝ y✝ : R
p : ℕ
hp : Nat.Prime p
hp1 : Odd p
x y : ℕ
hx : ¬↑p ∣ ↑x
n : ℕ
hn : Odd n
hxy : ↑p ∣ ↑x + ↑y
⊢ multiplicity (↑p) (↑x ^ n + ↑y ^ n) = multiplicity (↑p) (↑x + ↑y) + multiplicity p n

tactic: exact Int.pow_add_pow hp hp1 hxy hx hn
state_before: R : Type u_1
n✝ : ℕ
inst✝ : CommRing R
a b x✝ y✝ : R
p : ℕ
hp : Nat.Prime p
hp1 : Odd p
x y : ℕ
hx : ¬↑p ∣ ↑x
n : ℕ
hn : Odd n
hxy : ↑p ∣ ↑x + ↑y
⊢ multiplicity (↑p) (↑x ^ n + ↑y ^ n) = multiplicity (↑p) (↑x + ↑y) + multiplicity p n
state_after: no goals

tactic: rw [← Int.natCast_multiplicity]
state_before: R : Type u_1
n✝ : ℕ
inst✝ : CommRing R
a b x✝ y✝ : R
p : ℕ
hp : Nat.Prime p
hp1 : Odd p
x y : ℕ
hxy : p ∣ x + y
hx : ¬p ∣ x
n : ℕ
hn : Odd n
⊢ multiplicity ↑p ↑(x ^ n + y ^ n) = multiplicity p (x + y) + multiplicity p n
state_after: R : Type u_1
n✝ : ℕ
inst✝ : CommRing R
a b x✝ y✝ : R
p : ℕ
hp : Nat.Prime p
hp1 : Odd p
x y : ℕ
hxy : p ∣ x + y
hx : ¬p ∣ x
n : ℕ
hn : Odd n
⊢ multiplicity ↑p ↑(x ^ n + y ^ n) = multiplicity ↑p ↑(x + y) + multiplicity p n
Theorem: ContinuousMultilinearMap.norm_mkPiRing
File: Mathlib/Analysis/NormedSpace/Multilinear/Basic.lean

tactic: rw [ContinuousMultilinearMap.mkPiRing, norm_smulRight, norm_mkPiAlgebra, one_mul]
state_before: 𝕜 : Type u
ι : Type v
ι' : Type v'
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
G : Type wG
G' : Type wG'
inst✝¹² : Fintype ι
inst✝¹¹ : Fintype ι'
inst✝¹⁰ : NontriviallyNormedField 𝕜
inst✝⁹ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁷ : (i : ι) → SeminormedAddCommGroup (E₁ i)
inst✝⁶ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁵ : (i : ι') → SeminormedAddCommGroup (E' i)
inst✝⁴ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝³ : SeminormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : SeminormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
z : G
⊢ ‖ContinuousMultilinearMap.mkPiRing 𝕜 ι z‖ = ‖z‖
state_after: no goals
Theorem: existsUnique_add_zsmul_mem_Ico
File: Mathlib/Algebra/Order/Archimedean.lean

tactic: simpa only [Equiv.neg_apply, mem_Ico, neg_zsmul, ← sub_eq_add_neg, le_sub_iff_add_le, zero_add,
  add_comm c, sub_lt_iff_lt_add', add_assoc] using existsUnique_zsmul_near_of_pos' ha (b - c)
state_before: α : Type u_1
M : Type u_2
inst✝¹ : LinearOrderedAddCommGroup α
inst✝ : Archimedean α
a : α
ha : 0 < a
b c : α
⊢ ∃! x, b + (Equiv.neg ℤ) x • a ∈ Ico c (c + a)
state_after: no goals
Theorem: Nat.image_fst_divisorsAntidiagonal
File: Mathlib/NumberTheory/Divisors.lean

tactic: ext
state_before: n : ℕ
⊢ image Prod.fst n.divisorsAntidiagonal = n.divisors
state_after: case a
n a✝ : ℕ
⊢ a✝ ∈ image Prod.fst n.divisorsAntidiagonal ↔ a✝ ∈ n.divisors

tactic: simp [Dvd.dvd, @eq_comm _ n (_ * _)]
state_before: case a
n a✝ : ℕ
⊢ a✝ ∈ image Prod.fst n.divisorsAntidiagonal ↔ a✝ ∈ n.divisors
state_after: no goals
Theorem: CategoryTheory.Limits.cospanExt_inv_app_left
File: Mathlib/CategoryTheory/Limits/Shapes/Pullbacks.lean

tactic: dsimp [cospanExt]
state_before: C : Type u
inst✝¹ : Category.{v, u} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
X Y Z X' Y' Z' : C
iX : X ≅ X'
iY : Y ≅ Y'
iZ : Z ≅ Z'
f : X ⟶ Z
g : Y ⟶ Z
f' : X' ⟶ Z'
g' : Y' ⟶ Z'
wf : iX.hom ≫ f' = f ≫ iZ.hom
wg : iY.hom ≫ g' = g ≫ iZ.hom
⊢ (cospanExt iX iY iZ wf wg).inv.app WalkingCospan.left = iX.inv
state_after: no goals
Theorem: div_le_egauge_closedBall
File: Mathlib/Analysis/Convex/EGauge.lean

tactic: rw [le_egauge_iff]
state_before: 𝕜 : Type u_1
inst✝² : NormedField 𝕜
α : Type u_2
E : Type u_3
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
c : 𝕜
s t : Set E
x✝ y : E
r : ℝ≥0
x : E
⊢ ↑‖x‖₊ / ↑r ≤ egauge 𝕜 (closedBall 0 ↑r) x
state_after: 𝕜 : Type u_1
inst✝² : NormedField 𝕜
α : Type u_2
E : Type u_3
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
c : 𝕜
s t : Set E
x✝ y : E
r : ℝ≥0
x : E
⊢ ∀ (c : 𝕜), x ∈ c • closedBall 0 ↑r → ↑‖x‖₊ / ↑r ≤ ↑‖c‖₊

tactic: rintro c ⟨y, hy, rfl⟩
state_before: 𝕜 : Type u_1
inst✝² : NormedField 𝕜
α : Type u_2
E : Type u_3
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
c : 𝕜
s t : Set E
x✝ y : E
r : ℝ≥0
x : E
⊢ ∀ (c : 𝕜), x ∈ c • closedBall 0 ↑r → ↑‖x‖₊ / ↑r ≤ ↑‖c‖₊
state_after: case intro.intro
𝕜 : Type u_1
inst✝² : NormedField 𝕜
α : Type u_2
E : Type u_3
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
c✝ : 𝕜
s t : Set E
x y✝ : E
r : ℝ≥0
c : 𝕜
y : E
hy : y ∈ closedBall 0 ↑r
⊢ ↑‖(fun x => c • x) y‖₊ / ↑r ≤ ↑‖c‖₊

tactic: rw [mem_closedBall_zero_iff, ← coe_nnnorm, NNReal.coe_le_coe] at hy
state_before: case intro.intro
𝕜 : Type u_1
inst✝² : NormedField 𝕜
α : Type u_2
E : Type u_3
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
c✝ : 𝕜
s t : Set E
x y✝ : E
r : ℝ≥0
c : 𝕜
y : E
hy : y ∈ closedBall 0 ↑r
⊢ ↑‖(fun x => c • x) y‖₊ / ↑r ≤ ↑‖c‖₊
state_after: case intro.intro
𝕜 : Type u_1
inst✝² : NormedField 𝕜
α : Type u_2
E : Type u_3
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
c✝ : 𝕜
s t : Set E
x y✝ : E
r : ℝ≥0
c : 𝕜
y : E
hy : ‖y‖₊ ≤ r
⊢ ↑‖(fun x => c • x) y‖₊ / ↑r ≤ ↑‖c‖₊

tactic: simp only [nnnorm_smul, ENNReal.coe_mul]
state_before: case intro.intro
𝕜 : Type u_1
inst✝² : NormedField 𝕜
α : Type u_2
E : Type u_3
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
c✝ : 𝕜
s t : Set E
x y✝ : E
r : ℝ≥0
c : 𝕜
y : E
hy : ‖y‖₊ ≤ r
⊢ ↑‖(fun x => c • x) y‖₊ / ↑r ≤ ↑‖c‖₊
state_after: case intro.intro
𝕜 : Type u_1
inst✝² : NormedField 𝕜
α : Type u_2
E : Type u_3
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
c✝ : 𝕜
s t : Set E
x y✝ : E
r : ℝ≥0
c : 𝕜
y : E
hy : ‖y‖₊ ≤ r
⊢ ↑‖c‖₊ * ↑‖y‖₊ / ↑r ≤ ↑‖c‖₊

tactic: apply ENNReal.div_le_of_le_mul
state_before: case intro.intro
𝕜 : Type u_1
inst✝² : NormedField 𝕜
α : Type u_2
E : Type u_3
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
c✝ : 𝕜
s t : Set E
x y✝ : E
r : ℝ≥0
c : 𝕜
y : E
hy : ‖y‖₊ ≤ r
⊢ ↑‖c‖₊ * ↑‖y‖₊ / ↑r ≤ ↑‖c‖₊
state_after: case intro.intro.h
𝕜 : Type u_1
inst✝² : NormedField 𝕜
α : Type u_2
E : Type u_3
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
c✝ : 𝕜
s t : Set E
x y✝ : E
r : ℝ≥0
c : 𝕜
y : E
hy : ‖y‖₊ ≤ r
⊢ ↑‖c‖₊ * ↑‖y‖₊ ≤ ↑‖c‖₊ * ↑r

tactic: gcongr
state_before: case intro.intro.h
𝕜 : Type u_1
inst✝² : NormedField 𝕜
α : Type u_2
E : Type u_3
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
c✝ : 𝕜
s t : Set E
x y✝ : E
r : ℝ≥0
c : 𝕜
y : E
hy : ‖y‖₊ ≤ r
⊢ ↑‖c‖₊ * ↑‖y‖₊ ≤ ↑‖c‖₊ * ↑r
state_after: no goals
Theorem: Real.fourierIntegral_fderiv
File: Mathlib/Analysis/Fourier/FourierTransformDeriv.lean

tactic: rw [← innerSL_real_flip V]
state_before: E : Type u_1
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℂ E
V : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : FiniteDimensional ℝ V
inst✝¹ : MeasurableSpace V
inst✝ : BorelSpace V
f : V → E
hf : Integrable f volume
h'f : Differentiable ℝ f
hf' : Integrable (fderiv ℝ f) volume
⊢ 𝓕 (fderiv ℝ f) = fourierSMulRight (-innerSL ℝ) (𝓕 f)
state_after: E : Type u_1
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℂ E
V : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : FiniteDimensional ℝ V
inst✝¹ : MeasurableSpace V
inst✝ : BorelSpace V
f : V → E
hf : Integrable f volume
h'f : Differentiable ℝ f
hf' : Integrable (fderiv ℝ f) volume
⊢ 𝓕 (fderiv ℝ f) = fourierSMulRight (-(innerSL ℝ).flip) (𝓕 f)

tactic: exact VectorFourier.fourierIntegral_fderiv (innerSL ℝ) hf h'f hf'
state_before: E : Type u_1
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℂ E
V : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : FiniteDimensional ℝ V
inst✝¹ : MeasurableSpace V
inst✝ : BorelSpace V
f : V → E
hf : Integrable f volume
h'f : Differentiable ℝ f
hf' : Integrable (fderiv ℝ f) volume
⊢ 𝓕 (fderiv ℝ f) = fourierSMulRight (-(innerSL ℝ).flip) (𝓕 f)
state_after: no goals
Theorem: UnionFind.parent_lt
File: Mathlib/Data/UnionFind.lean

tactic: let ⟨m, hm⟩ := self.model'
state_before: α : Type u_1
self : UnionFind α
i : ℕ
h : i < self.arr.size
⊢ self.arr[i].parent < self.size
state_after: α : Type u_1
self : UnionFind α
i : ℕ
h : i < self.arr.size
m : UFModel self.arr.size
hm : UFModel.Models self.arr m
⊢ self.arr[i].parent < self.size

tactic: simp [hm.parent_eq, size, (m.parent ⟨i, h⟩).2, h]
state_before: α : Type u_1
self : UnionFind α
i : ℕ
h : i < self.arr.size
m : UFModel self.arr.size
hm : UFModel.Models self.arr m
⊢ self.arr[i].parent < self.size
state_after: no goals
Theorem: StrictMono.minimal_preimage_bot
File: Mathlib/Order/BoundedOrder.lean

tactic: rw [h_bot]
state_before: α : Type u
β : Type v
γ : Type u_1
δ : Type u_2
inst✝² : LinearOrder α
inst✝¹ : PartialOrder β
inst✝ : OrderBot β
f : α → β
H : StrictMono f
a : α
h_bot : f a = ⊥
x : α
p : β
⊢ f a ≤ p
state_after: α : Type u
β : Type v
γ : Type u_1
δ : Type u_2
inst✝² : LinearOrder α
inst✝¹ : PartialOrder β
inst✝ : OrderBot β
f : α → β
H : StrictMono f
a : α
h_bot : f a = ⊥
x : α
p : β
⊢ ⊥ ≤ p

tactic: exact bot_le
state_before: α : Type u
β : Type v
γ : Type u_1
δ : Type u_2
inst✝² : LinearOrder α
inst✝¹ : PartialOrder β
inst✝ : OrderBot β
f : α → β
H : StrictMono f
a : α
h_bot : f a = ⊥
x : α
p : β
⊢ ⊥ ≤ p
state_after: no goals
Theorem: inner_re_zero_right
File: Mathlib/Analysis/InnerProductSpace/Basic.lean

tactic: simp only [inner_zero_right, AddMonoidHom.map_zero]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
x : E
⊢ re ⟪x, 0⟫_𝕜 = 0
state_after: no goals
Theorem: CategoryTheory.Quotient.CompClosure.of
File: Mathlib/CategoryTheory/Quotient.lean

tactic: simpa using CompClosure.intro (𝟙 _) m₁ m₂ (𝟙 _) h
state_before: C : Type u_2
inst✝ : Category.{u_1, u_2} C
r : HomRel C
a b : C
m₁ m₂ : a ⟶ b
h : r m₁ m₂
⊢ CompClosure r m₁ m₂
state_after: no goals
Theorem: Cardinal.sum_const'
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: simp
state_before: α β ι : Type u
a : Cardinal.{u}
⊢ (sum fun x => a) = #ι * a
state_after: no goals
Theorem: NNReal.rpow_inv_natCast_pow
File: Mathlib/Analysis/SpecialFunctions/Pow/NNReal.lean

tactic: rw [← NNReal.coe_inj, NNReal.coe_pow, coe_rpow]
state_before: w x✝ y z : ℝ
x : ℝ≥0
n : ℕ
hn : n ≠ 0
⊢ (x ^ (↑n)⁻¹) ^ n = x
state_after: w x✝ y z : ℝ
x : ℝ≥0
n : ℕ
hn : n ≠ 0
⊢ (↑x ^ (↑n)⁻¹) ^ n = ↑x

tactic: exact Real.rpow_inv_natCast_pow x.2 hn
state_before: w x✝ y z : ℝ
x : ℝ≥0
n : ℕ
hn : n ≠ 0
⊢ (↑x ^ (↑n)⁻¹) ^ n = ↑x
state_after: no goals
Theorem: Lagrange.basis_singleton
File: Mathlib/LinearAlgebra/Lagrange.lean

tactic: rw [Lagrange.basis, erase_singleton, prod_empty]
state_before: F : Type u_1
inst✝¹ : Field F
ι : Type u_2
inst✝ : DecidableEq ι
s : Finset ι
v : ι → F
i✝ j i : ι
⊢ Lagrange.basis {i} v i = 1
state_after: no goals
Theorem: SimpleGraph.Walk.toSubgraph_reverse
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: induction p with
| nil => simp
| cons _ _ _ =>
  simp only [*, Walk.toSubgraph, reverse_cons, toSubgraph_append, subgraphOfAdj_symm]
  rw [sup_comm]
  congr
  ext <;> simp [-Set.bot_eq_empty]
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w : V
p : G.Walk u v
⊢ p.reverse.toSubgraph = p.toSubgraph
state_after: no goals

tactic: simp
state_before: case nil
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w u✝ : V
⊢ nil.reverse.toSubgraph = nil.toSubgraph
state_after: no goals

tactic: simp only [*, Walk.toSubgraph, reverse_cons, toSubgraph_append, subgraphOfAdj_symm]
state_before: case cons
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w u✝ v✝ w✝ : V
h✝ : G.Adj u✝ v✝
p✝ : G.Walk v✝ w✝
p_ih✝ : p✝.reverse.toSubgraph = p✝.toSubgraph
⊢ (cons h✝ p✝).reverse.toSubgraph = (cons h✝ p✝).toSubgraph
state_after: case cons
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w u✝ v✝ w✝ : V
h✝ : G.Adj u✝ v✝
p✝ : G.Walk v✝ w✝
p_ih✝ : p✝.reverse.toSubgraph = p✝.toSubgraph
⊢ p✝.toSubgraph ⊔ (G.subgraphOfAdj ⋯ ⊔ G.singletonSubgraph u✝) = G.subgraphOfAdj h✝ ⊔ p✝.toSubgraph

tactic: rw [sup_comm]
state_before: case cons
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w u✝ v✝ w✝ : V
h✝ : G.Adj u✝ v✝
p✝ : G.Walk v✝ w✝
p_ih✝ : p✝.reverse.toSubgraph = p✝.toSubgraph
⊢ p✝.toSubgraph ⊔ (G.subgraphOfAdj ⋯ ⊔ G.singletonSubgraph u✝) = G.subgraphOfAdj h✝ ⊔ p✝.toSubgraph
state_after: case cons
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w u✝ v✝ w✝ : V
h✝ : G.Adj u✝ v✝
p✝ : G.Walk v✝ w✝
p_ih✝ : p✝.reverse.toSubgraph = p✝.toSubgraph
⊢ G.subgraphOfAdj ⋯ ⊔ G.singletonSubgraph u✝ ⊔ p✝.toSubgraph = G.subgraphOfAdj h✝ ⊔ p✝.toSubgraph

tactic: congr
state_before: case cons
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w u✝ v✝ w✝ : V
h✝ : G.Adj u✝ v✝
p✝ : G.Walk v✝ w✝
p_ih✝ : p✝.reverse.toSubgraph = p✝.toSubgraph
⊢ G.subgraphOfAdj ⋯ ⊔ G.singletonSubgraph u✝ ⊔ p✝.toSubgraph = G.subgraphOfAdj h✝ ⊔ p✝.toSubgraph
state_after: case cons.e_a
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w u✝ v✝ w✝ : V
h✝ : G.Adj u✝ v✝
p✝ : G.Walk v✝ w✝
p_ih✝ : p✝.reverse.toSubgraph = p✝.toSubgraph
⊢ G.subgraphOfAdj ⋯ ⊔ G.singletonSubgraph u✝ = G.subgraphOfAdj h✝

tactic: ext <;> simp [-Set.bot_eq_empty]
state_before: case cons.e_a
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w u✝ v✝ w✝ : V
h✝ : G.Adj u✝ v✝
p✝ : G.Walk v✝ w✝
p_ih✝ : p✝.reverse.toSubgraph = p✝.toSubgraph
⊢ G.subgraphOfAdj ⋯ ⊔ G.singletonSubgraph u✝ = G.subgraphOfAdj h✝
state_after: no goals
Theorem: FormalMultilinearSeries.comp_removeZero
File: Mathlib/Analysis/Analytic/Composition.lean

tactic: ext n
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
H : Type u_5
inst✝¹⁵ : CommRing 𝕜
inst✝¹⁴ : AddCommGroup E
inst✝¹³ : AddCommGroup F
inst✝¹² : AddCommGroup G
inst✝¹¹ : Module 𝕜 E
inst✝¹⁰ : Module 𝕜 F
inst✝⁹ : Module 𝕜 G
inst✝⁸ : TopologicalSpace E
inst✝⁷ : TopologicalSpace F
inst✝⁶ : TopologicalSpace G
inst✝⁵ : TopologicalAddGroup E
inst✝⁴ : ContinuousConstSMul 𝕜 E
inst✝³ : TopologicalAddGroup F
inst✝² : ContinuousConstSMul 𝕜 F
inst✝¹ : TopologicalAddGroup G
inst✝ : ContinuousConstSMul 𝕜 G
q : FormalMultilinearSeries 𝕜 F G
p : FormalMultilinearSeries 𝕜 E F
⊢ q.comp p.removeZero = q.comp p
state_after: case h.H
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
H : Type u_5
inst✝¹⁵ : CommRing 𝕜
inst✝¹⁴ : AddCommGroup E
inst✝¹³ : AddCommGroup F
inst✝¹² : AddCommGroup G
inst✝¹¹ : Module 𝕜 E
inst✝¹⁰ : Module 𝕜 F
inst✝⁹ : Module 𝕜 G
inst✝⁸ : TopologicalSpace E
inst✝⁷ : TopologicalSpace F
inst✝⁶ : TopologicalSpace G
inst✝⁵ : TopologicalAddGroup E
inst✝⁴ : ContinuousConstSMul 𝕜 E
inst✝³ : TopologicalAddGroup F
inst✝² : ContinuousConstSMul 𝕜 F
inst✝¹ : TopologicalAddGroup G
inst✝ : ContinuousConstSMul 𝕜 G
q : FormalMultilinearSeries 𝕜 F G
p : FormalMultilinearSeries 𝕜 E F
n : ℕ
x✝ : Fin n → E
⊢ (q.comp p.removeZero n) x✝ = (q.comp p n) x✝

tactic: simp [FormalMultilinearSeries.comp]
state_before: case h.H
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
H : Type u_5
inst✝¹⁵ : CommRing 𝕜
inst✝¹⁴ : AddCommGroup E
inst✝¹³ : AddCommGroup F
inst✝¹² : AddCommGroup G
inst✝¹¹ : Module 𝕜 E
inst✝¹⁰ : Module 𝕜 F
inst✝⁹ : Module 𝕜 G
inst✝⁸ : TopologicalSpace E
inst✝⁷ : TopologicalSpace F
inst✝⁶ : TopologicalSpace G
inst✝⁵ : TopologicalAddGroup E
inst✝⁴ : ContinuousConstSMul 𝕜 E
inst✝³ : TopologicalAddGroup F
inst✝² : ContinuousConstSMul 𝕜 F
inst✝¹ : TopologicalAddGroup G
inst✝ : ContinuousConstSMul 𝕜 G
q : FormalMultilinearSeries 𝕜 F G
p : FormalMultilinearSeries 𝕜 E F
n : ℕ
x✝ : Fin n → E
⊢ (q.comp p.removeZero n) x✝ = (q.comp p n) x✝
state_after: no goals
Theorem: IsCoprime.add_mul_left_right
File: Mathlib/RingTheory/Coprime/Basic.lean

tactic: rw [isCoprime_comm]
state_before: R : Type u
inst✝ : CommRing R
x y : R
h : IsCoprime x y
z : R
⊢ IsCoprime x (y + x * z)
state_after: R : Type u
inst✝ : CommRing R
x y : R
h : IsCoprime x y
z : R
⊢ IsCoprime (y + x * z) x

tactic: exact h.symm.add_mul_left_left z
state_before: R : Type u
inst✝ : CommRing R
x y : R
h : IsCoprime x y
z : R
⊢ IsCoprime (y + x * z) x
state_after: no goals
Theorem: List.replaceF_eq_replaceFTR
File: .lake/packages/batteries/Batteries/Data/List/Basic.lean

tactic: funext α p l
state_before: ⊢ @replaceF = @replaceFTR
state_after: case h.h.h
α : Type u_1
p : α → Option α
l : List α
⊢ replaceF p l = replaceFTR p l

tactic: simp [replaceFTR]
state_before: case h.h.h
α : Type u_1
p : α → Option α
l : List α
⊢ replaceF p l = replaceFTR p l
state_after: case h.h.h
α : Type u_1
p : α → Option α
l : List α
⊢ replaceF p l = replaceFTR.go p l #[]

tactic: exact (go #[] _).symm
state_before: case h.h.h
α : Type u_1
p : α → Option α
l : List α
⊢ replaceF p l = replaceFTR.go p l #[]
state_after: no goals

tactic: simp [replaceFTR.go, replaceF]
state_before: α : Type u_1
p : α → Option α
l : List α
acc : Array α
⊢ replaceFTR.go p [] acc = acc.data ++ replaceF p []
state_after: no goals

tactic: simp [replaceFTR.go, replaceF]
state_before: α : Type u_1
p : α → Option α
l : List α
acc : Array α
x : α
xs : List α
⊢ replaceFTR.go p (x :: xs) acc = acc.data ++ replaceF p (x :: xs)
state_after: α : Type u_1
p : α → Option α
l : List α
acc : Array α
x : α
xs : List α
⊢ (match p x with
    | none => replaceFTR.go p xs (acc.push x)
    | some a' => acc.data ++ a' :: xs) =
    acc.data ++
      match p x with
      | none => x :: replaceF p xs
      | some a => a :: xs

tactic: cases p x <;> simp
state_before: α : Type u_1
p : α → Option α
l : List α
acc : Array α
x : α
xs : List α
⊢ (match p x with
    | none => replaceFTR.go p xs (acc.push x)
    | some a' => acc.data ++ a' :: xs) =
    acc.data ++
      match p x with
      | none => x :: replaceF p xs
      | some a => a :: xs
state_after: case none
α : Type u_1
p : α → Option α
l : List α
acc : Array α
x : α
xs : List α
⊢ replaceFTR.go p xs (acc.push x) = acc.data ++ x :: replaceF p xs

tactic: rw [go _ xs]
state_before: case none
α : Type u_1
p : α → Option α
l : List α
acc : Array α
x : α
xs : List α
⊢ replaceFTR.go p xs (acc.push x) = acc.data ++ x :: replaceF p xs
state_after: case none
α : Type u_1
p : α → Option α
l : List α
acc : Array α
x : α
xs : List α
⊢ (acc.push x).data ++ replaceF p xs = acc.data ++ x :: replaceF p xs

tactic: simp
state_before: case none
α : Type u_1
p : α → Option α
l : List α
acc : Array α
x : α
xs : List α
⊢ (acc.push x).data ++ replaceF p xs = acc.data ++ x :: replaceF p xs
state_after: no goals
Theorem: Multiset.count_map_eq_count'
File: Mathlib/Data/Multiset/Basic.lean

tactic: by_cases H : x ∈ s
state_before: α : Type u_1
β : Type v
γ : Type u_2
inst✝¹ : DecidableEq α
s✝ : Multiset α
inst✝ : DecidableEq β
f : α → β
s : Multiset α
hf : Injective f
x : α
⊢ count (f x) (map f s) = count x s
state_after: case pos
α : Type u_1
β : Type v
γ : Type u_2
inst✝¹ : DecidableEq α
s✝ : Multiset α
inst✝ : DecidableEq β
f : α → β
s : Multiset α
hf : Injective f
x : α
H : x ∈ s
⊢ count (f x) (map f s) = count x s

case neg
α : Type u_1
β : Type v
γ : Type u_2
inst✝¹ : DecidableEq α
s✝ : Multiset α
inst✝ : DecidableEq β
f : α → β
s : Multiset α
hf : Injective f
x : α
H : x ∉ s
⊢ count (f x) (map f s) = count x s

tactic: exact count_map_eq_count f _ hf.injOn _ H
state_before: case pos
α : Type u_1
β : Type v
γ : Type u_2
inst✝¹ : DecidableEq α
s✝ : Multiset α
inst✝ : DecidableEq β
f : α → β
s : Multiset α
hf : Injective f
x : α
H : x ∈ s
⊢ count (f x) (map f s) = count x s
state_after: no goals

tactic: rw [count_eq_zero_of_not_mem H, count_eq_zero, mem_map]
state_before: case neg
α : Type u_1
β : Type v
γ : Type u_2
inst✝¹ : DecidableEq α
s✝ : Multiset α
inst✝ : DecidableEq β
f : α → β
s : Multiset α
hf : Injective f
x : α
H : x ∉ s
⊢ count (f x) (map f s) = count x s
state_after: case neg
α : Type u_1
β : Type v
γ : Type u_2
inst✝¹ : DecidableEq α
s✝ : Multiset α
inst✝ : DecidableEq β
f : α → β
s : Multiset α
hf : Injective f
x : α
H : x ∉ s
⊢ ¬∃ a ∈ s, f a = f x

tactic: rintro ⟨k, hks, hkx⟩
state_before: case neg
α : Type u_1
β : Type v
γ : Type u_2
inst✝¹ : DecidableEq α
s✝ : Multiset α
inst✝ : DecidableEq β
f : α → β
s : Multiset α
hf : Injective f
x : α
H : x ∉ s
⊢ ¬∃ a ∈ s, f a = f x
state_after: case neg.intro.intro
α : Type u_1
β : Type v
γ : Type u_2
inst✝¹ : DecidableEq α
s✝ : Multiset α
inst✝ : DecidableEq β
f : α → β
s : Multiset α
hf : Injective f
x : α
H : x ∉ s
k : α
hks : k ∈ s
hkx : f k = f x
⊢ False

tactic: rw [hf hkx] at hks
state_before: case neg.intro.intro
α : Type u_1
β : Type v
γ : Type u_2
inst✝¹ : DecidableEq α
s✝ : Multiset α
inst✝ : DecidableEq β
f : α → β
s : Multiset α
hf : Injective f
x : α
H : x ∉ s
k : α
hks : k ∈ s
hkx : f k = f x
⊢ False
state_after: case neg.intro.intro
α : Type u_1
β : Type v
γ : Type u_2
inst✝¹ : DecidableEq α
s✝ : Multiset α
inst✝ : DecidableEq β
f : α → β
s : Multiset α
hf : Injective f
x : α
H : x ∉ s
k : α
hks : x ∈ s
hkx : f k = f x
⊢ False

tactic: contradiction
state_before: case neg.intro.intro
α : Type u_1
β : Type v
γ : Type u_2
inst✝¹ : DecidableEq α
s✝ : Multiset α
inst✝ : DecidableEq β
f : α → β
s : Multiset α
hf : Injective f
x : α
H : x ∉ s
k : α
hks : x ∈ s
hkx : f k = f x
⊢ False
state_after: no goals
Theorem: Ordinal.deriv_id_of_nfp_id
File: Mathlib/SetTheory/Ordinal/FixedPoint.lean

tactic: simp [h]
state_before: f✝ : Ordinal.{u} → Ordinal.{u}
f : Ordinal.{u_1} → Ordinal.{u_1}
h : nfp f = id
⊢ deriv f 0 = id 0 ∧ ∀ (a : Ordinal.{u_1}), deriv f a = id a → deriv f (succ a) = id (succ a)
state_after: no goals