ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Finset.antidiagonal.snd_le
File: Mathlib/Algebra/Order/Antidiag/Prod.lean

Proof steps:
state_before: A : Type u_1
inst✝¹ : CanonicallyOrderedAddCommMonoid A
inst✝ : HasAntidiagonal A
n : A
kl : A × A
hlk : kl ∈ antidiagonal n
⊢ kl.2 ≤ n
state_after: A : Type u_1
inst✝¹ : CanonicallyOrderedAddCommMonoid A
inst✝ : HasAntidiagonal A
n : A
kl : A × A
hlk : kl ∈ antidiagonal n
⊢ ∃ c, n = kl.2 + c
tactic: rw [le_iff_exists_add]
state_before: A : Type u_1
inst✝¹ : CanonicallyOrderedAddCommMonoid A
inst✝ : HasAntidiagonal A
n : A
kl : A × A
hlk : kl ∈ antidiagonal n
⊢ ∃ c, n = kl.2 + c
state_after: case h
A : Type u_1
inst✝¹ : CanonicallyOrderedAddCommMonoid A
inst✝ : HasAntidiagonal A
n : A
kl : A × A
hlk : kl ∈ antidiagonal n
⊢ n = kl.2 + kl.1
tactic: use kl.1
state_before: case h
A : Type u_1
inst✝¹ : CanonicallyOrderedAddCommMonoid A
inst✝ : HasAntidiagonal A
n : A
kl : A × A
hlk : kl ∈ antidiagonal n
⊢ n = kl.2 + kl.1
state_after: no goals
tactic: rwa [mem_antidiagonal, eq_comm, add_comm] at hlk
Theorem: continuousOn_integral_of_compact_support
File: Mathlib/MeasureTheory/Integral/SetIntegral.lean

Proof steps:
state_before: X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
inst✝¹² : MeasurableSpace X
G : Type u_5
𝕜 : Type u_6
inst✝¹¹ : TopologicalSpace X
inst✝¹⁰ : TopologicalSpace Y
inst✝⁹ : MeasurableSpace Y
inst✝⁸ : OpensMeasurableSpace Y
μ : Measure Y
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
f : X → Y → E
s : Set X
k : Set Y
inst✝ : IsFiniteMeasureOnCompacts μ
hk : IsCompact k
hf : ContinuousOn (uncurry f) (s ×ˢ univ)
hfs : ∀ (p : X) (x : Y), p ∈ s → x ∉ k → f p x = 0
⊢ ContinuousOn (fun x => ∫ (y : Y), f x y ∂μ) s
state_after: no goals
tactic: simpa using continuousOn_integral_bilinear_of_locally_integrable_of_compact_support (lsmul ℝ ℝ)
    hk hf hfs (integrableOn_const.2 (Or.inr hk.measure_lt_top)) (μ := μ) (g := fun _ ↦ 1)
Theorem: Set.ncard_insert_eq_ite
File: Mathlib/Data/Set/Card.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
s t : Set α
a : α
inst✝ : Decidable (a ∈ s)
hs : autoParam s.Finite _auto✝
⊢ (insert a s).ncard = if a ∈ s then s.ncard else s.ncard + 1
state_after: case pos
α : Type u_1
β : Type u_2
s t : Set α
a : α
inst✝ : Decidable (a ∈ s)
hs : autoParam s.Finite _auto✝
h : a ∈ s
⊢ (insert a s).ncard = if a ∈ s then s.ncard else s.ncard + 1

case neg
α : Type u_1
β : Type u_2
s t : Set α
a : α
inst✝ : Decidable (a ∈ s)
hs : autoParam s.Finite _auto✝
h : a ∉ s
⊢ (insert a s).ncard = if a ∈ s then s.ncard else s.ncard + 1
tactic: by_cases h : a ∈ s
Theorem: nonneg_and_nonneg_or_nonpos_and_nonpos_of_mul_nonneg
File: Mathlib/Algebra/Order/Ring/Unbundled/Basic.lean

