1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Set.image2_congr
File: Mathlib/Data/Set/NAry.lean

tactic: ext
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
γ' : Type u_6
δ : Type u_7
δ' : Type u_8
ε : Type u_9
ε' : Type u_10
ζ : Type u_11
ζ' : Type u_12
ν : Type u_13
f f' : α → β → γ
g g' : α → β → γ → δ
s s' : Set α
t t' : Set β
u u' : Set γ
v : Set δ
a a' : α
b b' : β
c c' : γ
d d' : δ
h : ∀ a ∈ s, ∀ b ∈ t, f a b = f' a b
⊢ image2 f s t = image2 f' s t
state_after: case h
α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
γ' : Type u_6
δ : Type u_7
δ' : Type u_8
ε : Type u_9
ε' : Type u_10
ζ : Type u_11
ζ' : Type u_12
ν : Type u_13
f f' : α → β → γ
g g' : α → β → γ → δ
s s' : Set α
t t' : Set β
u u' : Set γ
v : Set δ
a a' : α
b b' : β
c c' : γ
d d' : δ
h : ∀ a ∈ s, ∀ b ∈ t, f a b = f' a b
x✝ : γ
⊢ x✝ ∈ image2 f s t ↔ x✝ ∈ image2 f' s t

tactic: constructor <;> rintro ⟨a, ha, b, hb, rfl⟩ <;> exact ⟨a, ha, b, hb, by rw [h a ha b hb]⟩
state_before: case h
α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
γ' : Type u_6
δ : Type u_7
δ' : Type u_8
ε : Type u_9
ε' : Type u_10
ζ : Type u_11
ζ' : Type u_12
ν : Type u_13
f f' : α → β → γ
g g' : α → β → γ → δ
s s' : Set α
t t' : Set β
u u' : Set γ
v : Set δ
a a' : α
b b' : β
c c' : γ
d d' : δ
h : ∀ a ∈ s, ∀ b ∈ t, f a b = f' a b
x✝ : γ
⊢ x✝ ∈ image2 f s t ↔ x✝ ∈ image2 f' s t
state_after: no goals

tactic: rw [h a ha b hb]
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
γ' : Type u_6
δ : Type u_7
δ' : Type u_8
ε : Type u_9
ε' : Type u_10
ζ : Type u_11
ζ' : Type u_12
ν : Type u_13
f f' : α → β → γ
g g' : α → β → γ → δ
s s' : Set α
t t' : Set β
u u' : Set γ
v : Set δ
a✝ a' : α
b✝ b' : β
c c' : γ
d d' : δ
h : ∀ a ∈ s, ∀ b ∈ t, f a b = f' a b
a : α
ha : a ∈ s
b : β
hb : b ∈ t
⊢ f a b = f' a b
state_after: no goals
Theorem: Set.chainHeight_eq_zero_iff
File: Mathlib/Order/Height.lean

tactic: rw [← not_iff_not, ← Ne, ← ENat.one_le_iff_ne_zero, one_le_chainHeight_iff,
  nonempty_iff_ne_empty]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : LT α
inst✝ : LT β
s t : Set α
l : List α
a : α
⊢ s.chainHeight = 0 ↔ s = ∅
state_after: no goals
Theorem: Module.eval_ker
File: Mathlib/LinearAlgebra/Dual.lean

tactic: classical exact (Module.Free.chooseBasis K V).eval_ker
state_before: K : Type uK
V : Type uV
inst✝³ : CommRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : Free K V
⊢ ker (eval K V) = ⊥
state_after: no goals

tactic: exact (Module.Free.chooseBasis K V).eval_ker
state_before: K : Type uK
V : Type uV
inst✝³ : CommRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : Free K V
⊢ ker (eval K V) = ⊥
state_after: no goals
Theorem: frontier_sphere
File: Mathlib/Analysis/NormedSpace/Real.lean

tactic: rw [isClosed_sphere.frontier_eq, interior_sphere x hr, diff_empty]
state_before: E : Type u_1
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace ℝ E
x : E
r : ℝ
hr : r ≠ 0
⊢ frontier (sphere x r) = sphere x r
state_after: no goals
Theorem: Subtype.coe_image_of_subset
File: Mathlib/Data/Set/Image.lean

tactic: ext x
state_before: α : Type u_1
s t : Set α
h : t ⊆ s
⊢ val '' {x | ↑x ∈ t} = t
state_after: case h
α : Type u_1
s t : Set α
h : t ⊆ s
x : α
⊢ x ∈ val '' {x | ↑x ∈ t} ↔ x ∈ t

