1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Sylow.exists_subgroup_le_card_le
File: Mathlib/GroupTheory/Sylow.lean

tactic: obtain ⟨m, hmk, hkm⟩ : ∃ s, p ^ s ≤ k ∧ k < p ^ (s + 1) :=
  exists_nat_pow_near (Nat.one_le_iff_ne_zero.2 hk₀) hp.one_lt
state_before: G : Type u
α : Type v
β : Type w
inst✝ : Group G
k p : ℕ
hp : Nat.Prime p
h : IsPGroup p G
H : Subgroup G
hk : k ≤ Nat.card ↥H
hk₀ : k ≠ 0
⊢ ∃ H' ≤ H, Nat.card ↥H' ≤ k ∧ k < p * Nat.card ↥H'
state_after: case intro.intro
G : Type u
α : Type v
β : Type w
inst✝ : Group G
k p : ℕ
hp : Nat.Prime p
h : IsPGroup p G
H : Subgroup G
hk : k ≤ Nat.card ↥H
hk₀ : k ≠ 0
m : ℕ
hmk : p ^ m ≤ k
hkm : k < p ^ (m + 1)
⊢ ∃ H' ≤ H, Nat.card ↥H' ≤ k ∧ k < p * Nat.card ↥H'

tactic: obtain ⟨H', H'H, H'card⟩ := exists_subgroup_le_card_pow_prime_of_le_card hp h (hmk.trans hk)
state_before: case intro.intro
G : Type u
α : Type v
β : Type w
inst✝ : Group G
k p : ℕ
hp : Nat.Prime p
h : IsPGroup p G
H : Subgroup G
hk : k ≤ Nat.card ↥H
hk₀ : k ≠ 0
m : ℕ
hmk : p ^ m ≤ k
hkm : k < p ^ (m + 1)
⊢ ∃ H' ≤ H, Nat.card ↥H' ≤ k ∧ k < p * Nat.card ↥H'
state_after: case intro.intro.intro.intro
G : Type u
α : Type v
β : Type w
inst✝ : Group G
k p : ℕ
hp : Nat.Prime p
h : IsPGroup p G
H : Subgroup G
hk : k ≤ Nat.card ↥H
hk₀ : k ≠ 0
m : ℕ
hmk : p ^ m ≤ k
hkm : k < p ^ (m + 1)
H' : Subgroup G
H'H : H' ≤ H
H'card : Nat.card ↥H' = p ^ m
⊢ ∃ H' ≤ H, Nat.card ↥H' ≤ k ∧ k < p * Nat.card ↥H'

tactic: refine ⟨H', H'H, ?_⟩
state_before: case intro.intro.intro.intro
G : Type u
α : Type v
β : Type w
inst✝ : Group G
k p : ℕ
hp : Nat.Prime p
h : IsPGroup p G
H : Subgroup G
hk : k ≤ Nat.card ↥H
hk₀ : k ≠ 0
m : ℕ
hmk : p ^ m ≤ k
hkm : k < p ^ (m + 1)
H' : Subgroup G
H'H : H' ≤ H
H'card : Nat.card ↥H' = p ^ m
⊢ ∃ H' ≤ H, Nat.card ↥H' ≤ k ∧ k < p * Nat.card ↥H'
state_after: case intro.intro.intro.intro
G : Type u
α : Type v
β : Type w
inst✝ : Group G
k p : ℕ
hp : Nat.Prime p
h : IsPGroup p G
H : Subgroup G
hk : k ≤ Nat.card ↥H
hk₀ : k ≠ 0
m : ℕ
hmk : p ^ m ≤ k
hkm : k < p ^ (m + 1)
H' : Subgroup G
H'H : H' ≤ H
H'card : Nat.card ↥H' = p ^ m
⊢ Nat.card ↥H' ≤ k ∧ k < p * Nat.card ↥H'

tactic: simpa only [pow_succ', H'card] using And.intro hmk hkm
state_before: case intro.intro.intro.intro
G : Type u
α : Type v
β : Type w
inst✝ : Group G
k p : ℕ
hp : Nat.Prime p
h : IsPGroup p G
H : Subgroup G
hk : k ≤ Nat.card ↥H
hk₀ : k ≠ 0
m : ℕ
hmk : p ^ m ≤ k
hkm : k < p ^ (m + 1)
H' : Subgroup G
H'H : H' ≤ H
H'card : Nat.card ↥H' = p ^ m
⊢ Nat.card ↥H' ≤ k ∧ k < p * Nat.card ↥H'
state_after: no goals
Theorem: sdiff_compl
File: Mathlib/Order/BooleanAlgebra.lean

