ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Real.logb_neg_iff_of_base_lt_one
File: Mathlib/Analysis/SpecialFunctions/Log/Base.lean

Proof steps:
state_before: b x y : ℝ
b_pos : 0 < b
b_lt_one : b < 1
h : 0 < x
⊢ logb b x < 0 ↔ 1 < x
state_after: no goals
tactic: rw [← @logb_one b, logb_lt_logb_iff_of_base_lt_one b_pos b_lt_one h zero_lt_one]
Theorem: StarOrderedRing.nonneg_iff_quasispectrum_nonneg
File: Mathlib/Analysis/CstarAlgebra/ContinuousFunctionalCalculus/NonUnital.lean

Proof steps:
state_before: R : Type u_1
A : Type u_2
p : A → Prop
inst✝¹⁸ : OrderedCommSemiring R
inst✝¹⁷ : Nontrivial R
inst✝¹⁶ : StarRing R
inst✝¹⁵ : StarOrderedRing R
inst✝¹⁴ : MetricSpace R
inst✝¹³ : TopologicalSemiring R
inst✝¹² : ContinuousStar R
inst✝¹¹ : ∀ (α : Type ?u.1164305) [inst : Zero α] [inst_1 : TopologicalSpace α], StarOrderedRing C(α, R)₀
inst✝¹⁰ : TopologicalSpace A
inst✝⁹ : NonUnitalRing A
inst✝⁸ : StarRing A
inst✝⁷ : PartialOrder A
inst✝⁶ : StarOrderedRing A
inst✝⁵ : Module R A
inst✝⁴ : IsScalarTower R A A
inst✝³ : SMulCommClass R A A
inst✝² : StarModule R A
inst✝¹ : NonUnitalContinuousFunctionalCalculus R p
inst✝ : NonnegSpectrumClass R A
a : A
ha : autoParam (p a) _auto✝
⊢ 0 ≤ a ↔ ∀ x ∈ σₙ R a, 0 ≤ x
state_after: R : Type u_1
A : Type u_2
p : A → Prop
inst✝¹⁸ : OrderedCommSemiring R
inst✝¹⁷ : Nontrivial R
inst✝¹⁶ : StarRing R
inst✝¹⁵ : StarOrderedRing R
inst✝¹⁴ : MetricSpace R
inst✝¹³ : TopologicalSemiring R
inst✝¹² : ContinuousStar R
inst✝¹¹ : ∀ (α : Type u_1) [inst : Zero α] [inst_1 : TopologicalSpace α], StarOrderedRing C(α, R)₀
inst✝¹⁰ : TopologicalSpace A
inst✝⁹ : NonUnitalRing A
inst✝⁸ : StarRing A
inst✝⁷ : PartialOrder A
inst✝⁶ : StarOrderedRing A
inst✝⁵ : Module R A
inst✝⁴ : IsScalarTower R A A
inst✝³ : SMulCommClass R A A
inst✝² : StarModule R A
inst✝¹ : NonUnitalContinuousFunctionalCalculus R p
inst✝ : NonnegSpectrumClass R A
a : A
ha : autoParam (p a) _auto✝
this : 0 ≤ cfcₙ id a ↔ ∀ x ∈ σₙ R a, 0 ≤ id x
⊢ 0 ≤ a ↔ ∀ x ∈ σₙ R a, 0 ≤ x
tactic: have := cfcₙ_nonneg_iff (id : R → R) a (by fun_prop)
state_before: R : Type u_1
A : Type u_2
p : A → Prop
inst✝¹⁸ : OrderedCommSemiring R
inst✝¹⁷ : Nontrivial R
inst✝¹⁶ : StarRing R
inst✝¹⁵ : StarOrderedRing R
inst✝¹⁴ : MetricSpace R
inst✝¹³ : TopologicalSemiring R
inst✝¹² : ContinuousStar R
inst✝¹¹ : ∀ (α : Type u_1) [inst : Zero α] [inst_1 : TopologicalSpace α], StarOrderedRing C(α, R)₀
inst✝¹⁰ : TopologicalSpace A
inst✝⁹ : NonUnitalRing A
inst✝⁸ : StarRing A
inst✝⁷ : PartialOrder A
inst✝⁶ : StarOrderedRing A
inst✝⁵ : Module R A
inst✝⁴ : IsScalarTower R A A
inst✝³ : SMulCommClass R A A
inst✝² : StarModule R A
inst✝¹ : NonUnitalContinuousFunctionalCalculus R p
inst✝ : NonnegSpectrumClass R A
a : A
ha : autoParam (p a) _auto✝
this : 0 ≤ cfcₙ id a ↔ ∀ x ∈ σₙ R a, 0 ≤ id x
⊢ 0 ≤ a ↔ ∀ x ∈ σₙ R a, 0 ≤ x
state_after: no goals
tactic: simpa [cfcₙ_id _ a ha] using this
Theorem: Real.cauchy_add
File: Mathlib/Data/Real/Basic.lean