tactic: rw [mem_image]
state_before: case h
α : Type u_1
s t : Set α
h : t ⊆ s
x : α
⊢ x ∈ val '' {x | ↑x ∈ t} ↔ x ∈ t
state_after: case h
α : Type u_1
s t : Set α
h : t ⊆ s
x : α
⊢ (∃ x_1 ∈ {x | ↑x ∈ t}, ↑x_1 = x) ↔ x ∈ t

tactic: exact ⟨fun ⟨_, hx', hx⟩ => hx ▸ hx', fun hx => ⟨⟨x, h hx⟩, hx, rfl⟩⟩
state_before: case h
α : Type u_1
s t : Set α
h : t ⊆ s
x : α
⊢ (∃ x_1 ∈ {x | ↑x ∈ t}, ↑x_1 = x) ↔ x ∈ t
state_after: no goals
Theorem: CategoryTheory.ShortComplex.rightHomologyMap'_smul
File: Mathlib/Algebra/Homology/ShortComplex/Linear.lean

tactic: have γ : RightHomologyMapData φ h₁ h₂ := default
state_before: R : Type u_1
C : Type u_2
inst✝³ : Semiring R
inst✝² : Category.{u_3, u_2} C
inst✝¹ : Preadditive C
inst✝ : Linear R C
S₁ S₂ : ShortComplex C
φ φ' : S₁ ⟶ S₂
h₁ : S₁.RightHomologyData
h₂ : S₂.RightHomologyData
a : R
⊢ rightHomologyMap' (a • φ) h₁ h₂ = a • rightHomologyMap' φ h₁ h₂
state_after: R : Type u_1
C : Type u_2
inst✝³ : Semiring R
inst✝² : Category.{u_3, u_2} C
inst✝¹ : Preadditive C
inst✝ : Linear R C
S₁ S₂ : ShortComplex C
φ φ' : S₁ ⟶ S₂
h₁ : S₁.RightHomologyData
h₂ : S₂.RightHomologyData
a : R
γ : RightHomologyMapData φ h₁ h₂
⊢ rightHomologyMap' (a • φ) h₁ h₂ = a • rightHomologyMap' φ h₁ h₂

tactic: simp only [(γ.smul a).rightHomologyMap'_eq, RightHomologyMapData.smul_φH, γ.rightHomologyMap'_eq]
state_before: R : Type u_1
C : Type u_2
inst✝³ : Semiring R
inst✝² : Category.{u_3, u_2} C
inst✝¹ : Preadditive C
inst✝ : Linear R C
S₁ S₂ : ShortComplex C
φ φ' : S₁ ⟶ S₂
h₁ : S₁.RightHomologyData
h₂ : S₂.RightHomologyData
a : R
γ : RightHomologyMapData φ h₁ h₂
⊢ rightHomologyMap' (a • φ) h₁ h₂ = a • rightHomologyMap' φ h₁ h₂
state_after: no goals
Theorem: Mathlib.Meta.NormNum.isNat_natSub
File: Mathlib/Tactic/NormNum/Basic.lean

tactic: simp
state_before: n✝¹ n✝ : ℕ
⊢ ↑n✝¹ - ↑n✝ = ↑(n✝¹.sub n✝)
state_after: no goals
Theorem: Multiset.toDFinsupp_le_toDFinsupp
File: Mathlib/Data/DFinsupp/Multiset.lean

tactic: simp [Multiset.le_iff_count, DFinsupp.le_def]
state_before: α : Type u_1
β : α → Type u_2
inst✝ : DecidableEq α
s t : Multiset α
⊢ toDFinsupp s ≤ toDFinsupp t ↔ s ≤ t
state_after: no goals
Theorem: Finset.le_sum_card
File: Mathlib/Algebra/Order/BigOperators/Group/Finset.lean

tactic: simp_rw [univ_inter]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
G : Type u_6
k : Type u_7
R : Type u_8
inst✝¹ : DecidableEq α
s : Finset α
B : Finset (Finset α)
n : ℕ
inst✝ : Fintype α
h : ∀ (a : α), n ≤ (filter (fun x => a ∈ x) B).card
⊢ ∑ s ∈ B, (univ ∩ s).card = ∑ s ∈ B, s.card
state_after: no goals
Theorem: cfc_apply_pi
File: Mathlib/Topology/ContinuousFunction/FunctionalCalculus.lean

