1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Besicovitch.SatelliteConfig.inter'
File: Mathlib/MeasureTheory/Covering/Besicovitch.lean

tactic: rcases lt_or_le i (last N) with (H | H)
state_before: α : Type u_1
inst✝ : MetricSpace α
N : ℕ
τ : ℝ
a : SatelliteConfig α N τ
i : Fin N.succ
⊢ dist (a.c i) (a.c (last N)) ≤ a.r i + a.r (last N)
state_after: case inl
α : Type u_1
inst✝ : MetricSpace α
N : ℕ
τ : ℝ
a : SatelliteConfig α N τ
i : Fin N.succ
H : i < last N
⊢ dist (a.c i) (a.c (last N)) ≤ a.r i + a.r (last N)

case inr
α : Type u_1
inst✝ : MetricSpace α
N : ℕ
τ : ℝ
a : SatelliteConfig α N τ
i : Fin N.succ
H : last N ≤ i
⊢ dist (a.c i) (a.c (last N)) ≤ a.r i + a.r (last N)

tactic: exact a.inter i H
state_before: case inl
α : Type u_1
inst✝ : MetricSpace α
N : ℕ
τ : ℝ
a : SatelliteConfig α N τ
i : Fin N.succ
H : i < last N
⊢ dist (a.c i) (a.c (last N)) ≤ a.r i + a.r (last N)
state_after: no goals

tactic: have I : i = last N := top_le_iff.1 H
state_before: case inr
α : Type u_1
inst✝ : MetricSpace α
N : ℕ
τ : ℝ
a : SatelliteConfig α N τ
i : Fin N.succ
H : last N ≤ i
⊢ dist (a.c i) (a.c (last N)) ≤ a.r i + a.r (last N)
state_after: case inr
α : Type u_1
inst✝ : MetricSpace α
N : ℕ
τ : ℝ
a : SatelliteConfig α N τ
i : Fin N.succ
H : last N ≤ i
I : i = last N
⊢ dist (a.c i) (a.c (last N)) ≤ a.r i + a.r (last N)

tactic: have := (a.rpos (last N)).le
state_before: case inr
α : Type u_1
inst✝ : MetricSpace α
N : ℕ
τ : ℝ
a : SatelliteConfig α N τ
i : Fin N.succ
H : last N ≤ i
I : i = last N
⊢ dist (a.c i) (a.c (last N)) ≤ a.r i + a.r (last N)
state_after: case inr
α : Type u_1
inst✝ : MetricSpace α
N : ℕ
τ : ℝ
a : SatelliteConfig α N τ
i : Fin N.succ
H : last N ≤ i
I : i = last N
this : 0 ≤ a.r (last N)
⊢ dist (a.c i) (a.c (last N)) ≤ a.r i + a.r (last N)

tactic: simp only [I, add_nonneg this this, dist_self]
state_before: case inr
α : Type u_1
inst✝ : MetricSpace α
N : ℕ
τ : ℝ
a : SatelliteConfig α N τ
i : Fin N.succ
H : last N ≤ i
I : i = last N
this : 0 ≤ a.r (last N)
⊢ dist (a.c i) (a.c (last N)) ≤ a.r i + a.r (last N)
state_after: no goals
Theorem: toIcoMod_eq_sub
File: Mathlib/Algebra/Order/ToIntervalMod.lean

tactic: rw [toIcoMod_sub_eq_sub, zero_add, sub_add_cancel]
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a✝ b✝ c : α
n : ℤ
a b : α
⊢ toIcoMod hp a b = toIcoMod hp 0 (b - a) + a
state_after: no goals
Theorem: rtendsto'_nhds
File: Mathlib/Topology/Partial.lean