Proof steps:
state_before: α : Type u
β : Type u_1
inst✝³ : Semiring α
inst✝² : LinearOrder α
a b c d : α
inst✝¹ : MulPosStrictMono α
inst✝ : PosMulStrictMono α
hab : 0 ≤ a * b
⊢ 0 ≤ a ∧ 0 ≤ b ∨ a ≤ 0 ∧ b ≤ 0
state_after: α : Type u
β : Type u_1
inst✝³ : Semiring α
inst✝² : LinearOrder α
a b c d : α
inst✝¹ : MulPosStrictMono α
inst✝ : PosMulStrictMono α
hab : 0 ≤ a * b
⊢ ¬(¬(0 ≤ a ∧ 0 ≤ b) ∧ ¬(a ≤ 0 ∧ b ≤ 0))
tactic: refine Decidable.or_iff_not_and_not.2 ?_
state_before: α : Type u
β : Type u_1
inst✝³ : Semiring α
inst✝² : LinearOrder α
a b c d : α
inst✝¹ : MulPosStrictMono α
inst✝ : PosMulStrictMono α
hab : 0 ≤ a * b
⊢ ¬(¬(0 ≤ a ∧ 0 ≤ b) ∧ ¬(a ≤ 0 ∧ b ≤ 0))
state_after: α : Type u
β : Type u_1
inst✝³ : Semiring α
inst✝² : LinearOrder α
a b c d : α
inst✝¹ : MulPosStrictMono α
inst✝ : PosMulStrictMono α
hab : 0 ≤ a * b
⊢ (0 ≤ a → b < 0) → ¬(a ≤ 0 → 0 < b)
tactic: simp only [not_and, not_le]
state_before: α : Type u
β : Type u_1
inst✝³ : Semiring α
inst✝² : LinearOrder α
a b c d : α
inst✝¹ : MulPosStrictMono α
inst✝ : PosMulStrictMono α
hab : 0 ≤ a * b
⊢ (0 ≤ a → b < 0) → ¬(a ≤ 0 → 0 < b)
state_after: α : Type u
β : Type u_1
inst✝³ : Semiring α
inst✝² : LinearOrder α
a b c d : α
inst✝¹ : MulPosStrictMono α
inst✝ : PosMulStrictMono α
hab : 0 ≤ a * b
ab : 0 ≤ a → b < 0
nab : a ≤ 0 → 0 < b
⊢ False
tactic: intro ab nab
state_before: α : Type u
β : Type u_1
inst✝³ : Semiring α
inst✝² : LinearOrder α
a b c d : α
inst✝¹ : MulPosStrictMono α
inst✝ : PosMulStrictMono α
hab : 0 ≤ a * b
ab : 0 ≤ a → b < 0
nab : a ≤ 0 → 0 < b
⊢ False
state_after: α : Type u
β : Type u_1
inst✝³ : Semiring α
inst✝² : LinearOrder α
a b c d : α
inst✝¹ : MulPosStrictMono α
inst✝ : PosMulStrictMono α
hab : 0 ≤ a * b
ab : 0 ≤ a → b < 0
nab : a ≤ 0 → 0 < b
⊢ a * b < 0
tactic: apply not_lt_of_le hab _
state_before: α : Type u
β : Type u_1
inst✝³ : Semiring α
inst✝² : LinearOrder α
a b c d : α
inst✝¹ : MulPosStrictMono α
inst✝ : PosMulStrictMono α
hab : 0 ≤ a * b
ab : 0 ≤ a → b < 0
nab : a ≤ 0 → 0 < b
⊢ a * b < 0
state_after: case inl
α : Type u
β : Type u_1
inst✝³ : Semiring α
inst✝² : LinearOrder α
a b c d : α
inst✝¹ : MulPosStrictMono α
inst✝ : PosMulStrictMono α
hab : 0 ≤ a * b
ab : 0 ≤ a → b < 0
nab : a ≤ 0 → 0 < b
ha : 0 < a
⊢ a * b < 0

case inr.inl
α : Type u
β : Type u_1
inst✝³ : Semiring α
inst✝² : LinearOrder α
b c d : α
inst✝¹ : MulPosStrictMono α
inst✝ : PosMulStrictMono α
hab : 0 ≤ 0 * b
ab : 0 ≤ 0 → b < 0
nab : 0 ≤ 0 → 0 < b
⊢ 0 * b < 0

