ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Finset.exists_one_lt_of_prod_one_of_exists_ne_one'
File: Mathlib/Algebra/Order/BigOperators/Group/Finset.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
G : Type u_6
k : Type u_7
R : Type u_8
inst✝ : LinearOrderedCancelCommMonoid M
f✝ g : ι → M
s t : Finset ι
f : ι → M
h₁ : ∏ i ∈ s, f i = 1
h₂ : ∃ i ∈ s, f i ≠ 1
⊢ ∃ i ∈ s, 1 < f i
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
G : Type u_6
k : Type u_7
R : Type u_8
inst✝ : LinearOrderedCancelCommMonoid M
f✝ g : ι → M
s t : Finset ι
f : ι → M
h₂ : ∃ i ∈ s, f i ≠ 1
h₁ : ∀ i ∈ s, f i ≤ 1
⊢ ∏ i ∈ s, f i ≠ 1
tactic: contrapose! h₁
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
G : Type u_6
k : Type u_7
R : Type u_8
inst✝ : LinearOrderedCancelCommMonoid M
f✝ g : ι → M
s t : Finset ι
f : ι → M
h₂ : ∃ i ∈ s, f i ≠ 1
h₁ : ∀ i ∈ s, f i ≤ 1
⊢ ∏ i ∈ s, f i ≠ 1
state_after: case intro.intro
ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
G : Type u_6
k : Type u_7
R : Type u_8
inst✝ : LinearOrderedCancelCommMonoid M
f✝ g : ι → M
s t : Finset ι
f : ι → M
h₁ : ∀ i ∈ s, f i ≤ 1
i : ι
m : i ∈ s
i_ne : f i ≠ 1
⊢ ∏ i ∈ s, f i ≠ 1
tactic: obtain ⟨i, m, i_ne⟩ : ∃ i ∈ s, f i ≠ 1 := h₂
state_before: case intro.intro
ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
G : Type u_6
k : Type u_7
R : Type u_8
inst✝ : LinearOrderedCancelCommMonoid M
f✝ g : ι → M
s t : Finset ι
f : ι → M
h₁ : ∀ i ∈ s, f i ≤ 1
i : ι
m : i ∈ s
i_ne : f i ≠ 1
⊢ ∏ i ∈ s, f i ≠ 1
state_after: case intro.intro.h
ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
G : Type u_6
k : Type u_7
R : Type u_8
inst✝ : LinearOrderedCancelCommMonoid M
f✝ g : ι → M
s t : Finset ι
f : ι → M
h₁ : ∀ i ∈ s, f i ≤ 1
i : ι
m : i ∈ s
i_ne : f i ≠ 1
⊢ ∏ i ∈ s, f i < 1
tactic: apply ne_of_lt
state_before: case intro.intro.h
ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
G : Type u_6
k : Type u_7
R : Type u_8
inst✝ : LinearOrderedCancelCommMonoid M
f✝ g : ι → M
s t : Finset ι
f : ι → M
h₁ : ∀ i ∈ s, f i ≤ 1
i : ι
m : i ∈ s
i_ne : f i ≠ 1
⊢ ∏ i ∈ s, f i < 1
state_after: no goals
tactic: calc
    ∏ j ∈ s, f j < ∏ j ∈ s, 1 := prod_lt_prod' h₁ ⟨i, m, (h₁ i m).lt_of_ne i_ne⟩
    _ = 1 := prod_const_one
Theorem: Int.even_add
File: Mathlib/Algebra/Group/Int.lean

Proof steps:
state_before: u v m n : ℤ
⊢ Even (m + n) ↔ (Even m ↔ Even n)
state_after: no goals
tactic: cases' emod_two_eq_zero_or_one m with h₁ h₁ <;>
  cases' emod_two_eq_zero_or_one n with h₂ h₂ <;>
  simp [even_iff, h₁, h₂, Int.add_emod, one_add_one_eq_two, emod_self]
Theorem: Sigma.curry_single
File: Mathlib/Algebra/Group/Pi/Lemmas.lean