tactic: ext i
state_before: R : Type u_1
A : Type u_2
p : A → Prop
inst✝⁹ : CommSemiring R
inst✝⁸ : StarRing R
inst✝⁷ : MetricSpace R
inst✝⁶ : TopologicalSemiring R
inst✝⁵ : ContinuousStar R
inst✝⁴ : TopologicalSpace A
inst✝³ : Ring A
inst✝² : StarRing A
inst✝¹ : Algebra R A
inst✝ : ContinuousFunctionalCalculus R p
f✝ g : R → R
a✝ : A
ha✝ : autoParam (p a✝) _auto✝
hf✝ : autoParam (ContinuousOn f✝ (spectrum R a✝)) _auto✝
hg : autoParam (ContinuousOn g (spectrum R a✝)) _auto✝
ι : Type u_3
f : ι → R → R
a : A
ha : autoParam (p a) _auto✝
hf : autoParam (∀ (i : ι), ContinuousOn (f i) (spectrum R a)) _auto✝
⊢ (fun i => cfc (f i) a) = fun i => (cfcHom ha) { toFun := (spectrum R a).restrict (f i), continuous_toFun := ⋯ }
state_after: case h
R : Type u_1
A : Type u_2
p : A → Prop
inst✝⁹ : CommSemiring R
inst✝⁸ : StarRing R
inst✝⁷ : MetricSpace R
inst✝⁶ : TopologicalSemiring R
inst✝⁵ : ContinuousStar R
inst✝⁴ : TopologicalSpace A
inst✝³ : Ring A
inst✝² : StarRing A
inst✝¹ : Algebra R A
inst✝ : ContinuousFunctionalCalculus R p
f✝ g : R → R
a✝ : A
ha✝ : autoParam (p a✝) _auto✝
hf✝ : autoParam (ContinuousOn f✝ (spectrum R a✝)) _auto✝
hg : autoParam (ContinuousOn g (spectrum R a✝)) _auto✝
ι : Type u_3
f : ι → R → R
a : A
ha : autoParam (p a) _auto✝
hf : autoParam (∀ (i : ι), ContinuousOn (f i) (spectrum R a)) _auto✝
i : ι
⊢ cfc (f i) a = (cfcHom ha) { toFun := (spectrum R a).restrict (f i), continuous_toFun := ⋯ }

tactic: simp only [cfc_apply (f i) a ha (hf i)]
state_before: case h
R : Type u_1
A : Type u_2
p : A → Prop
inst✝⁹ : CommSemiring R
inst✝⁸ : StarRing R
inst✝⁷ : MetricSpace R
inst✝⁶ : TopologicalSemiring R
inst✝⁵ : ContinuousStar R
inst✝⁴ : TopologicalSpace A
inst✝³ : Ring A
inst✝² : StarRing A
inst✝¹ : Algebra R A
inst✝ : ContinuousFunctionalCalculus R p
f✝ g : R → R
a✝ : A
ha✝ : autoParam (p a✝) _auto✝
hf✝ : autoParam (ContinuousOn f✝ (spectrum R a✝)) _auto✝
hg : autoParam (ContinuousOn g (spectrum R a✝)) _auto✝
ι : Type u_3
f : ι → R → R
a : A
ha : autoParam (p a) _auto✝
hf : autoParam (∀ (i : ι), ContinuousOn (f i) (spectrum R a)) _auto✝
i : ι
⊢ cfc (f i) a = (cfcHom ha) { toFun := (spectrum R a).restrict (f i), continuous_toFun := ⋯ }
state_after: no goals
Theorem: SetTheory.PGame.Domineering.moveLeft_card
File: Mathlib/SetTheory/Game/Domineering.lean

tactic: dsimp [moveLeft]
state_before: b : Board
m : ℤ × ℤ
h : m ∈ left b
⊢ Finset.card (moveLeft b m) + 2 = Finset.card b
state_after: b : Board
m : ℤ × ℤ
h : m ∈ left b
⊢ ((Finset.erase b m).erase (m.1, m.2 - 1)).card + 2 = Finset.card b

tactic: rw [Finset.card_erase_of_mem (snd_pred_mem_erase_of_mem_left h)]
state_before: b : Board
m : ℤ × ℤ
h : m ∈ left b
⊢ ((Finset.erase b m).erase (m.1, m.2 - 1)).card + 2 = Finset.card b
state_after: b : Board
m : ℤ × ℤ
h : m ∈ left b
⊢ (Finset.erase b m).card - 1 + 2 = Finset.card b

tactic: rw [Finset.card_erase_of_mem (Finset.mem_of_mem_inter_left h)]
state_before: b : Board
m : ℤ × ℤ
h : m ∈ left b
⊢ (Finset.erase b m).card - 1 + 2 = Finset.card b
state_after: b : Board
m : ℤ × ℤ
h : m ∈ left b
⊢ Finset.card b - 1 - 1 + 2 = Finset.card b