tactic: rw [sdiff_eq, compl_compl]
state_before: α : Type u
β : Type u_1
w x y z : α
inst✝ : BooleanAlgebra α
⊢ x \ yᶜ = x ⊓ y
state_after: no goals
Theorem: Mathlib.Tactic.Ring.zero_pow
File: Mathlib/Tactic/Ring/Basic.lean

tactic: simp [pow_succ]
state_before: u : Lean.Level
R : Type u_1
α : Q(Type u)
sα : Q(CommSemiring «$α»)
inst✝ : CommSemiring R
b✝ b : ℕ
x✝ : 0 < b + 1
⊢ 0 ^ (b + 1) = 0
state_after: no goals
Theorem: omegaLimit_iUnion
File: Mathlib/Dynamics/OmegaLimit.lean

tactic: rw [iUnion_subset_iff]
state_before: τ : Type u_1
α : Type u_2
β : Type u_3
ι : Type u_4
inst✝ : TopologicalSpace β
f : Filter τ
ϕ : τ → α → β
s s₁ s₂ : Set α
p : ι → Set α
⊢ ⋃ i, ω f ϕ (p i) ⊆ ω f ϕ (⋃ i, p i)
state_after: τ : Type u_1
α : Type u_2
β : Type u_3
ι : Type u_4
inst✝ : TopologicalSpace β
f : Filter τ
ϕ : τ → α → β
s s₁ s₂ : Set α
p : ι → Set α
⊢ ∀ (i : ι), ω f ϕ (p i) ⊆ ω f ϕ (⋃ i, p i)

tactic: exact fun i ↦ omegaLimit_mono_right _ _ (subset_iUnion _ _)
state_before: τ : Type u_1
α : Type u_2
β : Type u_3
ι : Type u_4
inst✝ : TopologicalSpace β
f : Filter τ
ϕ : τ → α → β
s s₁ s₂ : Set α
p : ι → Set α
⊢ ∀ (i : ι), ω f ϕ (p i) ⊆ ω f ϕ (⋃ i, p i)
state_after: no goals
Theorem: finprod_eq_of_bijective
File: Mathlib/Algebra/BigOperators/Finprod.lean

tactic: rw [← finprod_mem_univ f, ← finprod_mem_univ g]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f✝ g✝ : α → M
a b : α
s t : Set α
f : α → M
g : β → M
e : α → β
he₀ : Bijective e
he₁ : ∀ (x : α), f x = g (e x)
⊢ ∏ᶠ (i : α), f i = ∏ᶠ (j : β), g j
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f✝ g✝ : α → M
a b : α
s t : Set α
f : α → M
g : β → M
e : α → β
he₀ : Bijective e
he₁ : ∀ (x : α), f x = g (e x)
⊢ ∏ᶠ (i : α) (_ : i ∈ univ), f i = ∏ᶠ (i : β) (_ : i ∈ univ), g i

tactic: exact finprod_mem_eq_of_bijOn _ (bijective_iff_bijOn_univ.mp he₀) fun x _ => he₁ x
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f✝ g✝ : α → M
a b : α
s t : Set α
f : α → M
g : β → M
e : α → β
he₀ : Bijective e
he₁ : ∀ (x : α), f x = g (e x)
⊢ ∏ᶠ (i : α) (_ : i ∈ univ), f i = ∏ᶠ (i : β) (_ : i ∈ univ), g i
state_after: no goals
Theorem: intervalIntegral.integral_interval_add_interval_comm
File: Mathlib/MeasureTheory/Integral/IntervalIntegral.lean

tactic: rw [← integral_add_adjacent_intervals hac hcd, add_assoc, add_left_comm,
  integral_add_adjacent_intervals hac (hac.symm.trans hab), add_comm]
state_before: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d : ℝ
f g : ℝ → E
μ : Measure ℝ
hab : IntervalIntegrable f μ a b
hcd : IntervalIntegrable f μ c d
hac : IntervalIntegrable f μ a c
⊢ ∫ (x : ℝ) in a..b, f x ∂μ + ∫ (x : ℝ) in c..d, f x ∂μ = ∫ (x : ℝ) in a..d, f x ∂μ + ∫ (x : ℝ) in c..b, f x ∂μ
state_after: no goals
Theorem: List.tail_eq_tail?
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