Proof steps:
state_before: ι : Type u_1
α✝ : Type u_2
I : Type u
f : I → Type v
x✝ y : (i : I) → f i
i✝ j : I
α : Type u_3
β : α → Type u_4
γ : (a : α) → β a → Type u_5
inst✝² : DecidableEq α
inst✝¹ : (a : α) → DecidableEq (β a)
inst✝ : (a : α) → (b : β a) → One (γ a b)
i : (a : α) × β a
x : γ i.fst i.snd
⊢ curry (Pi.mulSingle i x) = Pi.mulSingle i.fst (Pi.mulSingle i.snd x)
state_after: no goals
tactic: simp only [Pi.mulSingle, Sigma.curry_update, Sigma.curry_one, Pi.one_apply]
Theorem: Polynomial.eval_eq_smeval
File: Mathlib/Algebra/Polynomial/Smeval.lean

Proof steps:
state_before: R : Type u_1
inst✝³ : Semiring R
r : R
p : R[X]
S : Type u_2
inst✝² : AddCommMonoid S
inst✝¹ : Pow S ℕ
inst✝ : MulActionWithZero R S
x : S
⊢ eval r p = p.smeval r
state_after: R : Type u_1
inst✝³ : Semiring R
r : R
p : R[X]
S : Type u_2
inst✝² : AddCommMonoid S
inst✝¹ : Pow S ℕ
inst✝ : MulActionWithZero R S
x : S
⊢ (p.sum fun e a => a * r ^ e) = p.sum (smul_pow r)
tactic: rw [eval_eq_sum, smeval_eq_sum]
state_before: R : Type u_1
inst✝³ : Semiring R
r : R
p : R[X]
S : Type u_2
inst✝² : AddCommMonoid S
inst✝¹ : Pow S ℕ
inst✝ : MulActionWithZero R S
x : S
⊢ (p.sum fun e a => a * r ^ e) = p.sum (smul_pow r)
state_after: no goals
tactic: rfl
Theorem: commProb_eq_one_iff
File: Mathlib/GroupTheory/CommutingProbability.lean

Proof steps:
state_before: M : Type u_1
inst✝¹ : Mul M
inst✝ : Finite M
h : Nonempty M
⊢ commProb M = 1 ↔ Commutative fun x x_1 => x * x_1
state_after: M : Type u_1
inst✝¹ : Mul M
inst✝ : Finite M
h : Nonempty M
this : Fintype M
⊢ commProb M = 1 ↔ Commutative fun x x_1 => x * x_1
tactic: haveI := Fintype.ofFinite M
state_before: M : Type u_1
inst✝¹ : Mul M
inst✝ : Finite M
h : Nonempty M
this : Fintype M
⊢ commProb M = 1 ↔ Commutative fun x x_1 => x * x_1
state_after: M : Type u_1
inst✝¹ : Mul M
inst✝ : Finite M
h : Nonempty M
this : Fintype M
⊢ ↑(card ↑{x | Commute x.1 x.2}) / ↑(card M) ^ 2 = 1 ↔ Commutative fun x x_1 => x * x_1
tactic: rw [commProb, ← Set.coe_setOf, Nat.card_eq_fintype_card, Nat.card_eq_fintype_card]
state_before: M : Type u_1
inst✝¹ : Mul M
inst✝ : Finite M
h : Nonempty M
this : Fintype M
⊢ ↑(card ↑{x | Commute x.1 x.2}) / ↑(card M) ^ 2 = 1 ↔ Commutative fun x x_1 => x * x_1
state_after: M : Type u_1
inst✝¹ : Mul M
inst✝ : Finite M
h : Nonempty M
this : Fintype M
⊢ (∀ (x : M × M), x ∈ {x | Commute x.1 x.2}) ↔ Commutative fun x x_1 => x * x_1

M : Type u_1
inst✝¹ : Mul M
inst✝ : Finite M
h : Nonempty M
this : Fintype M
⊢ ↑(card M) ^ 2 ≠ 0
tactic: rw [div_eq_one_iff_eq, ← Nat.cast_pow, Nat.cast_inj, sq, ← card_prod,
    set_fintype_card_eq_univ_iff, Set.eq_univ_iff_forall]