Proof steps:
state_before: x y : ℝ
a b : Cauchy abs
⊢ (Real.add { cauchy := a } { cauchy := b }).cauchy = { cauchy := a }.cauchy + { cauchy := b }.cauchy
state_after: no goals
tactic: rw [add_def]
Theorem: LinearEquiv.toFGModuleCatIso_hom
File: Mathlib/Algebra/Category/FGModuleCat/Basic.lean

Proof steps:
state_before: R : Type u
inst✝⁶ : Ring R
V W : Type u
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : Module.Finite R V
inst✝² : AddCommGroup W
inst✝¹ : Module R W
inst✝ : Module.Finite R W
e : V ≃ₗ[R] W
⊢ ↑e ≫ ↑e.symm = 𝟙 (of R V)
state_after: case w
R : Type u
inst✝⁶ : Ring R
V W : Type u
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : Module.Finite R V
inst✝² : AddCommGroup W
inst✝¹ : Module R W
inst✝ : Module.Finite R W
e : V ≃ₗ[R] W
x : (forget (FGModuleCat R)).obj (of R V)
⊢ (↑e ≫ ↑e.symm) x = (𝟙 (of R V)) x
tactic: ext x
state_before: case w
R : Type u
inst✝⁶ : Ring R
V W : Type u
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : Module.Finite R V
inst✝² : AddCommGroup W
inst✝¹ : Module R W
inst✝ : Module.Finite R W
e : V ≃ₗ[R] W
x : (forget (FGModuleCat R)).obj (of R V)
⊢ (↑e ≫ ↑e.symm) x = (𝟙 (of R V)) x
state_after: no goals
tactic: exact e.left_inv x
state_before: R : Type u
inst✝⁶ : Ring R
V W : Type u
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : Module.Finite R V
inst✝² : AddCommGroup W
inst✝¹ : Module R W
inst✝ : Module.Finite R W
e : V ≃ₗ[R] W
⊢ ↑e.symm ≫ ↑e = 𝟙 (of R W)
state_after: case w
R : Type u
inst✝⁶ : Ring R
V W : Type u
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : Module.Finite R V
inst✝² : AddCommGroup W
inst✝¹ : Module R W
inst✝ : Module.Finite R W
e : V ≃ₗ[R] W
x : (forget (FGModuleCat R)).obj (of R W)
⊢ (↑e.symm ≫ ↑e) x = (𝟙 (of R W)) x
tactic: ext x
state_before: case w
R : Type u
inst✝⁶ : Ring R
V W : Type u
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : Module.Finite R V
inst✝² : AddCommGroup W
inst✝¹ : Module R W
inst✝ : Module.Finite R W
e : V ≃ₗ[R] W
x : (forget (FGModuleCat R)).obj (of R W)
⊢ (↑e.symm ≫ ↑e) x = (𝟙 (of R W)) x
state_after: no goals
tactic: exact e.right_inv x
Theorem: WittVector.constantCoeff_wittNSMul
File: Mathlib/RingTheory/WittVector/Defs.lean

