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

tactic: simp only [← nonempty_invertible_iff_isUnit,
  (diagonalInvertibleEquivInvertible v).nonempty_congr]
state_before: l : Type u_1
m : Type u
n : Type u'
α : Type v
inst✝² : Fintype n
inst✝¹ : DecidableEq n
inst✝ : CommRing α
A B : Matrix n n α
v : n → α
⊢ IsUnit (diagonal v) ↔ IsUnit v
state_after: no goals
Theorem: ENNReal.eventually_pow_one_div_le
File: Mathlib/Analysis/SpecialFunctions/Pow/Continuity.lean

tactic: lift x to ℝ≥0 using hx
state_before: x : ℝ≥0∞
hx : x ≠ ⊤
y : ℝ≥0∞
hy : 1 < y
⊢ ∀ᶠ (n : ℕ) in atTop, x ^ (1 / ↑n) ≤ y
state_after: case intro
y : ℝ≥0∞
hy : 1 < y
x : ℝ≥0
⊢ ∀ᶠ (n : ℕ) in atTop, ↑x ^ (1 / ↑n) ≤ y

tactic: by_cases h : y = ∞
state_before: case intro
y : ℝ≥0∞
hy : 1 < y
x : ℝ≥0
⊢ ∀ᶠ (n : ℕ) in atTop, ↑x ^ (1 / ↑n) ≤ y
state_after: case pos
y : ℝ≥0∞
hy : 1 < y
x : ℝ≥0
h : y = ⊤
⊢ ∀ᶠ (n : ℕ) in atTop, ↑x ^ (1 / ↑n) ≤ y

case neg
y : ℝ≥0∞
hy : 1 < y
x : ℝ≥0
h : ¬y = ⊤
⊢ ∀ᶠ (n : ℕ) in atTop, ↑x ^ (1 / ↑n) ≤ y

tactic: exact eventually_of_forall fun n => h.symm ▸ le_top
state_before: case pos
y : ℝ≥0∞
hy : 1 < y
x : ℝ≥0
h : y = ⊤
⊢ ∀ᶠ (n : ℕ) in atTop, ↑x ^ (1 / ↑n) ≤ y
state_after: no goals

tactic: lift y to ℝ≥0 using h
state_before: case neg
y : ℝ≥0∞
hy : 1 < y
x : ℝ≥0
h : ¬y = ⊤
⊢ ∀ᶠ (n : ℕ) in atTop, ↑x ^ (1 / ↑n) ≤ y
state_after: case neg.intro
x y : ℝ≥0
hy : 1 < ↑y
⊢ ∀ᶠ (n : ℕ) in atTop, ↑x ^ (1 / ↑n) ≤ ↑y

tactic: have := NNReal.eventually_pow_one_div_le x (mod_cast hy : 1 < y)
state_before: case neg.intro
x y : ℝ≥0
hy : 1 < ↑y
⊢ ∀ᶠ (n : ℕ) in atTop, ↑x ^ (1 / ↑n) ≤ ↑y
state_after: case neg.intro
x y : ℝ≥0
hy : 1 < ↑y
this : ∀ᶠ (n : ℕ) in atTop, x ^ (1 / ↑n) ≤ y
⊢ ∀ᶠ (n : ℕ) in atTop, ↑x ^ (1 / ↑n) ≤ ↑y

tactic: refine this.congr (eventually_of_forall fun n => ?_)
state_before: case neg.intro
x y : ℝ≥0
hy : 1 < ↑y
this : ∀ᶠ (n : ℕ) in atTop, x ^ (1 / ↑n) ≤ y
⊢ ∀ᶠ (n : ℕ) in atTop, ↑x ^ (1 / ↑n) ≤ ↑y
state_after: case neg.intro
x y : ℝ≥0
hy : 1 < ↑y
this : ∀ᶠ (n : ℕ) in atTop, x ^ (1 / ↑n) ≤ y
n : ℕ
⊢ x ^ (1 / ↑n) ≤ y ↔ ↑x ^ (1 / ↑n) ≤ ↑y

tactic: rw [coe_rpow_of_nonneg x (by positivity : 0 ≤ (1 / n : ℝ)), coe_le_coe]
state_before: case neg.intro
x y : ℝ≥0
hy : 1 < ↑y
this : ∀ᶠ (n : ℕ) in atTop, x ^ (1 / ↑n) ≤ y
n : ℕ
⊢ x ^ (1 / ↑n) ≤ y ↔ ↑x ^ (1 / ↑n) ≤ ↑y
state_after: no goals