Theorem: Finset.Colex.singleton_le_toColex
File: Mathlib/Combinatorics/Colex.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
f : α → β
𝒜 𝒜₁ 𝒜₂ : Finset (Finset α)
s t u : Finset α
a b : α
⊢ { ofColex := {a} } ≤ { ofColex := s } ↔ ∃ x ∈ s, a ≤ x
state_after: α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
f : α → β
𝒜 𝒜₁ 𝒜₂ : Finset (Finset α)
s t u : Finset α
a b : α
⊢ (a ∉ s → ∃ b ∈ s, ¬b = a ∧ a ≤ b) ↔ ∃ x ∈ s, a ≤ x
tactic: simp [toColex_le_toColex]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
f : α → β
𝒜 𝒜₁ 𝒜₂ : Finset (Finset α)
s t u : Finset α
a b : α
⊢ (a ∉ s → ∃ b ∈ s, ¬b = a ∧ a ≤ b) ↔ ∃ x ∈ s, a ≤ x
state_after: no goals
tactic: by_cases a ∈ s <;> aesop
Theorem: cexp_neg_quadratic_isLittleO_abs_rpow_cocompact
File: Mathlib/Analysis/SpecialFunctions/Gaussian/PoissonSummation.lean

Proof steps:
state_before: E : Type u_1
inst✝ : NormedAddCommGroup E
a : ℂ
ha : a.re < 0
b : ℂ
s : ℝ
⊢ (fun x => cexp (a * ↑x ^ 2 + b * ↑x)) =o[cocompact ℝ] fun x => |x| ^ s
state_after: E : Type u_1
inst✝ : NormedAddCommGroup E
a : ℂ
ha : a.re < 0
b : ℂ
s : ℝ
⊢ ((fun x => cexp (a * ↑x ^ 2 + b * ↑x)) =o[atBot] fun x => |x| ^ s) ∧
    (fun x => cexp (a * ↑x ^ 2 + b * ↑x)) =o[atTop] fun x => |x| ^ s
tactic: rw [cocompact_eq_atBot_atTop, isLittleO_sup]
state_before: E : Type u_1
inst✝ : NormedAddCommGroup E
a : ℂ
ha : a.re < 0
b : ℂ
s : ℝ
⊢ ((fun x => cexp (a * ↑x ^ 2 + b * ↑x)) =o[atBot] fun x => |x| ^ s) ∧
    (fun x => cexp (a * ↑x ^ 2 + b * ↑x)) =o[atTop] fun x => |x| ^ s
state_after: case left
E : Type u_1
inst✝ : NormedAddCommGroup E
a : ℂ
ha : a.re < 0
b : ℂ
s : ℝ
⊢ (fun x => cexp (a * ↑x ^ 2 + b * ↑x)) =o[atBot] fun x => |x| ^ s

case right
E : Type u_1
inst✝ : NormedAddCommGroup E
a : ℂ
ha : a.re < 0
b : ℂ
s : ℝ
⊢ (fun x => cexp (a * ↑x ^ 2 + b * ↑x)) =o[atTop] fun x => |x| ^ s
tactic: constructor
Theorem: AffineSubspace.direction_eq_top_iff_of_nonempty
File: Mathlib/LinearAlgebra/AffineSpace/AffineSubspace.lean

Proof steps:
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
p₁ p₂ : P
s : AffineSubspace k P
h : (↑s).Nonempty
⊢ s.direction = ⊤ ↔ s = ⊤
state_after: case mp
k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
p₁ p₂ : P
s : AffineSubspace k P
h : (↑s).Nonempty
⊢ s.direction = ⊤ → s = ⊤

case mpr
k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
p₁ p₂ : P
s : AffineSubspace k P
h : (↑s).Nonempty
⊢ s = ⊤ → s.direction = ⊤
tactic: constructor
Theorem: Mathlib.Tactic.Monoidal.eval_monoidalComp
File: Mathlib/Tactic/CategoryTheory/Monoidal.lean

Proof steps:
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : MonoidalCategory C
f f' g g' h i j : C
η η' : f ⟶ g
α : g ⟶ h
θ θ' : h ⟶ i
αθ : g ⟶ i
ηαθ : f ⟶ i
pf_η : η = η'
pf_θ : θ = θ'
pf_αθ : α ≫ θ' = αθ
pf_ηαθ : η' ≫ αθ = ηαθ
⊢ η ≫ α ≫ θ = ηαθ
state_after: no goals
tactic: simp [pf_η, pf_θ, pf_αθ, pf_ηαθ]
Theorem: Ring.multichoose_neg_of_lt
File: Mathlib/RingTheory/Binomial.lean