Proof steps:
state_before: p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝ : CommRing R
m n : ℕ
⊢ constantCoeff (wittNSMul p m n) = 0
state_after: p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝ : CommRing R
m n : ℕ
⊢ constantCoeff (m • X 0) = 0
tactic: apply constantCoeff_wittStructureInt p _ _ n
state_before: p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝ : CommRing R
m n : ℕ
⊢ constantCoeff (m • X 0) = 0
state_after: no goals
tactic: simp only [smul_zero, map_nsmul, constantCoeff_X]
Theorem: PadicInt.norm_eq_pow_val
File: Mathlib/NumberTheory/Padics/PadicIntegers.lean

Proof steps:
state_before: p : ℕ
hp : Fact (Nat.Prime p)
x : ℤ_[p]
hx : x ≠ 0
⊢ ‖x‖ = ↑p ^ (-x.valuation)
state_after: p : ℕ
hp : Fact (Nat.Prime p)
x : ℤ_[p]
hx : x ≠ 0
⊢ ↑x ≠ 0
tactic: refine @Padic.norm_eq_pow_val p hp x ?_
state_before: p : ℕ
hp : Fact (Nat.Prime p)
x : ℤ_[p]
hx : x ≠ 0
⊢ ↑x ≠ 0
state_after: p : ℕ
hp : Fact (Nat.Prime p)
x : ℤ_[p]
hx : ↑x = 0
⊢ x = 0
tactic: contrapose! hx
state_before: p : ℕ
hp : Fact (Nat.Prime p)
x : ℤ_[p]
hx : ↑x = 0
⊢ x = 0
state_after: no goals
tactic: exact Subtype.val_injective hx
Theorem: Rel.image_id
File: Mathlib/Data/Rel.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Set α
⊢ image Eq s = s
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Set α
x : α
⊢ x ∈ image Eq s ↔ x ∈ s
tactic: ext x
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Set α
x : α
⊢ x ∈ image Eq s ↔ x ∈ s
state_after: no goals
tactic: simp [mem_image]
Theorem: List.Ico.filter_lt
File: Mathlib/Data/List/Intervals.lean

Proof steps:
state_before: n m l : ℕ
⊢ filter (fun x => decide (x < l)) (Ico n m) = Ico n (min m l)
state_after: case inl
n m l : ℕ
hml : m ≤ l
⊢ filter (fun x => decide (x < l)) (Ico n m) = Ico n (min m l)

case inr
n m l : ℕ
hlm : l ≤ m
⊢ filter (fun x => decide (x < l)) (Ico n m) = Ico n (min m l)
tactic: rcases le_total m l with hml | hlm
Theorem: Batteries.AssocList.forM_eq
File: .lake/packages/batteries/Batteries/Data/AssocList.lean

Proof steps:
state_before: m : Type u_1 → Type u_2
α : Type u_3
β : Type u_4
inst✝ : Monad m
f : α → β → m PUnit
l : AssocList α β
⊢ forM f l =
    l.toList.forM fun x =>
      match x with
      | (a, b) => f a b
state_after: no goals
tactic: induction l <;> simp [*, forM]
Theorem: Set.partiallyWellOrderedOn_iff_exists_monotone_subseq
File: Mathlib/Order/WellFoundedSet.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
π : ι → Type u_5
r : α → α → Prop
r' : β → β → Prop
f : α → β
s t : Set α
a : α
inst✝¹ : IsRefl α r
inst✝ : IsTrans α r
⊢ s.PartiallyWellOrderedOn r ↔ ∀ (f : ℕ → α), (∀ (n : ℕ), f n ∈ s) → ∃ g, ∀ (m n : ℕ), m ≤ n → r (f (g m)) (f (g n))
state_after: case mp
ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
π : ι → Type u_5
r : α → α → Prop
r' : β → β → Prop
f✝ : α → β
s t : Set α
a : α
inst✝¹ : IsRefl α r
inst✝ : IsTrans α r
h : s.PartiallyWellOrderedOn r
f : ℕ → α
hf : ∀ (n : ℕ), f n ∈ s
⊢ ∃ g, ∀ (m n : ℕ), m ≤ n → r (f (g m)) (f (g n))

