1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: MvPolynomial.NewtonIdentities.pairMap_ne_self
File: Mathlib/RingTheory/MvPolynomial/NewtonIdentities.lean

tactic: rw [pairMap]
state_before: σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
t : Finset σ × σ
⊢ MvPolynomial.NewtonIdentities.pairMap σ t ≠ t
state_after: σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
t : Finset σ × σ
⊢ (if h : t.2 ∈ t.1 then (t.1.erase t.2, t.2) else (cons t.2 t.1 h, t.2)) ≠ t

tactic: split_ifs with h1
state_before: σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
t : Finset σ × σ
⊢ (if h : t.2 ∈ t.1 then (t.1.erase t.2, t.2) else (cons t.2 t.1 h, t.2)) ≠ t
state_after: case pos
σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
t : Finset σ × σ
h1 : t.2 ∈ t.1
⊢ (t.1.erase t.2, t.2) ≠ t

case neg
σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
t : Finset σ × σ
h1 : t.2 ∉ t.1
⊢ (cons t.2 t.1 h1, t.2) ≠ t

tactic: all_goals by_contra ht; rw [← ht] at h1; simp_all
state_before: case pos
σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
t : Finset σ × σ
h1 : t.2 ∈ t.1
⊢ (t.1.erase t.2, t.2) ≠ t

case neg
σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
t : Finset σ × σ
h1 : t.2 ∉ t.1
⊢ (cons t.2 t.1 h1, t.2) ≠ t
state_after: no goals

tactic: by_contra ht
state_before: case neg
σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
t : Finset σ × σ
h1 : t.2 ∉ t.1
⊢ (cons t.2 t.1 h1, t.2) ≠ t
state_after: case neg
σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
t : Finset σ × σ
h1 : t.2 ∉ t.1
ht : (cons t.2 t.1 h1, t.2) = t
⊢ False

tactic: rw [← ht] at h1
state_before: case neg
σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
t : Finset σ × σ
h1 : t.2 ∉ t.1
ht : (cons t.2 t.1 h1, t.2) = t
⊢ False
state_after: case neg
σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
t : Finset σ × σ
h1✝ : t.2 ∉ t.1
h1 : (cons t.2 t.1 h1✝, t.2).2 ∉ (cons t.2 t.1 h1✝, t.2).1
ht : (cons t.2 t.1 h1✝, t.2) = t
⊢ False

tactic: simp_all
state_before: case neg
σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
t : Finset σ × σ
h1✝ : t.2 ∉ t.1
h1 : (cons t.2 t.1 h1✝, t.2).2 ∉ (cons t.2 t.1 h1✝, t.2).1
ht : (cons t.2 t.1 h1✝, t.2) = t
⊢ False
state_after: no goals
Theorem: Ordnode.length_toList
File: Mathlib/Data/Ordmap/Ordset.lean