tactic: simp [tail_eq_tailD]
state_before: α : Type u_1
l : List α
⊢ l.tail = l.tail?.getD []
state_after: no goals
Theorem: min_lt_min_left_iff
File: Mathlib/Order/MinMax.lean

tactic: simp_rw [lt_min_iff, min_lt_iff, or_iff_left (lt_irrefl _)]
state_before: α : Type u
β : Type v
inst✝¹ : LinearOrder α
inst✝ : LinearOrder β
f : α → β
s : Set α
a b c d : α
⊢ min a c < min b c ↔ a < b ∧ a < c
state_after: α : Type u
β : Type v
inst✝¹ : LinearOrder α
inst✝ : LinearOrder β
f : α → β
s : Set α
a b c d : α
⊢ (a < b ∨ c < b) ∧ a < c ↔ a < b ∧ a < c

tactic: exact and_congr_left fun h => or_iff_left_of_imp h.trans
state_before: α : Type u
β : Type v
inst✝¹ : LinearOrder α
inst✝ : LinearOrder β
f : α → β
s : Set α
a b c d : α
⊢ (a < b ∨ c < b) ∧ a < c ↔ a < b ∧ a < c
state_after: no goals
Theorem: List.IsZeckendorfRep_nil
File: Mathlib/Data/Nat/Fib/Zeckendorf.lean

tactic: simp [IsZeckendorfRep]
state_before: ⊢ [].IsZeckendorfRep
state_after: no goals
Theorem: Equiv.induced_symm
File: Mathlib/Topology/Order.lean

tactic: ext t U
state_before: α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
t t₁ t₂ : TopologicalSpace α✝
t' : TopologicalSpace β✝
f : α✝ → β✝
g : β✝ → α✝
α : Type u_4
β : Type u_5
e : α ≃ β
⊢ TopologicalSpace.induced ⇑e.symm = TopologicalSpace.coinduced ⇑e
state_after: case h.a.h.a
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
t✝ t₁ t₂ : TopologicalSpace α✝
t' : TopologicalSpace β✝
f : α✝ → β✝
g : β✝ → α✝
α : Type u_4
β : Type u_5
e : α ≃ β
t : TopologicalSpace α
U : Set β
⊢ IsOpen U ↔ IsOpen U

tactic: rw [isOpen_induced_iff, isOpen_coinduced]
state_before: case h.a.h.a
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
t✝ t₁ t₂ : TopologicalSpace α✝
t' : TopologicalSpace β✝
f : α✝ → β✝
g : β✝ → α✝
α : Type u_4
β : Type u_5
e : α ≃ β
t : TopologicalSpace α
U : Set β
⊢ IsOpen U ↔ IsOpen U
state_after: case h.a.h.a
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
t✝ t₁ t₂ : TopologicalSpace α✝
t' : TopologicalSpace β✝
f : α✝ → β✝
g : β✝ → α✝
α : Type u_4
β : Type u_5
e : α ≃ β
t : TopologicalSpace α
U : Set β
⊢ (∃ t_1, IsOpen t_1 ∧ ⇑e.symm ⁻¹' t_1 = U) ↔ IsOpen (⇑e ⁻¹' U)

tactic: simp only [e.symm.preimage_eq_iff_eq_image, exists_eq_right, ← preimage_equiv_eq_image_symm]
state_before: case h.a.h.a
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
t✝ t₁ t₂ : TopologicalSpace α✝
t' : TopologicalSpace β✝
f : α✝ → β✝
g : β✝ → α✝
α : Type u_4
β : Type u_5
e : α ≃ β
t : TopologicalSpace α
U : Set β
⊢ (∃ t_1, IsOpen t_1 ∧ ⇑e.symm ⁻¹' t_1 = U) ↔ IsOpen (⇑e ⁻¹' U)
state_after: no goals
Theorem: Multiset.bind_singleton
File: Mathlib/Data/Multiset/Bind.lean

tactic: rw [zero_bind, map_zero]
state_before: α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
a : α
s t : Multiset α
f✝ g : α → Multiset β
f : α → β
⊢ (bind 0 fun x => {f x}) = map f 0
state_after: no goals

tactic: simp [singleton_add]
state_before: α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
a : α
s t : Multiset α
f✝ g : α → Multiset β
f : α → β
⊢ ∀ (a : α) (s : Multiset α), (s.bind fun x => {f x}) = map f s → ((a ::ₘ s).bind fun x => {f x}) = map f (a ::ₘ s)
state_after: no goals
Theorem: CategoryTheory.ShortComplex.rightHomologyMap'_comp
File: Mathlib/Algebra/Homology/ShortComplex/RightHomology.lean

