1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: LDL.lowerInv_triangular
File: Mathlib/LinearAlgebra/Matrix/LDL.lean

tactic: rw [←
  @gramSchmidt_triangular 𝕜 (n → 𝕜) _ (_ : _) (InnerProductSpace.ofMatrix hS.transpose) n _ _ _
    i j hij (Pi.basisFun 𝕜 n),
  Pi.basisFun_repr, LDL.lowerInv]
state_before: 𝕜 : Type u_1
inst✝⁴ : RCLike 𝕜
n : Type u_2
inst✝³ : LinearOrder n
inst✝² : IsWellOrder n fun x x_1 => x < x_1
inst✝¹ : LocallyFiniteOrderBot n
S : Matrix n n 𝕜
inst✝ : Fintype n
hS : S.PosDef
i j : n
hij : i < j
⊢ lowerInv hS i j = 0
state_after: no goals
Theorem: Multiset.prod_eq_prod_coe
File: Mathlib/Data/Multiset/Fintype.lean

tactic: congr
state_before: α : Type u_1
inst✝¹ : DecidableEq α
m✝ : Multiset α
inst✝ : CommMonoid α
m : Multiset α
⊢ m.prod = ∏ x : m.ToType, x.fst
state_after: case e_a
α : Type u_1
inst✝¹ : DecidableEq α
m✝ : Multiset α
inst✝ : CommMonoid α
m : Multiset α
⊢ m = map (fun x => x.fst) Finset.univ.val

tactic: erw [map_univ_coe]
state_before: case e_a
α : Type u_1
inst✝¹ : DecidableEq α
m✝ : Multiset α
inst✝ : CommMonoid α
m : Multiset α
⊢ m = map (fun x => x.fst) Finset.univ.val
state_after: no goals
Theorem: ordConnected_iff_upperClosure_inter_lowerClosure
File: Mathlib/Order/UpperLower/Basic.lean

tactic: refine ⟨Set.OrdConnected.upperClosure_inter_lowerClosure, fun h => ?_⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝¹ : Preorder α
inst✝ : Preorder β
s t : Set α
x : α
⊢ s.OrdConnected ↔ ↑(upperClosure s) ∩ ↑(lowerClosure s) = s
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝¹ : Preorder α
inst✝ : Preorder β
s t : Set α
x : α
h : ↑(upperClosure s) ∩ ↑(lowerClosure s) = s
⊢ s.OrdConnected

tactic: rw [← h]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝¹ : Preorder α
inst✝ : Preorder β
s t : Set α
x : α
h : ↑(upperClosure s) ∩ ↑(lowerClosure s) = s
⊢ s.OrdConnected
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝¹ : Preorder α
inst✝ : Preorder β
s t : Set α
x : α
h : ↑(upperClosure s) ∩ ↑(lowerClosure s) = s
⊢ (↑(upperClosure s) ∩ ↑(lowerClosure s)).OrdConnected

tactic: exact (UpperSet.upper _).ordConnected.inter (LowerSet.lower _).ordConnected
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝¹ : Preorder α
inst✝ : Preorder β
s t : Set α
x : α
h : ↑(upperClosure s) ∩ ↑(lowerClosure s) = s
⊢ (↑(upperClosure s) ∩ ↑(lowerClosure s)).OrdConnected
state_after: no goals
Theorem: MeasureTheory.map_eq_withDensity_pdf
File: Mathlib/Probability/Density.lean

tactic: rw [pdf_def, withDensity_rnDeriv_eq _ _ hX.absolutelyContinuous]
state_before: Ω : Type u_1
E : Type u_2
inst✝ : MeasurableSpace E
m : MeasurableSpace Ω
X : Ω → E
ℙ : Measure Ω
μ : autoParam (Measure E) _auto✝
hX : HasPDF X ℙ μ
⊢ map X ℙ = withDensity μ (pdf X ℙ μ)
state_after: no goals
Theorem: Multiset.powersetCard_one
File: Mathlib/Data/Multiset/Powerset.lean

tactic: simp [powersetCard_coe, sublistsLen_one, map_reverse, Function.comp]
state_before: α : Type u_1
s : Multiset α
l : List α
⊢ powersetCard 1 ⟦l⟧ = map singleton ⟦l⟧
state_after: no goals
Theorem: Matroid.freeOn_restrict
File: Mathlib/Data/Matroid/Constructions.lean