case inr.inr
α : Type u
β : Type u_1
inst✝³ : Semiring α
inst✝² : LinearOrder α
a b c d : α
inst✝¹ : MulPosStrictMono α
inst✝ : PosMulStrictMono α
hab : 0 ≤ a * b
ab : 0 ≤ a → b < 0
nab : a ≤ 0 → 0 < b
ha : a < 0
⊢ a * b < 0
tactic: rcases lt_trichotomy 0 a with (ha | rfl | ha)
Theorem: ModuleCat.toKernelSubobject_arrow
File: Mathlib/Algebra/Category/ModuleCat/Subobject.lean

Proof steps:
state_before: R : Type u
inst✝ : Ring R
M✝ : ModuleCat R
M N : ModuleCat R
f : M ⟶ N
x : ↥(LinearMap.ker f)
⊢ (kernelSubobject f).arrow (toKernelSubobject x) = ↑x
state_after: R : Type u
inst✝ : Ring R
M✝ : ModuleCat R
M N : ModuleCat R
f : M ⟶ N
x : ↥(LinearMap.ker f)
⊢ (⇑(kernelSubobject f).arrow ∘ ⇑(kernelSubobjectIso f ≪≫ kernelIsoKer f).inv) x = ↑x
tactic: suffices ((arrow ((kernelSubobject f))) ∘ (kernelSubobjectIso f ≪≫ kernelIsoKer f).inv) x = x by
    convert this