tactic: let γ₁ := rightHomologyMapData φ₁ h₁ h₂
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
φ₁ : S₁ ⟶ S₂
φ₂ : S₂ ⟶ S₃
h₁ : S₁.RightHomologyData
h₂ : S₂.RightHomologyData
h₃ : S₃.RightHomologyData
⊢ rightHomologyMap' (φ₁ ≫ φ₂) h₁ h₃ = rightHomologyMap' φ₁ h₁ h₂ ≫ rightHomologyMap' φ₂ h₂ h₃
state_after: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
φ₁ : S₁ ⟶ S₂
φ₂ : S₂ ⟶ S₃
h₁ : S₁.RightHomologyData
h₂ : S₂.RightHomologyData
h₃ : S₃.RightHomologyData
γ₁ : RightHomologyMapData φ₁ h₁ h₂ := rightHomologyMapData φ₁ h₁ h₂
⊢ rightHomologyMap' (φ₁ ≫ φ₂) h₁ h₃ = rightHomologyMap' φ₁ h₁ h₂ ≫ rightHomologyMap' φ₂ h₂ h₃

tactic: let γ₂ := rightHomologyMapData φ₂ h₂ h₃
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
φ₁ : S₁ ⟶ S₂
φ₂ : S₂ ⟶ S₃
h₁ : S₁.RightHomologyData
h₂ : S₂.RightHomologyData
h₃ : S₃.RightHomologyData
γ₁ : RightHomologyMapData φ₁ h₁ h₂ := rightHomologyMapData φ₁ h₁ h₂
⊢ rightHomologyMap' (φ₁ ≫ φ₂) h₁ h₃ = rightHomologyMap' φ₁ h₁ h₂ ≫ rightHomologyMap' φ₂ h₂ h₃
state_after: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
φ₁ : S₁ ⟶ S₂
φ₂ : S₂ ⟶ S₃
h₁ : S₁.RightHomologyData
h₂ : S₂.RightHomologyData
h₃ : S₃.RightHomologyData
γ₁ : RightHomologyMapData φ₁ h₁ h₂ := rightHomologyMapData φ₁ h₁ h₂
γ₂ : RightHomologyMapData φ₂ h₂ h₃ := rightHomologyMapData φ₂ h₂ h₃
⊢ rightHomologyMap' (φ₁ ≫ φ₂) h₁ h₃ = rightHomologyMap' φ₁ h₁ h₂ ≫ rightHomologyMap' φ₂ h₂ h₃

tactic: rw [γ₁.rightHomologyMap'_eq, γ₂.rightHomologyMap'_eq, (γ₁.comp γ₂).rightHomologyMap'_eq,
  RightHomologyMapData.comp_φH]
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
φ₁ : S₁ ⟶ S₂
φ₂ : S₂ ⟶ S₃
h₁ : S₁.RightHomologyData
h₂ : S₂.RightHomologyData
h₃ : S₃.RightHomologyData
γ₁ : RightHomologyMapData φ₁ h₁ h₂ := rightHomologyMapData φ₁ h₁ h₂
γ₂ : RightHomologyMapData φ₂ h₂ h₃ := rightHomologyMapData φ₂ h₂ h₃
⊢ rightHomologyMap' (φ₁ ≫ φ₂) h₁ h₃ = rightHomologyMap' φ₁ h₁ h₂ ≫ rightHomologyMap' φ₂ h₂ h₃
state_after: no goals
Theorem: Finset.erase_insert_of_ne
File: Mathlib/Data/Finset/Basic.lean

tactic: have : x ≠ b ∧ x = a ↔ x = a := and_iff_right_of_imp fun hx => hx.symm ▸ h
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s✝ t u v : Finset α
a✝ b✝ a b : α
s : Finset α
h : a ≠ b
x : α
⊢ x ∈ (insert a s).erase b ↔ x ∈ insert a (s.erase b)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s✝ t u v : Finset α
a✝ b✝ a b : α
s : Finset α
h : a ≠ b
x : α
this : x ≠ b ∧ x = a ↔ x = a
⊢ x ∈ (insert a s).erase b ↔ x ∈ insert a (s.erase b)

tactic: simp only [mem_erase, mem_insert, and_or_left, this]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s✝ t u v : Finset α
a✝ b✝ a b : α
s : Finset α
h : a ≠ b
x : α
this : x ≠ b ∧ x = a ↔ x = a
⊢ x ∈ (insert a s).erase b ↔ x ∈ insert a (s.erase b)
state_after: no goals
Theorem: Subgroup.center_le_normalizer
File: Mathlib/GroupTheory/Subgroup/Center.lean