Proof steps:
state_before: R : Type u_1
inst✝² : NonAssocRing R
inst✝¹ : Pow R ℕ
inst✝ : BinomialRing R
n k : ℕ
h : n < k
⊢ multichoose (-↑n) k = 0
state_after: R : Type u_1
inst✝² : NonAssocRing R
inst✝¹ : Pow R ℕ
inst✝ : BinomialRing R
n k : ℕ
h : n < k
⊢ (fun x => k.factorial • x) (multichoose (-↑n) k) = (fun x => k.factorial • x) 0
tactic: refine nsmul_right_injective (Nat.factorial k) (Nat.factorial_ne_zero k) ?_
state_before: R : Type u_1
inst✝² : NonAssocRing R
inst✝¹ : Pow R ℕ
inst✝ : BinomialRing R
n k : ℕ
h : n < k
⊢ (fun x => k.factorial • x) (multichoose (-↑n) k) = (fun x => k.factorial • x) 0
state_after: R : Type u_1
inst✝² : NonAssocRing R
inst✝¹ : Pow R ℕ
inst✝ : BinomialRing R
n k : ℕ
h : n < k
⊢ k.factorial • multichoose (-↑n) k = k.factorial • 0
tactic: simp only
state_before: R : Type u_1
inst✝² : NonAssocRing R
inst✝¹ : Pow R ℕ
inst✝ : BinomialRing R
n k : ℕ
h : n < k
⊢ k.factorial • multichoose (-↑n) k = k.factorial • 0
state_after: no goals
tactic: rw [factorial_nsmul_multichoose_eq_ascPochhammer, smeval_ascPochhammer_neg_of_lt h, smul_zero]
Theorem: abs_pow_eq_one
File: Mathlib/Algebra/Order/Ring/Abs.lean

Proof steps:
state_before: α : Type u_1
inst✝ : LinearOrderedRing α
n : ℕ
a✝ b c a : α
h : n ≠ 0
⊢ |a ^ n| = 1 ↔ |a| = 1
state_after: case h.e'_1.h.e'_2
α : Type u_1
inst✝ : LinearOrderedRing α
n : ℕ
a✝ b c a : α
h : n ≠ 0
⊢ |a ^ n| = |a| ^ n

case h.e'_1.h.e'_3
α : Type u_1
inst✝ : LinearOrderedRing α
n : ℕ
a✝ b c a : α
h : n ≠ 0
⊢ 1 = 1 ^ n
tactic: convert pow_left_inj (abs_nonneg a) zero_le_one h
state_before: case h.e'_1.h.e'_2
α : Type u_1
inst✝ : LinearOrderedRing α
n : ℕ
a✝ b c a : α
h : n ≠ 0
⊢ |a ^ n| = |a| ^ n

case h.e'_1.h.e'_3
α : Type u_1
inst✝ : LinearOrderedRing α
n : ℕ
a✝ b c a : α
h : n ≠ 0
⊢ 1 = 1 ^ n
state_after: no goals
tactic: exacts [(pow_abs _ _).symm, (one_pow _).symm]
Theorem: CliffordAlgebra.ofBaseChange_tmul_one
File: Mathlib/LinearAlgebra/CliffordAlgebra/BaseChange.lean

Proof steps:
state_before: R : Type u_1
A : Type u_2
V : Type u_3
inst✝⁷ : CommRing R
inst✝⁶ : CommRing A
inst✝⁵ : AddCommGroup V
inst✝⁴ : Algebra R A
inst✝³ : Module R V
inst✝² : Module A V
inst✝¹ : IsScalarTower R A V
inst✝ : Invertible 2
Q : QuadraticForm R V
z : A
⊢ (ofBaseChange A Q) (z ⊗ₜ[R] 1) = (algebraMap A (CliffordAlgebra (QuadraticForm.baseChange A Q))) z
state_after: R : Type u_1
A : Type u_2
V : Type u_3
inst✝⁷ : CommRing R
inst✝⁶ : CommRing A
inst✝⁵ : AddCommGroup V
inst✝⁴ : Algebra R A
inst✝³ : Module R V
inst✝² : Module A V
inst✝¹ : IsScalarTower R A V
inst✝ : Invertible 2
Q : QuadraticForm R V
z : A
⊢ (algebraMap A (CliffordAlgebra (QuadraticForm.baseChange A Q))) z * (ofBaseChangeAux A Q) 1 =
    (algebraMap A (CliffordAlgebra (QuadraticForm.baseChange A Q))) z