state_before: R : Type u
inst✝ : Ring R
M✝ : ModuleCat R
M N : ModuleCat R
f : M ⟶ N
x : ↥(LinearMap.ker f)
⊢ (⇑(kernelSubobject f).arrow ∘ ⇑(kernelSubobjectIso f ≪≫ kernelIsoKer f).inv) x = ↑x
state_after: R : Type u
inst✝ : Ring R
M✝ : ModuleCat R
M N : ModuleCat R
f : M ⟶ N
x : ↥(LinearMap.ker f)
⊢ ((kernelIsoKer f).inv ≫ (kernelSubobjectIso f).inv ≫ (kernelSubobject f).arrow) x = ↑x
tactic: rw [Iso.trans_inv, ← coe_comp, Category.assoc]
state_before: R : Type u
inst✝ : Ring R
M✝ : ModuleCat R
M N : ModuleCat R
f : M ⟶ N
x : ↥(LinearMap.ker f)
⊢ ((kernelIsoKer f).inv ≫ (kernelSubobjectIso f).inv ≫ (kernelSubobject f).arrow) x = ↑x
state_after: R : Type u
inst✝ : Ring R
M✝ : ModuleCat R
M N : ModuleCat R
f : M ⟶ N
x : ↥(LinearMap.ker f)
⊢ (LinearMap.ker f).subtype x = ↑x
tactic: simp only [Category.assoc, kernelSubobject_arrow', kernelIsoKer_inv_kernel_ι]
state_before: R : Type u
inst✝ : Ring R
M✝ : ModuleCat R
M N : ModuleCat R
f : M ⟶ N
x : ↥(LinearMap.ker f)
⊢ (LinearMap.ker f).subtype x = ↑x
state_after: no goals
tactic: aesop_cat
Theorem: NonUnitalStarAlgebra.iInf_toNonUnitalSubalgebra
File: Mathlib/Algebra/Star/NonUnitalSubalgebra.lean

Proof steps:
state_before: F : Type v'
R' : Type u'
R : Type u
A : Type v
B : Type w
C : Type w'
inst✝¹⁶ : CommSemiring R
inst✝¹⁵ : StarRing R
inst✝¹⁴ : NonUnitalSemiring A
inst✝¹³ : StarRing A
inst✝¹² : Module R A
inst✝¹¹ : IsScalarTower R A A
inst✝¹⁰ : SMulCommClass R A A
inst✝⁹ : StarModule R A
inst✝⁸ : NonUnitalSemiring B
inst✝⁷ : StarRing B
inst✝⁶ : Module R B
inst✝⁵ : IsScalarTower R B B
inst✝⁴ : SMulCommClass R B B
inst✝³ : StarModule R B
inst✝² : FunLike F A B
inst✝¹ : NonUnitalAlgHomClass F R A B
inst✝ : NonUnitalStarAlgHomClass F R A B
ι : Sort u_1
S : ι → NonUnitalStarSubalgebra R A
⊢ ↑(⨅ i, S i).toNonUnitalSubalgebra = ↑(⨅ i, (S i).toNonUnitalSubalgebra)
state_after: no goals
tactic: simp
Theorem: List.count_pos_iff_mem
File: .lake/packages/batteries/Batteries/Data/List/Count.lean

Proof steps:
state_before: α : Type u_1
inst✝ : DecidableEq α
a : α
l : List α
⊢ 0 < count a l ↔ a ∈ l
state_after: no goals
tactic: simp only [count, countP_pos, beq_iff_eq, exists_eq_right]
Theorem: gauge_closure_zero
File: Mathlib/Analysis/Convex/Gauge.lean

Proof steps:
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace ℝ E
s : Set E
r : ℝ
x✝ x : E
⊢ gauge (closure 0) x = 0 x
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace ℝ E
s : Set E
r : ℝ
x✝ x : E
⊢ sInf {r | r ∈ Ioi 0 ∧ (r = 0 ∨ ‖x‖ = 0)} = 0 x
tactic: simp only [← singleton_zero, gauge_def', mem_closure_zero_iff_norm, norm_smul, mul_eq_zero,
    norm_eq_zero, inv_eq_zero]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace ℝ E
s : Set E
r : ℝ
x✝ x : E
⊢ sInf {r | r ∈ Ioi 0 ∧ (r = 0 ∨ ‖x‖ = 0)} = 0 x
state_after: case inl
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace ℝ E
s : Set E
r : ℝ
x✝ x : E
hx : ‖x‖ = 0
⊢ sInf {r | r ∈ Ioi 0 ∧ (r = 0 ∨ ‖x‖ = 0)} = 0 x

case inr
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace ℝ E
s : Set E
r : ℝ
x✝ x : E
hx : 0 < ‖x‖
⊢ sInf {r | r ∈ Ioi 0 ∧ (r = 0 ∨ ‖x‖ = 0)} = 0 x
tactic: rcases (norm_nonneg x).eq_or_gt with hx | hx
Theorem: groupCohomology.map_one_snd_of_isMulTwoCocycle
File: Mathlib/RepresentationTheory/GroupCohomology/LowDegree.lean

Proof steps:
state_before: k G✝ : Type u
inst✝⁴ : CommRing k
inst✝³ : Group G✝
A : Rep k G✝
G : Type u_1
M : Type u_2
inst✝² : Monoid G
inst✝¹ : CommGroup M
inst✝ : MulAction G M
f : G × G → M
hf : IsMulTwoCocycle f
g : G
⊢ f (g, 1) = g • f (1, 1)
state_after: no goals
tactic: simpa only [mul_one, mul_left_inj] using hf g 1 1
Theorem: isCyclic_of_orderOf_eq_card
File: Mathlib/GroupTheory/SpecificGroups/Cyclic.lean

Proof steps:
state_before: α : Type u
a : α
inst✝¹ : Group α
inst✝ : Fintype α
x : α
hx : orderOf x = Fintype.card α
⊢ IsCyclic α
state_after: no goals
tactic: classical
    use x
    simp_rw [← SetLike.mem_coe, ← Set.eq_univ_iff_forall]
    rw [← Fintype.card_congr (Equiv.Set.univ α), ← Fintype.card_zpowers] at hx
    exact Set.eq_of_subset_of_card_le (Set.subset_univ _) (ge_of_eq hx)
Theorem: DivisorChain.exists_chain_of_prime_pow
File: Mathlib/RingTheory/ChainOfDivisors.lean

Proof steps:
state_before: M : Type u_1
inst✝ : CancelCommMonoidWithZero M
p : Associates M
n : ℕ
hn : n ≠ 0
hp : Prime p
⊢ ∃ c, c 1 = p ∧ StrictMono c ∧ ∀ {r : Associates M}, r ≤ p ^ n ↔ ∃ i, r = c i
state_after: case refine_1
M : Type u_1
inst✝ : CancelCommMonoidWithZero M
p : Associates M
n : ℕ
hn : n ≠ 0
hp : Prime p
⊢ (fun i => p ^ ↑i) 1 = p

case refine_2
M : Type u_1
inst✝ : CancelCommMonoidWithZero M
p : Associates M
n✝ : ℕ
hn : n✝ ≠ 0
hp : Prime p
n m : Fin (n✝ + 1)
h : n < m
⊢ (fun i => p ^ ↑i) n < (fun i => p ^ ↑i) m

case refine_3
M : Type u_1
inst✝ : CancelCommMonoidWithZero M
p : Associates M
n : ℕ
hn : n ≠ 0
hp : Prime p
y : Associates M
h : y ≤ p ^ n
⊢ ∃ i, y = (fun i => p ^ ↑i) i

case refine_4
M : Type u_1
inst✝ : CancelCommMonoidWithZero M
p : Associates M
n : ℕ
hn : n ≠ 0
hp : Prime p
y : Associates M
⊢ (∃ i, y = (fun i => p ^ ↑i) i) → y ≤ p ^ n
tactic: refine ⟨fun i => p ^ (i : ℕ), ?_, fun n m h => ?_, @fun y => ⟨fun h => ?_, ?_⟩⟩
Theorem: NumberField.mixedEmbedding.minkowskiBound_pos
File: Mathlib/NumberTheory/NumberField/CanonicalEmbedding/ConvexBody.lean

Proof steps:
state_before: K : Type u_1
inst✝¹ : Field K
inst✝ : NumberField K
I : (FractionalIdeal (𝓞 K)⁰ K)ˣ
⊢ 0 < minkowskiBound K I
state_after: case refine_1
K : Type u_1
inst✝¹ : Field K
inst✝ : NumberField K
I : (FractionalIdeal (𝓞 K)⁰ K)ˣ
⊢ volume (fundamentalDomain (fractionalIdealLatticeBasis K I)) ≠ 0

case refine_2
K : Type u_1
inst✝¹ : Field K
inst✝ : NumberField K
I : (FractionalIdeal (𝓞 K)⁰ K)ˣ
⊢ 2 ^ finrank ℝ (({ w // w.IsReal } → ℝ) × ({ w // w.IsComplex } → ℂ)) ≠ 0
tactic: refine zero_lt_iff.mpr (mul_ne_zero ?_ ?_)
Theorem: Prime.isPrimePow
File: Mathlib/Algebra/IsPrimePow.lean

Proof steps:
state_before: R : Type u_1
inst✝ : CommMonoidWithZero R
n p✝ : R
k : ℕ
p : R
hp : Prime p
⊢ p ^ 1 = p
state_after: no goals
tactic: simp
Theorem: IsHilbertSum.linearIsometryEquiv_symm_apply
File: Mathlib/Analysis/InnerProductSpace/l2Space.lean

Proof steps:
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)
V : (i : ι) → G i →ₗᵢ[𝕜] E
F : ι → Submodule 𝕜 E
hV : IsHilbertSum 𝕜 G V
w : ↥(lp G 2)
⊢ hV.linearIsometryEquiv.symm w = ∑' (i : ι), (V i) (↑w i)
state_after: no goals
tactic: simp [IsHilbertSum.linearIsometryEquiv, OrthogonalFamily.linearIsometry_apply]
Theorem: FractionalIdeal.count_finprod_coprime
File: Mathlib/RingTheory/DedekindDomain/Factorization.lean

Proof steps:
state_before: R : Type u_1
inst✝⁴ : CommRing R
K : Type u_2
inst✝³ : Field K
inst✝² : Algebra R K
inst✝¹ : IsFractionRing R K
inst✝ : IsDedekindDomain R
v : HeightOneSpectrum R
exps : HeightOneSpectrum R → ℤ
⊢ count K v (∏ᶠ (w : HeightOneSpectrum R) (_ : w ≠ v), ↑w.asIdeal ^ exps w) = 0
state_after: case hp₀
R : Type u_1
inst✝⁴ : CommRing R
K : Type u_2
inst✝³ : Field K
inst✝² : Algebra R K
inst✝¹ : IsFractionRing R K
inst✝ : IsDedekindDomain R
v : HeightOneSpectrum R
exps : HeightOneSpectrum R → ℤ
⊢ count K v 1 = 0

case hp₁
R : Type u_1
inst✝⁴ : CommRing R
K : Type u_2
inst✝³ : Field K
inst✝² : Algebra R K
inst✝¹ : IsFractionRing R K
inst✝ : IsDedekindDomain R
v : HeightOneSpectrum R
exps : HeightOneSpectrum R → ℤ
⊢ ∀ (x y : FractionalIdeal R⁰ K), count K v x = 0 → count K v y = 0 → count K v (x * y) = 0

case hp₂
R : Type u_1
inst✝⁴ : CommRing R
K : Type u_2
inst✝³ : Field K
inst✝² : Algebra R K
inst✝¹ : IsFractionRing R K
inst✝ : IsDedekindDomain R
v : HeightOneSpectrum R
exps : HeightOneSpectrum R → ℤ
⊢ ∀ x ∈ fun i => i = v → False, count K v (↑x.asIdeal ^ exps x) = 0
tactic: apply finprod_mem_induction fun I => count K v I = 0
Theorem: Set.projIci_coe
File: Mathlib/Order/Interval/Set/ProjIcc.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a b : α
h : a ≤ b
x✝ : α
x : ↑(Ici a)
⊢ projIci a ↑x = x
state_after: case mk
α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a b : α
h : a ≤ b
x val✝ : α
property✝ : val✝ ∈ Ici a
⊢ projIci a ↑⟨val✝, property✝⟩ = ⟨val✝, property✝⟩
tactic: cases x
state_before: case mk
α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a b : α
h : a ≤ b
x val✝ : α
property✝ : val✝ ∈ Ici a
⊢ projIci a ↑⟨val✝, property✝⟩ = ⟨val✝, property✝⟩
state_after: no goals
tactic: apply projIci_of_mem
Theorem: toIocMod_sub
File: Mathlib/Algebra/Order/ToIntervalMod.lean

Proof steps:
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a✝ b✝ c : α
n : ℤ
a b : α
⊢ toIocMod hp a (b - p) = toIocMod hp a b
state_after: no goals
tactic: simpa only [one_zsmul] using toIocMod_sub_zsmul hp a b 1
Theorem: lt_mul_inv_iff_mul_lt
File: Mathlib/Algebra/Order/Group/Unbundled/Basic.lean

Proof steps:
state_before: α : Type u
inst✝² : Group α
inst✝¹ : LT α
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x < x_1
a b c : α
⊢ c * b < a * b⁻¹ * b ↔ c * b < a
state_after: no goals
tactic: rw [inv_mul_cancel_right]
Theorem: Ordinal.principal_add_iff_zero_or_omega_opow
File: Mathlib/SetTheory/Ordinal/Principal.lean

Proof steps:
state_before: o : Ordinal.{u_1}
⊢ Principal (fun x x_1 => x + x_1) o ↔ o = 0 ∨ ∃ a, o = ω ^ a
state_after: case inl

⊢ Principal (fun x x_1 => x + x_1) 0 ↔ 0 = 0 ∨ ∃ a, 0 = ω ^ a

case inr
o : Ordinal.{u_1}
ho : o ≠ 0
⊢ Principal (fun x x_1 => x + x_1) o ↔ o = 0 ∨ ∃ a, o = ω ^ a
tactic: rcases eq_or_ne o 0 with (rfl | ho)
Theorem: HomologicalComplex.homologyι_comp_fromOpcycles
File: Mathlib/Algebra/Homology/ShortComplex/HomologicalComplex.lean

Proof steps:
state_before: C : Type u_1
inst✝² : Category.{u_3, u_1} C
inst✝¹ : HasZeroMorphisms C
ι : Type u_2
c : ComplexShape ι
K L M : HomologicalComplex C c
φ : K ⟶ L
ψ : L ⟶ M
i j k : ι
inst✝ : K.HasHomology i
⊢ K.d i j = K.d i j ≫ 𝟙 (K.X j)
state_after: no goals
tactic: simp
Theorem: Real.log_nonpos_iff
File: Mathlib/Analysis/SpecialFunctions/Log/Basic.lean

Proof steps:
state_before: x y : ℝ
hx : 0 < x
⊢ log x ≤ 0 ↔ x ≤ 1
state_after: no goals
tactic: rw [← not_lt, log_pos_iff hx, not_lt]
Theorem: Substring.ValidFor.all
File: .lake/packages/batteries/Batteries/Data/String/Lemmas.lean

Proof steps:
state_before: l m r : List Char
f : Char → Bool
x✝ : Substring
h : ValidFor l m r x✝
⊢ x✝.all f = m.all f
state_after: no goals
tactic: simp [Substring.all, h.any, List.all_eq_not_any_not]
Theorem: AddAction.aestabilizer_univ
File: Mathlib/MeasureTheory/Group/AEStabilizer.lean

Proof steps:
state_before: G : Type u_1
α : Type u_2
inst✝² : Group G
inst✝¹ : MulAction G α
x✝² : MeasurableSpace α
μ : Measure α
inst✝ : SMulInvariantMeasure G α μ
g : G
s t : Set α
x✝¹ : G
x✝ : x✝¹ ∈ ⊤
⊢ x✝¹ ∈ aestabilizer G μ univ
state_after: no goals
tactic: simp
Theorem: Multiset.powersetCard_map
File: Mathlib/Data/Multiset/Powerset.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
f : α → β
n : ℕ
s : Multiset α
⊢ powersetCard n (map f s) = map (map f) (powersetCard n s)
state_after: case empty
α : Type u_1
β : Type u_2
f : α → β
n : ℕ
⊢ powersetCard n (map f 0) = map (map f) (powersetCard n 0)

case cons
α : Type u_1
β : Type u_2
f : α → β
t : α
s : Multiset α
ih : ∀ (n : ℕ), powersetCard n (map f s) = map (map f) (powersetCard n s)
n : ℕ
⊢ powersetCard n (map f (t ::ₘ s)) = map (map f) (powersetCard n (t ::ₘ s))
tactic: induction' s using Multiset.induction with t s ih generalizing n
Theorem: Finset.max'_image
File: Mathlib/Data/Finset/Lattice.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝¹ : LinearOrder α
s✝ : Finset α
H : s✝.Nonempty
x : α
inst✝ : LinearOrder β
f : α → β
hf : Monotone f
s : Finset α
h : (image f s).Nonempty
⊢ (image f s).max' h = f (s.max' ⋯)
state_after: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝¹ : LinearOrder α
s✝ : Finset α
H : s✝.Nonempty
x : α
inst✝ : LinearOrder β
f : α → β
hf : Monotone f
s : Finset α
h : (image f s).Nonempty
⊢ s.sup' ⋯ (id ∘ f) = f (s.sup' ⋯ id)
tactic: simp only [max', sup'_image]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝¹ : LinearOrder α
s✝ : Finset α
H : s✝.Nonempty
x : α
inst✝ : LinearOrder β
f : α → β
hf : Monotone f
s : Finset α
h : (image f s).Nonempty
⊢ s.sup' ⋯ (id ∘ f) = f (s.sup' ⋯ id)
state_after: no goals
tactic: exact .symm <| comp_sup'_eq_sup'_comp _ _ fun _ _ ↦ hf.map_max
Theorem: Locale.localePointOfSpacePoint_toFun
File: Mathlib/Topology/Order/Category/FrameAdjunction.lean