tactic: simp [← mem_center_iff.mp hx y, mul_assoc]
state_before: G : Type u_1
inst✝ : Group G
H : Subgroup G
x : G
hx : x ∈ center G
y : G
⊢ y ∈ H ↔ x * y * x⁻¹ ∈ H
state_after: no goals
Theorem: Subsingleton.convexIndependent
File: Mathlib/Analysis/Convex/Independent.lean

tactic: intro s x hx
state_before: 𝕜 : Type u_1
E : Type u_2
ι : Type u_3
inst✝³ : OrderedSemiring 𝕜
inst✝² : AddCommGroup E
inst✝¹ : Module 𝕜 E
s t : Set E
inst✝ : Subsingleton ι
p : ι → E
⊢ ConvexIndependent 𝕜 p
state_after: 𝕜 : Type u_1
E : Type u_2
ι : Type u_3
inst✝³ : OrderedSemiring 𝕜
inst✝² : AddCommGroup E
inst✝¹ : Module 𝕜 E
s✝ t : Set E
inst✝ : Subsingleton ι
p : ι → E
s : Set ι
x : ι
hx : p x ∈ (convexHull 𝕜) (p '' s)
⊢ x ∈ s

tactic: have : (convexHull 𝕜 (p '' s)).Nonempty := ⟨p x, hx⟩
state_before: 𝕜 : Type u_1
E : Type u_2
ι : Type u_3
inst✝³ : OrderedSemiring 𝕜
inst✝² : AddCommGroup E
inst✝¹ : Module 𝕜 E
s✝ t : Set E
inst✝ : Subsingleton ι
p : ι → E
s : Set ι
x : ι
hx : p x ∈ (convexHull 𝕜) (p '' s)
⊢ x ∈ s
state_after: 𝕜 : Type u_1
E : Type u_2
ι : Type u_3
inst✝³ : OrderedSemiring 𝕜
inst✝² : AddCommGroup E
inst✝¹ : Module 𝕜 E
s✝ t : Set E
inst✝ : Subsingleton ι
p : ι → E
s : Set ι
x : ι
hx : p x ∈ (convexHull 𝕜) (p '' s)
this : ((convexHull 𝕜) (p '' s)).Nonempty
⊢ x ∈ s

tactic: rw [convexHull_nonempty_iff, Set.image_nonempty] at this
state_before: 𝕜 : Type u_1
E : Type u_2
ι : Type u_3
inst✝³ : OrderedSemiring 𝕜
inst✝² : AddCommGroup E
inst✝¹ : Module 𝕜 E
s✝ t : Set E
inst✝ : Subsingleton ι
p : ι → E
s : Set ι
x : ι
hx : p x ∈ (convexHull 𝕜) (p '' s)
this : ((convexHull 𝕜) (p '' s)).Nonempty
⊢ x ∈ s
state_after: 𝕜 : Type u_1
E : Type u_2
ι : Type u_3
inst✝³ : OrderedSemiring 𝕜
inst✝² : AddCommGroup E
inst✝¹ : Module 𝕜 E
s✝ t : Set E
inst✝ : Subsingleton ι
p : ι → E
s : Set ι
x : ι
hx : p x ∈ (convexHull 𝕜) (p '' s)
this : s.Nonempty
⊢ x ∈ s

tactic: rwa [Subsingleton.mem_iff_nonempty]
state_before: 𝕜 : Type u_1
E : Type u_2
ι : Type u_3
inst✝³ : OrderedSemiring 𝕜
inst✝² : AddCommGroup E
inst✝¹ : Module 𝕜 E
s✝ t : Set E
inst✝ : Subsingleton ι
p : ι → E
s : Set ι
x : ι
hx : p x ∈ (convexHull 𝕜) (p '' s)
this : s.Nonempty
⊢ x ∈ s
state_after: no goals
Theorem: AddCircle.coe_real_preimage_closedBall_period_zero
File: Mathlib/Analysis/Normed/Group/AddCircle.lean

tactic: ext y
state_before: p x ε : ℝ
⊢ QuotientAddGroup.mk ⁻¹' closedBall (↑x) ε = closedBall x ε
state_after: case h
p x ε y : ℝ
⊢ y ∈ QuotientAddGroup.mk ⁻¹' closedBall (↑x) ε ↔ y ∈ closedBall x ε