tactic: exact tsub_add_cancel_of_le (card_of_mem_left h)
state_before: b : Board
m : ℤ × ℤ
h : m ∈ left b
⊢ Finset.card b - 1 - 1 + 2 = Finset.card b
state_after: no goals
Theorem: MvPowerSeries.coeff_X_pow
File: Mathlib/RingTheory/MvPowerSeries/Basic.lean

tactic: rw [X_pow_eq s n, coeff_monomial]
state_before: σ : Type u_1
R : Type u_2
inst✝¹ : Semiring R
inst✝ : DecidableEq σ
m : σ →₀ ℕ
s : σ
n : ℕ
⊢ (coeff R m) (X s ^ n) = if m = single s n then 1 else 0
state_after: no goals
Theorem: Polynomial.Chebyshev.algebraMap_eval_U
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Chebyshev.lean

tactic: rw [← aeval_algebraMap_apply_eq_algebraMap_eval, aeval_U]
state_before: R : Type u_1
A : Type u_2
inst✝² : CommRing R
inst✝¹ : CommRing A
inst✝ : Algebra R A
x : R
n : ℤ
⊢ (algebraMap R A) (eval x (U R n)) = eval ((algebraMap R A) x) (U A n)
state_after: no goals
Theorem: EReal.continuousAt_add_top_coe
File: Mathlib/Topology/Instances/EReal.lean

tactic: simp only [ContinuousAt, tendsto_nhds_top_iff_real, top_add_coe]
state_before: α : Type u_1
inst✝ : TopologicalSpace α
a : ℝ
⊢ ContinuousAt (fun p => p.1 + p.2) (⊤, ↑a)
state_after: α : Type u_1
inst✝ : TopologicalSpace α
a : ℝ
⊢ ∀ (x : ℝ), ∀ᶠ (a : EReal × EReal) in 𝓝 (⊤, ↑a), ↑x < a.1 + a.2

tactic: refine fun r ↦ ((lt_mem_nhds (coe_lt_top (r - (a - 1)))).prod_nhds
  (lt_mem_nhds <| EReal.coe_lt_coe_iff.2 <| sub_one_lt _)).mono fun _ h ↦ ?_
state_before: α : Type u_1
inst✝ : TopologicalSpace α
a : ℝ
⊢ ∀ (x : ℝ), ∀ᶠ (a : EReal × EReal) in 𝓝 (⊤, ↑a), ↑x < a.1 + a.2
state_after: α : Type u_1
inst✝ : TopologicalSpace α
a r : ℝ
x✝ : EReal × EReal
h : ↑(r - (a - 1)) < x✝.1 ∧ ↑(a - 1) < x✝.2
⊢ ↑r < x✝.1 + x✝.2

tactic: simpa only [← coe_add, sub_add_cancel] using add_lt_add h.1 h.2
state_before: α : Type u_1
inst✝ : TopologicalSpace α
a r : ℝ
x✝ : EReal × EReal
h : ↑(r - (a - 1)) < x✝.1 ∧ ↑(a - 1) < x✝.2
⊢ ↑r < x✝.1 + x✝.2
state_after: no goals
Theorem: MeasureTheory.AEEqFun.integrable_coeFn
File: Mathlib/MeasureTheory/Function/L1Space.lean

tactic: rw [← integrable_mk, mk_coeFn]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
f : α →ₘ[μ] β
⊢ MeasureTheory.Integrable (↑f) μ ↔ f.Integrable
state_after: no goals
Theorem: IsCompl.inf_left_eq_bot_iff
File: Mathlib/Order/Disjoint.lean

tactic: rw [← le_bot_iff, ← h.le_sup_right_iff_inf_left_le, bot_sup_eq]
state_before: α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
a b x y z : α
h : IsCompl y z
⊢ x ⊓ y = ⊥ ↔ x ≤ z
state_after: no goals
Theorem: Squarefree.pow_dvd_of_squarefree_of_pow_succ_dvd_mul_left
File: Mathlib/Algebra/Squarefree/Basic.lean

tactic: rw [mul_comm] at h
state_before: R : Type u_1
inst✝ : CancelCommMonoidWithZero R
x y p d : R
k : ℕ
hy : Squarefree y
hp : Prime p
h : p ^ (k + 1) ∣ x * y
⊢ p ^ k ∣ x
state_after: R : Type u_1
inst✝ : CancelCommMonoidWithZero R
x y p d : R
k : ℕ
hy : Squarefree y
hp : Prime p
h : p ^ (k + 1) ∣ y * x
⊢ p ^ k ∣ x