tactic: positivity
state_before: x y : ℝ≥0
hy : 1 < ↑y
this : ∀ᶠ (n : ℕ) in atTop, x ^ (1 / ↑n) ≤ y
n : ℕ
⊢ 0 ≤ 1 / ↑n
state_after: no goals
Theorem: alexandrovDiscrete_coinduced
File: Mathlib/Topology/AlexandrovDiscrete.lean

tactic: rw [isOpen_coinduced, preimage_sInter]
state_before: ι : Sort u_1
κ : ι → Sort u_2
α : Type u_3
β✝ : Type u_4
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β✝
s t : Set α
a x y : α
inst✝¹ : AlexandrovDiscrete α
inst✝ : AlexandrovDiscrete β✝
β : Type u_5
f : α → β
S : Set (Set β)
hS : ∀ s ∈ S, IsOpen s
⊢ IsOpen (⋂₀ S)
state_after: ι : Sort u_1
κ : ι → Sort u_2
α : Type u_3
β✝ : Type u_4
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β✝
s t : Set α
a x y : α
inst✝¹ : AlexandrovDiscrete α
inst✝ : AlexandrovDiscrete β✝
β : Type u_5
f : α → β
S : Set (Set β)
hS : ∀ s ∈ S, IsOpen s
⊢ IsOpen (⋂ t ∈ S, f ⁻¹' t)

tactic: exact isOpen_iInter₂ hS
state_before: ι : Sort u_1
κ : ι → Sort u_2
α : Type u_3
β✝ : Type u_4
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β✝
s t : Set α
a x y : α
inst✝¹ : AlexandrovDiscrete α
inst✝ : AlexandrovDiscrete β✝
β : Type u_5
f : α → β
S : Set (Set β)
hS : ∀ s ∈ S, IsOpen s
⊢ IsOpen (⋂ t ∈ S, f ⁻¹' t)
state_after: no goals
Theorem: IsLprojection.mul_compl_self
File: Mathlib/Analysis/NormedSpace/MStructure.lean

tactic: rw [coe_compl, mul_sub, mul_one, P.prop.proj.eq, sub_self]
state_before: X : Type u_1
inst✝² : NormedAddCommGroup X
M : Type u_2
inst✝¹ : Ring M
inst✝ : Module M X
P : { P // IsLprojection X P }
⊢ ↑P * ↑Pᶜ = 0
state_after: no goals
Theorem: RingEquiv.map_eq_neg_one_iff
File: Mathlib/Algebra/Ring/Equiv.lean

tactic: rw [← neg_eq_iff_eq_neg, ← neg_eq_iff_eq_neg, ← map_neg, RingEquiv.map_eq_one_iff]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
R : Type u_4
S : Type u_5
S' : Type u_6
inst✝¹ : NonAssocRing R
inst✝ : NonAssocRing S
f : R ≃+* S
x✝ y x : R
⊢ f x = -1 ↔ x = -1
state_after: no goals
Theorem: Matrix.one_div_zpow
File: Mathlib/LinearAlgebra/Matrix/ZPow.lean

tactic: simp only [one_div, inv_zpow]
state_before: n' : Type u_1
inst✝² : DecidableEq n'
inst✝¹ : Fintype n'
R : Type u_2
inst✝ : CommRing R
A : M
n : ℤ
⊢ (1 / A) ^ n = 1 / A ^ n
state_after: no goals
Theorem: Nat.count_le_card
File: Mathlib/Data/Nat/Count.lean

tactic: rw [count_eq_card_filter_range]
state_before: p : ℕ → Prop
inst✝ : DecidablePred p
hp : (setOf p).Finite
n : ℕ
⊢ count p n ≤ hp.toFinset.card
state_after: p : ℕ → Prop
inst✝ : DecidablePred p
hp : (setOf p).Finite
n : ℕ
⊢ (filter p (range n)).card ≤ hp.toFinset.card

tactic: exact Finset.card_mono fun x hx ↦ hp.mem_toFinset.2 (mem_filter.1 hx).2
state_before: p : ℕ → Prop
inst✝ : DecidablePred p
hp : (setOf p).Finite
n : ℕ
⊢ (filter p (range n)).card ≤ hp.toFinset.card
state_after: no goals
Theorem: Polynomial.isCoprime_map
File: Mathlib/Algebra/Polynomial/FieldDivision.lean

tactic: classical
rw [← EuclideanDomain.gcd_isUnit_iff, ← EuclideanDomain.gcd_isUnit_iff, gcd_map, isUnit_map]
state_before: R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n : ℕ
inst✝¹ : Field R
p q : R[X]
inst✝ : Field k
f : R →+* k
⊢ IsCoprime (map f p) (map f q) ↔ IsCoprime p q
state_after: no goals

tactic: rw [← EuclideanDomain.gcd_isUnit_iff, ← EuclideanDomain.gcd_isUnit_iff, gcd_map, isUnit_map]
state_before: R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n : ℕ
inst✝¹ : Field R
p q : R[X]
inst✝ : Field k
f : R →+* k
⊢ IsCoprime (map f p) (map f q) ↔ IsCoprime p q
state_after: no goals
Theorem: MeasureTheory.Lp.continuous_negPart
File: Mathlib/MeasureTheory/Function/LpSpace.lean

tactic: unfold negPart
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedAddCommGroup G
g : E → F
c : ℝ≥0
inst✝ : Fact (1 ≤ p)
⊢ Continuous fun f => negPart f
state_after: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedAddCommGroup G
g : E → F
c : ℝ≥0
inst✝ : Fact (1 ≤ p)
⊢ Continuous fun f => posPart (-f)

tactic: exact continuous_posPart.comp continuous_neg
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedAddCommGroup G
g : E → F
c : ℝ≥0
inst✝ : Fact (1 ≤ p)
⊢ Continuous fun f => posPart (-f)
state_after: no goals
Theorem: CategoryTheory.shiftFunctorComm_zero_hom_app
File: Mathlib/CategoryTheory/Shift/Basic.lean

tactic: simp only [shiftFunctorZero_hom_app_shift, Category.assoc, ← Functor.map_comp,
  Iso.hom_inv_id_app, Functor.map_id, Functor.comp_obj, Category.comp_id]
state_before: C : Type u
A : Type u_1
inst✝² : Category.{v, u} C
inst✝¹ : AddCommMonoid A
inst✝ : HasShift C A
X Y : C
f : X ⟶ Y
a : A
⊢ (shiftFunctorComm C a 0).hom.app X =
    (shiftFunctorZero C A).hom.app ((shiftFunctor C a).obj X) ≫
      (shiftFunctor C a).map ((shiftFunctorZero C A).inv.app X)
state_after: no goals
Theorem: SimpleGraph.boxProd_adj_right
File: Mathlib/Combinatorics/SimpleGraph/Prod.lean

tactic: simp only [boxProd_adj, SimpleGraph.irrefl, false_and, and_true, false_or]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
G : SimpleGraph α
H : SimpleGraph β
a : α
b₁ b₂ : β
⊢ (G □ H).Adj (a, b₁) (a, b₂) ↔ H.Adj b₁ b₂
state_after: no goals
Theorem: eventuallyConst_of_isNoetherian
File: Mathlib/RingTheory/Noetherian.lean

tactic: simp_rw [eventuallyConst_atTop, eq_comm]
state_before: R : Type u_1
M : Type u_2
P : Type u_3
N : Type w
inst✝⁷ : Semiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : Module R M
inst✝⁴ : AddCommMonoid N
inst✝³ : Module R N
inst✝² : AddCommMonoid P
inst✝¹ : Module R P
inst✝ : IsNoetherian R M
f : ℕ →o Submodule R M
⊢ EventuallyConst (⇑f) atTop
state_after: R : Type u_1
M : Type u_2
P : Type u_3
N : Type w
inst✝⁷ : Semiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : Module R M
inst✝⁴ : AddCommMonoid N
inst✝³ : Module R N
inst✝² : AddCommMonoid P
inst✝¹ : Module R P
inst✝ : IsNoetherian R M
f : ℕ →o Submodule R M
⊢ ∃ i, ∀ (j : ℕ), i ≤ j → f i = f j

tactic: exact (monotone_stabilizes_iff_noetherian.mpr inferInstance) f
state_before: R : Type u_1
M : Type u_2
P : Type u_3
N : Type w
inst✝⁷ : Semiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : Module R M
inst✝⁴ : AddCommMonoid N
inst✝³ : Module R N
inst✝² : AddCommMonoid P
inst✝¹ : Module R P
inst✝ : IsNoetherian R M
f : ℕ →o Submodule R M
⊢ ∃ i, ∀ (j : ℕ), i ≤ j → f i = f j
state_after: no goals
Theorem: WeierstrassCurve.Jacobian.addY_of_Z_ne_zero
File: Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian.lean

tactic: erw [addY, negY_of_Z_ne_zero <| addZ_ne_zero_of_X_ne hx, addX_of_Z_ne_zero hP hQ hPz hQz hx,
  negAddY_of_Z_ne_zero hP hQ hPz hQz hx, Affine.addY]
state_before: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P Q : Fin 3 → F
hP : W.Equation P
hQ : W.Equation Q
hPz : P z ≠ 0
hQz : Q z ≠ 0
hx : P x * Q z ^ 2 ≠ Q x * P z ^ 2
⊢ W.addY P Q / addZ P Q ^ 3 =
    W.toAffine.addY (P x / P z ^ 2) (Q x / Q z ^ 2) (P y / P z ^ 3)
      (W.toAffine.slope (P x / P z ^ 2) (Q x / Q z ^ 2) (P y / P z ^ 3) (Q y / Q z ^ 3))
state_after: no goals
Theorem: ContinuousLinearEquiv.dimH_image
File: Mathlib/Topology/MetricSpace/HausdorffDimension.lean

tactic: simpa only [e.symm_image_image] using e.symm.lipschitz.dimH_image_le (e '' s)
state_before: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝⁶ : EMetricSpace X
inst✝⁵ : EMetricSpace Y
C K r : ℝ≥0
f : X → Y
s✝ t : Set X
𝕜 : Type u_4
E : Type u_5
F : Type u_6
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
e : E ≃L[𝕜] F
s : Set E
⊢ dimH s ≤ dimH (⇑e '' s)
state_after: no goals
Theorem: ClassGroup.mk_canonicalEquiv
File: Mathlib/RingTheory/ClassGroup.lean

tactic: erw [ClassGroup.mk, MonoidHom.comp_apply, ← MonoidHom.comp_apply (Units.map _),
    ← Units.map_comp, ← RingEquiv.coe_monoidHom_trans,
    FractionalIdeal.canonicalEquiv_trans_canonicalEquiv]
state_before: R : Type u_1
K : Type u_2
L : Type u_3
inst✝¹³ : CommRing R
inst✝¹² : Field K
inst✝¹¹ : Field L
inst✝¹⁰ : DecidableEq L
inst✝⁹ : Algebra R K
inst✝⁸ : IsFractionRing R K
inst✝⁷ : Algebra K L
inst✝⁶ : FiniteDimensional K L
inst✝⁵ : Algebra R L
inst✝⁴ : IsScalarTower R K L
inst✝³ : IsDomain R
K' : Type u_4
inst✝² : Field K'
inst✝¹ : Algebra R K'
inst✝ : IsFractionRing R K'
I : (FractionalIdeal R⁰ K)ˣ
⊢ mk ((Units.map ↑(canonicalEquiv R⁰ K K')) I) = mk I
state_after: R : Type u_1
K : Type u_2
L : Type u_3
inst✝¹³ : CommRing R
inst✝¹² : Field K
inst✝¹¹ : Field L
inst✝¹⁰ : DecidableEq L
inst✝⁹ : Algebra R K
inst✝⁸ : IsFractionRing R K
inst✝⁷ : Algebra K L
inst✝⁶ : FiniteDimensional K L
inst✝⁵ : Algebra R L
inst✝⁴ : IsScalarTower R K L
inst✝³ : IsDomain R
K' : Type u_4
inst✝² : Field K'
inst✝¹ : Algebra R K'
inst✝ : IsFractionRing R K'
I : (FractionalIdeal R⁰ K)ˣ
⊢ (QuotientGroup.mk' (toPrincipalIdeal R (FractionRing R)).range)
      ((Units.map ↑(canonicalEquiv R⁰ K (FractionRing R))) I) =
    mk I

tactic: rfl
state_before: R : Type u_1
K : Type u_2
L : Type u_3
inst✝¹³ : CommRing R
inst✝¹² : Field K
inst✝¹¹ : Field L
inst✝¹⁰ : DecidableEq L
inst✝⁹ : Algebra R K
inst✝⁸ : IsFractionRing R K
inst✝⁷ : Algebra K L
inst✝⁶ : FiniteDimensional K L
inst✝⁵ : Algebra R L
inst✝⁴ : IsScalarTower R K L
inst✝³ : IsDomain R
K' : Type u_4
inst✝² : Field K'
inst✝¹ : Algebra R K'
inst✝ : IsFractionRing R K'
I : (FractionalIdeal R⁰ K)ˣ
⊢ (QuotientGroup.mk' (toPrincipalIdeal R (FractionRing R)).range)
      ((Units.map ↑(canonicalEquiv R⁰ K (FractionRing R))) I) =
    mk I
state_after: no goals
Theorem: Nat.Prime.sub_one_mul_multiplicity_factorial
File: Mathlib/Data/Nat/Multiplicity.lean

tactic: simp only [multiplicity_factorial hp <| lt_succ_of_lt <| lt.base (log p n),
    ← Finset.sum_Ico_add' _ 0 _ 1, Ico_zero_eq_range,
    ← sub_one_mul_sum_log_div_pow_eq_sub_sum_digits]
state_before: n p : ℕ
hp : Prime p
⊢ (p - 1) * (multiplicity p n !).get ⋯ = n - (p.digits n).sum
state_after: n p : ℕ
hp : Prime p
⊢ (p - 1) * (↑(∑ x ∈ range (log p n + 1), n / p ^ (x + 1))).get ⋯ = (p - 1) * ∑ i ∈ range (log p n).succ, n / p ^ i.succ

tactic: rfl
state_before: n p : ℕ
hp : Prime p
⊢ (p - 1) * (↑(∑ x ∈ range (log p n + 1), n / p ^ (x + 1))).get ⋯ = (p - 1) * ∑ i ∈ range (log p n).succ, n / p ^ i.succ
state_after: no goals
Theorem: Set.uniqueElim_preimage
File: Mathlib/Data/Set/Prod.lean

tactic: ext
state_before: ι : Type u_1
α : ι → Type u_2
β : ι → Type u_3
s s₁ s₂ : Set ι
t✝ t₁ t₂ : (i : ι) → Set (α i)
i : ι
inst✝ : Unique ι
t : (i : ι) → Set (α i)
⊢ uniqueElim ⁻¹' univ.pi t = t default
state_after: case h
ι : Type u_1
α : ι → Type u_2
β : ι → Type u_3
s s₁ s₂ : Set ι
t✝ t₁ t₂ : (i : ι) → Set (α i)
i : ι
inst✝ : Unique ι
t : (i : ι) → Set (α i)
x✝ : α default
⊢ x✝ ∈ uniqueElim ⁻¹' univ.pi t ↔ x✝ ∈ t default

tactic: simp [Unique.forall_iff]
state_before: case h
ι : Type u_1
α : ι → Type u_2
β : ι → Type u_3
s s₁ s₂ : Set ι
t✝ t₁ t₂ : (i : ι) → Set (α i)
i : ι
inst✝ : Unique ι
t : (i : ι) → Set (α i)
x✝ : α default
⊢ x✝ ∈ uniqueElim ⁻¹' univ.pi t ↔ x✝ ∈ t default
state_after: no goals
Theorem: mul_add_mul
File: Mathlib/Algebra/Ring/BooleanRing.lean

tactic: have : a + b = a + b + (a * b + b * a) :=
  calc
    a + b = (a + b) * (a + b) := by rw [mul_self]
    _ = a * a + a * b + (b * a + b * b) := by rw [add_mul, mul_add, mul_add]
    _ = a + a * b + (b * a + b) := by simp only [mul_self]
    _ = a + b + (a * b + b * a) := by abel
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : BooleanRing α
a b : α
⊢ a * b + b * a = 0
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : BooleanRing α
a b : α
this : a + b = a + b + (a * b + b * a)
⊢ a * b + b * a = 0

tactic: rwa [self_eq_add_right] at this
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : BooleanRing α
a b : α
this : a + b = a + b + (a * b + b * a)
⊢ a * b + b * a = 0
state_after: no goals

tactic: rw [mul_self]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : BooleanRing α
a b : α
⊢ a + b = (a + b) * (a + b)
state_after: no goals

tactic: rw [add_mul, mul_add, mul_add]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : BooleanRing α
a b : α
⊢ (a + b) * (a + b) = a * a + a * b + (b * a + b * b)
state_after: no goals

tactic: simp only [mul_self]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : BooleanRing α
a b : α
⊢ a * a + a * b + (b * a + b * b) = a + a * b + (b * a + b)
state_after: no goals

tactic: abel
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : BooleanRing α
a b : α
⊢ a + a * b + (b * a + b) = a + b + (a * b + b * a)
state_after: no goals
Theorem: Encodable.iUnion_decode₂_disjoint_on
File: Mathlib/Logic/Encodable/Lattice.lean

tactic: rintro i j ij
state_before: α : Type u_1
β : Type u_2
inst✝ : Encodable β
f : β → Set α
hd : Pairwise (Disjoint on f)
⊢ Pairwise (Disjoint on fun i => ⋃ b ∈ decode₂ β i, f b)
state_after: α : Type u_1
β : Type u_2
inst✝ : Encodable β
f : β → Set α
hd : Pairwise (Disjoint on f)
i j : ℕ
ij : i ≠ j
⊢ (Disjoint on fun i => ⋃ b ∈ decode₂ β i, f b) i j

tactic: refine disjoint_left.mpr fun x => ?_
state_before: α : Type u_1
β : Type u_2
inst✝ : Encodable β
f : β → Set α
hd : Pairwise (Disjoint on f)
i j : ℕ
ij : i ≠ j
⊢ (Disjoint on fun i => ⋃ b ∈ decode₂ β i, f b) i j
state_after: α : Type u_1
β : Type u_2
inst✝ : Encodable β
f : β → Set α
hd : Pairwise (Disjoint on f)
i j : ℕ
ij : i ≠ j
x : α
⊢ x ∈ (fun i => ⋃ b ∈ decode₂ β i, f b) i → x ∉ (fun i => ⋃ b ∈ decode₂ β i, f b) j

tactic: suffices ∀ a, encode a = i → x ∈ f a → ∀ b, encode b = j → x ∉ f b by simpa [decode₂_eq_some]
state_before: α : Type u_1
β : Type u_2
inst✝ : Encodable β
f : β → Set α
hd : Pairwise (Disjoint on f)
i j : ℕ
ij : i ≠ j
x : α
⊢ x ∈ (fun i => ⋃ b ∈ decode₂ β i, f b) i → x ∉ (fun i => ⋃ b ∈ decode₂ β i, f b) j
state_after: α : Type u_1
β : Type u_2
inst✝ : Encodable β
f : β → Set α
hd : Pairwise (Disjoint on f)
i j : ℕ
ij : i ≠ j
x : α
⊢ ∀ (a : β), encode a = i → x ∈ f a → ∀ (b : β), encode b = j → x ∉ f b

tactic: rintro a rfl ha b rfl hb
state_before: α : Type u_1
β : Type u_2
inst✝ : Encodable β
f : β → Set α
hd : Pairwise (Disjoint on f)
i j : ℕ
ij : i ≠ j
x : α
⊢ ∀ (a : β), encode a = i → x ∈ f a → ∀ (b : β), encode b = j → x ∉ f b
state_after: α : Type u_1
β : Type u_2
inst✝ : Encodable β
f : β → Set α
hd : Pairwise (Disjoint on f)
x : α
a : β
ha : x ∈ f a
b : β
ij : encode a ≠ encode b
hb : x ∈ f b
⊢ False

tactic: exact (hd (mt (congr_arg encode) ij)).le_bot ⟨ha, hb⟩
state_before: α : Type u_1
β : Type u_2
inst✝ : Encodable β
f : β → Set α
hd : Pairwise (Disjoint on f)
x : α
a : β
ha : x ∈ f a
b : β
ij : encode a ≠ encode b
hb : x ∈ f b
⊢ False
state_after: no goals

tactic: simpa [decode₂_eq_some]
state_before: α : Type u_1
β : Type u_2
inst✝ : Encodable β
f : β → Set α
hd : Pairwise (Disjoint on f)
i j : ℕ
ij : i ≠ j
x : α
this : ∀ (a : β), encode a = i → x ∈ f a → ∀ (b : β), encode b = j → x ∉ f b
⊢ x ∈ (fun i => ⋃ b ∈ decode₂ β i, f b) i → x ∉ (fun i => ⋃ b ∈ decode₂ β i, f b) j
state_after: no goals
Theorem: MeasureTheory.condexpL1CLM_smul
File: Mathlib/MeasureTheory/Function/ConditionalExpectation/CondexpL1.lean

tactic: refine L1.setToL1_smul (dominatedFinMeasAdditive_condexpInd F' hm μ) ?_ c f
state_before: α : Type u_1
β : Type u_2
F : Type u_3
F' : Type u_4
G : Type u_5
G' : Type u_6
𝕜 : Type u_7
p : ℝ≥0∞
inst✝¹¹ : RCLike 𝕜
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace 𝕜 F
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
inst✝⁶ : NormedSpace ℝ F'
inst✝⁵ : CompleteSpace F'
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedAddCommGroup G'
inst✝² : NormedSpace ℝ G'
inst✝¹ : CompleteSpace G'
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (μ.trim hm)
f✝ g : α → F'
s : Set α
c : 𝕜
f : ↥(Lp F' 1 μ)
⊢ (condexpL1CLM F' hm μ) (c • f) = c • (condexpL1CLM F' hm μ) f
state_after: α : Type u_1
β : Type u_2
F : Type u_3
F' : Type u_4
G : Type u_5
G' : Type u_6
𝕜 : Type u_7
p : ℝ≥0∞
inst✝¹¹ : RCLike 𝕜
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace 𝕜 F
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
inst✝⁶ : NormedSpace ℝ F'
inst✝⁵ : CompleteSpace F'
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedAddCommGroup G'
inst✝² : NormedSpace ℝ G'
inst✝¹ : CompleteSpace G'
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (μ.trim hm)
f✝ g : α → F'
s : Set α
c : 𝕜
f : ↥(Lp F' 1 μ)
⊢ ∀ (c : 𝕜) (s : Set α) (x : F'), (condexpInd F' hm μ s) (c • x) = c • (condexpInd F' hm μ s) x

tactic: exact fun c s x => condexpInd_smul' c x
state_before: α : Type u_1
β : Type u_2
F : Type u_3
F' : Type u_4
G : Type u_5
G' : Type u_6
𝕜 : Type u_7
p : ℝ≥0∞
inst✝¹¹ : RCLike 𝕜
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace 𝕜 F
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
inst✝⁶ : NormedSpace ℝ F'
inst✝⁵ : CompleteSpace F'
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedAddCommGroup G'
inst✝² : NormedSpace ℝ G'
inst✝¹ : CompleteSpace G'
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (μ.trim hm)
f✝ g : α → F'
s : Set α
c : 𝕜
f : ↥(Lp F' 1 μ)
⊢ ∀ (c : 𝕜) (s : Set α) (x : F'), (condexpInd F' hm μ s) (c • x) = c • (condexpInd F' hm μ s) x
state_after: no goals
Theorem: minpoly.ker_eval
File: Mathlib/FieldTheory/Minpoly/IsIntegrallyClosed.lean

tactic: ext p
state_before: R : Type u_1
S : Type u_2
inst✝⁶ : CommRing R
inst✝⁵ : CommRing S
inst✝⁴ : IsDomain R
inst✝³ : Algebra R S
inst✝² : IsDomain S
inst✝¹ : NoZeroSMulDivisors R S
inst✝ : IsIntegrallyClosed R
s : S
hs : IsIntegral R s
⊢ RingHom.ker (Polynomial.aeval s).toRingHom = Ideal.span {minpoly R s}
state_after: case h
R : Type u_1
S : Type u_2
inst✝⁶ : CommRing R
inst✝⁵ : CommRing S
inst✝⁴ : IsDomain R
inst✝³ : Algebra R S
inst✝² : IsDomain S
inst✝¹ : NoZeroSMulDivisors R S
inst✝ : IsIntegrallyClosed R
s : S
hs : IsIntegral R s
p : R[X]
⊢ p ∈ RingHom.ker (Polynomial.aeval s).toRingHom ↔ p ∈ Ideal.span {minpoly R s}

tactic: simp_rw [RingHom.mem_ker, AlgHom.toRingHom_eq_coe, AlgHom.coe_toRingHom,
  isIntegrallyClosed_dvd_iff hs, ← Ideal.mem_span_singleton]
state_before: case h
R : Type u_1
S : Type u_2
inst✝⁶ : CommRing R
inst✝⁵ : CommRing S
inst✝⁴ : IsDomain R
inst✝³ : Algebra R S
inst✝² : IsDomain S
inst✝¹ : NoZeroSMulDivisors R S
inst✝ : IsIntegrallyClosed R
s : S
hs : IsIntegral R s
p : R[X]
⊢ p ∈ RingHom.ker (Polynomial.aeval s).toRingHom ↔ p ∈ Ideal.span {minpoly R s}
state_after: no goals
Theorem: Finset.sup'_insert
File: Mathlib/Data/Finset/Lattice.lean

tactic: rw [← WithBot.coe_eq_coe]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝¹ : SemilatticeSup α
s : Finset β
H : s.Nonempty
f : β → α
inst✝ : DecidableEq β
b : β
⊢ (insert b s).sup' ⋯ f = f b ⊔ s.sup' H f
state_after: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝¹ : SemilatticeSup α
s : Finset β
H : s.Nonempty
f : β → α
inst✝ : DecidableEq β
b : β
⊢ ↑((insert b s).sup' ⋯ f) = ↑(f b ⊔ s.sup' H f)

tactic: simp [WithBot.coe_sup]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝¹ : SemilatticeSup α
s : Finset β
H : s.Nonempty
f : β → α
inst✝ : DecidableEq β
b : β
⊢ ↑((insert b s).sup' ⋯ f) = ↑(f b ⊔ s.sup' H f)
state_after: no goals
Theorem: PrimeMultiset.prod_inf
File: Mathlib/Data/PNat/Factors.lean

tactic: let n := u.prod
state_before: u v : PrimeMultiset
⊢ (u ⊓ v).prod = u.prod.gcd v.prod
state_after: u v : PrimeMultiset
n : ℕ+ := u.prod
⊢ (u ⊓ v).prod = u.prod.gcd v.prod

tactic: let m := v.prod
state_before: u v : PrimeMultiset
n : ℕ+ := u.prod
⊢ (u ⊓ v).prod = u.prod.gcd v.prod
state_after: u v : PrimeMultiset
n : ℕ+ := u.prod
m : ℕ+ := v.prod
⊢ (u ⊓ v).prod = u.prod.gcd v.prod

tactic: change (u ⊓ v).prod = PNat.gcd n m
state_before: u v : PrimeMultiset
n : ℕ+ := u.prod
m : ℕ+ := v.prod
⊢ (u ⊓ v).prod = u.prod.gcd v.prod
state_after: u v : PrimeMultiset
n : ℕ+ := u.prod
m : ℕ+ := v.prod
⊢ (u ⊓ v).prod = n.gcd m

tactic: have : u = n.factorMultiset := u.factorMultiset_prod.symm
state_before: u v : PrimeMultiset
n : ℕ+ := u.prod
m : ℕ+ := v.prod
⊢ (u ⊓ v).prod = n.gcd m
state_after: u v : PrimeMultiset
n : ℕ+ := u.prod
m : ℕ+ := v.prod
this : u = n.factorMultiset
⊢ (u ⊓ v).prod = n.gcd m

tactic: rw [this]
state_before: u v : PrimeMultiset
n : ℕ+ := u.prod
m : ℕ+ := v.prod
this : u = n.factorMultiset
⊢ (u ⊓ v).prod = n.gcd m
state_after: u v : PrimeMultiset
n : ℕ+ := u.prod
m : ℕ+ := v.prod
this : u = n.factorMultiset
⊢ (n.factorMultiset ⊓ v).prod = n.gcd m

tactic: have : v = m.factorMultiset := v.factorMultiset_prod.symm
state_before: u v : PrimeMultiset
n : ℕ+ := u.prod
m : ℕ+ := v.prod
this : u = n.factorMultiset
⊢ (n.factorMultiset ⊓ v).prod = n.gcd m
state_after: u v : PrimeMultiset
n : ℕ+ := u.prod
m : ℕ+ := v.prod
this✝ : u = n.factorMultiset
this : v = m.factorMultiset
⊢ (n.factorMultiset ⊓ v).prod = n.gcd m

tactic: rw [this]
state_before: u v : PrimeMultiset
n : ℕ+ := u.prod
m : ℕ+ := v.prod
this✝ : u = n.factorMultiset
this : v = m.factorMultiset
⊢ (n.factorMultiset ⊓ v).prod = n.gcd m
state_after: u v : PrimeMultiset
n : ℕ+ := u.prod
m : ℕ+ := v.prod
this✝ : u = n.factorMultiset
this : v = m.factorMultiset
⊢ (n.factorMultiset ⊓ m.factorMultiset).prod = n.gcd m

tactic: rw [← PNat.factorMultiset_gcd n m, PNat.prod_factorMultiset]
state_before: u v : PrimeMultiset
n : ℕ+ := u.prod
m : ℕ+ := v.prod
this✝ : u = n.factorMultiset
this : v = m.factorMultiset
⊢ (n.factorMultiset ⊓ m.factorMultiset).prod = n.gcd m
state_after: no goals
Theorem: Set.eqOn_singleton
File: Mathlib/Data/Set/Function.lean

tactic: simp [Set.EqOn]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
s s₁ s₂ : Set α
t t₁ t₂ : Set β
p : Set γ
f f₁ f₂ f₃ : α → β
g g₁ g₂ : β → γ
f' f₁' f₂' : β → α
g' : γ → β
a : α
b : β
⊢ EqOn f₁ f₂ {a} ↔ f₁ a = f₂ a
state_after: no goals