tactic: simp only [Set.mem_preimage, dist_eq_norm, AddCircle.norm_eq_of_zero, iff_self,
  ← QuotientAddGroup.mk_sub, Metric.mem_closedBall, Real.norm_eq_abs]
state_before: case h
p x ε y : ℝ
⊢ y ∈ QuotientAddGroup.mk ⁻¹' closedBall (↑x) ε ↔ y ∈ closedBall x ε
state_after: no goals
Theorem: NNRat.divNat_mul_right
File: Mathlib/Data/NNRat/Defs.lean

tactic: ext
state_before: p q : ℚ≥0
n₁ n₂ d₁ d₂ d✝ a : ℕ
ha : a ≠ 0
n d : ℕ
⊢ divNat (n * a) (d * a) = divNat n d
state_after: case a
p q : ℚ≥0
n₁ n₂ d₁ d₂ d✝ a : ℕ
ha : a ≠ 0
n d : ℕ
⊢ ↑(divNat (n * a) (d * a)) = ↑(divNat n d)

tactic: push_cast
state_before: case a
p q : ℚ≥0
n₁ n₂ d₁ d₂ d✝ a : ℕ
ha : a ≠ 0
n d : ℕ
⊢ ↑(divNat (n * a) (d * a)) = ↑(divNat n d)
state_after: case a
p q : ℚ≥0
n₁ n₂ d₁ d₂ d✝ a : ℕ
ha : a ≠ 0
n d : ℕ
⊢ Rat.divInt (↑n * ↑a) (↑d * ↑a) = Rat.divInt ↑n ↑d

tactic: exact Rat.divInt_mul_right (mod_cast ha)
state_before: case a
p q : ℚ≥0
n₁ n₂ d₁ d₂ d✝ a : ℕ
ha : a ≠ 0
n d : ℕ
⊢ Rat.divInt (↑n * ↑a) (↑d * ↑a) = Rat.divInt ↑n ↑d
state_after: no goals
Theorem: WeierstrassCurve.φ_three
File: Mathlib/AlgebraicGeometry/EllipticCurve/DivisionPolynomial/Basic.lean

tactic: erw [φ, ψ_three, ψ_four, mul_assoc, ψ_two, ← sq]
state_before: R : Type r
S : Type s
inst✝¹ : CommRing R
inst✝ : CommRing S
W : WeierstrassCurve R
⊢ W.φ 3 = C X * C W.Ψ₃ ^ 2 - C W.preΨ₄ * W.ψ₂ ^ 2
state_after: no goals
Theorem: Localization.mk_self
File: Mathlib/GroupTheory/MonoidLocalization.lean

tactic: symm
state_before: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
a : ↥S
⊢ mk (↑a) a = 1
state_after: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
a : ↥S
⊢ 1 = mk (↑a) a

tactic: rw [← mk_one, mk_eq_mk_iff]
state_before: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
a : ↥S
⊢ 1 = mk (↑a) a
state_after: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
a : ↥S
⊢ (r S) (1, 1) (↑a, a)

tactic: exact one_rel a
state_before: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
a : ↥S
⊢ (r S) (1, 1) (↑a, a)
state_after: no goals
Theorem: Filter.map₂_pure_right
File: Mathlib/Order/Filter/NAry.lean

tactic: rw [← map_prod_eq_map₂, prod_pure, map_map]
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
m : α → β → γ
f f₁ f₂ : Filter α
g g₁ g₂ : Filter β
h h₁ h₂ : Filter γ
s s₁ s₂ : Set α
t t₁ t₂ : Set β
u : Set γ
v : Set δ
a : α
b : β
c : γ
⊢ map₂ m f (pure b) = map (fun x => m x b) f
state_after: α : 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
m : α → β → γ
f f₁ f₂ : Filter α
g g₁ g₂ : Filter β
h h₁ h₂ : Filter γ
s s₁ s₂ : Set α
t t₁ t₂ : Set β
u : Set γ
v : Set δ
a : α
b : β
c : γ
⊢ map ((fun p => m p.1 p.2) ∘ fun a => (a, b)) f = map (fun x => m x b) f

tactic: rfl
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
m : α → β → γ
f f₁ f₂ : Filter α
g g₁ g₂ : Filter β
h h₁ h₂ : Filter γ
s s₁ s₂ : Set α
t t₁ t₂ : Set β
u : Set γ
v : Set δ
a : α
b : β
c : γ
⊢ map ((fun p => m p.1 p.2) ∘ fun a => (a, b)) f = map (fun x => m x b) f
state_after: no goals
Theorem: Filter.ZeroAtFilter.smul
File: Mathlib/Order/Filter/ZeroAndBoundedAtFilter.lean