tactic: rw [rtendsto'_def]
state_before: X : Type u_1
Y : Type u_2
inst✝ : TopologicalSpace X
r : Rel Y X
l : Filter Y
x : X
⊢ RTendsto' r l (𝓝 x) ↔ ∀ (s : Set X), IsOpen s → x ∈ s → r.preimage s ∈ l
state_after: X : Type u_1
Y : Type u_2
inst✝ : TopologicalSpace X
r : Rel Y X
l : Filter Y
x : X
⊢ (∀ s ∈ 𝓝 x, r.preimage s ∈ l) ↔ ∀ (s : Set X), IsOpen s → x ∈ s → r.preimage s ∈ l

tactic: apply all_mem_nhds_filter
state_before: X : Type u_1
Y : Type u_2
inst✝ : TopologicalSpace X
r : Rel Y X
l : Filter Y
x : X
⊢ (∀ s ∈ 𝓝 x, r.preimage s ∈ l) ↔ ∀ (s : Set X), IsOpen s → x ∈ s → r.preimage s ∈ l
state_after: case hf
X : Type u_1
Y : Type u_2
inst✝ : TopologicalSpace X
r : Rel Y X
l : Filter Y
x : X
⊢ ∀ (s t : Set X), s ⊆ t → r.preimage s ⊆ r.preimage t

tactic: apply Rel.preimage_mono
state_before: case hf
X : Type u_1
Y : Type u_2
inst✝ : TopologicalSpace X
r : Rel Y X
l : Filter Y
x : X
⊢ ∀ (s t : Set X), s ⊆ t → r.preimage s ⊆ r.preimage t
state_after: no goals
Theorem: compl_compl_inf_distrib
File: Mathlib/Order/Heyting/Basic.lean

tactic: refine ((compl_anti compl_sup_compl_le).trans (compl_sup_distrib _ _).le).antisymm ?_
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : HeytingAlgebra α
a✝ b✝ c a b : α
⊢ (a ⊓ b)ᶜᶜ = aᶜᶜ ⊓ bᶜᶜ
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : HeytingAlgebra α
a✝ b✝ c a b : α
⊢ aᶜᶜ ⊓ bᶜᶜ ≤ (a ⊓ b)ᶜᶜ

tactic: rw [le_compl_iff_disjoint_right, disjoint_assoc, disjoint_compl_compl_left_iff,
  disjoint_left_comm, disjoint_compl_compl_left_iff, ← disjoint_assoc, inf_comm]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : HeytingAlgebra α
a✝ b✝ c a b : α
⊢ aᶜᶜ ⊓ bᶜᶜ ≤ (a ⊓ b)ᶜᶜ
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : HeytingAlgebra α
a✝ b✝ c a b : α
⊢ Disjoint (a ⊓ b) (a ⊓ b)ᶜ

tactic: exact disjoint_compl_right
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : HeytingAlgebra α
a✝ b✝ c a b : α
⊢ Disjoint (a ⊓ b) (a ⊓ b)ᶜ
state_after: no goals
Theorem: MeasureTheory.measure_ne_zero_iff_nonempty_of_isMulLeftInvariant
File: Mathlib/MeasureTheory/Group/Measure.lean

tactic: simpa [null_iff_of_isMulLeftInvariant (μ := μ) hs, hμ] using nonempty_iff_ne_empty.symm
state_before: 𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁷ : MeasurableSpace G
inst✝⁶ : MeasurableSpace H
inst✝⁵ : TopologicalSpace G
inst✝⁴ : BorelSpace G
μ : Measure G
inst✝³ : Group G
inst✝² : TopologicalGroup G
inst✝¹ : μ.IsMulLeftInvariant
inst✝ : μ.Regular
hμ : μ ≠ 0
s : Set G
hs : IsOpen s
⊢ μ s ≠ 0 ↔ s.Nonempty
state_after: no goals
Theorem: Function.graph_id
File: Mathlib/Data/Rel.lean

tactic: simp  (config := { unfoldPartialApp := true }) [graph]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
⊢ graph id = Eq
state_after: no goals
Theorem: Set.sep_infs_le
File: Mathlib/Data/Set/Sups.lean

tactic: ext
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝³ : SemilatticeInf α
inst✝² : SemilatticeInf β
inst✝¹ : FunLike F α β
inst✝ : InfHomClass F α β
s✝ s₁ s₂ t✝ t₁ t₂ u v : Set α
a✝ b c : α
s t : Set α
a : α
⊢ {b | b ∈ s ⊼ t ∧ a ≤ b} = {b | b ∈ s ∧ a ≤ b} ⊼ {b | b ∈ t ∧ a ≤ b}
state_after: case h
F : Type u_1
α : Type u_2
β : Type u_3
inst✝³ : SemilatticeInf α
inst✝² : SemilatticeInf β
inst✝¹ : FunLike F α β
inst✝ : InfHomClass F α β
s✝ s₁ s₂ t✝ t₁ t₂ u v : Set α
a✝ b c : α
s t : Set α
a x✝ : α
⊢ x✝ ∈ {b | b ∈ s ⊼ t ∧ a ≤ b} ↔ x✝ ∈ {b | b ∈ s ∧ a ≤ b} ⊼ {b | b ∈ t ∧ a ≤ b}

tactic: aesop
state_before: case h
F : Type u_1
α : Type u_2
β : Type u_3
inst✝³ : SemilatticeInf α
inst✝² : SemilatticeInf β
inst✝¹ : FunLike F α β
inst✝ : InfHomClass F α β
s✝ s₁ s₂ t✝ t₁ t₂ u v : Set α
a✝ b c : α
s t : Set α
a x✝ : α
⊢ x✝ ∈ {b | b ∈ s ⊼ t ∧ a ≤ b} ↔ x✝ ∈ {b | b ∈ s ∧ a ≤ b} ⊼ {b | b ∈ t ∧ a ≤ b}
state_after: no goals
Theorem: Metric.cthickening_eq_iInter_thickening''
File: Mathlib/Topology/MetricSpace/Thickening.lean

tactic: rw [← cthickening_max_zero, cthickening_eq_iInter_thickening]
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝ : PseudoEMetricSpace α
δ✝ ε : ℝ
s t : Set α
x : α
δ : ℝ
E : Set α
⊢ cthickening δ E = ⋂ ε, ⋂ (_ : max 0 δ < ε), thickening ε E
state_after: case δ_nn
ι : Sort u_1
α : Type u
β : Type v
inst✝ : PseudoEMetricSpace α
δ✝ ε : ℝ
s t : Set α
x : α
δ : ℝ
E : Set α
⊢ 0 ≤ max 0 δ

tactic: exact le_max_left _ _
state_before: case δ_nn
ι : Sort u_1
α : Type u
β : Type v
inst✝ : PseudoEMetricSpace α
δ✝ ε : ℝ
s t : Set α
x : α
δ : ℝ
E : Set α
⊢ 0 ≤ max 0 δ
state_after: no goals
Theorem: Sum.isLeft_map
File: .lake/packages/batteries/Batteries/Data/Sum/Lemmas.lean

tactic: cases x <;> rfl
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
f : α → β
g : γ → δ
x : α ⊕ γ
⊢ (Sum.map f g x).isLeft = x.isLeft
state_after: no goals
Theorem: IsDedekindDomain.HeightOneSpectrum.valuation_lt_one_iff_dvd
File: Mathlib/RingTheory/DedekindDomain/AdicValuation.lean

tactic: rw [valuation_of_algebraMap]
state_before: R : Type u_1
inst✝⁴ : CommRing R
inst✝³ : IsDedekindDomain R
K : Type u_2
inst✝² : Field K
inst✝¹ : Algebra R K
inst✝ : IsFractionRing R K
v : HeightOneSpectrum R
r : R
⊢ v.valuation ((algebraMap R K) r) < 1 ↔ v.asIdeal ∣ Ideal.span {r}
state_after: R : Type u_1
inst✝⁴ : CommRing R
inst✝³ : IsDedekindDomain R
K : Type u_2
inst✝² : Field K
inst✝¹ : Algebra R K
inst✝ : IsFractionRing R K
v : HeightOneSpectrum R
r : R
⊢ v.intValuation r < 1 ↔ v.asIdeal ∣ Ideal.span {r}

tactic: exact v.int_valuation_lt_one_iff_dvd r
state_before: R : Type u_1
inst✝⁴ : CommRing R
inst✝³ : IsDedekindDomain R
K : Type u_2
inst✝² : Field K
inst✝¹ : Algebra R K
inst✝ : IsFractionRing R K
v : HeightOneSpectrum R
r : R
⊢ v.intValuation r < 1 ↔ v.asIdeal ∣ Ideal.span {r}
state_after: no goals
Theorem: Matrix.StdBasisMatrix.apply_of_col_ne
File: Mathlib/Data/Matrix/Basis.lean

tactic: simp [hj]
state_before: l : Type u_1
m : Type u_2
n : Type u_3
R : Type u_4
α : Type u_5
inst✝³ : DecidableEq l
inst✝² : DecidableEq m
inst✝¹ : DecidableEq n
inst✝ : Semiring α
i✝ : m
j✝ : n
c : α
i'✝ : m
j'✝ : n
i i' : m
j j' : n
hj : j ≠ j'
a : α
⊢ stdBasisMatrix i j a i' j' = 0
state_after: no goals
Theorem: MeasureTheory.Measure.sub_eq_zero_of_le
File: Mathlib/MeasureTheory/Measure/Sub.lean

tactic: rwa [zero_add]
state_before: α : Type u_1
m : MeasurableSpace α
μ ν : Measure α
s : Set α
h : μ ≤ ν
⊢ μ ≤ 0 + ν
state_after: no goals
Theorem: IsIntegral.algebraMap
File: Mathlib/RingTheory/IntegralClosure.lean

tactic: rcases h with ⟨f, hf, hx⟩
state_before: R : Type u_1
A : Type u_2
B : Type u_3
S : Type u_4
inst✝⁷ : CommRing R
inst✝⁶ : CommRing A
inst✝⁵ : Ring B
inst✝⁴ : CommRing S
inst✝³ : Algebra R A
inst✝² : Algebra R B
f : R →+* S
inst✝¹ : Algebra A B
inst✝ : IsScalarTower R A B
x : A
h : IsIntegral R x
⊢ IsIntegral R ((algebraMap A B) x)
state_after: case intro.intro
R : Type u_1
A : Type u_2
B : Type u_3
S : Type u_4
inst✝⁷ : CommRing R
inst✝⁶ : CommRing A
inst✝⁵ : Ring B
inst✝⁴ : CommRing S
inst✝³ : Algebra R A
inst✝² : Algebra R B
f✝ : R →+* S
inst✝¹ : Algebra A B
inst✝ : IsScalarTower R A B
x : A
f : R[X]
hf : f.Monic
hx : eval₂ (algebraMap R A) x f = 0
⊢ IsIntegral R ((algebraMap A B) x)

tactic: use f, hf
state_before: case intro.intro
R : Type u_1
A : Type u_2
B : Type u_3
S : Type u_4
inst✝⁷ : CommRing R
inst✝⁶ : CommRing A
inst✝⁵ : Ring B
inst✝⁴ : CommRing S
inst✝³ : Algebra R A
inst✝² : Algebra R B
f✝ : R →+* S
inst✝¹ : Algebra A B
inst✝ : IsScalarTower R A B
x : A
f : R[X]
hf : f.Monic
hx : eval₂ (algebraMap R A) x f = 0
⊢ IsIntegral R ((algebraMap A B) x)
state_after: case right
R : Type u_1
A : Type u_2
B : Type u_3
S : Type u_4
inst✝⁷ : CommRing R
inst✝⁶ : CommRing A
inst✝⁵ : Ring B
inst✝⁴ : CommRing S
inst✝³ : Algebra R A
inst✝² : Algebra R B
f✝ : R →+* S
inst✝¹ : Algebra A B
inst✝ : IsScalarTower R A B
x : A
f : R[X]
hf : f.Monic
hx : eval₂ (algebraMap R A) x f = 0
⊢ eval₂ (algebraMap R B) ((algebraMap A B) x) f = 0

tactic: rw [IsScalarTower.algebraMap_eq R A B, ← hom_eval₂, hx, RingHom.map_zero]
state_before: case right
R : Type u_1
A : Type u_2
B : Type u_3
S : Type u_4
inst✝⁷ : CommRing R
inst✝⁶ : CommRing A
inst✝⁵ : Ring B
inst✝⁴ : CommRing S
inst✝³ : Algebra R A
inst✝² : Algebra R B
f✝ : R →+* S
inst✝¹ : Algebra A B
inst✝ : IsScalarTower R A B
x : A
f : R[X]
hf : f.Monic
hx : eval₂ (algebraMap R A) x f = 0
⊢ eval₂ (algebraMap R B) ((algebraMap A B) x) f = 0
state_after: no goals
Theorem: Function.comp_eq_one_iff
File: Mathlib/Algebra/Group/Pi/Basic.lean

tactic: simpa [hg0, const_one] using comp_eq_const_iff 1 f hg
state_before: I : Type u
α : Type u_1
β : Type u_2
γ : Type u_3
f✝ : I → Type v₁
g✝ : I → Type v₂
h : I → Type v₃
x y : (i : I) → f✝ i
i : I
inst✝¹ : One β
inst✝ : One γ
f : α → β
g : β → γ
hg : Injective g
hg0 : g 1 = 1
⊢ g ∘ f = 1 ↔ f = 1
state_after: no goals
Theorem: Option.bind_eq_some'
File: Mathlib/Data/Option/Basic.lean

tactic: cases x <;> simp
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
x : Option α
f : α → Option β
b : β
⊢ x.bind f = some b ↔ ∃ a, x = some a ∧ f a = some b
state_after: no goals
Theorem: Set.units_inv_mem_center
File: Mathlib/Algebra/Group/Center.lean

tactic: rw [Semigroup.mem_center_iff] at *
state_before: M : Type u_1
inst✝ : Monoid M
a : Mˣ
ha : ↑a ∈ center M
⊢ ↑a⁻¹ ∈ center M
state_after: M : Type u_1
inst✝ : Monoid M
a : Mˣ
ha : ∀ (g : M), g * ↑a = ↑a * g
⊢ ∀ (g : M), g * ↑a⁻¹ = ↑a⁻¹ * g
Theorem: Real.tan_pi_div_two
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

tactic: simp [tan_eq_sin_div_cos]
state_before: ⊢ tan (π / 2) = 0
state_after: no goals
Theorem: Pell.isPell_one
File: Mathlib/NumberTheory/PellMatiyasevic.lean

tactic: simp [dz_val]
state_before: a : ℕ
a1 : 1 < a
⊢ az a * az a - ↑(Pell.d a1) * 1 * 1 = 1
state_after: no goals
Theorem: ProbabilityTheory.iIndepFun_iff_measure_inter_preimage_eq_mul
File: Mathlib/Probability/Independence/Basic.lean

tactic: simp only [iIndepFun, kernel.iIndepFun_iff_measure_inter_preimage_eq_mul, ae_dirac_eq,
  Filter.eventually_pure, kernel.const_apply]
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
_mΩ : MeasurableSpace Ω
μ : Measure Ω
f✝ : Ω → β✝
g : Ω → β'
ι : Type u_10
β : ι → Type u_11
m : (x : ι) → MeasurableSpace (β x)
f : (i : ι) → Ω → β i
⊢ iIndepFun m f μ ↔
    ∀ (S : Finset ι) {sets : (i : ι) → Set (β i)},
      (∀ i ∈ S, MeasurableSet (sets i)) → μ (⋂ i ∈ S, f i ⁻¹' sets i) = ∏ i ∈ S, μ (f i ⁻¹' sets i)
state_after: no goals
Theorem: PMF.mem_support_bindOnSupport_iff
File: Mathlib/Probability/ProbabilityMassFunction/Monad.lean

tactic: simp only [support_bindOnSupport, Set.mem_setOf_eq, Set.mem_iUnion]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
p : PMF α
f : (a : α) → a ∈ p.support → PMF β
b : β
⊢ b ∈ (p.bindOnSupport f).support ↔ ∃ a, ∃ (h : a ∈ p.support), b ∈ (f a h).support
state_after: no goals
Theorem: CategoryTheory.Limits.IsColimit.isIso_ι_app_of_isTerminal
File: Mathlib/CategoryTheory/Limits/Shapes/Terminal.lean

tactic: change IsIso (coconePointUniqueUpToIso (colimitOfDiagramTerminal hX F) hc).hom
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
J : Type u
inst✝ : Category.{v, u} J
F : J ⥤ C
c : Cocone F
hc : IsColimit c
X : J
hX : IsTerminal X
⊢ IsIso (c.ι.app X)
state_after: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
J : Type u
inst✝ : Category.{v, u} J
F : J ⥤ C
c : Cocone F
hc : IsColimit c
X : J
hX : IsTerminal X
⊢ IsIso ((colimitOfDiagramTerminal hX F).coconePointUniqueUpToIso hc).hom

tactic: infer_instance
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
J : Type u
inst✝ : Category.{v, u} J
F : J ⥤ C
c : Cocone F
hc : IsColimit c
X : J
hX : IsTerminal X
⊢ IsIso ((colimitOfDiagramTerminal hX F).coconePointUniqueUpToIso hc).hom
state_after: no goals
Theorem: Matrix.transpose_smul
File: Mathlib/Data/Matrix/Basic.lean

tactic: ext
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R✝ : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
R : Type u_10
inst✝ : SMul R α
c : R
M : Matrix m n α
⊢ (c • M)ᵀ = c • Mᵀ
state_after: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R✝ : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
R : Type u_10
inst✝ : SMul R α
c : R
M : Matrix m n α
i✝ : n
j✝ : m
⊢ (c • M)ᵀ i✝ j✝ = (c • Mᵀ) i✝ j✝

tactic: rfl
state_before: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R✝ : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
R : Type u_10
inst✝ : SMul R α
c : R
M : Matrix m n α
i✝ : n
j✝ : m
⊢ (c • M)ᵀ i✝ j✝ = (c • Mᵀ) i✝ j✝
state_after: no goals
Theorem: Polynomial.mem_degreeLE
File: Mathlib/RingTheory/Polynomial/Basic.lean

tactic: simp only [degreeLE, Submodule.mem_iInf, degree_le_iff_coeff_zero, LinearMap.mem_ker]
state_before: R : Type u
S : Type u_1
inst✝ : Semiring R
n : WithBot ℕ
f : R[X]
⊢ f ∈ degreeLE R n ↔ f.degree ≤ n
state_after: R : Type u
S : Type u_1
inst✝ : Semiring R
n : WithBot ℕ
f : R[X]
⊢ (∀ (i : ℕ), ↑i > n → (lcoeff R i) f = 0) ↔ ∀ (m : ℕ), n < ↑m → f.coeff m = 0

tactic: rfl
state_before: R : Type u
S : Type u_1
inst✝ : Semiring R
n : WithBot ℕ
f : R[X]
⊢ (∀ (i : ℕ), ↑i > n → (lcoeff R i) f = 0) ↔ ∀ (m : ℕ), n < ↑m → f.coeff m = 0
state_after: no goals
Theorem: List.rdropWhile_nil
File: Mathlib/Data/List/DropRight.lean

tactic: simp [rdropWhile, dropWhile]
state_before: α : Type u_1
p : α → Bool
l : List α
n : ℕ
⊢ rdropWhile p [] = []
state_after: no goals
Theorem: Real.abs_log_mul_self_rpow_lt
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: rw [lt_div_iff ht]
state_before: x✝ y z : ℝ
n : ℕ
x t : ℝ
h1 : 0 < x
h2 : x ≤ 1
ht : 0 < t
⊢ |log x * x ^ t| < 1 / t
state_after: x✝ y z : ℝ
n : ℕ
x t : ℝ
h1 : 0 < x
h2 : x ≤ 1
ht : 0 < t
⊢ |log x * x ^ t| * t < 1

tactic: have := abs_log_mul_self_lt (x ^ t) (rpow_pos_of_pos h1 t) (rpow_le_one h1.le h2 ht.le)
state_before: x✝ y z : ℝ
n : ℕ
x t : ℝ
h1 : 0 < x
h2 : x ≤ 1
ht : 0 < t
⊢ |log x * x ^ t| * t < 1
state_after: x✝ y z : ℝ
n : ℕ
x t : ℝ
h1 : 0 < x
h2 : x ≤ 1
ht : 0 < t
this : |log (x ^ t) * x ^ t| < 1
⊢ |log x * x ^ t| * t < 1

tactic: rwa [log_rpow h1, mul_assoc, abs_mul, abs_of_pos ht, mul_comm] at this
state_before: x✝ y z : ℝ
n : ℕ
x t : ℝ
h1 : 0 < x
h2 : x ≤ 1
ht : 0 < t
this : |log (x ^ t) * x ^ t| < 1
⊢ |log x * x ^ t| * t < 1
state_after: no goals
Theorem: eq_compl_iff_isCompl
File: Mathlib/Order/BooleanAlgebra.lean

tactic: rw [h]
state_before: α : Type u
β : Type u_1
w x y z : α
inst✝ : BooleanAlgebra α
h : x = yᶜ
⊢ IsCompl x y
state_after: α : Type u
β : Type u_1
w x y z : α
inst✝ : BooleanAlgebra α
h : x = yᶜ
⊢ IsCompl yᶜ y

tactic: exact isCompl_compl.symm
state_before: α : Type u
β : Type u_1
w x y z : α
inst✝ : BooleanAlgebra α
h : x = yᶜ
⊢ IsCompl yᶜ y
state_after: no goals
Theorem: EuclideanGeometry.oangle_right_eq_arctan_of_oangle_eq_pi_div_two
File: Mathlib/Geometry/Euclidean/Angle/Oriented/RightAngle.lean

tactic: have hs : (∡ p₂ p₃ p₁).sign = 1 := by rw [oangle_rotate_sign, h, Real.Angle.sign_coe_pi_div_two]
state_before: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
hd2 : Fact (finrank ℝ V = 2)
inst✝ : Module.Oriented ℝ V (Fin 2)
p₁ p₂ p₃ : P
h : ∡ p₁ p₂ p₃ = ↑(π / 2)
⊢ ∡ p₂ p₃ p₁ = ↑(Real.arctan (dist p₁ p₂ / dist p₃ p₂))
state_after: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
hd2 : Fact (finrank ℝ V = 2)
inst✝ : Module.Oriented ℝ V (Fin 2)
p₁ p₂ p₃ : P
h : ∡ p₁ p₂ p₃ = ↑(π / 2)
hs : (∡ p₂ p₃ p₁).sign = 1
⊢ ∡ p₂ p₃ p₁ = ↑(Real.arctan (dist p₁ p₂ / dist p₃ p₂))

tactic: rw [oangle_eq_angle_of_sign_eq_one hs,
  angle_eq_arctan_of_angle_eq_pi_div_two (angle_eq_pi_div_two_of_oangle_eq_pi_div_two h)
    (right_ne_of_oangle_eq_pi_div_two h)]
state_before: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
hd2 : Fact (finrank ℝ V = 2)
inst✝ : Module.Oriented ℝ V (Fin 2)
p₁ p₂ p₃ : P
h : ∡ p₁ p₂ p₃ = ↑(π / 2)
hs : (∡ p₂ p₃ p₁).sign = 1
⊢ ∡ p₂ p₃ p₁ = ↑(Real.arctan (dist p₁ p₂ / dist p₃ p₂))
state_after: no goals

tactic: rw [oangle_rotate_sign, h, Real.Angle.sign_coe_pi_div_two]
state_before: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
hd2 : Fact (finrank ℝ V = 2)
inst✝ : Module.Oriented ℝ V (Fin 2)
p₁ p₂ p₃ : P
h : ∡ p₁ p₂ p₃ = ↑(π / 2)
⊢ (∡ p₂ p₃ p₁).sign = 1
state_after: no goals
Theorem: Function.Commute.left_bijOn_fixedPoints_comp
File: Mathlib/Dynamics/FixedPoints/Basic.lean

tactic: simpa only [h.comp_eq] using bijOn_fixedPoints_comp g f
state_before: α : Type u
β : Type v
f fa g : α → α
x y : α
fb : β → β
m n k : ℕ
e : Perm α
h : Function.Commute f g
⊢ Set.BijOn f (fixedPoints (f ∘ g)) (fixedPoints (f ∘ g))
state_after: no goals
Theorem: WfDvdMonoid.max_power_factor'
File: Mathlib/RingTheory/UniqueFactorizationDomain.lean

tactic: obtain ⟨a, ⟨n, rfl⟩, hm⟩ := wellFounded_dvdNotUnit.has_min
  {a | ∃ n, x ^ n * a = a₀} ⟨a₀, 0, by rw [pow_zero, one_mul]⟩
state_before: α : Type u_1
inst✝¹ : CommMonoidWithZero α
inst✝ : WfDvdMonoid α
a₀ x : α
h : a₀ ≠ 0
hx : ¬IsUnit x
⊢ ∃ n a, ¬x ∣ a ∧ a₀ = x ^ n * a
state_after: case intro.intro.intro
α : Type u_1
inst✝¹ : CommMonoidWithZero α
inst✝ : WfDvdMonoid α
x : α
hx : ¬IsUnit x
a : α
n : ℕ
h : x ^ n * a ≠ 0
hm : ∀ x_1 ∈ {a_1 | ∃ n_1, x ^ n_1 * a_1 = x ^ n * a}, ¬DvdNotUnit x_1 a
⊢ ∃ n_1 a_1, ¬x ∣ a_1 ∧ x ^ n * a = x ^ n_1 * a_1

tactic: refine ⟨n, a, ?_, rfl⟩
state_before: case intro.intro.intro
α : Type u_1
inst✝¹ : CommMonoidWithZero α
inst✝ : WfDvdMonoid α
x : α
hx : ¬IsUnit x
a : α
n : ℕ
h : x ^ n * a ≠ 0
hm : ∀ x_1 ∈ {a_1 | ∃ n_1, x ^ n_1 * a_1 = x ^ n * a}, ¬DvdNotUnit x_1 a
⊢ ∃ n_1 a_1, ¬x ∣ a_1 ∧ x ^ n * a = x ^ n_1 * a_1
state_after: case intro.intro.intro
α : Type u_1
inst✝¹ : CommMonoidWithZero α
inst✝ : WfDvdMonoid α
x : α
hx : ¬IsUnit x
a : α
n : ℕ
h : x ^ n * a ≠ 0
hm : ∀ x_1 ∈ {a_1 | ∃ n_1, x ^ n_1 * a_1 = x ^ n * a}, ¬DvdNotUnit x_1 a
⊢ ¬x ∣ a

tactic: rintro ⟨d, rfl⟩
state_before: case intro.intro.intro
α : Type u_1
inst✝¹ : CommMonoidWithZero α
inst✝ : WfDvdMonoid α
x : α
hx : ¬IsUnit x
a : α
n : ℕ
h : x ^ n * a ≠ 0
hm : ∀ x_1 ∈ {a_1 | ∃ n_1, x ^ n_1 * a_1 = x ^ n * a}, ¬DvdNotUnit x_1 a
⊢ ¬x ∣ a
state_after: case intro.intro.intro.intro
α : Type u_1
inst✝¹ : CommMonoidWithZero α
inst✝ : WfDvdMonoid α
x : α
hx : ¬IsUnit x
n : ℕ
d : α
h : x ^ n * (x * d) ≠ 0
hm : ∀ x_1 ∈ {a | ∃ n_1, x ^ n_1 * a = x ^ n * (x * d)}, ¬DvdNotUnit x_1 (x * d)
⊢ False

tactic: exact hm d ⟨n + 1, by rw [pow_succ, mul_assoc]⟩
  ⟨(right_ne_zero_of_mul <| right_ne_zero_of_mul h), x, hx, mul_comm _ _⟩
state_before: case intro.intro.intro.intro
α : Type u_1
inst✝¹ : CommMonoidWithZero α
inst✝ : WfDvdMonoid α
x : α
hx : ¬IsUnit x
n : ℕ
d : α
h : x ^ n * (x * d) ≠ 0
hm : ∀ x_1 ∈ {a | ∃ n_1, x ^ n_1 * a = x ^ n * (x * d)}, ¬DvdNotUnit x_1 (x * d)
⊢ False
state_after: no goals

tactic: rw [pow_zero, one_mul]
state_before: α : Type u_1
inst✝¹ : CommMonoidWithZero α
inst✝ : WfDvdMonoid α
a₀ x : α
h : a₀ ≠ 0
hx : ¬IsUnit x
⊢ x ^ 0 * a₀ = a₀
state_after: no goals

tactic: rw [pow_succ, mul_assoc]
state_before: α : Type u_1
inst✝¹ : CommMonoidWithZero α
inst✝ : WfDvdMonoid α
x : α
hx : ¬IsUnit x
n : ℕ
d : α
h : x ^ n * (x * d) ≠ 0
hm : ∀ x_1 ∈ {a | ∃ n_1, x ^ n_1 * a = x ^ n * (x * d)}, ¬DvdNotUnit x_1 (x * d)
⊢ x ^ (n + 1) * d = x ^ n * (x * d)
state_after: no goals
Theorem: Zsqrtd.norm_eq_mul_conj
File: Mathlib/NumberTheory/Zsqrtd/Basic.lean

tactic: ext <;> simp [norm, star, mul_comm, sub_eq_add_neg]
state_before: d : ℤ
n : ℤ√d
⊢ ↑n.norm = n * star n
state_after: no goals
Theorem: NonUnitalAlgebra.iInf_toSubmodule
File: Mathlib/Algebra/Algebra/NonUnitalSubalgebra.lean

tactic: simp
state_before: F : Type u_1
R : Type u
A : Type v
B : Type w
inst✝¹⁰ : CommSemiring R
inst✝⁹ : NonUnitalNonAssocSemiring A
inst✝⁸ : Module R A
inst✝⁷ : IsScalarTower R A A
inst✝⁶ : SMulCommClass R A A
inst✝⁵ : NonUnitalNonAssocSemiring B
inst✝⁴ : Module R B
inst✝³ : IsScalarTower R B B
inst✝² : SMulCommClass R B B
inst✝¹ : FunLike F A B
inst✝ : NonUnitalAlgHomClass F R A B
ι : Sort u_2
S : ι → NonUnitalSubalgebra R A
⊢ ↑(⨅ i, S i).toSubmodule = ↑(⨅ i, (S i).toSubmodule)
state_after: no goals
Theorem: Matroid.eq_loopyOn_iff
File: Mathlib/Data/Matroid/Constructions.lean

tactic: simp only [eq_iff_indep_iff_indep_forall, loopyOn_ground, loopyOn_indep_iff, and_congr_right_iff]
state_before: α : Type u_1
M : Matroid α
E B I X R J : Set α
⊢ M = loopyOn E ↔ M.E = E ∧ ∀ X ⊆ M.E, M.Indep X → X = ∅
state_after: α : Type u_1
M : Matroid α
E B I X R J : Set α
⊢ M.E = E → ((∀ I ⊆ M.E, M.Indep I ↔ I = ∅) ↔ ∀ X ⊆ M.E, M.Indep X → X = ∅)

tactic: rintro rfl
state_before: α : Type u_1
M : Matroid α
E B I X R J : Set α
⊢ M.E = E → ((∀ I ⊆ M.E, M.Indep I ↔ I = ∅) ↔ ∀ X ⊆ M.E, M.Indep X → X = ∅)
state_after: α : Type u_1
M : Matroid α
B I X R J : Set α
⊢ (∀ I ⊆ M.E, M.Indep I ↔ I = ∅) ↔ ∀ X ⊆ M.E, M.Indep X → X = ∅

tactic: refine ⟨fun h I hI ↦ (h I hI).1, fun h I hIE ↦ ⟨h I hIE, by rintro rfl; simp⟩⟩
state_before: α : Type u_1
M : Matroid α
B I X R J : Set α
⊢ (∀ I ⊆ M.E, M.Indep I ↔ I = ∅) ↔ ∀ X ⊆ M.E, M.Indep X → X = ∅
state_after: no goals

tactic: rintro rfl
state_before: α : Type u_1
M : Matroid α
B I✝ X R J : Set α
h : ∀ X ⊆ M.E, M.Indep X → X = ∅
I : Set α
hIE : I ⊆ M.E
⊢ I = ∅ → M.Indep I
state_after: α : Type u_1
M : Matroid α
B I X R J : Set α
h : ∀ X ⊆ M.E, M.Indep X → X = ∅
hIE : ∅ ⊆ M.E
⊢ M.Indep ∅

tactic: simp
state_before: α : Type u_1
M : Matroid α
B I X R J : Set α
h : ∀ X ⊆ M.E, M.Indep X → X = ∅
hIE : ∅ ⊆ M.E
⊢ M.Indep ∅
state_after: no goals