tactic: exact pow_dvd_of_squarefree_of_pow_succ_dvd_mul_right hy hp h
state_before: R : Type u_1
inst✝ : CancelCommMonoidWithZero R
x y p d : R
k : ℕ
hy : Squarefree y
hp : Prime p
h : p ^ (k + 1) ∣ y * x
⊢ p ^ k ∣ x
state_after: no goals
Theorem: tendsto_atTop_isGLB
File: Mathlib/Topology/Order/MonotoneConvergence.lean

tactic: convert tendsto_atBot_isLUB h_anti.dual ha.dual using 1
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
inst✝³ : Preorder ι
inst✝² : TopologicalSpace α
inst✝¹ : Preorder α
inst✝ : InfConvergenceClass α
f : ι → α
a : α
h_anti : Antitone f
ha : IsGLB (range f) a
⊢ Tendsto f atTop (𝓝 a)
state_after: no goals
Theorem: IsCoprime.dvd_of_dvd_mul_right
File: Mathlib/RingTheory/Coprime/Basic.lean

tactic: let ⟨a, b, H⟩ := H1
state_before: R : Type u
inst✝ : CommSemiring R
x y z : R
H1 : IsCoprime x z
H2 : x ∣ y * z
⊢ x ∣ y
state_after: R : Type u
inst✝ : CommSemiring R
x y z : R
H1 : IsCoprime x z
H2 : x ∣ y * z
a b : R
H : a * x + b * z = 1
⊢ x ∣ y

tactic: rw [← mul_one y, ← H, mul_add, ← mul_assoc, mul_left_comm]
state_before: R : Type u
inst✝ : CommSemiring R
x y z : R
H1 : IsCoprime x z
H2 : x ∣ y * z
a b : R
H : a * x + b * z = 1
⊢ x ∣ y
state_after: R : Type u
inst✝ : CommSemiring R
x y z : R
H1 : IsCoprime x z
H2 : x ∣ y * z
a b : R
H : a * x + b * z = 1
⊢ x ∣ y * a * x + b * (y * z)

tactic: exact dvd_add (dvd_mul_left _ _) (H2.mul_left _)
state_before: R : Type u
inst✝ : CommSemiring R
x y z : R
H1 : IsCoprime x z
H2 : x ∣ y * z
a b : R
H : a * x + b * z = 1
⊢ x ∣ y * a * x + b * (y * z)
state_after: no goals
Theorem: Finset.range_add
File: Mathlib/Data/Finset/Image.lean

tactic: rw [← val_inj, union_val]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq β
f g : α → β
s : Finset α
t : Finset β
a✝ : α
b✝ c : β
a b : ℕ
⊢ range (a + b) = range a ∪ map (addLeftEmbedding a) (range b)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq β
f g : α → β
s : Finset α
t : Finset β
a✝ : α
b✝ c : β
a b : ℕ
⊢ (range (a + b)).val = (range a).val ∪ (map (addLeftEmbedding a) (range b)).val

tactic: exact Multiset.range_add_eq_union a b
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq β
f g : α → β
s : Finset α
t : Finset β
a✝ : α
b✝ c : β
a b : ℕ
⊢ (range (a + b)).val = (range a).val ∪ (map (addLeftEmbedding a) (range b)).val
state_after: no goals
Theorem: Commute.div_sub_div
File: Mathlib/Algebra/Field/Basic.lean

tactic: simpa only [mul_neg, neg_div, ← sub_eq_add_neg] using hbc.neg_right.div_add_div hbd hb hd
state_before: α : Type u_1
β : Type u_2
K : Type u_3
inst✝ : DivisionRing K
a b c d : K
hbc : Commute b c
hbd : Commute b d
hb : b ≠ 0
hd : d ≠ 0
⊢ a / b - c / d = (a * d - b * c) / (b * d)
state_after: no goals
Theorem: Nat.count_eq_card_fintype
File: Mathlib/Data/Nat/Count.lean