tactic: simpa using hf.const_smul c
state_before: 𝕜 : Type u_1
α : Type u_2
β : Type u_3
inst✝⁴ : TopologicalSpace β
inst✝³ : Zero 𝕜
inst✝² : Zero β
inst✝¹ : SMulWithZero 𝕜 β
inst✝ : ContinuousConstSMul 𝕜 β
l : Filter α
f : α → β
c : 𝕜
hf : l.ZeroAtFilter f
⊢ l.ZeroAtFilter (c • f)
state_after: no goals
Theorem: DirSupInacc.union
File: Mathlib/Topology/Order/ScottTopology.lean

tactic: rw [← dirSupClosed_compl, compl_union]
state_before: α : Type u_1
β : Type u_2
inst✝ : Preorder α
s t : Set α
hs : DirSupInacc s
ht : DirSupInacc t
⊢ DirSupInacc (s ∪ t)
state_after: α : Type u_1
β : Type u_2
inst✝ : Preorder α
s t : Set α
hs : DirSupInacc s
ht : DirSupInacc t
⊢ DirSupClosed (sᶜ ∩ tᶜ)

tactic: exact hs.compl.inter ht.compl
state_before: α : Type u_1
β : Type u_2
inst✝ : Preorder α
s t : Set α
hs : DirSupInacc s
ht : DirSupInacc t
⊢ DirSupClosed (sᶜ ∩ tᶜ)
state_after: no goals
Theorem: Metric.lipschitz_infDist
File: Mathlib/Topology/MetricSpace/Closeds.lean

tactic: convert @LipschitzWith.uncurry α (NonemptyCompacts α) ℝ _ _ _
  (fun (x : α) (s : NonemptyCompacts α) => infDist x s) 1 1
  (fun s => lipschitz_infDist_pt ↑s) lipschitz_infDist_set
state_before: α : Type u
inst✝ : MetricSpace α
⊢ LipschitzWith 2 fun p => infDist p.1 ↑p.2
state_after: case h.e'_5
α : Type u
inst✝ : MetricSpace α
⊢ 2 = 1 + 1

tactic: norm_num
state_before: case h.e'_5
α : Type u
inst✝ : MetricSpace α
⊢ 2 = 1 + 1
state_after: no goals
Theorem: exists_lt_subset_ball
File: Mathlib/Topology/MetricSpace/ProperSpace.lean

tactic: rcases le_or_lt r 0 with hr | hr
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝¹ : PseudoMetricSpace α
inst✝ : ProperSpace α
x : α
r : ℝ
s : Set α
hs : IsClosed s
h : s ⊆ ball x r
⊢ ∃ r' < r, s ⊆ ball x r'
state_after: case inl
α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝¹ : PseudoMetricSpace α
inst✝ : ProperSpace α
x : α
r : ℝ
s : Set α
hs : IsClosed s
h : s ⊆ ball x r
hr : r ≤ 0
⊢ ∃ r' < r, s ⊆ ball x r'

case inr
α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝¹ : PseudoMetricSpace α
inst✝ : ProperSpace α
x : α
r : ℝ
s : Set α
hs : IsClosed s
h : s ⊆ ball x r
hr : 0 < r
⊢ ∃ r' < r, s ⊆ ball x r'

tactic: rw [ball_eq_empty.2 hr, subset_empty_iff] at h
state_before: case inl
α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝¹ : PseudoMetricSpace α
inst✝ : ProperSpace α
x : α
r : ℝ
s : Set α
hs : IsClosed s
h : s ⊆ ball x r
hr : r ≤ 0
⊢ ∃ r' < r, s ⊆ ball x r'
state_after: case inl
α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝¹ : PseudoMetricSpace α
inst✝ : ProperSpace α
x : α
r : ℝ
s : Set α
hs : IsClosed s
h : s = ∅
hr : r ≤ 0
⊢ ∃ r' < r, s ⊆ ball x r'

tactic: subst s
state_before: case inl
α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝¹ : PseudoMetricSpace α
inst✝ : ProperSpace α
x : α
r : ℝ
s : Set α
hs : IsClosed s
h : s = ∅
hr : r ≤ 0
⊢ ∃ r' < r, s ⊆ ball x r'
state_after: case inl
α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝¹ : PseudoMetricSpace α
inst✝ : ProperSpace α
x : α
r : ℝ
hr : r ≤ 0
hs : IsClosed ∅
⊢ ∃ r' < r, ∅ ⊆ ball x r'