tactic: rw [length_toList', size_eq_realSize h]
state_before: α : Type u_1
t : Ordnode α
h : t.Sized
⊢ t.toList.length = t.size
state_after: no goals
Theorem: Finset.diag_mem_sym2_mem_iff
File: Mathlib/Data/Finset/Sym.lean

tactic: rw [← mem_sym2_iff]
state_before: α : Type u_1
inst✝ : DecidableEq α
s t : Finset α
a b : α
m : Sym2 α
⊢ (∀ b ∈ Sym2.diag a, b ∈ s) ↔ a ∈ s
state_after: α : Type u_1
inst✝ : DecidableEq α
s t : Finset α
a b : α
m : Sym2 α
⊢ Sym2.diag a ∈ s.sym2 ↔ a ∈ s

tactic: exact mk_mem_sym2_iff.trans <| and_self_iff
state_before: α : Type u_1
inst✝ : DecidableEq α
s t : Finset α
a b : α
m : Sym2 α
⊢ Sym2.diag a ∈ s.sym2 ↔ a ∈ s
state_after: no goals
Theorem: Equiv.Perm.IsThreeCycle.card_support
File: Mathlib/GroupTheory/Perm/Cycle/Type.lean

tactic: rw [← sum_cycleType, h.cycleType, Multiset.sum_singleton]
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ : Perm α
h : σ.IsThreeCycle
⊢ σ.support.card = 3
state_after: no goals
Theorem: uniformEmbedding_inr
File: Mathlib/Topology/UniformSpace/UniformEmbedding.lean

tactic: simpa [Prod.map_apply'] using h
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
s : Set (β × β)
hs : s ∈ 𝓤 β
x : β × β
h : x ∈ Prod.map Sum.inr Sum.inr ⁻¹' (range (Prod.map Sum.inl Sum.inl) ∪ Prod.map Sum.inr Sum.inr '' s)
⊢ x ∈ s
state_after: no goals
Theorem: FractionalIdeal.mul_left_le_iff
File: Mathlib/RingTheory/DedekindDomain/Ideal.lean

tactic: convert mul_right_le_iff hJ using 1
state_before: R : Type u_1
A : Type u_2
K : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Field K
inst✝² : Algebra A K
inst✝¹ : IsFractionRing A K
inst✝ : IsDedekindDomain A
J : FractionalIdeal A⁰ K
hJ : J ≠ 0
I I' : FractionalIdeal A⁰ K
⊢ J * I ≤ J * I' ↔ I ≤ I'
state_after: case h.e'_1.a
R : Type u_1
A : Type u_2
K : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Field K
inst✝² : Algebra A K
inst✝¹ : IsFractionRing A K
inst✝ : IsDedekindDomain A
J : FractionalIdeal A⁰ K
hJ : J ≠ 0
I I' : FractionalIdeal A⁰ K
⊢ J * I ≤ J * I' ↔ I * J ≤ I' * J

tactic: simp only [mul_comm]
state_before: case h.e'_1.a
R : Type u_1
A : Type u_2
K : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Field K
inst✝² : Algebra A K
inst✝¹ : IsFractionRing A K
inst✝ : IsDedekindDomain A
J : FractionalIdeal A⁰ K
hJ : J ≠ 0
I I' : FractionalIdeal A⁰ K
⊢ J * I ≤ J * I' ↔ I * J ≤ I' * J
state_after: no goals
Theorem: Polynomial.normUnit_X
File: Mathlib/Algebra/Polynomial/FieldDivision.lean

tactic: have := coe_normUnit (R := R) (p := X)
state_before: R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n : ℕ
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizationMonoid R
⊢ normUnit X = 1
state_after: R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n : ℕ
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizationMonoid R
this : ↑(normUnit X) = C ↑(normUnit X.leadingCoeff)
⊢ normUnit X = 1

tactic: rwa [leadingCoeff_X, normUnit_one, Units.val_one, map_one, Units.val_eq_one] at this
state_before: R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n : ℕ
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizationMonoid R
this : ↑(normUnit X) = C ↑(normUnit X.leadingCoeff)
⊢ normUnit X = 1
state_after: no goals
Theorem: Batteries.PairingHeapImp.Heap.noSibling_deleteMin
File: .lake/packages/batteries/Batteries/Data/PairingHeap.lean

tactic: cases s with cases eq | node a c => exact noSibling_combine _ _
state_before: α : Type u_1
le : α → α → Bool
a : α
s' s : Heap α
eq : deleteMin le s = some (a, s')
⊢ s'.NoSibling
state_after: no goals

tactic: exact noSibling_combine _ _
state_before: case node.refl
α : Type u_1
le : α → α → Bool
a : α
c sibling✝ : Heap α
⊢ (combine le c).NoSibling
state_after: no goals
Theorem: IsCyclotomicExtension.Rat.absdiscr_prime
File: Mathlib/NumberTheory/Cyclotomic/Rat.lean

tactic: have : IsCyclotomicExtension {p ^ (0 + 1)} ℚ K := by
  rw [zero_add, pow_one]
  infer_instance
state_before: p : ℕ+
k : ℕ
K : Type u
inst✝² : Field K
inst✝¹ : CharZero K
ζ : K
hp : Fact (Nat.Prime ↑p)
inst✝ : IsCyclotomicExtension {p} ℚ K
⊢ NumberField.discr K = (-1) ^ ((↑p - 1) / 2) * ↑↑p ^ (↑p - 2)
state_after: p : ℕ+
k : ℕ
K : Type u
inst✝² : Field K
inst✝¹ : CharZero K
ζ : K
hp : Fact (Nat.Prime ↑p)
inst✝ : IsCyclotomicExtension {p} ℚ K
this : IsCyclotomicExtension {p ^ (0 + 1)} ℚ K
⊢ NumberField.discr K = (-1) ^ ((↑p - 1) / 2) * ↑↑p ^ (↑p - 2)

tactic: rw [absdiscr_prime_pow_succ p 0 K]
state_before: p : ℕ+
k : ℕ
K : Type u
inst✝² : Field K
inst✝¹ : CharZero K
ζ : K
hp : Fact (Nat.Prime ↑p)
inst✝ : IsCyclotomicExtension {p} ℚ K
this : IsCyclotomicExtension {p ^ (0 + 1)} ℚ K
⊢ NumberField.discr K = (-1) ^ ((↑p - 1) / 2) * ↑↑p ^ (↑p - 2)
state_after: p : ℕ+
k : ℕ
K : Type u
inst✝² : Field K
inst✝¹ : CharZero K
ζ : K
hp : Fact (Nat.Prime ↑p)
inst✝ : IsCyclotomicExtension {p} ℚ K
this : IsCyclotomicExtension {p ^ (0 + 1)} ℚ K
⊢ (-1) ^ (↑p ^ 0 * (↑p - 1) / 2) * ↑↑p ^ (↑p ^ 0 * ((↑p - 1) * (0 + 1) - 1)) = (-1) ^ ((↑p - 1) / 2) * ↑↑p ^ (↑p - 2)

tactic: simp only [Int.reduceNeg, pow_zero, one_mul, zero_add, mul_one, mul_eq_mul_left_iff, gt_iff_lt,
  Nat.cast_pos, PNat.pos, pow_eq_zero_iff', neg_eq_zero, one_ne_zero, ne_eq, false_and, or_false]
state_before: p : ℕ+
k : ℕ
K : Type u
inst✝² : Field K
inst✝¹ : CharZero K
ζ : K
hp : Fact (Nat.Prime ↑p)
inst✝ : IsCyclotomicExtension {p} ℚ K
this : IsCyclotomicExtension {p ^ (0 + 1)} ℚ K
⊢ (-1) ^ (↑p ^ 0 * (↑p - 1) / 2) * ↑↑p ^ (↑p ^ 0 * ((↑p - 1) * (0 + 1) - 1)) = (-1) ^ ((↑p - 1) / 2) * ↑↑p ^ (↑p - 2)
state_after: p : ℕ+
k : ℕ
K : Type u
inst✝² : Field K
inst✝¹ : CharZero K
ζ : K
hp : Fact (Nat.Prime ↑p)
inst✝ : IsCyclotomicExtension {p} ℚ K
this : IsCyclotomicExtension {p ^ (0 + 1)} ℚ K
⊢ ↑↑p ^ (↑p - 1 - 1) = ↑↑p ^ (↑p - 2)

tactic: rfl
state_before: p : ℕ+
k : ℕ
K : Type u
inst✝² : Field K
inst✝¹ : CharZero K
ζ : K
hp : Fact (Nat.Prime ↑p)
inst✝ : IsCyclotomicExtension {p} ℚ K
this : IsCyclotomicExtension {p ^ (0 + 1)} ℚ K
⊢ ↑↑p ^ (↑p - 1 - 1) = ↑↑p ^ (↑p - 2)
state_after: no goals

tactic: rw [zero_add, pow_one]
state_before: p : ℕ+
k : ℕ
K : Type u
inst✝² : Field K
inst✝¹ : CharZero K
ζ : K
hp : Fact (Nat.Prime ↑p)
inst✝ : IsCyclotomicExtension {p} ℚ K
⊢ IsCyclotomicExtension {p ^ (0 + 1)} ℚ K
state_after: p : ℕ+
k : ℕ
K : Type u
inst✝² : Field K
inst✝¹ : CharZero K
ζ : K
hp : Fact (Nat.Prime ↑p)
inst✝ : IsCyclotomicExtension {p} ℚ K
⊢ IsCyclotomicExtension {p} ℚ K

tactic: infer_instance
state_before: p : ℕ+
k : ℕ
K : Type u
inst✝² : Field K
inst✝¹ : CharZero K
ζ : K
hp : Fact (Nat.Prime ↑p)
inst✝ : IsCyclotomicExtension {p} ℚ K
⊢ IsCyclotomicExtension {p} ℚ K
state_after: no goals
Theorem: Real.sInf_nonneg
File: Mathlib/Data/Real/Archimedean.lean

tactic: rcases S.eq_empty_or_nonempty with (rfl | hS₂)
state_before: S : Set ℝ
hS : ∀ x ∈ S, 0 ≤ x
⊢ 0 ≤ sInf S
state_after: case inl
hS : ∀ x ∈ ∅, 0 ≤ x
⊢ 0 ≤ sInf ∅

case inr
S : Set ℝ
hS : ∀ x ∈ S, 0 ≤ x
hS₂ : S.Nonempty
⊢ 0 ≤ sInf S

tactic: exacts [sInf_empty.ge, le_csInf hS₂ hS]
state_before: case inl
hS : ∀ x ∈ ∅, 0 ≤ x
⊢ 0 ≤ sInf ∅

case inr
S : Set ℝ
hS : ∀ x ∈ S, 0 ≤ x
hS₂ : S.Nonempty
⊢ 0 ≤ sInf S
state_after: no goals
Theorem: HilbertBasis.repr_apply_apply
File: Mathlib/Analysis/InnerProductSpace/l2Space.lean

tactic: rw [← b.repr.inner_map_map (b i) v, b.repr_self, lp.inner_single_left]
state_before: ι : Type u_1
𝕜 : Type u_2
inst✝⁴ : RCLike 𝕜
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
cplt : CompleteSpace E
G : ι → Type u_4
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
b : HilbertBasis ι 𝕜 E
v : E
i : ι
⊢ ↑(b.repr v) i = ⟪(fun i => b.repr.symm (lp.single 2 i 1)) i, v⟫_𝕜
state_after: ι : Type u_1
𝕜 : Type u_2
inst✝⁴ : RCLike 𝕜
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
cplt : CompleteSpace E
G : ι → Type u_4
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
b : HilbertBasis ι 𝕜 E
v : E
i : ι
⊢ ↑(b.repr v) i = ⟪1, ↑(b.repr v) i⟫_𝕜

tactic: simp
state_before: ι : Type u_1
𝕜 : Type u_2
inst✝⁴ : RCLike 𝕜
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
cplt : CompleteSpace E
G : ι → Type u_4
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
b : HilbertBasis ι 𝕜 E
v : E
i : ι
⊢ ↑(b.repr v) i = ⟪1, ↑(b.repr v) i⟫_𝕜
state_after: no goals
Theorem: Polynomial.reflect_one_X
File: Mathlib/Algebra/Polynomial/Reverse.lean

tactic: simpa using reflect_monomial 1 1 (R := R)
state_before: R : Type u_1
inst✝ : Semiring R
f : R[X]
⊢ reflect 1 X = 1
state_after: no goals
Theorem: CategoryTheory.Limits.HasBiproduct.of_hasProduct
File: Mathlib/CategoryTheory/Preadditive/Biproducts.lean

tactic: cases nonempty_fintype J
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
J : Type
inst✝¹ : Finite J
f : J → C
inst✝ : HasProduct f
⊢ HasBiproduct f
state_after: case intro
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
J : Type
inst✝¹ : Finite J
f : J → C
inst✝ : HasProduct f
val✝ : Fintype J
⊢ HasBiproduct f

tactic: exact HasBiproduct.mk
  { bicone := _
    isBilimit := biconeIsBilimitOfLimitConeOfIsLimit (limit.isLimit _) }
state_before: case intro
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
J : Type
inst✝¹ : Finite J
f : J → C
inst✝ : HasProduct f
val✝ : Fintype J
⊢ HasBiproduct f
state_after: no goals
Theorem: TrivSqZeroExt.lift_apply_inl
File: Mathlib/Algebra/TrivSqZeroExt.lean

tactic: rw [map_zero, add_zero]
state_before: S : Type u_1
R R' : Type u
M : Type v
inst✝¹⁸ : CommSemiring S
inst✝¹⁷ : Semiring R
inst✝¹⁶ : CommSemiring R'
inst✝¹⁵ : AddCommMonoid M
inst✝¹⁴ : Algebra S R
inst✝¹³ : Algebra S R'
inst✝¹² : Module S M
inst✝¹¹ : Module R M
inst✝¹⁰ : Module Rᵐᵒᵖ M
inst✝⁹ : SMulCommClass R Rᵐᵒᵖ M
inst✝⁸ : IsScalarTower S R M
inst✝⁷ : IsScalarTower S Rᵐᵒᵖ M
inst✝⁶ : Module R' M
inst✝⁵ : Module R'ᵐᵒᵖ M
inst✝⁴ : IsCentralScalar R' M
inst✝³ : IsScalarTower S R' M
A : Type u_2
inst✝² : Semiring A
inst✝¹ : Algebra S A
inst✝ : Algebra R' A
f : R →ₐ[S] A
g : M →ₗ[S] A
hg : ∀ (x y : M), g x * g y = 0
hfg : ∀ (r : R) (x : M), g (r •> x) = f r * g x
hgf : ∀ (r : R) (x : M), g (x <• r) = g x * f r
r : R
⊢ f r + g 0 = f r
state_after: no goals
Theorem: LinearMap.BilinForm.IsAdjointPair.comp
File: Mathlib/LinearAlgebra/BilinearForm/Properties.lean

tactic: rw [LinearMap.comp_apply, LinearMap.comp_apply, h', h]
state_before: R : Type u_1
M : Type u_2
inst✝¹⁸ : CommSemiring R
inst✝¹⁷ : AddCommMonoid M
inst✝¹⁶ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝¹⁵ : CommRing R₁
inst✝¹⁴ : AddCommGroup M₁
inst✝¹³ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝¹² : Field K
inst✝¹¹ : AddCommGroup V
inst✝¹⁰ : Module K V
M'✝ : Type u_7
M''✝ : Type u_8
inst✝⁹ : AddCommMonoid M'✝
inst✝⁸ : AddCommMonoid M''✝
inst✝⁷ : Module R M'✝
inst✝⁶ : Module R M''✝
B : BilinForm R M
B₁ : BilinForm R₁ M₁
F : BilinForm R M
M' : Type u_9
inst✝⁵ : AddCommMonoid M'
inst✝⁴ : Module R M'
B' : BilinForm R M'
f f'✝ : M →ₗ[R] M'
g g'✝ : M' →ₗ[R] M
M₁' : Type u_10
inst✝³ : AddCommGroup M₁'
inst✝² : Module R₁ M₁'
B₁' : BilinForm R₁ M₁'
f₁ f₁' : M₁ →ₗ[R₁] M₁'
g₁ g₁' : M₁' →ₗ[R₁] M₁
B₂' : BilinForm R M'
f₂ f₂' : M →ₗ[R] M'
g₂ g₂' : M' →ₗ[R] M
M'' : Type u_11
inst✝¹ : AddCommMonoid M''
inst✝ : Module R M''
B'' : BilinForm R M''
f' : M' →ₗ[R] M''
g' : M'' →ₗ[R] M'
h : B.IsAdjointPair B' f g
h' : B'.IsAdjointPair B'' f' g'
x : M
y : M''
⊢ (B'' ((f' ∘ₗ f) x)) y = (B x) ((g ∘ₗ g') y)
state_after: no goals
Theorem: padicValRat.neg
File: Mathlib/NumberTheory/Padics/PadicVal.lean

tactic: simp [padicValRat, padicValInt]
state_before: p : ℕ
q : ℚ
⊢ padicValRat p (-q) = padicValRat p q
state_after: no goals
Theorem: mul_lt_mul_of_lt_of_le₀
File: Mathlib/Algebra/Order/GroupWithZero/Canonical.lean

tactic: rw [ha, zero_mul, zero_lt_iff]
state_before: α : Type u_1
inst✝ : LinearOrderedCommGroupWithZero α
a b c d : α
m n : ℕ
hab : a ≤ b
hb : b ≠ 0
hcd : c < d
hd : d ≠ 0
ha : a = 0
⊢ a * c < b * d
state_after: α : Type u_1
inst✝ : LinearOrderedCommGroupWithZero α
a b c d : α
m n : ℕ
hab : a ≤ b
hb : b ≠ 0
hcd : c < d
hd : d ≠ 0
ha : a = 0
⊢ b * d ≠ 0

tactic: exact mul_ne_zero hb hd
state_before: α : Type u_1
inst✝ : LinearOrderedCommGroupWithZero α
a b c d : α
m n : ℕ
hab : a ≤ b
hb : b ≠ 0
hcd : c < d
hd : d ≠ 0
ha : a = 0
⊢ b * d ≠ 0
state_after: no goals

tactic: rw [hc, mul_zero, zero_lt_iff]
state_before: α : Type u_1
inst✝ : LinearOrderedCommGroupWithZero α
a b c d : α
m n : ℕ
hab : a ≤ b
hb : b ≠ 0
hcd : c < d
hd : d ≠ 0
ha : ¬a = 0
hc : c = 0
⊢ a * c < b * d
state_after: α : Type u_1
inst✝ : LinearOrderedCommGroupWithZero α
a b c d : α
m n : ℕ
hab : a ≤ b
hb : b ≠ 0
hcd : c < d
hd : d ≠ 0
ha : ¬a = 0
hc : c = 0
⊢ b * d ≠ 0

tactic: exact mul_ne_zero hb hd
state_before: α : Type u_1
inst✝ : LinearOrderedCommGroupWithZero α
a b c d : α
m n : ℕ
hab : a ≤ b
hb : b ≠ 0
hcd : c < d
hd : d ≠ 0
ha : ¬a = 0
hc : c = 0
⊢ b * d ≠ 0
state_after: no goals
Theorem: inf_himp_le
File: Mathlib/Order/Heyting/Basic.lean

tactic: rw [inf_comm, ← le_himp_iff]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : GeneralizedHeytingAlgebra α
a b c d : α
⊢ a ⊓ (a ⇨ b) ≤ b
state_after: no goals
Theorem: Polynomial.degree_sub_eq_right_of_degree_lt
File: Mathlib/Algebra/Polynomial/Degree/Definitions.lean

tactic: rw [← degree_neg q] at h
state_before: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Ring R
p q : R[X]
h : p.degree < q.degree
⊢ (p - q).degree = q.degree
state_after: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Ring R
p q : R[X]
h : p.degree < (-q).degree
⊢ (p - q).degree = q.degree

tactic: rw [sub_eq_add_neg, degree_add_eq_right_of_degree_lt h, degree_neg]
state_before: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Ring R
p q : R[X]
h : p.degree < (-q).degree
⊢ (p - q).degree = q.degree
state_after: no goals
Theorem: Polynomial.degree_cubic_le
File: Mathlib/Algebra/Polynomial/Degree/Definitions.lean

tactic: simpa only [add_assoc] using
  degree_add_le_of_degree_le (degree_C_mul_X_pow_le 3 a)
    (le_trans degree_quadratic_le <| WithBot.coe_le_coe.mpr <| Nat.le_succ 2)
state_before: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p✝ p q : R[X]
ι : Type u_1
⊢ (C a * X ^ 3 + C b * X ^ 2 + C c * X + C d).degree ≤ 3
state_after: no goals
Theorem: UniformConvexOn.add
File: Mathlib/Analysis/Convex/Strong.lean

tactic: refine ⟨hf.1, fun x hx y hy a b ha hb hab ↦ ?_⟩
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
φ ψ : ℝ → ℝ
s : Set E
a b m : ℝ
x y : E
f g : E → ℝ
hf : UniformConvexOn s φ f
hg : UniformConvexOn s ψ g
⊢ UniformConvexOn s (φ + ψ) (f + g)
state_after: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
φ ψ : ℝ → ℝ
s : Set E
a✝ b✝ m : ℝ
x✝ y✝ : E
f g : E → ℝ
hf : UniformConvexOn s φ f
hg : UniformConvexOn s ψ g
x : E
hx : x ∈ s
y : E
hy : y ∈ s
a b : ℝ
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ (f + g) (a • x + b • y) ≤ a • (f + g) x + b • (f + g) y - a * b * (φ + ψ) ‖x - y‖

tactic: simpa [mul_add, add_add_add_comm, sub_add_sub_comm]
  using add_le_add (hf.2 hx hy ha hb hab) (hg.2 hx hy ha hb hab)
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
φ ψ : ℝ → ℝ
s : Set E
a✝ b✝ m : ℝ
x✝ y✝ : E
f g : E → ℝ
hf : UniformConvexOn s φ f
hg : UniformConvexOn s ψ g
x : E
hx : x ∈ s
y : E
hy : y ∈ s
a b : ℝ
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ (f + g) (a • x + b • y) ≤ a • (f + g) x + b • (f + g) y - a * b * (φ + ψ) ‖x - y‖
state_after: no goals
Theorem: le_compl_self
File: Mathlib/Order/Heyting/Basic.lean

tactic: rw [le_compl_iff_disjoint_left, disjoint_self]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : HeytingAlgebra α
a b c : α
⊢ a ≤ aᶜ ↔ a = ⊥
state_after: no goals
Theorem: CategoryTheory.Functor.congr_hom
File: Mathlib/CategoryTheory/EqToHom.lean

tactic: subst h
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
β : Sort u_1
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F G : C ⥤ D
h : F = G
X Y : C
f : X ⟶ Y
⊢ F.map f = eqToHom ⋯ ≫ G.map f ≫ eqToHom ⋯
state_after: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
β : Sort u_1
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X Y : C
f : X ⟶ Y
⊢ F.map f = eqToHom ⋯ ≫ F.map f ≫ eqToHom ⋯

tactic: simp
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
β : Sort u_1
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X Y : C
f : X ⟶ Y
⊢ F.map f = eqToHom ⋯ ≫ F.map f ≫ eqToHom ⋯
state_after: no goals
Theorem: Multiset.range_disjoint_map_add
File: Mathlib/Data/Multiset/Range.lean

tactic: intro x hxa hxb
state_before: a : ℕ
m : Multiset ℕ
⊢ (range a).Disjoint (map (fun x => a + x) m)
state_after: a : ℕ
m : Multiset ℕ
x : ℕ
hxa : x ∈ range a
hxb : x ∈ map (fun x => a + x) m
⊢ False

tactic: rw [range, mem_coe, List.mem_range] at hxa
state_before: a : ℕ
m : Multiset ℕ
x : ℕ
hxa : x ∈ range a
hxb : x ∈ map (fun x => a + x) m
⊢ False
state_after: a : ℕ
m : Multiset ℕ
x : ℕ
hxa : x < a
hxb : x ∈ map (fun x => a + x) m
⊢ False

tactic: obtain ⟨c, _, rfl⟩ := mem_map.1 hxb
state_before: a : ℕ
m : Multiset ℕ
x : ℕ
hxa : x < a
hxb : x ∈ map (fun x => a + x) m
⊢ False
state_after: case intro.intro
a : ℕ
m : Multiset ℕ
c : ℕ
left✝ : c ∈ m
hxa : a + c < a
hxb : a + c ∈ map (fun x => a + x) m
⊢ False

tactic: exact (Nat.le_add_right _ _).not_lt hxa
state_before: case intro.intro
a : ℕ
m : Multiset ℕ
c : ℕ
left✝ : c ∈ m
hxa : a + c < a
hxb : a + c ∈ map (fun x => a + x) m
⊢ False
state_after: no goals
Theorem: Finset.exists_lt_sum_fiber_of_maps_to_of_nsmul_lt_sum
File: Mathlib/Combinatorics/Pigeonhole.lean

tactic: simpa only [sum_fiberwise_of_maps_to hf, sum_const]
state_before: α : Type u
β : Type v
M : Type w
inst✝¹ : DecidableEq β
s : Finset α
t : Finset β
f : α → β
w : α → M
b : M
n : ℕ
inst✝ : LinearOrderedCancelAddCommMonoid M
hf : ∀ a ∈ s, f a ∈ t
hb : t.card • b < ∑ x ∈ s, w x
⊢ ∑ i ∈ t, b < ∑ i ∈ t, ∑ x ∈ filter (fun x => f x = i) s, w x
state_after: no goals
Theorem: MeasureTheory.quasiMeasurePreserving_mul_right
File: Mathlib/MeasureTheory/Group/Prod.lean

tactic: refine ⟨measurable_mul_const g, AbsolutelyContinuous.mk fun s hs => ?_⟩
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
g : G
⊢ QuasiMeasurePreserving (fun h => h * g) μ μ
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
g : G
s : Set G
hs : MeasurableSet s
⊢ μ s = 0 → (map (fun h => h * g) μ) s = 0

tactic: rw [map_apply (measurable_mul_const g) hs, measure_mul_right_null]
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
g : G
s : Set G
hs : MeasurableSet s
⊢ μ s = 0 → (map (fun h => h * g) μ) 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
g : G
s : Set G
hs : MeasurableSet s
⊢ μ s = 0 → μ s = 0

tactic: exact id
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
g : G
s : Set G
hs : MeasurableSet s
⊢ μ s = 0 → μ s = 0
state_after: no goals
Theorem: Ordinal.lt_opow_succ_log_self
File: Mathlib/SetTheory/Ordinal/Exponential.lean

tactic: rcases eq_or_ne x 0 with (rfl | hx)
state_before: b : Ordinal.{u_1}
hb : 1 < b
x : Ordinal.{u_1}
⊢ x < b ^ succ (log b x)
state_after: case inl
b : Ordinal.{u_1}
hb : 1 < b
⊢ 0 < b ^ succ (log b 0)

case inr
b : Ordinal.{u_1}
hb : 1 < b
x : Ordinal.{u_1}
hx : x ≠ 0
⊢ x < b ^ succ (log b x)

tactic: apply opow_pos _ (zero_lt_one.trans hb)
state_before: case inl
b : Ordinal.{u_1}
hb : 1 < b
⊢ 0 < b ^ succ (log b 0)
state_after: no goals

tactic: rw [succ_log_def hb hx]
state_before: case inr
b : Ordinal.{u_1}
hb : 1 < b
x : Ordinal.{u_1}
hx : x ≠ 0
⊢ x < b ^ succ (log b x)
state_after: case inr
b : Ordinal.{u_1}
hb : 1 < b
x : Ordinal.{u_1}
hx : x ≠ 0
⊢ x < b ^ sInf {o | x < b ^ o}

tactic: exact csInf_mem (log_nonempty hb)
state_before: case inr
b : Ordinal.{u_1}
hb : 1 < b
x : Ordinal.{u_1}
hx : x ≠ 0
⊢ x < b ^ sInf {o | x < b ^ o}
state_after: no goals