Proof steps:
state_before: X : Type u_1
inst✝ : TopologicalSpace X
L : Locale
x : X
S : Set (Opens X)
⊢ { toFun := fun x_1 => x ∈ x_1, map_inf' := ⋯, map_top' := ⋯ }.toFun (sSup S) =
    sSup ({ toFun := fun x_1 => x ∈ x_1, map_inf' := ⋯, map_top' := ⋯ }.toFun '' S)
state_after: no goals
tactic: simp [Prop.exists_iff]
Theorem: iterateFrobenius_inj
File: Mathlib/Algebra/CharP/Reduced.lean

Proof steps:
state_before: R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsReduced R
p n : ℕ
inst✝ : ExpChar R p
x y : R
H : (iterateFrobenius R p n) x = (iterateFrobenius R p n) y
⊢ x = y
state_after: R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsReduced R
p n : ℕ
inst✝ : ExpChar R p
x y : R
H : (iterateFrobenius R p n) x - (iterateFrobenius R p n) y = 0
⊢ x - y = 0
tactic: rw [← sub_eq_zero] at H ⊢
state_before: R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsReduced R
p n : ℕ
inst✝ : ExpChar R p
x y : R
H : (iterateFrobenius R p n) x - (iterateFrobenius R p n) y = 0
⊢ x - y = 0
state_after: R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsReduced R
p n : ℕ
inst✝ : ExpChar R p
x y : R
H : (x - y) ^ p ^ n = 0
⊢ x - y = 0
tactic: simp_rw [iterateFrobenius_def, ← sub_pow_expChar_pow] at H
state_before: R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsReduced R
p n : ℕ
inst✝ : ExpChar R p
x y : R
H : (x - y) ^ p ^ n = 0
⊢ x - y = 0
state_after: no goals
tactic: exact IsReduced.eq_zero _ ⟨_, H⟩
Theorem: CategoryTheory.MonoidalCategory.inv_tensor
File: Mathlib/CategoryTheory/Monoidal/Category.lean