tactic: rw [count_eq_card_filter_range, ← Fintype.card_ofFinset, ← CountSet.fintype]
state_before: p : ℕ → Prop
inst✝ : DecidablePred p
n : ℕ
⊢ count p n = Fintype.card { k // k < n ∧ p k }
state_after: p : ℕ → Prop
inst✝ : DecidablePred p
n : ℕ
⊢ (Fintype.card ↑fun x => x < n ∧ p x) = Fintype.card { k // k < n ∧ p k }

tactic: rfl
state_before: p : ℕ → Prop
inst✝ : DecidablePred p
n : ℕ
⊢ (Fintype.card ↑fun x => x < n ∧ p x) = Fintype.card { k // k < n ∧ p k }
state_after: no goals
Theorem: HomotopyCategory.mem_quasiIso_iff
File: Mathlib/Algebra/Homology/Localization.lean

tactic: rfl
state_before: C : Type u_1
inst✝³ : Category.{u_3, u_1} C
ι : Type u_2
c : ComplexShape ι
inst✝² : Preadditive C
inst✝¹ : CategoryWithHomology C
inst✝ : (HomologicalComplex.quasiIso C c).HasLocalization
X Y : HomotopyCategory C c
f : X ⟶ Y
⊢ quasiIso C c f ↔ ∀ (n : ι), IsIso ((homologyFunctor C c n).map f)
state_after: no goals
Theorem: Finset.filter_inter_distrib
File: Mathlib/Data/Finset/Basic.lean

tactic: ext
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
p q : α → Prop
inst✝² : DecidablePred p
inst✝¹ : DecidablePred q
s✝ : Finset α
inst✝ : DecidableEq α
s t : Finset α
⊢ filter p (s ∩ t) = filter p s ∩ filter p t
state_after: case a
α : Type u_1
β : Type u_2
γ : Type u_3
p q : α → Prop
inst✝² : DecidablePred p
inst✝¹ : DecidablePred q
s✝ : Finset α
inst✝ : DecidableEq α
s t : Finset α
a✝ : α
⊢ a✝ ∈ filter p (s ∩ t) ↔ a✝ ∈ filter p s ∩ filter p t

tactic: simp [mem_filter, mem_inter, and_assoc]
state_before: case a
α : Type u_1
β : Type u_2
γ : Type u_3
p q : α → Prop
inst✝² : DecidablePred p
inst✝¹ : DecidablePred q
s✝ : Finset α
inst✝ : DecidableEq α
s t : Finset α
a✝ : α
⊢ a✝ ∈ filter p (s ∩ t) ↔ a✝ ∈ filter p s ∩ filter p t
state_after: no goals
Theorem: List.Ico.succ_top
File: Mathlib/Data/List/Intervals.lean

tactic: rwa [← succ_singleton, append_consecutive]
state_before: n m : ℕ
h : n ≤ m
⊢ Ico n (m + 1) = Ico n m ++ [m]
state_after: case hml
n m : ℕ
h : n ≤ m
⊢ m ≤ m + 1

tactic: exact Nat.le_succ _
state_before: case hml
n m : ℕ
h : n ≤ m
⊢ m ≤ m + 1
state_after: no goals
Theorem: Polynomial.natDegree_mul_C_le
File: Mathlib/Algebra/Polynomial/Degree/Lemmas.lean

tactic: rw [natDegree_C a]
state_before: R : Type u
S : Type v
ι : Type w
a✝ b : R
m n : ℕ
inst✝ : Semiring R
p q r f : R[X]
a : R
⊢ f.natDegree + (C a).natDegree = f.natDegree + 0
state_after: no goals
Theorem: MeasureTheory.IsProjectiveLimit.isProbabilityMeasure
File: Mathlib/MeasureTheory/Constructions/Projective.lean

tactic: constructor
state_before: ι : Type u_1
α : ι → Type u_2
inst✝¹ : (i : ι) → MeasurableSpace (α i)
P : (J : Finset ι) → Measure ((j : { x // x ∈ J }) → α ↑j)
μ ν : Measure ((i : ι) → α i)
inst✝ : ∀ (i : Finset ι), IsProbabilityMeasure (P i)
hμ : IsProjectiveLimit μ P
⊢ IsProbabilityMeasure μ
state_after: case measure_univ
ι : Type u_1
α : ι → Type u_2
inst✝¹ : (i : ι) → MeasurableSpace (α i)
P : (J : Finset ι) → Measure ((j : { x // x ∈ J }) → α ↑j)
μ ν : Measure ((i : ι) → α i)
inst✝ : ∀ (i : Finset ι), IsProbabilityMeasure (P i)
hμ : IsProjectiveLimit μ P
⊢ μ univ = 1

tactic: rw [hμ.measure_univ_eq (∅ : Finset ι)]
state_before: case measure_univ
ι : Type u_1
α : ι → Type u_2
inst✝¹ : (i : ι) → MeasurableSpace (α i)
P : (J : Finset ι) → Measure ((j : { x // x ∈ J }) → α ↑j)
μ ν : Measure ((i : ι) → α i)
inst✝ : ∀ (i : Finset ι), IsProbabilityMeasure (P i)
hμ : IsProjectiveLimit μ P
⊢ μ univ = 1
state_after: case measure_univ
ι : Type u_1
α : ι → Type u_2
inst✝¹ : (i : ι) → MeasurableSpace (α i)
P : (J : Finset ι) → Measure ((j : { x // x ∈ J }) → α ↑j)
μ ν : Measure ((i : ι) → α i)
inst✝ : ∀ (i : Finset ι), IsProbabilityMeasure (P i)
hμ : IsProjectiveLimit μ P
⊢ (P ∅) univ = 1

tactic: exact measure_univ
state_before: case measure_univ
ι : Type u_1
α : ι → Type u_2
inst✝¹ : (i : ι) → MeasurableSpace (α i)
P : (J : Finset ι) → Measure ((j : { x // x ∈ J }) → α ↑j)
μ ν : Measure ((i : ι) → α i)
inst✝ : ∀ (i : Finset ι), IsProbabilityMeasure (P i)
hμ : IsProjectiveLimit μ P
⊢ (P ∅) univ = 1
state_after: no goals
Theorem: Complex.cpow_ofReal_im
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: rw [cpow_ofReal]
state_before: x : ℂ
y : ℝ
⊢ (x ^ ↑y).im = abs x ^ y * Real.sin (x.arg * y)
state_after: x : ℂ
y : ℝ
⊢ (↑(abs x ^ y) * (↑(Real.cos (x.arg * y)) + ↑(Real.sin (x.arg * y)) * I)).im = abs x ^ y * Real.sin (x.arg * y)

tactic: generalize arg x * y = z
state_before: x : ℂ
y : ℝ
⊢ (↑(abs x ^ y) * (↑(Real.cos (x.arg * y)) + ↑(Real.sin (x.arg * y)) * I)).im = abs x ^ y * Real.sin (x.arg * y)
state_after: x : ℂ
y z : ℝ
⊢ (↑(abs x ^ y) * (↑(Real.cos z) + ↑(Real.sin z) * I)).im = abs x ^ y * Real.sin z

tactic: simp [Real.sin]
state_before: x : ℂ
y z : ℝ
⊢ (↑(abs x ^ y) * (↑(Real.cos z) + ↑(Real.sin z) * I)).im = abs x ^ y * Real.sin z
state_after: no goals
Theorem: WeierstrassCurve.Affine.Point.map_id
File: Mathlib/AlgebraicGeometry/EllipticCurve/Affine.lean

tactic: cases P <;> rfl
state_before: R✝ : Type u
inst✝²³ : CommRing R✝
W✝ : Affine R✝
R : Type r
inst✝²² : CommRing R
W : Affine R
S : Type s
inst✝²¹ : CommRing S
inst✝²⁰ : Algebra R S
A : Type u
inst✝¹⁹ : CommRing A
inst✝¹⁸ : Algebra R A
inst✝¹⁷ : Algebra S A
inst✝¹⁶ : IsScalarTower R S A
B : Type v
inst✝¹⁵ : CommRing B
inst✝¹⁴ : Algebra R B
inst✝¹³ : Algebra S B
inst✝¹² : IsScalarTower R S B
f✝ : A →ₐ[S] B
F : Type u
inst✝¹¹ : Field F
inst✝¹⁰ : Algebra R F
inst✝⁹ : Algebra S F
inst✝⁸ : IsScalarTower R S F
K : Type v
inst✝⁷ : Field K
inst✝⁶ : Algebra R K
inst✝⁵ : Algebra S K
inst✝⁴ : IsScalarTower R S K
f : F →ₐ[S] K
L : Type w
inst✝³ : Field L
inst✝² : Algebra R L
inst✝¹ : Algebra S L
inst✝ : IsScalarTower R S L
g : K →ₐ[S] L
P : W⟮F⟯
⊢ (map W (Algebra.ofId F F)) P = P
state_after: no goals
Theorem: Finset.update_piecewise
File: Mathlib/Data/Finset/Piecewise.lean

tactic: ext j
state_before: ι : Type u_1
π : ι → Sort u_2
s : Finset ι
f g : (i : ι) → π i
inst✝¹ : (j : ι) → Decidable (j ∈ s)
inst✝ : DecidableEq ι
i : ι
v : π i
⊢ update (s.piecewise f g) i v = s.piecewise (update f i v) (update g i v)
state_after: case h
ι : Type u_1
π : ι → Sort u_2
s : Finset ι
f g : (i : ι) → π i
inst✝¹ : (j : ι) → Decidable (j ∈ s)
inst✝ : DecidableEq ι
i : ι
v : π i
j : ι
⊢ update (s.piecewise f g) i v j = s.piecewise (update f i v) (update g i v) j

tactic: rcases em (j = i) with (rfl | hj) <;> by_cases hs : j ∈ s <;> simp [*]
state_before: case h
ι : Type u_1
π : ι → Sort u_2
s : Finset ι
f g : (i : ι) → π i
inst✝¹ : (j : ι) → Decidable (j ∈ s)
inst✝ : DecidableEq ι
i : ι
v : π i
j : ι
⊢ update (s.piecewise f g) i v j = s.piecewise (update f i v) (update g i v) j
state_after: no goals
Theorem: List.pairwise_bind
File: .lake/packages/batteries/Batteries/Data/List/Pairwise.lean

tactic: simp [List.bind, pairwise_join, pairwise_map]
state_before: β : Type u_1
α : Type u_2
R : β → β → Prop
l : List α
f : α → List β
⊢ Pairwise R (l.bind f) ↔
    (∀ (a : α), a ∈ l → Pairwise R (f a)) ∧ Pairwise (fun a₁ a₂ => ∀ (x : β), x ∈ f a₁ → ∀ (y : β), y ∈ f a₂ → R x y) l
state_after: no goals
Theorem: ENNReal.one_le_ofReal
File: Mathlib/Data/ENNReal/Real.lean

tactic: exact mod_cast natCast_le_ofReal one_ne_zero
state_before: a b c d : ℝ≥0∞
r p✝ q : ℝ≥0
p : ℝ
⊢ 1 ≤ ENNReal.ofReal p ↔ 1 ≤ p
state_after: no goals
Theorem: List.range_eq_nil
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

tactic: rw [← length_eq_zero, length_range]
state_before: n : Nat
⊢ range n = [] ↔ n = 0
state_after: no goals
Theorem: Zspan.span_top
File: Mathlib/Algebra/Module/Zlattice/Basic.lean

tactic: simp [span_span_of_tower]
state_before: E : Type u_1
ι : Type u_2
K : Type u_3
inst✝² : NormedLinearOrderedField K
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace K E
b : Basis ι K E
⊢ span K ↑(span ℤ (Set.range ⇑b)) = ⊤
state_after: no goals
Theorem: Int.units_sq
File: Mathlib/Data/Int/Order/Units.lean

tactic: rw [Units.ext_iff, Units.val_pow_eq_pow_val, Units.val_one, isUnit_sq u.isUnit]
state_before: u : ℤˣ
⊢ u ^ 2 = 1
state_after: no goals
Theorem: Continuous.map_borel_eq
File: Mathlib/MeasureTheory/Constructions/Polish.lean

tactic: borelize X
state_before: α : Type u_1
ι : Type u_2
X : Type u_3
Y : Type u_4
inst✝⁴ : TopologicalSpace X
inst✝³ : PolishSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : T0Space Y
inst✝ : SecondCountableTopology Y
f : X → Y
hf : Continuous f
hsurj : Surjective f
⊢ MeasurableSpace.map f (borel X) = borel Y
state_after: α : Type u_1
ι : Type u_2
X : Type u_3
Y : Type u_4
inst✝⁴ : TopologicalSpace X
inst✝³ : PolishSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : T0Space Y
inst✝ : SecondCountableTopology Y
f : X → Y
hf : Continuous f
hsurj : Surjective f
this✝¹ : MeasurableSpace X := borel X
this✝ : BorelSpace X
⊢ MeasurableSpace.map f (borel X) = borel Y

tactic: exact hf.map_eq_borel hsurj
state_before: α : Type u_1
ι : Type u_2
X : Type u_3
Y : Type u_4
inst✝⁴ : TopologicalSpace X
inst✝³ : PolishSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : T0Space Y
inst✝ : SecondCountableTopology Y
f : X → Y
hf : Continuous f
hsurj : Surjective f
this✝¹ : MeasurableSpace X := borel X
this✝ : BorelSpace X
⊢ MeasurableSpace.map f (borel X) = borel Y
state_after: no goals
Theorem: CochainComplex.HomComplex.Cocycle.ofHom_homOf_eq_self
File: Mathlib/Algebra/Homology/HomotopyCategory/HomComplex.lean

tactic: aesop_cat
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
F G K L : CochainComplex C ℤ
n m : ℤ
z : Cocycle F G 0
⊢ ofHom z.homOf = z
state_after: no goals