1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: CategoryTheory.Over.OverMorphism.ext
File: Mathlib/CategoryTheory/Comma/Over.lean

tactic: let ⟨_,b,_⟩ := f
state_before: T : Type u₁
inst✝ : Category.{v₁, u₁} T
X✝ X : T
U V : Over X
f g : U ⟶ V
h : f.left = g.left
⊢ f = g
state_after: T : Type u₁
inst✝ : Category.{v₁, u₁} T
X✝ X : T
U V : Over X
f g : U ⟶ V
left✝ : U.left ⟶ V.left
b : U.right ⟶ V.right
w✝ : (𝟭 T).map left✝ ≫ V.hom = U.hom ≫ (Functor.fromPUnit X).map b
h : { left := left✝, right := b, w := w✝ }.left = g.left
⊢ { left := left✝, right := b, w := w✝ } = g

tactic: let ⟨_,e,_⟩ := g
state_before: T : Type u₁
inst✝ : Category.{v₁, u₁} T
X✝ X : T
U V : Over X
f g : U ⟶ V
left✝ : U.left ⟶ V.left
b : U.right ⟶ V.right
w✝ : (𝟭 T).map left✝ ≫ V.hom = U.hom ≫ (Functor.fromPUnit X).map b
h : { left := left✝, right := b, w := w✝ }.left = g.left
⊢ { left := left✝, right := b, w := w✝ } = g
state_after: T : Type u₁
inst✝ : Category.{v₁, u₁} T
X✝ X : T
U V : Over X
f g : U ⟶ V
left✝¹ : U.left ⟶ V.left
b : U.right ⟶ V.right
w✝¹ : (𝟭 T).map left✝¹ ≫ V.hom = U.hom ≫ (Functor.fromPUnit X).map b
left✝ : U.left ⟶ V.left
e : U.right ⟶ V.right
w✝ : (𝟭 T).map left✝ ≫ V.hom = U.hom ≫ (Functor.fromPUnit X).map e
h : { left := left✝¹, right := b, w := w✝¹ }.left = { left := left✝, right := e, w := w✝ }.left
⊢ { left := left✝¹, right := b, w := w✝¹ } = { left := left✝, right := e, w := w✝ }

tactic: congr
state_before: T : Type u₁
inst✝ : Category.{v₁, u₁} T
X✝ X : T
U V : Over X
f g : U ⟶ V
left✝¹ : U.left ⟶ V.left
b : U.right ⟶ V.right
w✝¹ : (𝟭 T).map left✝¹ ≫ V.hom = U.hom ≫ (Functor.fromPUnit X).map b
left✝ : U.left ⟶ V.left
e : U.right ⟶ V.right
w✝ : (𝟭 T).map left✝ ≫ V.hom = U.hom ≫ (Functor.fromPUnit X).map e
h : { left := left✝¹, right := b, w := w✝¹ }.left = { left := left✝, right := e, w := w✝ }.left
⊢ { left := left✝¹, right := b, w := w✝¹ } = { left := left✝, right := e, w := w✝ }
state_after: case e_right
T : Type u₁
inst✝ : Category.{v₁, u₁} T
X✝ X : T
U V : Over X
f g : U ⟶ V
left✝¹ : U.left ⟶ V.left
b : U.right ⟶ V.right
w✝¹ : (𝟭 T).map left✝¹ ≫ V.hom = U.hom ≫ (Functor.fromPUnit X).map b
left✝ : U.left ⟶ V.left
e : U.right ⟶ V.right
w✝ : (𝟭 T).map left✝ ≫ V.hom = U.hom ≫ (Functor.fromPUnit X).map e
h : { left := left✝¹, right := b, w := w✝¹ }.left = { left := left✝, right := e, w := w✝ }.left
⊢ b = e

tactic: simp only [eq_iff_true_of_subsingleton]
state_before: case e_right
T : Type u₁
inst✝ : Category.{v₁, u₁} T
X✝ X : T
U V : Over X
f g : U ⟶ V
left✝¹ : U.left ⟶ V.left
b : U.right ⟶ V.right
w✝¹ : (𝟭 T).map left✝¹ ≫ V.hom = U.hom ≫ (Functor.fromPUnit X).map b
left✝ : U.left ⟶ V.left
e : U.right ⟶ V.right
w✝ : (𝟭 T).map left✝ ≫ V.hom = U.hom ≫ (Functor.fromPUnit X).map e
h : { left := left✝¹, right := b, w := w✝¹ }.left = { left := left✝, right := e, w := w✝ }.left
⊢ b = e
state_after: no goals
Theorem: TrivSqZeroExt.snd_pow_of_smul_comm'
File: Mathlib/Algebra/TrivSqZeroExt.lean