Proof steps:
state_before: C✝ : Type u
𝒞 : Category.{v, u} C✝
inst✝⁴ : MonoidalCategory C✝
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : MonoidalCategory C
W X Y Z : C
f : W ⟶ X
inst✝¹ : IsIso f
g : Y ⟶ Z
inst✝ : IsIso g
⊢ inv (f ⊗ g) = inv f ⊗ inv g
state_after: no goals
tactic: simp [tensorHom_def ,whisker_exchange]
Theorem: Lagrange.degree_basisDivisor_of_ne
File: Mathlib/LinearAlgebra/Lagrange.lean

Proof steps:
state_before: F : Type u_1
inst✝ : Field F
x y : F
hxy : x ≠ y
⊢ (basisDivisor x y).degree = 1
state_after: F : Type u_1
inst✝ : Field F
x y : F
hxy : x ≠ y
⊢ (x - y)⁻¹ ≠ 0
tactic: rw [basisDivisor, degree_mul, degree_X_sub_C, degree_C, zero_add]
state_before: F : Type u_1
inst✝ : Field F
x y : F
hxy : x ≠ y
⊢ (x - y)⁻¹ ≠ 0
state_after: no goals
tactic: exact inv_ne_zero (sub_ne_zero_of_ne hxy)
Theorem: QuotientGroup.continuous_smul₁
File: Mathlib/Topology/Algebra/Group/Basic.lean