case mpr
ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
π : ι → Type u_5
r : α → α → Prop
r' : β → β → Prop
f✝ : α → β
s t : Set α
a : α
inst✝¹ : IsRefl α r
inst✝ : IsTrans α r
h : ∀ (f : ℕ → α), (∀ (n : ℕ), f n ∈ s) → ∃ g, ∀ (m n : ℕ), m ≤ n → r (f (g m)) (f (g n))
f : ℕ → α
hf : ∀ (n : ℕ), f n ∈ s
⊢ ∃ m n, m < n ∧ r (f m) (f n)
tactic: constructor <;> intro h f hf
Theorem: LinearMap.isSymmetric_adjoint_mul_self
File: Mathlib/Analysis/InnerProductSpace/Adjoint.lean

Proof steps:
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁹ : RCLike 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : InnerProductSpace 𝕜 G
inst✝² : FiniteDimensional 𝕜 E
inst✝¹ : FiniteDimensional 𝕜 F
inst✝ : FiniteDimensional 𝕜 G
T : E →ₗ[𝕜] E
⊢ (adjoint T * T).IsSymmetric
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁹ : RCLike 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : InnerProductSpace 𝕜 G
inst✝² : FiniteDimensional 𝕜 E
inst✝¹ : FiniteDimensional 𝕜 F
inst✝ : FiniteDimensional 𝕜 G
T : E →ₗ[𝕜] E
x y : E
⊢ ⟪(adjoint T * T) x, y⟫_𝕜 = ⟪x, (adjoint T * T) y⟫_𝕜
tactic: intro x y
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁹ : RCLike 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : InnerProductSpace 𝕜 G
inst✝² : FiniteDimensional 𝕜 E
inst✝¹ : FiniteDimensional 𝕜 F
inst✝ : FiniteDimensional 𝕜 G
T : E →ₗ[𝕜] E
x y : E
⊢ ⟪(adjoint T * T) x, y⟫_𝕜 = ⟪x, (adjoint T * T) y⟫_𝕜
state_after: no goals
tactic: simp only [mul_apply, adjoint_inner_left, adjoint_inner_right]
Theorem: Ordnode.Sized.node4L
File: Mathlib/Data/Ordmap/Ordset.lean