tactic: simp [h, eq_freeOn_iff, Subset.rfl]
state_before: α : Type u_1
M : Matroid α
E B I X R J : Set α
h : R ⊆ E
⊢ freeOn E ↾ R = freeOn R
state_after: no goals
Theorem: Equiv.Perm.card_support_prod_list_of_pairwise_disjoint
File: Mathlib/GroupTheory/Perm/Support.lean

tactic: induction' l with a t ih
state_before: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f g : Perm α
l : List (Perm α)
h : List.Pairwise Disjoint l
⊢ l.prod.support.card = (List.map (card ∘ support) l).sum
state_after: case nil
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f g : Perm α
h : List.Pairwise Disjoint []
⊢ [].prod.support.card = (List.map (card ∘ support) []).sum

case cons
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f g a : Perm α
t : List (Perm α)
ih : List.Pairwise Disjoint t → t.prod.support.card = (List.map (card ∘ support) t).sum
h : List.Pairwise Disjoint (a :: t)
⊢ (a :: t).prod.support.card = (List.map (card ∘ support) (a :: t)).sum

tactic: exact card_support_eq_zero.mpr rfl
state_before: case nil
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f g : Perm α
h : List.Pairwise Disjoint []
⊢ [].prod.support.card = (List.map (card ∘ support) []).sum
state_after: no goals

tactic: obtain ⟨ha, ht⟩ := List.pairwise_cons.1 h
state_before: case cons
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f g a : Perm α
t : List (Perm α)
ih : List.Pairwise Disjoint t → t.prod.support.card = (List.map (card ∘ support) t).sum
h : List.Pairwise Disjoint (a :: t)
⊢ (a :: t).prod.support.card = (List.map (card ∘ support) (a :: t)).sum
state_after: case cons.intro
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f g a : Perm α
t : List (Perm α)
ih : List.Pairwise Disjoint t → t.prod.support.card = (List.map (card ∘ support) t).sum
h : List.Pairwise Disjoint (a :: t)
ha : ∀ a' ∈ t, a.Disjoint a'
ht : List.Pairwise Disjoint t
⊢ (a :: t).prod.support.card = (List.map (card ∘ support) (a :: t)).sum

tactic: rw [List.prod_cons, List.map_cons, List.sum_cons, ← ih ht]
state_before: case cons.intro
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f g a : Perm α
t : List (Perm α)
ih : List.Pairwise Disjoint t → t.prod.support.card = (List.map (card ∘ support) t).sum
h : List.Pairwise Disjoint (a :: t)
ha : ∀ a' ∈ t, a.Disjoint a'
ht : List.Pairwise Disjoint t
⊢ (a :: t).prod.support.card = (List.map (card ∘ support) (a :: t)).sum
state_after: case cons.intro
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f g a : Perm α
t : List (Perm α)
ih : List.Pairwise Disjoint t → t.prod.support.card = (List.map (card ∘ support) t).sum
h : List.Pairwise Disjoint (a :: t)
ha : ∀ a' ∈ t, a.Disjoint a'
ht : List.Pairwise Disjoint t
⊢ (a * t.prod).support.card = (card ∘ support) a + t.prod.support.card

tactic: exact (disjoint_prod_right _ ha).card_support_mul
state_before: case cons.intro
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f g a : Perm α
t : List (Perm α)
ih : List.Pairwise Disjoint t → t.prod.support.card = (List.map (card ∘ support) t).sum
h : List.Pairwise Disjoint (a :: t)
ha : ∀ a' ∈ t, a.Disjoint a'
ht : List.Pairwise Disjoint t
⊢ (a * t.prod).support.card = (card ∘ support) a + t.prod.support.card
state_after: no goals
Theorem: IsMetricSeparated.finite_iUnion_left_iff
File: Mathlib/Topology/MetricSpace/MetricSeparated.lean