tactic: show algebraMap _ _ z * ofBaseChangeAux A Q 1 = _
state_before: R : Type u_1
A : Type u_2
V : Type u_3
inst✝⁷ : CommRing R
inst✝⁶ : CommRing A
inst✝⁵ : AddCommGroup V
inst✝⁴ : Algebra R A
inst✝³ : Module R V
inst✝² : Module A V
inst✝¹ : IsScalarTower R A V
inst✝ : Invertible 2
Q : QuadraticForm R V
z : A
⊢ (algebraMap A (CliffordAlgebra (QuadraticForm.baseChange A Q))) z * (ofBaseChangeAux A Q) 1 =
    (algebraMap A (CliffordAlgebra (QuadraticForm.baseChange A Q))) z
state_after: no goals
tactic: rw [map_one, mul_one]
Theorem: Primrec.nat_bodd
File: Mathlib/Computability/Primrec.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
σ : Type u_5
inst✝⁴ : Primcodable α
inst✝³ : Primcodable β
inst✝² : Primcodable γ
inst✝¹ : Primcodable δ
inst✝ : Primcodable σ
n : ℕ
⊢ (id n % 2 == 1) = n.bodd
state_after: no goals
tactic: cases H : n.bodd <;> simp [Nat.mod_two_of_bodd, H]
Theorem: Multiset.count_dedup
File: Mathlib/Data/Multiset/Dedup.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
m : Multiset α
a : α
x✝ : List α
⊢ count a (dedup (Quot.mk Setoid.r x✝)) = if a ∈ Quot.mk Setoid.r x✝ then 1 else 0
state_after: α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
m : Multiset α
a : α
x✝ : List α
⊢ List.count a x✝.dedup = if a ∈ x✝ then 1 else 0
tactic: simp only [quot_mk_to_coe'', coe_dedup, mem_coe, List.mem_dedup, coe_nodup, coe_count]
state_before: α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
m : Multiset α
a : α
x✝ : List α
⊢ List.count a x✝.dedup = if a ∈ x✝ then 1 else 0
state_after: no goals
tactic: apply List.count_dedup _ _
Theorem: ExistsUnique.intro₂
File: Mathlib/Logic/Basic.lean

Proof steps:
state_before: α✝ : Sort u_1
β : Sort u_2
p✝ q✝ : α✝ → Prop
α : Sort u_3
p : α → Sort u_4
inst✝ : ∀ (x : α), Subsingleton (p x)
q : (x : α) → p x → Prop
w : α
hp : p w
hq : q w hp
H : ∀ (y : α) (hy : p y), q y hy → y = w
⊢ ∃! x, ∃! hx, q x hx
state_after: α✝ : Sort u_1
β : Sort u_2
p✝ q✝ : α✝ → Prop
α : Sort u_3
p : α → Sort u_4
inst✝ : ∀ (x : α), Subsingleton (p x)
q : (x : α) → p x → Prop
w : α
hp : p w
hq : q w hp
H : ∀ (y : α) (hy : p y), q y hy → y = w
⊢ ∃! x, ∃ hx, q x hx
tactic: simp only [exists_unique_iff_exists]
state_before: α✝ : Sort u_1
β : Sort u_2
p✝ q✝ : α✝ → Prop
α : Sort u_3
p : α → Sort u_4
inst✝ : ∀ (x : α), Subsingleton (p x)
q : (x : α) → p x → Prop
w : α
hp : p w
hq : q w hp
H : ∀ (y : α) (hy : p y), q y hy → y = w
⊢ ∃! x, ∃ hx, q x hx
state_after: no goals
tactic: exact ExistsUnique.intro w ⟨hp, hq⟩ fun y ⟨hyp, hyq⟩ ↦ H y hyp hyq
Theorem: Finsupp.prod_mapDomain_index_inj
File: Mathlib/Data/Finsupp/Basic.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✝¹ : AddCommMonoid M
v v₁ v₂ : α →₀ M
inst✝ : CommMonoid N
f : α → β
s : α →₀ M
h : β → M → N
hf : Injective f
⊢ (mapDomain f s).prod h = s.prod fun a b => h (f a) b
state_after: no goals
tactic: rw [← Function.Embedding.coeFn_mk f hf, ← embDomain_eq_mapDomain, prod_embDomain]
Theorem: Finsupp.sum_single_index
File: Mathlib/Algebra/BigOperators/Finsupp.lean