Proof steps:
state_before: G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : ContinuousMul G
Γ : Subgroup G
x : G ⧸ Γ
⊢ Continuous fun g => g • x
state_after: case H
G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : ContinuousMul G
Γ : Subgroup G
z✝ : G
⊢ Continuous fun g => g • ↑z✝
tactic: induction x using QuotientGroup.induction_on
state_before: case H
G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : ContinuousMul G
Γ : Subgroup G
z✝ : G
⊢ Continuous fun g => g • ↑z✝
state_after: no goals
tactic: exact continuous_quotient_mk'.comp (continuous_mul_right _)
Theorem: Matrix.toMvPolynomial_add
File: Mathlib/Algebra/Module/LinearMap/Polynomial.lean

Proof steps:
state_before: m : Type u_1
n : Type u_2
o : Type u_3
R : Type u_4
S : Type u_5
inst✝³ : Fintype n
inst✝² : Fintype o
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
M N : Matrix m n R
⊢ (M + N).toMvPolynomial = M.toMvPolynomial + N.toMvPolynomial
state_after: case h
m : Type u_1
n : Type u_2
o : Type u_3
R : Type u_4
S : Type u_5
inst✝³ : Fintype n
inst✝² : Fintype o
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
M N : Matrix m n R
i : m
⊢ (M + N).toMvPolynomial i = (M.toMvPolynomial + N.toMvPolynomial) i
tactic: ext i : 1
state_before: case h
m : Type u_1
n : Type u_2
o : Type u_3
R : Type u_4
S : Type u_5
inst✝³ : Fintype n
inst✝² : Fintype o
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
M N : Matrix m n R
i : m
⊢ (M + N).toMvPolynomial i = (M.toMvPolynomial + N.toMvPolynomial) i
state_after: no goals
tactic: simp only [toMvPolynomial, add_apply, map_add, Finset.sum_add_distrib, Pi.add_apply]
Theorem: Orientation.areaForm_apply_self
File: Mathlib/Analysis/InnerProductSpace/TwoDim.lean

Proof steps:
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x : E
⊢ (o.areaForm x) x = 0
state_after: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x : E
⊢ o.volumeForm ![x, x] = 0
tactic: rw [areaForm_to_volumeForm]
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x : E
⊢ o.volumeForm ![x, x] = 0
state_after: case refine_1
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x : E
⊢ ![x, x] 0 = ![x, x] 1

case refine_2
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x : E
⊢ 0 ≠ 1
tactic: refine o.volumeForm.map_eq_zero_of_eq ![x, x] ?_ (?_ : (0 : Fin 2) ≠ 1)