tactic: refine Finite.induction_on hI (by simp) @fun i I _ _ hI => ?_
state_before: X : Type u_1
inst✝ : EMetricSpace X
s✝ t✝ : Set X
x y : X
ι : Type u_2
I : Set ι
hI : I.Finite
s : ι → Set X
t : Set X
⊢ IsMetricSeparated (⋃ i ∈ I, s i) t ↔ ∀ i ∈ I, IsMetricSeparated (s i) t
state_after: X : Type u_1
inst✝ : EMetricSpace X
s✝ t✝ : Set X
x y : X
ι : Type u_2
I✝ : Set ι
hI✝ : I✝.Finite
s : ι → Set X
t : Set X
i : ι
I : Set ι
x✝¹ : i ∉ I
x✝ : I.Finite
hI : IsMetricSeparated (⋃ i ∈ I, s i) t ↔ ∀ i ∈ I, IsMetricSeparated (s i) t
⊢ IsMetricSeparated (⋃ i_1 ∈ insert i I, s i_1) t ↔ ∀ i_1 ∈ insert i I, IsMetricSeparated (s i_1) t

tactic: rw [biUnion_insert, forall_mem_insert, union_left_iff, hI]
state_before: X : Type u_1
inst✝ : EMetricSpace X
s✝ t✝ : Set X
x y : X
ι : Type u_2
I✝ : Set ι
hI✝ : I✝.Finite
s : ι → Set X
t : Set X
i : ι
I : Set ι
x✝¹ : i ∉ I
x✝ : I.Finite
hI : IsMetricSeparated (⋃ i ∈ I, s i) t ↔ ∀ i ∈ I, IsMetricSeparated (s i) t
⊢ IsMetricSeparated (⋃ i_1 ∈ insert i I, s i_1) t ↔ ∀ i_1 ∈ insert i I, IsMetricSeparated (s i_1) t
state_after: no goals

tactic: simp
state_before: X : Type u_1
inst✝ : EMetricSpace X
s✝ t✝ : Set X
x y : X
ι : Type u_2
I : Set ι
hI : I.Finite
s : ι → Set X
t : Set X
⊢ IsMetricSeparated (⋃ i ∈ ∅, s i) t ↔ ∀ i ∈ ∅, IsMetricSeparated (s i) t
state_after: no goals
Theorem: padicValRat.pow
File: Mathlib/NumberTheory/Padics/PadicVal.lean