Proof steps:
state_before: α : Type u_1
ι : Type u_2
γ : Type u_3
A : Type u_4
B : Type u_5
C : Type u_6
inst✝⁵ : AddCommMonoid A
inst✝⁴ : AddCommMonoid B
inst✝³ : AddCommMonoid C
t : ι → A → C
h0 : ∀ (i : ι), t i 0 = 0
h1 : ∀ (i : ι) (x y : A), t i (x + y) = t i x + t i y
s : Finset α
f : α → ι →₀ A
i : ι
g : ι →₀ A
k : ι → A → γ → B
x : γ
β : Type u_7
M : Type u_8
M' : Type u_9
N : Type u_10
P : Type u_11
G : Type u_12
H : Type u_13
R : Type u_14
S : Type u_15
inst✝² : Zero M
inst✝¹ : Zero M'
inst✝ : CommMonoid N
a : α
b : M
h : α → M → N
h_zero : h a 0 = 1
⊢ ∏ x ∈ {a}, h x ((single a b) x) = h a b
state_after: no goals
tactic: simp
Theorem: CategoryTheory.Functor.mapShortComplex_obj
File: Mathlib/Algebra/Homology/ShortComplex/Basic.lean

Proof steps:
state_before: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{?u.40895, u_1} C
inst✝³ : Category.{?u.40899, u_2} D
inst✝² : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
inst✝¹ : HasZeroMorphisms D
F : C ⥤ D
inst✝ : F.PreservesZeroMorphisms
X✝ Y✝ : ShortComplex C
φ : X✝ ⟶ Y✝
⊢ F.map φ.τ₁ ≫ ((fun S => S.map F) Y✝).f = ((fun S => S.map F) X✝).f ≫ F.map φ.τ₂
state_after: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{?u.40895, u_1} C
inst✝³ : Category.{?u.40899, u_2} D
inst✝² : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
inst✝¹ : HasZeroMorphisms D
F : C ⥤ D
inst✝ : F.PreservesZeroMorphisms
X✝ Y✝ : ShortComplex C
φ : X✝ ⟶ Y✝
⊢ F.map φ.τ₁ ≫ F.map Y✝.f = F.map X✝.f ≫ F.map φ.τ₂
tactic: dsimp
state_before: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{?u.40895, u_1} C
inst✝³ : Category.{?u.40899, u_2} D
inst✝² : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
inst✝¹ : HasZeroMorphisms D
F : C ⥤ D
inst✝ : F.PreservesZeroMorphisms
X✝ Y✝ : ShortComplex C
φ : X✝ ⟶ Y✝
⊢ F.map φ.τ₁ ≫ F.map Y✝.f = F.map X✝.f ≫ F.map φ.τ₂
state_after: no goals
tactic: simp only [← F.map_comp, φ.comm₁₂]
state_before: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{?u.40895, u_1} C
inst✝³ : Category.{?u.40899, u_2} D
inst✝² : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
inst✝¹ : HasZeroMorphisms D
F : C ⥤ D
inst✝ : F.PreservesZeroMorphisms
X✝ Y✝ : ShortComplex C
φ : X✝ ⟶ Y✝
⊢ F.map φ.τ₂ ≫ ((fun S => S.map F) Y✝).g = ((fun S => S.map F) X✝).g ≫ F.map φ.τ₃
state_after: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{?u.40895, u_1} C
inst✝³ : Category.{?u.40899, u_2} D
inst✝² : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
inst✝¹ : HasZeroMorphisms D
F : C ⥤ D
inst✝ : F.PreservesZeroMorphisms
X✝ Y✝ : ShortComplex C
φ : X✝ ⟶ Y✝
⊢ F.map φ.τ₂ ≫ F.map Y✝.g = F.map X✝.g ≫ F.map φ.τ₃
tactic: dsimp
state_before: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{?u.40895, u_1} C
inst✝³ : Category.{?u.40899, u_2} D
inst✝² : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
inst✝¹ : HasZeroMorphisms D
F : C ⥤ D
inst✝ : F.PreservesZeroMorphisms
X✝ Y✝ : ShortComplex C
φ : X✝ ⟶ Y✝
⊢ F.map φ.τ₂ ≫ F.map Y✝.g = F.map X✝.g ≫ F.map φ.τ₃
state_after: no goals
tactic: simp only [← F.map_comp, φ.comm₂₃]
Theorem: AddMonoid.MulEquiv.coprodCongr_apply
File: Mathlib/GroupTheory/Coprod/Basic.lean