tactic: rw [snd_pow_of_smul_comm _ _ h, snd_pow_of_smul_comm.aux _ h]
state_before: R : Type u
M : Type v
inst✝⁴ : Monoid R
inst✝³ : AddMonoid M
inst✝² : DistribMulAction R M
inst✝¹ : DistribMulAction Rᵐᵒᵖ M
inst✝ : SMulCommClass R Rᵐᵒᵖ M
x : tsze R M
n : ℕ
h : x.snd <• x.fst = x.fst •> x.snd
⊢ (x ^ n).snd = n •> (x.snd <• x.fst ^ n.pred)
state_after: no goals
Theorem: Sum.lex_inr_inr
File: .lake/packages/batteries/Batteries/Data/Sum/Basic.lean

tactic: cases h
state_before: α✝ : Type u_1
r : α✝ → α✝ → Prop
β✝ : Type u_2
s : β✝ → β✝ → Prop
b₁ b₂ : β✝
h : Lex r s (inr b₁) (inr b₂)
⊢ s b₁ b₂
state_after: case inr
α✝ : Type u_1
r : α✝ → α✝ → Prop
β✝ : Type u_2
s : β✝ → β✝ → Prop
b₁ b₂ : β✝
h✝ : s b₁ b₂
⊢ s b₁ b₂

tactic: assumption
state_before: case inr
α✝ : Type u_1
r : α✝ → α✝ → Prop
β✝ : Type u_2
s : β✝ → β✝ → Prop
b₁ b₂ : β✝
h✝ : s b₁ b₂
⊢ s b₁ b₂
state_after: no goals
Theorem: StrictConvex.add_left
File: Mathlib/Analysis/Convex/Strict.lean

tactic: simpa only [singleton_add] using (strictConvex_singleton z).add hs
state_before: 𝕜 : Type u_1
𝕝 : Type u_2
E : Type u_3
F : Type u_4
β : Type u_5
inst✝⁷ : OrderedSemiring 𝕜
inst✝⁶ : TopologicalSpace E
inst✝⁵ : TopologicalSpace F
inst✝⁴ : AddCommGroup E
inst✝³ : AddCommGroup F
inst✝² : Module 𝕜 E
inst✝¹ : Module 𝕜 F
inst✝ : ContinuousAdd E
s t : Set E
hs : StrictConvex 𝕜 s
z : E
⊢ StrictConvex 𝕜 ((fun x => z + x) '' s)
state_after: no goals
Theorem: Ordinal.cof_omega
File: Mathlib/SetTheory/Cardinal/Cofinality.lean

tactic: rw [← card_omega]
state_before: α : Type u_1
r : α → α → Prop
⊢ ω.cof ≤ ℵ₀
state_after: α : Type u_1
r : α → α → Prop
⊢ ω.cof ≤ ω.card

tactic: apply cof_le_card
state_before: α : Type u_1
r : α → α → Prop
⊢ ω.cof ≤ ω.card
state_after: no goals
Theorem: Ordinal.natCast_opow
File: Mathlib/SetTheory/Ordinal/Exponential.lean

tactic: simp
state_before: m : ℕ
⊢ ↑(m ^ 0) = ↑m ^ ↑0
state_after: no goals

tactic: rw [pow_succ, natCast_mul, natCast_opow m n, Nat.cast_succ, add_one_eq_succ, opow_succ]
state_before: m n : ℕ
⊢ ↑(m ^ (n + 1)) = ↑m ^ ↑(n + 1)
state_after: no goals
Theorem: WeierstrassCurve.ΨSq_three
File: Mathlib/AlgebraicGeometry/EllipticCurve/DivisionPolynomial/Basic.lean