Proof steps:
state_before: α : Type u_1
l : Ordnode α
x : α
m : Ordnode α
y : α
r : Ordnode α
hl : l.Sized
hm : m.Sized
hr : r.Sized
⊢ (l.node4L x m y r).Sized
state_after: no goals
tactic: cases m <;> [exact (hl.node' hm).node' hr; exact (hl.node' hm.2.1).node' (hm.2.2.node' hr)]
Theorem: IsSl2Triple.HasPrimitiveVectorWith.pow_toEnd_f_ne_zero_of_eq_nat
File: Mathlib/Algebra/Lie/Sl2.lean

Proof steps:
state_before: R : Type u_1
L : Type u_2
M : Type u_3
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
h e f : L
m : M
μ : R
t : IsSl2Triple h e f
P : t.HasPrimitiveVectorWith m μ
inst✝¹ : CharZero R
inst✝ : NoZeroSMulDivisors R M
n : ℕ
hn : μ = ↑n
i : ℕ
hi : i ≤ n
⊢ ((toEnd R L M) f ^ i) m ≠ 0
state_after: R : Type u_1
L : Type u_2
M : Type u_3
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
h e f : L
m : M
μ : R
t : IsSl2Triple h e f
P : t.HasPrimitiveVectorWith m μ
inst✝¹ : CharZero R
inst✝ : NoZeroSMulDivisors R M
n : ℕ
hn : μ = ↑n
i : ℕ
hi : i ≤ n
H : ((toEnd R L M) f ^ i) m = 0
⊢ False
tactic: intro H
state_before: R : Type u_1
L : Type u_2
M : Type u_3
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
h e f : L
m : M
μ : R
t : IsSl2Triple h e f
P : t.HasPrimitiveVectorWith m μ
inst✝¹ : CharZero R
inst✝ : NoZeroSMulDivisors R M
n : ℕ
hn : μ = ↑n
i : ℕ
hi : i ≤ n
H : ((toEnd R L M) f ^ i) m = 0
⊢ False
state_after: case zero
R : Type u_1
L : Type u_2
M : Type u_3
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
h e f : L
m : M
μ : R
t : IsSl2Triple h e f
P : t.HasPrimitiveVectorWith m μ
inst✝¹ : CharZero R
inst✝ : NoZeroSMulDivisors R M
n : ℕ
hn : μ = ↑n
hi : 0 ≤ n
H : ((toEnd R L M) f ^ 0) m = 0
⊢ False

case succ
R : Type u_1
L : Type u_2
M : Type u_3
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
h e f : L
m : M
μ : R
t : IsSl2Triple h e f
P : t.HasPrimitiveVectorWith m μ
inst✝¹ : CharZero R
inst✝ : NoZeroSMulDivisors R M
n : ℕ
hn : μ = ↑n
n✝ : ℕ
a✝ : n✝ ≤ n → ((toEnd R L M) f ^ n✝) m = 0 → False
hi : n✝ + 1 ≤ n
H : ((toEnd R L M) f ^ (n✝ + 1)) m = 0
⊢ False
tactic: induction i
Theorem: round_natCast
File: Mathlib/Algebra/Order/Floor.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
n : ℕ
⊢ round ↑n = ↑n
state_after: no goals
tactic: simp [round]
Theorem: PFun.comp_id
File: Mathlib/Data/PFun.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ι : Type u_6
f✝ f : α →. β
x✝¹ : α
x✝ : β
⊢ x✝ ∈ f.comp (PFun.id α) x✝¹ ↔ x✝ ∈ f x✝¹
state_after: no goals
tactic: simp
Theorem: ExteriorAlgebra.algebraMap_leftInverse
File: Mathlib/LinearAlgebra/ExteriorAlgebra/Basic.lean

Proof steps:
state_before: R : Type u1
inst✝⁴ : CommRing R
M : Type u2
inst✝³ : AddCommGroup M
inst✝² : Module R M
A : Type u_1
inst✝¹ : Semiring A
inst✝ : Algebra R A
x : R
⊢ algebraMapInv ((algebraMap R (ExteriorAlgebra R M)) x) = x
state_after: no goals
tactic: simp [algebraMapInv]
Theorem: multiplicity_eq_multiplicity_span
File: Mathlib/RingTheory/DedekindDomain/Ideal.lean

Proof steps:
state_before: R : Type u_1
A : Type u_2
K : Type u_3
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Field K
inst✝³ : IsDomain R
inst✝² : IsPrincipalIdealRing R
inst✝¹ : DecidableRel fun x x_1 => x ∣ x_1
inst✝ : DecidableRel fun x x_1 => x ∣ x_1
a b : R
⊢ multiplicity (span {a}) (span {b}) = multiplicity a b
state_after: case pos
R : Type u_1
A : Type u_2
K : Type u_3
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Field K
inst✝³ : IsDomain R
inst✝² : IsPrincipalIdealRing R
inst✝¹ : DecidableRel fun x x_1 => x ∣ x_1
inst✝ : DecidableRel fun x x_1 => x ∣ x_1
a b : R
h : multiplicity.Finite a b
⊢ multiplicity (span {a}) (span {b}) = multiplicity a b

case neg
R : Type u_1
A : Type u_2
K : Type u_3
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Field K
inst✝³ : IsDomain R
inst✝² : IsPrincipalIdealRing R
inst✝¹ : DecidableRel fun x x_1 => x ∣ x_1
inst✝ : DecidableRel fun x x_1 => x ∣ x_1
a b : R
h : ¬multiplicity.Finite a b
⊢ multiplicity (span {a}) (span {b}) = multiplicity a b
tactic: by_cases h : Finite a b
Theorem: Complex.hasDerivAt_Gamma_one
File: Mathlib/NumberTheory/Harmonic/GammaDeriv.lean

Proof steps:
state_before: ⊢ HasDerivAt Gamma (-↑γ) 1
state_after: no goals
tactic: simpa only [factorial_zero, cast_one, harmonic_zero, Rat.cast_zero, add_zero, mul_neg, one_mul,
    cast_zero, zero_add] using hasDerivAt_Gamma_nat 0
Theorem: abs_le_abs_of_nonpos
File: Mathlib/Algebra/Order/Group/Unbundled/Abs.lean

Proof steps:
state_before: α : Type u_1
inst✝³ : Group α
inst✝² : LinearOrder α
a✝ b✝ : α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b c : α
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
ha : a ≤ 1
hab : b ≤ a
⊢ mabs a ≤ mabs b
state_after: α : Type u_1
inst✝³ : Group α
inst✝² : LinearOrder α
a✝ b✝ : α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b c : α
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
ha : a ≤ 1
hab : b ≤ a
⊢ a⁻¹ ≤ b⁻¹
tactic: rw [mabs_of_le_one ha, mabs_of_le_one (hab.trans ha)]
state_before: α : Type u_1
inst✝³ : Group α
inst✝² : LinearOrder α
a✝ b✝ : α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b c : α
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
ha : a ≤ 1
hab : b ≤ a
⊢ a⁻¹ ≤ b⁻¹
state_after: no goals
tactic: exact inv_le_inv_iff.mpr hab
Theorem: CategoryTheory.ShortComplex.LeftHomologyData.homologyIso_leftHomologyData
File: Mathlib/Algebra/Homology/ShortComplex/Homology.lean

Proof steps:
state_before: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ S₄ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
inst✝ : S.HasHomology
⊢ S.leftHomologyData.homologyIso = S.leftHomologyIso.symm
state_after: case w
C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ S₄ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
inst✝ : S.HasHomology
⊢ S.leftHomologyData.homologyIso.hom = S.leftHomologyIso.symm.hom
tactic: ext
state_before: case w
C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ S₄ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
inst✝ : S.HasHomology
⊢ S.leftHomologyData.homologyIso.hom = S.leftHomologyIso.symm.hom
state_after: case w
C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ S₄ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
inst✝ : S.HasHomology
⊢ leftHomologyMap' (𝟙 S) S.homologyData.left S.leftHomologyData ≫
      leftHomologyMap' (𝟙 S) S.leftHomologyData S.leftHomologyData =
    leftHomologyMap' (𝟙 S) S.homologyData.left S.leftHomologyData
tactic: dsimp [homologyIso, leftHomologyIso, ShortComplex.leftHomologyIso]
state_before: case w
C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ S₄ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
inst✝ : S.HasHomology
⊢ leftHomologyMap' (𝟙 S) S.homologyData.left S.leftHomologyData ≫
      leftHomologyMap' (𝟙 S) S.leftHomologyData S.leftHomologyData =
    leftHomologyMap' (𝟙 S) S.homologyData.left S.leftHomologyData
state_after: no goals
tactic: rw [← leftHomologyMap'_comp, comp_id]
Theorem: rightAddCoset_eq_iff
File: Mathlib/GroupTheory/Coset.lean

Proof steps:
state_before: α : Type u_1
inst✝ : Group α
s : Subgroup α
x y : α
⊢ op x • ↑s = op y • ↑s ↔ y * x⁻¹ ∈ s
state_after: α : Type u_1
inst✝ : Group α
s : Subgroup α
x y : α
⊢ (∀ (x_1 : α), x_1 ∈ op x • ↑s ↔ x_1 ∈ op y • ↑s) ↔ y * x⁻¹ ∈ s
tactic: rw [Set.ext_iff]
state_before: α : Type u_1
inst✝ : Group α
s : Subgroup α
x y : α
⊢ (∀ (x_1 : α), x_1 ∈ op x • ↑s ↔ x_1 ∈ op y • ↑s) ↔ y * x⁻¹ ∈ s
state_after: α : Type u_1
inst✝ : Group α
s : Subgroup α
x y : α
⊢ (∀ (x_1 : α), x_1 * x⁻¹ ∈ s ↔ x_1 * y⁻¹ ∈ s) ↔ y * x⁻¹ ∈ s
tactic: simp_rw [mem_rightCoset_iff, SetLike.mem_coe]
state_before: α : Type u_1
inst✝ : Group α
s : Subgroup α
x y : α
⊢ (∀ (x_1 : α), x_1 * x⁻¹ ∈ s ↔ x_1 * y⁻¹ ∈ s) ↔ y * x⁻¹ ∈ s
state_after: case mp
α : Type u_1
inst✝ : Group α
s : Subgroup α
x y : α
⊢ (∀ (x_1 : α), x_1 * x⁻¹ ∈ s ↔ x_1 * y⁻¹ ∈ s) → y * x⁻¹ ∈ s

case mpr
α : Type u_1
inst✝ : Group α
s : Subgroup α
x y : α
⊢ y * x⁻¹ ∈ s → ∀ (x_1 : α), x_1 * x⁻¹ ∈ s ↔ x_1 * y⁻¹ ∈ s
tactic: constructor
Theorem: Filter.not_tendsto_iff_exists_frequently_nmem
File: Mathlib/Order/Filter/Basic.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
l : Filter α
f : α → β
l₁ : Filter α
l₂ : Filter β
⊢ ¬Tendsto f l₁ l₂ ↔ ∃ s ∈ l₂, ∃ᶠ (x : α) in l₁, f x ∉ s
state_after: no goals
tactic: simp only [tendsto_iff_forall_eventually_mem, not_forall, exists_prop, not_eventually]
Theorem: QuaternionAlgebra.algebraMap_injective
File: Mathlib/Algebra/Quaternion.lean

Proof steps:
state_before: S : Type u_1
T : Type u_2
R : Type u_3
inst✝ : CommRing R
c₁ c₂ r x y z : R
a b c : ℍ[R,c₁,c₂]
x✝¹ x✝ : R
⊢ (algebraMap R ℍ[R,c₁,c₂]) x✝¹ = (algebraMap R ℍ[R,c₁,c₂]) x✝ → x✝¹ = x✝
state_after: no goals
tactic: simp [algebraMap_eq]
Theorem: Multiset.filter_nsmul
File: Mathlib/Data/Multiset/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type v
γ : Type u_2
p : α → Prop
inst✝ : DecidablePred p
s : Multiset α
n : ℕ
⊢ filter p (n • s) = n • filter p s
state_after: case refine_1
α : Type u_1
β : Type v
γ : Type u_2
p : α → Prop
inst✝ : DecidablePred p
s : Multiset α
n : ℕ
⊢ filter p (n • 0) = n • filter p 0

case refine_2
α : Type u_1
β : Type v
γ : Type u_2
p : α → Prop
inst✝ : DecidablePred p
s : Multiset α
n : ℕ
⊢ ∀ (a : α) (s : Multiset α), filter p (n • s) = n • filter p s → filter p (n • (a ::ₘ s)) = n • filter p (a ::ₘ s)
tactic: refine s.induction_on ?_ ?_
Theorem: Finsupp.zipWith_single_single
File: Mathlib/Data/Finsupp/Defs.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝² : Zero M
inst✝¹ : Zero N
inst✝ : Zero P
f : M → N → P
hf : f 0 0 = 0
a : α
m : M
n : N
⊢ zipWith f hf (single a m) (single a n) = single a (f m n)
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝² : Zero M
inst✝¹ : Zero N
inst✝ : Zero P
f : M → N → P
hf : f 0 0 = 0
a : α
m : M
n : N
a' : α
⊢ (zipWith f hf (single a m) (single a n)) a' = (single a (f m n)) a'
tactic: ext a'
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝² : Zero M
inst✝¹ : Zero N
inst✝ : Zero P
f : M → N → P
hf : f 0 0 = 0
a : α
m : M
n : N
a' : α
⊢ (zipWith f hf (single a m) (single a n)) a' = (single a (f m n)) a'
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝² : Zero M
inst✝¹ : Zero N
inst✝ : Zero P
f : M → N → P
hf : f 0 0 = 0
a : α
m : M
n : N
a' : α
⊢ f ((single a m) a') ((single a n) a') = (single a (f m n)) a'
tactic: rw [zipWith_apply]
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝² : Zero M
inst✝¹ : Zero N
inst✝ : Zero P
f : M → N → P
hf : f 0 0 = 0
a : α
m : M
n : N
a' : α
⊢ f ((single a m) a') ((single a n) a') = (single a (f m n)) a'
state_after: case h.inl
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝² : Zero M
inst✝¹ : Zero N
inst✝ : Zero P
f : M → N → P
hf : f 0 0 = 0
a : α
m : M
n : N
⊢ f ((single a m) a) ((single a n) a) = (single a (f m n)) a

case h.inr
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝² : Zero M
inst✝¹ : Zero N
inst✝ : Zero P
f : M → N → P
hf : f 0 0 = 0
a : α
m : M
n : N
a' : α
ha' : a ≠ a'
⊢ f ((single a m) a') ((single a n) a') = (single a (f m n)) a'
tactic: obtain rfl | ha' := eq_or_ne a a'
Theorem: rank_span_finset_le
File: Mathlib/LinearAlgebra/Dimension/Constructions.lean

Proof steps:
state_before: R S : Type u
M : Type v
M' : Type v'
M₁ : Type v
ι : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝⁸ : Ring R
inst✝⁷ : CommRing S
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M₁
inst✝ : StrongRankCondition R
s : Finset M
⊢ Module.rank R ↥(span R ↑s) ≤ ↑s.card
state_after: no goals
tactic: simpa using rank_span_le s.toSet
Theorem: CategoryTheory.Presieve.pullbackCompatible_iff
File: Mathlib/CategoryTheory/Sites/IsSheafFor.lean

Proof steps:
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
P Q U : Cᵒᵖ ⥤ Type w
X Y : C
S : Sieve X
R : Presieve X
x : FamilyOfElements P R
inst✝ : R.hasPullbacks
⊢ x.Compatible ↔ x.PullbackCompatible
state_after: case mp
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
P Q U : Cᵒᵖ ⥤ Type w
X Y : C
S : Sieve X
R : Presieve X
x : FamilyOfElements P R
inst✝ : R.hasPullbacks
⊢ x.Compatible → x.PullbackCompatible

case mpr
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
P Q U : Cᵒᵖ ⥤ Type w
X Y : C
S : Sieve X
R : Presieve X
x : FamilyOfElements P R
inst✝ : R.hasPullbacks
⊢ x.PullbackCompatible → x.Compatible
tactic: constructor
Theorem: add_eq_zero'
File: Mathlib/Algebra/Ring/BooleanRing.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : BooleanRing α
a b : α
⊢ a = -b ↔ a = b
state_after: no goals
tactic: rw [neg_eq]