tactic: exact (exists_lt r).imp fun r' hr' => ⟨hr', empty_subset _⟩
state_before: case inl
α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝¹ : PseudoMetricSpace α
inst✝ : ProperSpace α
x : α
r : ℝ
hr : r ≤ 0
hs : IsClosed ∅
⊢ ∃ r' < r, ∅ ⊆ ball x r'
state_after: no goals

tactic: exact (exists_pos_lt_subset_ball hr hs h).imp fun r' hr' => ⟨hr'.1.2, hr'.2⟩
state_before: case inr
α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝¹ : PseudoMetricSpace α
inst✝ : ProperSpace α
x : α
r : ℝ
s : Set α
hs : IsClosed s
h : s ⊆ ball x r
hr : 0 < r
⊢ ∃ r' < r, s ⊆ ball x r'
state_after: no goals
Theorem: RingHom.RespectsIso.basicOpen_iff_localization
File: Mathlib/AlgebraicGeometry/Morphisms/RingHomProperties.lean

tactic: refine (hP.basicOpen_iff _ _).trans ?_
state_before: P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
hP : RespectsIso P
X Y : Scheme
inst✝¹ : IsAffine X
inst✝ : IsAffine Y
f : X ⟶ Y
r : ↑Γ(Y, ⊤)
⊢ P (Scheme.Γ.map (f ∣_ Y.basicOpen r).op) ↔ P (Localization.awayMap (Scheme.Γ.map f.op) r)
state_after: P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
hP : RespectsIso P
X Y : Scheme
inst✝¹ : IsAffine X
inst✝ : IsAffine Y
f : X ⟶ Y
r : ↑Γ(Y, ⊤)
⊢ P
      (IsLocalization.Away.map (↑Γ(Y, Y.basicOpen r)) (↑Γ(X, X.basicOpen ((Scheme.Γ.map f.op) r))) (Scheme.Γ.map f.op)
        r) ↔
    P (Localization.awayMap (Scheme.Γ.map f.op) r)

tactic: dsimp
state_before: P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
hP : RespectsIso P
X Y : Scheme
inst✝¹ : IsAffine X
inst✝ : IsAffine Y
f : X ⟶ Y
r : ↑Γ(Y, ⊤)
⊢ P
      (IsLocalization.Away.map (↑Γ(Y, Y.basicOpen r)) (↑Γ(X, X.basicOpen ((Scheme.Γ.map f.op) r))) (Scheme.Γ.map f.op)
        r) ↔
    P (Localization.awayMap (Scheme.Γ.map f.op) r)
state_after: P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
hP : RespectsIso P
X Y : Scheme
inst✝¹ : IsAffine X
inst✝ : IsAffine Y
f : X ⟶ Y
r : ↑Γ(Y, ⊤)
⊢ P
      (IsLocalization.Away.map (↑Γ(Y, Y.basicOpen r)) (↑Γ(X, X.basicOpen ((Scheme.Hom.app f ⊤) r))) (Scheme.Hom.app f ⊤)
        r) ↔
    P (Localization.awayMap (Scheme.Hom.app f ⊤) r)

tactic: rw [← hP.is_localization_away_iff]
state_before: P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
hP : RespectsIso P
X Y : Scheme
inst✝¹ : IsAffine X
inst✝ : IsAffine Y
f : X ⟶ Y
r : ↑Γ(Y, ⊤)
⊢ P
      (IsLocalization.Away.map (↑Γ(Y, Y.basicOpen r)) (↑Γ(X, X.basicOpen ((Scheme.Hom.app f ⊤) r))) (Scheme.Hom.app f ⊤)
        r) ↔
    P (Localization.awayMap (Scheme.Hom.app f ⊤) r)
state_after: no goals
Theorem: AbsoluteValue.map_one_of_isLeftRegular
File: Mathlib/Algebra/Order/AbsoluteValue.lean

tactic: simp [← abv.map_mul]
state_before: ι : Type u_1
α : Type u_2
R✝ : Type u_3
S✝ : Type u_4
R : Type u_5
S : Type u_6
inst✝¹ : Semiring R
inst✝ : OrderedSemiring S
abv : AbsoluteValue R S
h : IsLeftRegular (abv 1)
⊢ (fun x => abv 1 * x) (abv 1) = (fun x => abv 1 * x) 1
state_after: no goals