Proof steps:
state_before: M : Type u_1
N : Type u_2
M' : Type u_3
N' : Type u_4
inst✝³ : MulOneClass M
inst✝² : MulOneClass N
inst✝¹ : MulOneClass M'
inst✝ : MulOneClass N'
e : M ≃* N
e' : M' ≃* N'
⊢ (Coprod.map ↑e.symm ↑e'.symm).comp (Coprod.map ↑e ↑e') = MonoidHom.id (M ∗ M')
state_after: no goals
tactic: ext <;> simp
state_before: M : Type u_1
N : Type u_2
M' : Type u_3
N' : Type u_4
inst✝³ : MulOneClass M
inst✝² : MulOneClass N
inst✝¹ : MulOneClass M'
inst✝ : MulOneClass N'
e : M ≃* N
e' : M' ≃* N'
⊢ (Coprod.map ↑e ↑e').comp (Coprod.map ↑e.symm ↑e'.symm) = MonoidHom.id (N ∗ N')
state_after: no goals
tactic: ext <;> simp
Theorem: Matrix.mul_transvection_apply_same
File: Mathlib/LinearAlgebra/Matrix/Transvection.lean

Proof steps:
state_before: n : Type u_1
p : Type u_2
R : Type u₂
𝕜 : Type u_3
inst✝⁴ : Field 𝕜
inst✝³ : DecidableEq n
inst✝² : DecidableEq p
inst✝¹ : CommRing R
i j : n
inst✝ : Fintype n
a : n
c : R
M : Matrix n n R
⊢ (M * transvection i j c) a j = M a j + c * M a i
state_after: no goals
tactic: simp [transvection, Matrix.mul_add, mul_comm]
Theorem: Int.even_xor'_odd
File: Mathlib/Algebra/Ring/Int.lean

Proof steps:
state_before: m n✝ n : ℤ
⊢ Xor' (Even n) (Odd n)
state_after: no goals
tactic: cases even_or_odd n with
  | inl h => exact Or.inl ⟨h, even_iff_not_odd.mp h⟩
  | inr h => exact Or.inr ⟨h, odd_iff_not_even.mp h⟩
Theorem: rank_eq_card_basis
File: Mathlib/LinearAlgebra/Dimension/StrongRankCondition.lean

Proof steps:
state_before: R : Type u
M : Type v
inst✝⁴ : Ring R
inst✝³ : AddCommGroup M
inst✝² : Module R M
ι✝ : Type w
ι' : Type w'
inst✝¹ : StrongRankCondition R
ι : Type w
inst✝ : Fintype ι
h : Basis ι R M
⊢ Module.rank R M = ↑(Fintype.card ι)
state_after: no goals
tactic: classical
  haveI := nontrivial_of_invariantBasisNumber R
  rw [← h.mk_range_eq_rank, Cardinal.mk_fintype, Set.card_range_of_injective h.injective]
Theorem: MvPolynomial.IsWeightedHomogeneous.coeff_eq_zero
File: Mathlib/RingTheory/MvPolynomial/WeightedHomogeneous.lean

Proof steps:
state_before: R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
σ : Type u_3
inst✝ : AddCommMonoid M
φ ψ : MvPolynomial σ R
m n : M
w : σ → M
hφ : IsWeightedHomogeneous w φ n
d : σ →₀ ℕ
hd : (weight w) d ≠ n
⊢ coeff d φ = 0
state_after: R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
σ : Type u_3
inst✝ : AddCommMonoid M
φ ψ : MvPolynomial σ R
m n : M
w : σ → M
hφ : IsWeightedHomogeneous w φ n
d : σ →₀ ℕ
hd : (weight w) d ≠ n
aux : ¬coeff d φ ≠ 0
⊢ coeff d φ = 0
tactic: have aux := mt (@hφ d) hd
state_before: R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
σ : Type u_3
inst✝ : AddCommMonoid M
φ ψ : MvPolynomial σ R
m n : M
w : σ → M
hφ : IsWeightedHomogeneous w φ n
d : σ →₀ ℕ
hd : (weight w) d ≠ n
aux : ¬coeff d φ ≠ 0
⊢ coeff d φ = 0
state_after: no goals
tactic: rwa [Classical.not_not] at aux
Theorem: ModularGroup.re_T_smul
File: Mathlib/NumberTheory/Modular.lean

Proof steps:
state_before: g : SL(2, ℤ)
z : ℍ
⊢ (T • z).re = z.re + 1
state_after: no goals
tactic: simpa using re_T_zpow_smul z 1
Theorem: SheafOfModules.freeHomEquiv_symm_comp
File: Mathlib/Algebra/Category/ModuleCat/Sheaf/Free.lean

Proof steps:
state_before: C : Type u'
inst✝³ : Category.{v', u'} C
J : GrothendieckTopology C
R : Sheaf J RingCat
inst✝² : HasWeakSheafify J AddCommGrp
inst✝¹ : J.WEqualsLocallyBijective AddCommGrp
inst✝ : J.HasSheafCompose (forget₂ RingCat AddCommGrp)
M N : SheafOfModules R
I : Type u
s : I → M.sections
p : M ⟶ N
⊢ N.freeHomEquiv (M.freeHomEquiv.symm s ≫ p) = N.freeHomEquiv (N.freeHomEquiv.symm fun i => sectionsMap p (s i))
state_after: case h.h
C : Type u'
inst✝³ : Category.{v', u'} C
J : GrothendieckTopology C
R : Sheaf J RingCat
inst✝² : HasWeakSheafify J AddCommGrp
inst✝¹ : J.WEqualsLocallyBijective AddCommGrp
inst✝ : J.HasSheafCompose (forget₂ RingCat AddCommGrp)
M N : SheafOfModules R
I : Type u
s : I → M.sections
p : M ⟶ N
x✝ : I
X✝ : Cᵒᵖ
⊢ ↑(N.freeHomEquiv (M.freeHomEquiv.symm s ≫ p) x✝) X✝ =
    ↑(N.freeHomEquiv (N.freeHomEquiv.symm fun i => sectionsMap p (s i)) x✝) X✝
tactic: ext
state_before: case h.h
C : Type u'
inst✝³ : Category.{v', u'} C
J : GrothendieckTopology C
R : Sheaf J RingCat
inst✝² : HasWeakSheafify J AddCommGrp
inst✝¹ : J.WEqualsLocallyBijective AddCommGrp
inst✝ : J.HasSheafCompose (forget₂ RingCat AddCommGrp)
M N : SheafOfModules R
I : Type u
s : I → M.sections
p : M ⟶ N
x✝ : I
X✝ : Cᵒᵖ
⊢ ↑(N.freeHomEquiv (M.freeHomEquiv.symm s ≫ p) x✝) X✝ =
    ↑(N.freeHomEquiv (N.freeHomEquiv.symm fun i => sectionsMap p (s i)) x✝) X✝
state_after: no goals
tactic: simp [freeHomEquiv_comp_apply]
Theorem: intervalIntegral.integral_comp_add_mul
File: Mathlib/MeasureTheory/Integral/IntervalIntegral.lean

Proof steps:
state_before: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d✝ : ℝ
f : ℝ → E
hc : c ≠ 0
d : ℝ
⊢ ∫ (x : ℝ) in a..b, f (d + c * x) = c⁻¹ • ∫ (x : ℝ) in d + c * a..d + c * b, f x
state_after: no goals
tactic: rw [← integral_comp_add_left, ← integral_comp_mul_left _ hc]