tactic: erw [ΨSq_ofNat, preΨ'_three, mul_one]
state_before: R : Type r
S : Type s
inst✝¹ : CommRing R
inst✝ : CommRing S
W : WeierstrassCurve R
⊢ W.ΨSq 3 = W.Ψ₃ ^ 2
state_after: no goals
Theorem: Fin.snoc_castSucc
File: Mathlib/Data/Fin/Tuple/Basic.lean

tactic: simp only [snoc, coe_castSucc, is_lt, cast_eq, dite_true]
state_before: m n : ℕ
α : Fin (n + 1) → Type u
x : α (last n)
q : (i : Fin (n + 1)) → α i
p : (i : Fin n) → α i.castSucc
i : Fin n
y : α i.castSucc
z : α (last n)
⊢ snoc p x i.castSucc = p i
state_after: m n : ℕ
α : Fin (n + 1) → Type u
x : α (last n)
q : (i : Fin (n + 1)) → α i
p : (i : Fin n) → α i.castSucc
i : Fin n
y : α i.castSucc
z : α (last n)
⊢ p (i.castSucc.castLT ⋯) = p i

tactic: convert cast_eq rfl (p i)
state_before: m n : ℕ
α : Fin (n + 1) → Type u
x : α (last n)
q : (i : Fin (n + 1)) → α i
p : (i : Fin n) → α i.castSucc
i : Fin n
y : α i.castSucc
z : α (last n)
⊢ p (i.castSucc.castLT ⋯) = p i
state_after: no goals
Theorem: interior_eq_nhds
File: Mathlib/Topology/Basic.lean

tactic: simp only [le_principal_iff]
state_before: X : Type u
Y : Type v
ι : Sort w
α : Type u_1
β : Type u_2
x : X
s s₁ s₂ t : Set X
p p₁ p₂ : X → Prop
inst✝ : TopologicalSpace X
⊢ {x | s ∈ 𝓝 x} = {x | 𝓝 x ≤ 𝓟 s}
state_after: no goals
Theorem: Polynomial.isRoot_of_eval₂_map_eq_zero
File: Mathlib/Algebra/Polynomial/AlgebraMap.lean

tactic: intro h
state_before: R : Type u
S : Type v
T : Type w
A : Type z
A' : Type u_1
B : Type u_2
a b : R
n : ℕ
inst✝⁷ : CommSemiring R
inst✝⁶ : Semiring A
inst✝⁵ : CommSemiring A'
inst✝⁴ : Semiring B
inst✝³ : Algebra R A
inst✝² : Algebra R A'
inst✝¹ : Algebra R B
p q : R[X]
x : A
inst✝ : Semiring S
f : R →+* S
hf : Function.Injective ⇑f
r : R
⊢ eval₂ f (f r) p = 0 → p.IsRoot r
state_after: R : Type u
S : Type v
T : Type w
A : Type z
A' : Type u_1
B : Type u_2
a b : R
n : ℕ
inst✝⁷ : CommSemiring R
inst✝⁶ : Semiring A
inst✝⁵ : CommSemiring A'
inst✝⁴ : Semiring B
inst✝³ : Algebra R A
inst✝² : Algebra R A'
inst✝¹ : Algebra R B
p q : R[X]
x : A
inst✝ : Semiring S
f : R →+* S
hf : Function.Injective ⇑f
r : R
h : eval₂ f (f r) p = 0
⊢ p.IsRoot r

tactic: apply hf
state_before: R : Type u
S : Type v
T : Type w
A : Type z
A' : Type u_1
B : Type u_2
a b : R
n : ℕ
inst✝⁷ : CommSemiring R
inst✝⁶ : Semiring A
inst✝⁵ : CommSemiring A'
inst✝⁴ : Semiring B
inst✝³ : Algebra R A
inst✝² : Algebra R A'
inst✝¹ : Algebra R B
p q : R[X]
x : A
inst✝ : Semiring S
f : R →+* S
hf : Function.Injective ⇑f
r : R
h : eval₂ f (f r) p = 0
⊢ p.IsRoot r
state_after: case a
R : Type u
S : Type v
T : Type w
A : Type z
A' : Type u_1
B : Type u_2
a b : R
n : ℕ
inst✝⁷ : CommSemiring R
inst✝⁶ : Semiring A
inst✝⁵ : CommSemiring A'
inst✝⁴ : Semiring B
inst✝³ : Algebra R A
inst✝² : Algebra R A'
inst✝¹ : Algebra R B
p q : R[X]
x : A
inst✝ : Semiring S
f : R →+* S
hf : Function.Injective ⇑f
r : R
h : eval₂ f (f r) p = 0
⊢ f (eval r p) = f 0

tactic: rw [← eval₂_hom, h, f.map_zero]
state_before: case a
R : Type u
S : Type v
T : Type w
A : Type z
A' : Type u_1
B : Type u_2
a b : R
n : ℕ
inst✝⁷ : CommSemiring R
inst✝⁶ : Semiring A
inst✝⁵ : CommSemiring A'
inst✝⁴ : Semiring B
inst✝³ : Algebra R A
inst✝² : Algebra R A'
inst✝¹ : Algebra R B
p q : R[X]
x : A
inst✝ : Semiring S
f : R →+* S
hf : Function.Injective ⇑f
r : R
h : eval₂ f (f r) p = 0
⊢ f (eval r p) = f 0
state_after: no goals
Theorem: isOpen_setOf_eventually_nhds
File: Mathlib/Topology/Basic.lean

tactic: simp only [← interior_setOf_eq, isOpen_interior]
state_before: X : Type u
Y : Type v
ι : Sort w
α : Type u_1
β : Type u_2
x : X
s s₁ s₂ t : Set X
p✝ p₁ p₂ : X → Prop
inst✝ : TopologicalSpace X
p : X → Prop
⊢ IsOpen {x | ∀ᶠ (y : X) in 𝓝 x, p y}
state_after: no goals
Theorem: PrincipalSeg.topLTTop
File: Mathlib/Order/InitialSeg.lean

tactic: rw [Subsingleton.elim h (f.trans g)]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r✝ : α → α → Prop
s✝ : β → β → Prop
t✝ : γ → γ → Prop
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
inst✝ : IsWellOrder γ t
f : r ≺i s
g : s ≺i t
h : r ≺i t
⊢ t h.top g.top
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
r✝ : α → α → Prop
s✝ : β → β → Prop
t✝ : γ → γ → Prop
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
inst✝ : IsWellOrder γ t
f : r ≺i s
g : s ≺i t
h : r ≺i t
⊢ t (f.trans g).top g.top

tactic: apply PrincipalSeg.lt_top
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r✝ : α → α → Prop
s✝ : β → β → Prop
t✝ : γ → γ → Prop
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
inst✝ : IsWellOrder γ t
f : r ≺i s
g : s ≺i t
h : r ≺i t
⊢ t (f.trans g).top g.top
state_after: no goals
Theorem: Finset.sum_centroidWeightsIndicator_eq_one_of_card_ne_zero
File: Mathlib/LinearAlgebra/AffineSpace/Combination.lean

tactic: rw [sum_centroidWeightsIndicator]
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝⁵ : DivisionRing k
inst✝⁴ : AddCommGroup V
inst✝³ : Module k V
inst✝² : AffineSpace V P
ι : Type u_4
s : Finset ι
ι₂ : Type u_5
s₂ : Finset ι₂
inst✝¹ : CharZero k
inst✝ : Fintype ι
h : s.card ≠ 0
⊢ ∑ i : ι, centroidWeightsIndicator k s i = 1
state_after: k : Type u_1
V : Type u_2
P : Type u_3
inst✝⁵ : DivisionRing k
inst✝⁴ : AddCommGroup V
inst✝³ : Module k V
inst✝² : AffineSpace V P
ι : Type u_4
s : Finset ι
ι₂ : Type u_5
s₂ : Finset ι₂
inst✝¹ : CharZero k
inst✝ : Fintype ι
h : s.card ≠ 0
⊢ ∑ i ∈ s, centroidWeights k s i = 1

tactic: exact s.sum_centroidWeights_eq_one_of_card_ne_zero k h
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝⁵ : DivisionRing k
inst✝⁴ : AddCommGroup V
inst✝³ : Module k V
inst✝² : AffineSpace V P
ι : Type u_4
s : Finset ι
ι₂ : Type u_5
s₂ : Finset ι₂
inst✝¹ : CharZero k
inst✝ : Fintype ι
h : s.card ≠ 0
⊢ ∑ i ∈ s, centroidWeights k s i = 1
state_after: no goals
Theorem: Nat.Prime.primeFactors
File: Mathlib/Data/Nat/PrimeFin.lean

tactic: simp [Nat.primeFactors, factors_prime hp]
state_before: a b k m n p : ℕ
hp : Prime p
⊢ p.primeFactors = {p}
state_after: no goals
Theorem: EuclideanDomain.gcd_eq_gcd_ab
File: Mathlib/Algebra/EuclideanDomain/Basic.lean

tactic: have :=
  @xgcdAux_P _ _ _ a b a b 1 0 0 1 (by dsimp [P]; rw [mul_one, mul_zero, add_zero])
    (by dsimp [P]; rw [mul_one, mul_zero, zero_add])
state_before: R : Type u
inst✝¹ : EuclideanDomain R
inst✝ : DecidableEq R
a b : R
⊢ gcd a b = a * gcdA a b + b * gcdB a b
state_after: R : Type u
inst✝¹ : EuclideanDomain R
inst✝ : DecidableEq R
a b : R
this : EuclideanDomain.P a b (xgcdAux a 1 0 b 0 1)
⊢ gcd a b = a * gcdA a b + b * gcdB a b

tactic: rwa [xgcdAux_val, xgcd_val] at this
state_before: R : Type u
inst✝¹ : EuclideanDomain R
inst✝ : DecidableEq R
a b : R
this : EuclideanDomain.P a b (xgcdAux a 1 0 b 0 1)
⊢ gcd a b = a * gcdA a b + b * gcdB a b
state_after: no goals

tactic: dsimp [P]
state_before: R : Type u
inst✝¹ : EuclideanDomain R
inst✝ : DecidableEq R
a b : R
⊢ EuclideanDomain.P a b (a, 1, 0)
state_after: R : Type u
inst✝¹ : EuclideanDomain R
inst✝ : DecidableEq R
a b : R
⊢ a = a * 1 + b * 0

tactic: rw [mul_one, mul_zero, add_zero]
state_before: R : Type u
inst✝¹ : EuclideanDomain R
inst✝ : DecidableEq R
a b : R
⊢ a = a * 1 + b * 0
state_after: no goals

tactic: dsimp [P]
state_before: R : Type u
inst✝¹ : EuclideanDomain R
inst✝ : DecidableEq R
a b : R
⊢ EuclideanDomain.P a b (b, 0, 1)
state_after: R : Type u
inst✝¹ : EuclideanDomain R
inst✝ : DecidableEq R
a b : R
⊢ b = a * 0 + b * 1

tactic: rw [mul_one, mul_zero, zero_add]
state_before: R : Type u
inst✝¹ : EuclideanDomain R
inst✝ : DecidableEq R
a b : R
⊢ b = a * 0 + b * 1
state_after: no goals
Theorem: Multiset.gcd_ndinsert
File: Mathlib/Algebra/GCDMonoid/Multiset.lean

tactic: rw [← gcd_dedup, dedup_ext.2, gcd_dedup, gcd_cons]
state_before: α : Type u_1
inst✝² : CancelCommMonoidWithZero α
inst✝¹ : NormalizedGCDMonoid α
inst✝ : DecidableEq α
a : α
s : Multiset α
⊢ (ndinsert a s).gcd = GCDMonoid.gcd a s.gcd
state_after: α : Type u_1
inst✝² : CancelCommMonoidWithZero α
inst✝¹ : NormalizedGCDMonoid α
inst✝ : DecidableEq α
a : α
s : Multiset α
⊢ ∀ (a_1 : α), a_1 ∈ ndinsert a s ↔ a_1 ∈ a ::ₘ s

tactic: simp
state_before: α : Type u_1
inst✝² : CancelCommMonoidWithZero α
inst✝¹ : NormalizedGCDMonoid α
inst✝ : DecidableEq α
a : α
s : Multiset α
⊢ ∀ (a_1 : α), a_1 ∈ ndinsert a s ↔ a_1 ∈ a ::ₘ s
state_after: no goals
Theorem: symmDiff_symmDiff_right'
File: Mathlib/Order/SymmDiff.lean

tactic: rw [symmDiff_eq, compl_symmDiff, bihimp_eq', symmDiff_eq]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝ : BooleanAlgebra α
a b c d : α
⊢ a ∆ (b ∆ c) = a ⊓ (b ⊓ c ⊔ bᶜ ⊓ cᶜ) ⊔ (b ⊓ cᶜ ⊔ c ⊓ bᶜ) ⊓ aᶜ
state_after: no goals

tactic: rw [inf_sup_left, inf_sup_right, ← sup_assoc, ← inf_assoc, ← inf_assoc]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝ : BooleanAlgebra α
a b c d : α
⊢ a ⊓ (b ⊓ c ⊔ bᶜ ⊓ cᶜ) ⊔ (b ⊓ cᶜ ⊔ c ⊓ bᶜ) ⊓ aᶜ = a ⊓ b ⊓ c ⊔ a ⊓ bᶜ ⊓ cᶜ ⊔ b ⊓ cᶜ ⊓ aᶜ ⊔ c ⊓ bᶜ ⊓ aᶜ
state_after: no goals

tactic: congr 1
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝ : BooleanAlgebra α
a b c d : α
⊢ a ⊓ b ⊓ c ⊔ a ⊓ bᶜ ⊓ cᶜ ⊔ b ⊓ cᶜ ⊓ aᶜ ⊔ c ⊓ bᶜ ⊓ aᶜ = a ⊓ b ⊓ c ⊔ a ⊓ bᶜ ⊓ cᶜ ⊔ aᶜ ⊓ b ⊓ cᶜ ⊔ aᶜ ⊓ bᶜ ⊓ c
state_after: case e_a
ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝ : BooleanAlgebra α
a b c d : α
⊢ a ⊓ b ⊓ c ⊔ a ⊓ bᶜ ⊓ cᶜ ⊔ b ⊓ cᶜ ⊓ aᶜ = a ⊓ b ⊓ c ⊔ a ⊓ bᶜ ⊓ cᶜ ⊔ aᶜ ⊓ b ⊓ cᶜ

case e_a
ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝ : BooleanAlgebra α
a b c d : α
⊢ c ⊓ bᶜ ⊓ aᶜ = aᶜ ⊓ bᶜ ⊓ c

tactic: congr 1
state_before: case e_a
ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝ : BooleanAlgebra α
a b c d : α
⊢ a ⊓ b ⊓ c ⊔ a ⊓ bᶜ ⊓ cᶜ ⊔ b ⊓ cᶜ ⊓ aᶜ = a ⊓ b ⊓ c ⊔ a ⊓ bᶜ ⊓ cᶜ ⊔ aᶜ ⊓ b ⊓ cᶜ
state_after: case e_a.e_a
ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝ : BooleanAlgebra α
a b c d : α
⊢ b ⊓ cᶜ ⊓ aᶜ = aᶜ ⊓ b ⊓ cᶜ

tactic: rw [inf_comm, inf_assoc]
state_before: case e_a.e_a
ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝ : BooleanAlgebra α
a b c d : α
⊢ b ⊓ cᶜ ⊓ aᶜ = aᶜ ⊓ b ⊓ cᶜ
state_after: no goals

tactic: apply inf_left_right_swap
state_before: case e_a
ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝ : BooleanAlgebra α
a b c d : α
⊢ c ⊓ bᶜ ⊓ aᶜ = aᶜ ⊓ bᶜ ⊓ c
state_after: no goals
Theorem: not_isPrimePow_zero
File: Mathlib/Algebra/IsPrimePow.lean

tactic: simp only [isPrimePow_def, not_exists, not_and', and_imp]
state_before: R : Type u_1
inst✝¹ : CommMonoidWithZero R
n p : R
k : ℕ
inst✝ : NoZeroDivisors R
⊢ ¬IsPrimePow 0
state_after: R : Type u_1
inst✝¹ : CommMonoidWithZero R
n p : R
k : ℕ
inst✝ : NoZeroDivisors R
⊢ ∀ (x : R) (x_1 : ℕ), 0 < x_1 → x ^ x_1 = 0 → ¬Prime x

tactic: intro x n _hn hx
state_before: R : Type u_1
inst✝¹ : CommMonoidWithZero R
n p : R
k : ℕ
inst✝ : NoZeroDivisors R
⊢ ∀ (x : R) (x_1 : ℕ), 0 < x_1 → x ^ x_1 = 0 → ¬Prime x
state_after: R : Type u_1
inst✝¹ : CommMonoidWithZero R
n✝ p : R
k : ℕ
inst✝ : NoZeroDivisors R
x : R
n : ℕ
_hn : 0 < n
hx : x ^ n = 0
⊢ ¬Prime x

tactic: rw [pow_eq_zero hx]
state_before: R : Type u_1
inst✝¹ : CommMonoidWithZero R
n✝ p : R
k : ℕ
inst✝ : NoZeroDivisors R
x : R
n : ℕ
_hn : 0 < n
hx : x ^ n = 0
⊢ ¬Prime x
state_after: R : Type u_1
inst✝¹ : CommMonoidWithZero R
n✝ p : R
k : ℕ
inst✝ : NoZeroDivisors R
x : R
n : ℕ
_hn : 0 < n
hx : x ^ n = 0
⊢ ¬Prime 0

tactic: simp
state_before: R : Type u_1
inst✝¹ : CommMonoidWithZero R
n✝ p : R
k : ℕ
inst✝ : NoZeroDivisors R
x : R
n : ℕ
_hn : 0 < n
hx : x ^ n = 0
⊢ ¬Prime 0
state_after: no goals
Theorem: Int.norm_coe_units
File: Mathlib/Analysis/NormedSpace/Int.lean

tactic: rw [← coe_nnnorm, nnnorm_coe_units, NNReal.coe_one]
state_before: e : ℤˣ
⊢ ‖↑e‖ = 1
state_after: no goals
Theorem: MeasureTheory.Measure.iSup_restrict_spanningSets_of_measurableSet
File: Mathlib/MeasureTheory/Measure/Typeclasses.lean

tactic: rw [iUnion_spanningSets, restrict_univ]
state_before: α : Type u_1
β : Type u_2
δ : Type u_3
ι : Type u_4
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
μ ν ν₁ ν₂ : Measure α
s t : Set α
inst✝ : SigmaFinite μ
hs : MeasurableSet s
⊢ (μ.restrict (⋃ i, spanningSets μ i)) s = μ s
state_after: no goals
Theorem: Polynomial.Monic.isUnit_leadingCoeff_of_dvd
File: Mathlib/Algebra/Polynomial/Roots.lean

tactic: simpa only [hp.leadingCoeff] using leadingCoeff_dvd_leadingCoeff hap
state_before: R : Type u
S : Type v
T : Type w
a✝ b : R
n : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p✝ q a p : R[X]
hp : p.Monic
hap : a ∣ p
⊢ a.leadingCoeff ∣ 1
state_after: no goals
Theorem: Finset.mulETransformRight_one
File: Mathlib/Combinatorics/Additive/ETransform.lean

tactic: simp [mulETransformRight]
state_before: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Group α
e : α
x : Finset α × Finset α
⊢ mulETransformRight 1 x = x
state_after: no goals
Theorem: LieModuleHom.le_ker_iff_map
File: Mathlib/Algebra/Lie/Submodule.lean

tactic: rw [ker, eq_bot_iff, LieSubmodule.map_le_iff_le_comap]
state_before: R : Type u
L : Type v
M : Type w
N : Type w₁
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup N
inst✝² : Module R N
inst✝¹ : LieRingModule L N
inst✝ : LieModule R L N
f : M →ₗ⁅R,L⁆ N
M' : LieSubmodule R L M
⊢ M' ≤ f.ker ↔ LieSubmodule.map f M' = ⊥
state_after: no goals
Theorem: Sum.smul_swap
File: Mathlib/GroupTheory/GroupAction/Sum.lean

tactic: cases x <;> rfl
state_before: M : Type u_1
N : Type u_2
P : Type u_3
α : Type u_4
β : Type u_5
γ : Type u_6
inst✝³ : SMul M α
inst✝² : SMul M β
inst✝¹ : SMul N α
inst✝ : SMul N β
a : M
b : α
c : β
x : α ⊕ β
⊢ (a • x).swap = a • x.swap
state_after: no goals
Theorem: pow_right_strictMono
File: Mathlib/Algebra/Order/Ring/Basic.lean

tactic: simpa only [one_mul, pow_succ'] using mul_lt_mul h (le_refl (a ^ n)) (pow_pos this _) this.le
state_before: α : Type u_1
M : Type u_2
R : Type u_3
inst✝ : StrictOrderedSemiring R
a x y : R
n✝ m : ℕ
h : 1 < a
this : 0 < a
n : ℕ
⊢ a ^ n < a ^ (n + 1)
state_after: no goals
Theorem: FiniteDimensional.rank_linearMap_self
File: Mathlib/LinearAlgebra/FreeModule/Finite/Matrix.lean

tactic: rw [rank_linearMap, rank_self, lift_one, mul_one]
state_before: R : Type u
S : Type u'
M : Type v
N : Type w
inst✝¹⁴ : Ring R
inst✝¹³ : Ring S
inst✝¹² : AddCommGroup M
inst✝¹¹ : Module R M
inst✝¹⁰ : Module.Free R M
inst✝⁹ : Module.Finite R M
inst✝⁸ : AddCommGroup N
inst✝⁷ : Module R N
inst✝⁶ : Module S N
inst✝⁵ : SMulCommClass R S N
inst✝⁴ : StrongRankCondition R
inst✝³ : StrongRankCondition S
inst✝² : Module.Free S N
inst✝¹ : Module R S
inst✝ : SMulCommClass R S S
⊢ Module.rank S (M →ₗ[R] S) = lift.{u', v} (Module.rank R M)
state_after: no goals
Theorem: MeasureTheory.absolutelyContinuous_of_isMulLeftInvariant
File: Mathlib/MeasureTheory/Group/Prod.lean

tactic: refine AbsolutelyContinuous.mk fun s sm hνs => ?_
state_before: G : Type u_1
inst✝⁷ : MeasurableSpace G
inst✝⁶ : Group G
inst✝⁵ : MeasurableMul₂ G
μ ν : Measure G
inst✝⁴ : SigmaFinite ν
inst✝³ : SigmaFinite μ
s : Set G
inst✝² : MeasurableInv G
inst✝¹ : μ.IsMulLeftInvariant
inst✝ : ν.IsMulLeftInvariant
hν : ν ≠ 0
⊢ μ ≪ ν
state_after: G : Type u_1
inst✝⁷ : MeasurableSpace G
inst✝⁶ : Group G
inst✝⁵ : MeasurableMul₂ G
μ ν : Measure G
inst✝⁴ : SigmaFinite ν
inst✝³ : SigmaFinite μ
s✝ : Set G
inst✝² : MeasurableInv G
inst✝¹ : μ.IsMulLeftInvariant
inst✝ : ν.IsMulLeftInvariant
hν : ν ≠ 0
s : Set G
sm : MeasurableSet s
hνs : ν s = 0
⊢ μ s = 0

tactic: have h1 := measure_mul_lintegral_eq μ ν sm 1 measurable_one
state_before: G : Type u_1
inst✝⁷ : MeasurableSpace G
inst✝⁶ : Group G
inst✝⁵ : MeasurableMul₂ G
μ ν : Measure G
inst✝⁴ : SigmaFinite ν
inst✝³ : SigmaFinite μ
s✝ : Set G
inst✝² : MeasurableInv G
inst✝¹ : μ.IsMulLeftInvariant
inst✝ : ν.IsMulLeftInvariant
hν : ν ≠ 0
s : Set G
sm : MeasurableSet s
hνs : ν s = 0
⊢ μ s = 0
state_after: G : Type u_1
inst✝⁷ : MeasurableSpace G
inst✝⁶ : Group G
inst✝⁵ : MeasurableMul₂ G
μ ν : Measure G
inst✝⁴ : SigmaFinite ν
inst✝³ : SigmaFinite μ
s✝ : Set G
inst✝² : MeasurableInv G
inst✝¹ : μ.IsMulLeftInvariant
inst✝ : ν.IsMulLeftInvariant
hν : ν ≠ 0
s : Set G
sm : MeasurableSet s
hνs : ν s = 0
h1 : μ s * ∫⁻ (y : G), 1 y ∂ν = ∫⁻ (x : G), ν ((fun z => z * x) ⁻¹' s) * 1 x⁻¹ ∂μ
⊢ μ s = 0

tactic: simp_rw [Pi.one_apply, lintegral_one, mul_one, (measure_mul_right_null ν _).mpr hνs,
  lintegral_zero, mul_eq_zero (M₀ := ℝ≥0∞), measure_univ_eq_zero.not.mpr hν, or_false_iff] at h1
state_before: G : Type u_1
inst✝⁷ : MeasurableSpace G
inst✝⁶ : Group G
inst✝⁵ : MeasurableMul₂ G
μ ν : Measure G
inst✝⁴ : SigmaFinite ν
inst✝³ : SigmaFinite μ
s✝ : Set G
inst✝² : MeasurableInv G
inst✝¹ : μ.IsMulLeftInvariant
inst✝ : ν.IsMulLeftInvariant
hν : ν ≠ 0
s : Set G
sm : MeasurableSet s
hνs : ν s = 0
h1 : μ s * ∫⁻ (y : G), 1 y ∂ν = ∫⁻ (x : G), ν ((fun z => z * x) ⁻¹' s) * 1 x⁻¹ ∂μ
⊢ μ s = 0
state_after: G : Type u_1
inst✝⁷ : MeasurableSpace G
inst✝⁶ : Group G
inst✝⁵ : MeasurableMul₂ G
μ ν : Measure G
inst✝⁴ : SigmaFinite ν
inst✝³ : SigmaFinite μ
s✝ : Set G
inst✝² : MeasurableInv G
inst✝¹ : μ.IsMulLeftInvariant
inst✝ : ν.IsMulLeftInvariant
hν : ν ≠ 0
s : Set G
sm : MeasurableSet s
hνs : ν s = 0
h1 : μ s = 0
⊢ μ s = 0

tactic: exact h1
state_before: G : Type u_1
inst✝⁷ : MeasurableSpace G
inst✝⁶ : Group G
inst✝⁵ : MeasurableMul₂ G
μ ν : Measure G
inst✝⁴ : SigmaFinite ν
inst✝³ : SigmaFinite μ
s✝ : Set G
inst✝² : MeasurableInv G
inst✝¹ : μ.IsMulLeftInvariant
inst✝ : ν.IsMulLeftInvariant
hν : ν ≠ 0
s : Set G
sm : MeasurableSet s
hνs : ν s = 0
h1 : μ s = 0
⊢ μ s = 0
state_after: no goals
Theorem: Real.sin_sub_pi_div_two
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

tactic: simp [sub_eq_add_neg, sin_add]
state_before: x : ℝ
⊢ sin (x - π / 2) = -cos x
state_after: no goals
Theorem: Nat.factorization_le_factorization_mul_right
File: Mathlib/Data/Nat/Factorization/Basic.lean

tactic: rw [mul_comm]
state_before: a✝ b✝ m n p a b : ℕ
ha : a ≠ 0
⊢ b.factorization ≤ (a * b).factorization
state_after: a✝ b✝ m n p a b : ℕ
ha : a ≠ 0
⊢ b.factorization ≤ (b * a).factorization

tactic: apply factorization_le_factorization_mul_left ha
state_before: a✝ b✝ m n p a b : ℕ
ha : a ≠ 0
⊢ b.factorization ≤ (b * a).factorization
state_after: no goals
Theorem: PiCountable.dist_summable
File: Mathlib/Topology/MetricSpace/PiNat.lean

tactic: refine .of_nonneg_of_le (fun i => ?_) (fun i => min_le_left _ _)
  summable_geometric_two_encode
state_before: E : ℕ → Type u_1
ι : Type u_2
inst✝¹ : Encodable ι
F : ι → Type u_3
inst✝ : (i : ι) → MetricSpace (F i)
x y : (i : ι) → F i
⊢ Summable fun i => min ((1 / 2) ^ encode i) (dist (x i) (y i))
state_after: E : ℕ → Type u_1
ι : Type u_2
inst✝¹ : Encodable ι
F : ι → Type u_3
inst✝ : (i : ι) → MetricSpace (F i)
x y : (i : ι) → F i
i : ι
⊢ 0 ≤ min ((1 / 2) ^ encode i) (dist (x i) (y i))

tactic: exact le_min (pow_nonneg (by norm_num) _) dist_nonneg
state_before: E : ℕ → Type u_1
ι : Type u_2
inst✝¹ : Encodable ι
F : ι → Type u_3
inst✝ : (i : ι) → MetricSpace (F i)
x y : (i : ι) → F i
i : ι
⊢ 0 ≤ min ((1 / 2) ^ encode i) (dist (x i) (y i))
state_after: no goals

tactic: norm_num
state_before: E : ℕ → Type u_1
ι : Type u_2
inst✝¹ : Encodable ι
F : ι → Type u_3
inst✝ : (i : ι) → MetricSpace (F i)
x y : (i : ι) → F i
i : ι
⊢ 0 ≤ 1 / 2
state_after: no goals