tactic: induction k <;>
  simp [*, padicValRat.mul hq (pow_ne_zero _ hq), _root_.pow_succ', add_mul, add_comm]
state_before: p : ℕ
hp : Fact (Nat.Prime p)
q : ℚ
hq : q ≠ 0
k : ℕ
⊢ padicValRat p (q ^ k) = ↑k * padicValRat p q
state_after: no goals
Theorem: Filter.Germ.isConstant_comp
File: Mathlib/Order/Filter/Germ.lean

tactic: obtain ⟨b, hb⟩ := h
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
l✝ : Filter α
f✝ g✝ h✝ : α → β
l : Filter α
f : α → β
g : β → γ
h : (↑f).IsConstant
⊢ (↑(g ∘ f)).IsConstant
state_after: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
l✝ : Filter α
f✝ g✝ h : α → β
l : Filter α
f : α → β
g : β → γ
b : β
hb : f =ᶠ[l] fun x => b
⊢ (↑(g ∘ f)).IsConstant

tactic: exact ⟨g b, hb.fun_comp g⟩
state_before: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
l✝ : Filter α
f✝ g✝ h : α → β
l : Filter α
f : α → β
g : β → γ
b : β
hb : f =ᶠ[l] fun x => b
⊢ (↑(g ∘ f)).IsConstant
state_after: no goals
Theorem: FractionalIdeal.num_zero_eq
File: Mathlib/RingTheory/FractionalIdeal/Basic.lean

tactic: simpa [num, LinearMap.ker_eq_bot] using h_inj
state_before: R : Type u_1
inst✝² : CommRing R
S : Submonoid R
P : Type u_2
inst✝¹ : CommRing P
inst✝ : Algebra R P
loc : IsLocalization S P
h_inj : Function.Injective ⇑(algebraMap R P)
⊢ num 0 = 0
state_after: no goals
Theorem: SimpleGraph.Walk.reverse_map
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: induction p <;> simp [map_append, *]
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
f : G →g G'
f' : G' →g G''
u v u' v' : V
p : G.Walk u v
⊢ (Walk.map f p).reverse = Walk.map f p.reverse
state_after: no goals
Theorem: left_eq_mul₀
File: Mathlib/Algebra/GroupWithZero/Basic.lean

tactic: rw [eq_comm, mul_eq_left₀ ha]
state_before: α : Type u_1
M₀ : Type u_2
G₀ : Type u_3
M₀' : Type u_4
G₀' : Type u_5
F : Type u_6
F' : Type u_7
inst✝ : CancelMonoidWithZero M₀
a b c : M₀
ha : a ≠ 0
⊢ a = a * b ↔ b = 1
state_after: no goals
Theorem: ZMod.prime_ne_zero
File: Mathlib/Data/ZMod/Basic.lean

tactic: rwa [← Nat.cast_zero, Ne, eq_iff_modEq_nat, Nat.modEq_zero_iff_dvd, ←
  hp.1.coprime_iff_not_dvd, Nat.coprime_primes hp.1 hq.1]
state_before: p q : ℕ
hp : Fact (Nat.Prime p)
hq : Fact (Nat.Prime q)
hpq : p ≠ q
⊢ ↑q ≠ 0
state_after: no goals
Theorem: DirichletCharacter.FactorsThrough.existsUnique
File: Mathlib/NumberTheory/DirichletCharacter/Basic.lean

tactic: rcases h with ⟨hd, χ₂, rfl⟩
state_before: R : Type u_1
inst✝¹ : CommMonoidWithZero R
n : ℕ
χ : DirichletCharacter R n
d : ℕ
inst✝ : NeZero n
h : χ.FactorsThrough d
⊢ ∃! χ', χ = (changeLevel ⋯) χ'
state_after: case intro.intro
R : Type u_1
inst✝¹ : CommMonoidWithZero R
n d : ℕ
inst✝ : NeZero n
hd : d ∣ n
χ₂ : DirichletCharacter R d
⊢ ∃! χ', (changeLevel hd) χ₂ = (changeLevel ⋯) χ'

tactic: exact ⟨χ₂, rfl, fun χ₃ hχ₃ ↦ (changeLevel_injective hd hχ₃).symm⟩
state_before: case intro.intro
R : Type u_1
inst✝¹ : CommMonoidWithZero R
n d : ℕ
inst✝ : NeZero n
hd : d ∣ n
χ₂ : DirichletCharacter R d
⊢ ∃! χ', (changeLevel hd) χ₂ = (changeLevel ⋯) χ'
state_after: no goals
Theorem: Filter.Frequently.and_eventually
File: Mathlib/Order/Filter/Basic.lean

tactic: refine mt (fun h => hq.mp <| h.mono ?_) hp
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
p q : α → Prop
f : Filter α
hp : ∃ᶠ (x : α) in f, p x
hq : ∀ᶠ (x : α) in f, q x
⊢ ∃ᶠ (x : α) in f, p x ∧ q x
state_after: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
p q : α → Prop
f : Filter α
hp : ∃ᶠ (x : α) in f, p x
hq : ∀ᶠ (x : α) in f, q x
h : ∀ᶠ (x : α) in f, ¬(fun x => p x ∧ q x) x
⊢ ∀ (x : α), ¬(fun x => p x ∧ q x) x → q x → ¬(fun x => p x) x

tactic: exact fun x hpq hq hp => hpq ⟨hp, hq⟩
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
p q : α → Prop
f : Filter α
hp : ∃ᶠ (x : α) in f, p x
hq : ∀ᶠ (x : α) in f, q x
h : ∀ᶠ (x : α) in f, ¬(fun x => p x ∧ q x) x
⊢ ∀ (x : α), ¬(fun x => p x ∧ q x) x → q x → ¬(fun x => p x) x
state_after: no goals
Theorem: Subsemigroup.mem_center_iff
File: Mathlib/GroupTheory/Subsemigroup/Center.lean

tactic: rw [← Semigroup.mem_center_iff]
state_before: M : Type u_1
inst✝ : Semigroup M
z : M
⊢ z ∈ center M ↔ ∀ (g : M), g * z = z * g
state_after: M : Type u_1
inst✝ : Semigroup M
z : M
⊢ z ∈ center M ↔ z ∈ Set.center M

tactic: exact Iff.rfl
state_before: M : Type u_1
inst✝ : Semigroup M
z : M
⊢ z ∈ center M ↔ z ∈ Set.center M
state_after: no goals
Theorem: Filter.Eventually.diag_of_prod_left
File: Mathlib/Order/Filter/Prod.lean

tactic: intro h
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
s : Set α
t : Set β
f✝ : Filter α
g✝ : Filter β
f : Filter α
g : Filter γ
p : (α × α) × γ → Prop
⊢ (∀ᶠ (x : (α × α) × γ) in (f ×ˢ f) ×ˢ g, p x) → ∀ᶠ (x : α × γ) in f ×ˢ g, p ((x.1, x.1), x.2)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
s : Set α
t : Set β
f✝ : Filter α
g✝ : Filter β
f : Filter α
g : Filter γ
p : (α × α) × γ → Prop
h : ∀ᶠ (x : (α × α) × γ) in (f ×ˢ f) ×ˢ g, p x
⊢ ∀ᶠ (x : α × γ) in f ×ˢ g, p ((x.1, x.1), x.2)

tactic: obtain ⟨t, ht, s, hs, hst⟩ := eventually_prod_iff.1 h
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
s : Set α
t : Set β
f✝ : Filter α
g✝ : Filter β
f : Filter α
g : Filter γ
p : (α × α) × γ → Prop
h : ∀ᶠ (x : (α × α) × γ) in (f ×ˢ f) ×ˢ g, p x
⊢ ∀ᶠ (x : α × γ) in f ×ˢ g, p ((x.1, x.1), x.2)
state_after: case intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
s✝ : Set α
t✝ : Set β
f✝ : Filter α
g✝ : Filter β
f : Filter α
g : Filter γ
p : (α × α) × γ → Prop
h : ∀ᶠ (x : (α × α) × γ) in (f ×ˢ f) ×ˢ g, p x
t : α × α → Prop
ht : ∀ᶠ (x : α × α) in f ×ˢ f, t x
s : γ → Prop
hs : ∀ᶠ (y : γ) in g, s y
hst : ∀ {x : α × α}, t x → ∀ {y : γ}, s y → p (x, y)
⊢ ∀ᶠ (x : α × γ) in f ×ˢ g, p ((x.1, x.1), x.2)

tactic: exact (ht.diag_of_prod.prod_mk hs).mono fun x hx => by simp only [hst hx.1 hx.2]
state_before: case intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
s✝ : Set α
t✝ : Set β
f✝ : Filter α
g✝ : Filter β
f : Filter α
g : Filter γ
p : (α × α) × γ → Prop
h : ∀ᶠ (x : (α × α) × γ) in (f ×ˢ f) ×ˢ g, p x
t : α × α → Prop
ht : ∀ᶠ (x : α × α) in f ×ˢ f, t x
s : γ → Prop
hs : ∀ᶠ (y : γ) in g, s y
hst : ∀ {x : α × α}, t x → ∀ {y : γ}, s y → p (x, y)
⊢ ∀ᶠ (x : α × γ) in f ×ˢ g, p ((x.1, x.1), x.2)
state_after: no goals

tactic: simp only [hst hx.1 hx.2]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
s✝ : Set α
t✝ : Set β
f✝ : Filter α
g✝ : Filter β
f : Filter α
g : Filter γ
p : (α × α) × γ → Prop
h : ∀ᶠ (x : (α × α) × γ) in (f ×ˢ f) ×ˢ g, p x
t : α × α → Prop
ht : ∀ᶠ (x : α × α) in f ×ˢ f, t x
s : γ → Prop
hs : ∀ᶠ (y : γ) in g, s y
hst : ∀ {x : α × α}, t x → ∀ {y : γ}, s y → p (x, y)
x : α × γ
hx : t (x.1, x.1) ∧ s x.2
⊢ p ((x.1, x.1), x.2)
state_after: no goals
Theorem: MeasureTheory.L1.setToFun_eq_setToL1
File: Mathlib/MeasureTheory/Integral/SetToL1.lean

tactic: rw [setToFun_eq hT (L1.integrable_coeFn f), Integrable.toL1_coeFn]
state_before: α : Type u_1
E : Type u_2
F : Type u_3
F' : Type u_4
G : Type u_5
𝕜 : Type u_6
p : ℝ≥0∞
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
inst✝³ : NormedAddCommGroup F'
inst✝² : NormedSpace ℝ F'
inst✝¹ : NormedAddCommGroup G
m : MeasurableSpace α
μ : Measure α
inst✝ : CompleteSpace F
T T' T'' : Set α → E →L[ℝ] F
C C' C'' : ℝ
f✝ g : α → E
hT : DominatedFinMeasAdditive μ T C
f : ↥(Lp E 1 μ)
⊢ setToFun μ T hT ↑↑f = (setToL1 hT) f
state_after: no goals
Theorem: WfDvdMonoid.of_wellFounded_associates
File: Mathlib/RingTheory/UniqueFactorizationDomain.lean

tactic: convert h
state_before: α : Type u_1
inst✝ : CancelCommMonoidWithZero α
h : WellFounded fun x x_1 => x < x_1
⊢ WellFounded DvdNotUnit
state_after: case h.e'_2.h.h.h.e
α : Type u_1
inst✝ : CancelCommMonoidWithZero α
h : WellFounded fun x x_1 => x < x_1
x✝¹ x✝ : Associates α
⊢ DvdNotUnit = LT.lt

tactic: ext
state_before: case h.e'_2.h.h.h.e
α : Type u_1
inst✝ : CancelCommMonoidWithZero α
h : WellFounded fun x x_1 => x < x_1
x✝¹ x✝ : Associates α
⊢ DvdNotUnit = LT.lt
state_after: case h.e'_2.h.h.h.e.h.h.a
α : Type u_1
inst✝ : CancelCommMonoidWithZero α
h : WellFounded fun x x_1 => x < x_1
x✝³ x✝² x✝¹ x✝ : Associates α
⊢ DvdNotUnit x✝¹ x✝ ↔ x✝¹ < x✝

tactic: exact Associates.dvdNotUnit_iff_lt
state_before: case h.e'_2.h.h.h.e.h.h.a
α : Type u_1
inst✝ : CancelCommMonoidWithZero α
h : WellFounded fun x x_1 => x < x_1
x✝³ x✝² x✝¹ x✝ : Associates α
⊢ DvdNotUnit x✝¹ x✝ ↔ x✝¹ < x✝
state_after: no goals
Theorem: WeierstrassCurve.Affine.CoordinateRing.map_injective
File: Mathlib/AlgebraicGeometry/EllipticCurve/Group.lean

tactic: obtain ⟨p, q, rfl⟩ := exists_smul_basis_eq y
state_before: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
W : Affine R
f : R →+* S
hf : Function.Injective ⇑f
y : W.CoordinateRing
hy : (map W f) y = 0
⊢ y = 0
state_after: case intro.intro
R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
W : Affine R
f : R →+* S
hf : Function.Injective ⇑f
p q : R[X]
hy : (map W f) (p • 1 + q • (mk W) Y) = 0
⊢ p • 1 + q • (mk W) Y = 0

tactic: simp_rw [map_add, CoordinateRing.map_smul, map_one, map_mk, map_X] at hy
state_before: case intro.intro
R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
W : Affine R
f : R →+* S
hf : Function.Injective ⇑f
p q : R[X]
hy : (map W f) (p • 1 + q • (mk W) Y) = 0
⊢ p • 1 + q • (mk W) Y = 0
state_after: case intro.intro
R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
W : Affine R
f : R →+* S
hf : Function.Injective ⇑f
p q : R[X]
hy : Polynomial.map f p • 1 + Polynomial.map f q • (mk (WeierstrassCurve.map W f)) Y = 0
⊢ p • 1 + q • (mk W) Y = 0

tactic: obtain ⟨hp, hq⟩ := smul_basis_eq_zero hy
state_before: case intro.intro
R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
W : Affine R
f : R →+* S
hf : Function.Injective ⇑f
p q : R[X]
hy : Polynomial.map f p • 1 + Polynomial.map f q • (mk (WeierstrassCurve.map W f)) Y = 0
⊢ p • 1 + q • (mk W) Y = 0
state_after: case intro.intro.intro
R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
W : Affine R
f : R →+* S
hf : Function.Injective ⇑f
p q : R[X]
hy : Polynomial.map f p • 1 + Polynomial.map f q • (mk (WeierstrassCurve.map W f)) Y = 0
hp : Polynomial.map f p = 0
hq : Polynomial.map f q = 0
⊢ p • 1 + q • (mk W) Y = 0

tactic: rw [Polynomial.map_eq_zero_iff hf] at hp hq
state_before: case intro.intro.intro
R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
W : Affine R
f : R →+* S
hf : Function.Injective ⇑f
p q : R[X]
hy : Polynomial.map f p • 1 + Polynomial.map f q • (mk (WeierstrassCurve.map W f)) Y = 0
hp : Polynomial.map f p = 0
hq : Polynomial.map f q = 0
⊢ p • 1 + q • (mk W) Y = 0
state_after: case intro.intro.intro
R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
W : Affine R
f : R →+* S
hf : Function.Injective ⇑f
p q : R[X]
hy : Polynomial.map f p • 1 + Polynomial.map f q • (mk (WeierstrassCurve.map W f)) Y = 0
hp : p = 0
hq : q = 0
⊢ p • 1 + q • (mk W) Y = 0

tactic: simp_rw [hp, hq, zero_smul, add_zero]
state_before: case intro.intro.intro
R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
W : Affine R
f : R →+* S
hf : Function.Injective ⇑f
p q : R[X]
hy : Polynomial.map f p • 1 + Polynomial.map f q • (mk (WeierstrassCurve.map W f)) Y = 0
hp : p = 0
hq : q = 0
⊢ p • 1 + q • (mk W) Y = 0
state_after: no goals
Theorem: Real.tendsto_tan_pi_div_two
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

tactic: convert tendsto_cos_pi_div_two.inv_tendsto_zero.atTop_mul zero_lt_one tendsto_sin_pi_div_two
  using 1
state_before: ⊢ Tendsto tan (𝓝[<] (π / 2)) atTop
state_after: case h.e'_3

⊢ tan = fun x => cos⁻¹ x * sin x

tactic: simp only [Pi.inv_apply, ← div_eq_inv_mul, ← tan_eq_sin_div_cos]
state_before: case h.e'_3

⊢ tan = fun x => cos⁻¹ x * sin x
state_after: no goals
Theorem: BoxIntegral.Prepartition.restrict_boxes_of_le
File: Mathlib/Analysis/BoxIntegral/Partition/Basic.lean

tactic: simp only [restrict, ofWithBot, eraseNone_eq_biUnion]
state_before: ι : Type u_1
I J J₁ J₂ : Box ι
π✝ π₁ π₂ : Prepartition I
x : ι → ℝ
πi πi₁ πi₂ : (J : Box ι) → Prepartition J
π : Prepartition I
h : I ≤ J
⊢ (π.restrict J).boxes = π.boxes
state_after: ι : Type u_1
I J J₁ J₂ : Box ι
π✝ π₁ π₂ : Prepartition I
x : ι → ℝ
πi πi₁ πi₂ : (J : Box ι) → Prepartition J
π : Prepartition I
h : I ≤ J
⊢ (Finset.image (fun J' => ↑J ⊓ ↑J') π.boxes).biUnion Option.toFinset = π.boxes

tactic: refine Finset.image_biUnion.trans ?_
state_before: ι : Type u_1
I J J₁ J₂ : Box ι
π✝ π₁ π₂ : Prepartition I
x : ι → ℝ
πi πi₁ πi₂ : (J : Box ι) → Prepartition J
π : Prepartition I
h : I ≤ J
⊢ (Finset.image (fun J' => ↑J ⊓ ↑J') π.boxes).biUnion Option.toFinset = π.boxes
state_after: ι : Type u_1
I J J₁ J₂ : Box ι
π✝ π₁ π₂ : Prepartition I
x : ι → ℝ
πi πi₁ πi₂ : (J : Box ι) → Prepartition J
π : Prepartition I
h : I ≤ J
⊢ (π.boxes.biUnion fun a => Option.toFinset (↑J ⊓ ↑a)) = π.boxes

tactic: refine (Finset.biUnion_congr rfl ?_).trans Finset.biUnion_singleton_eq_self
state_before: ι : Type u_1
I J J₁ J₂ : Box ι
π✝ π₁ π₂ : Prepartition I
x : ι → ℝ
πi πi₁ πi₂ : (J : Box ι) → Prepartition J
π : Prepartition I
h : I ≤ J
⊢ (π.boxes.biUnion fun a => Option.toFinset (↑J ⊓ ↑a)) = π.boxes
state_after: ι : Type u_1
I J J₁ J₂ : Box ι
π✝ π₁ π₂ : Prepartition I
x : ι → ℝ
πi πi₁ πi₂ : (J : Box ι) → Prepartition J
π : Prepartition I
h : I ≤ J
⊢ ∀ a ∈ π.boxes, Option.toFinset (↑J ⊓ ↑a) = {a}

tactic: intro J' hJ'
state_before: ι : Type u_1
I J J₁ J₂ : Box ι
π✝ π₁ π₂ : Prepartition I
x : ι → ℝ
πi πi₁ πi₂ : (J : Box ι) → Prepartition J
π : Prepartition I
h : I ≤ J
⊢ ∀ a ∈ π.boxes, Option.toFinset (↑J ⊓ ↑a) = {a}
state_after: ι : Type u_1
I J J₁ J₂ : Box ι
π✝ π₁ π₂ : Prepartition I
x : ι → ℝ
πi πi₁ πi₂ : (J : Box ι) → Prepartition J
π : Prepartition I
h : I ≤ J
J' : Box ι
hJ' : J' ∈ π.boxes
⊢ Option.toFinset (↑J ⊓ ↑J') = {J'}

tactic: rw [inf_of_le_right, ← WithBot.some_eq_coe, Option.toFinset_some]
state_before: ι : Type u_1
I J J₁ J₂ : Box ι
π✝ π₁ π₂ : Prepartition I
x : ι → ℝ
πi πi₁ πi₂ : (J : Box ι) → Prepartition J
π : Prepartition I
h : I ≤ J
J' : Box ι
hJ' : J' ∈ π.boxes
⊢ Option.toFinset (↑J ⊓ ↑J') = {J'}
state_after: ι : Type u_1
I J J₁ J₂ : Box ι
π✝ π₁ π₂ : Prepartition I
x : ι → ℝ
πi πi₁ πi₂ : (J : Box ι) → Prepartition J
π : Prepartition I
h : I ≤ J
J' : Box ι
hJ' : J' ∈ π.boxes
⊢ ↑J' ≤ ↑J

tactic: exact WithBot.coe_le_coe.2 ((π.le_of_mem hJ').trans h)
state_before: ι : Type u_1
I J J₁ J₂ : Box ι
π✝ π₁ π₂ : Prepartition I
x : ι → ℝ
πi πi₁ πi₂ : (J : Box ι) → Prepartition J
π : Prepartition I
h : I ≤ J
J' : Box ι
hJ' : J' ∈ π.boxes
⊢ ↑J' ≤ ↑J
state_after: no goals
Theorem: DFinsupp.comapDomain'_add
File: Mathlib/Data/DFinsupp/Basic.lean

tactic: ext
state_before: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝¹ : DecidableEq ι
κ : Type u_1
inst✝ : (i : ι) → AddZeroClass (β i)
h : κ → ι
h' : ι → κ
hh' : Function.LeftInverse h' h
f g : Π₀ (i : ι), β i
⊢ comapDomain' h hh' (f + g) = comapDomain' h hh' f + comapDomain' h hh' g
state_after: case h
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝¹ : DecidableEq ι
κ : Type u_1
inst✝ : (i : ι) → AddZeroClass (β i)
h : κ → ι
h' : ι → κ
hh' : Function.LeftInverse h' h
f g : Π₀ (i : ι), β i
i✝ : κ
⊢ (comapDomain' h hh' (f + g)) i✝ = (comapDomain' h hh' f + comapDomain' h hh' g) i✝

tactic: rw [add_apply, comapDomain'_apply, comapDomain'_apply, comapDomain'_apply, add_apply]
state_before: case h
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝¹ : DecidableEq ι
κ : Type u_1
inst✝ : (i : ι) → AddZeroClass (β i)
h : κ → ι
h' : ι → κ
hh' : Function.LeftInverse h' h
f g : Π₀ (i : ι), β i
i✝ : κ
⊢ (comapDomain' h hh' (f + g)) i✝ = (comapDomain' h hh' f + comapDomain' h hh' g) i✝
state_after: no goals
Theorem: Set.wellFoundedOn_univ
File: Mathlib/Order/WellFoundedSet.lean

tactic: simp [wellFoundedOn_iff]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
π : ι → Type u_5
r r' : α → α → Prop
f : β → α
s t : Set α
x y : α
⊢ univ.WellFoundedOn r ↔ WellFounded r
state_after: no goals