tasksource/leandojo huggingface dataset:
Theorem: Homotopy.comp_nullHomotopicMap'
File: Mathlib/Algebra/Homology/Homotopy.lean

tactic: ext n
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f✝ g : C ⟶ D
h k : D ⟶ E
i : ι
f : C ⟶ D
hom : (i j : ι) → ComplexShape.Rel c j i → (X D i ⟶ X E j)
⊢ f ≫ nullHomotopicMap' hom = nullHomotopicMap' fun i j hij => Hom.f f i ≫ hom i j hij

tactic: erw [comp_nullHomotopicMap]
state_before: case h
ι : Type u_1
V : Type u
inst✝¹ : Category V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f✝ g : C ⟶ D
h k : D ⟶ E
i : ι
f : C ⟶ D
hom : (i j : ι) → ComplexShape.Rel c j i → (X D i ⟶ X E j)
n : ι
⊢ Hom.f (f ≫ nullHomotopicMap' hom) n = Hom.f (nullHomotopicMap' fun i j hij => Hom.f f i ≫ hom i j hij) n

tactic: congr
state_before: case h
ι : Type u_1
V : Type u
inst✝¹ : Category V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f✝ g : C ⟶ D
h k : D ⟶ E
i : ι
f : C ⟶ D
hom : (i j : ι) → ComplexShape.Rel c j i → (X D i ⟶ X E j)
n : ι
⊢ Hom.f (nullHomotopicMap fun i j => Hom.f f i ≫ dite (ComplexShape.Rel c j i) (hom i j) fun x => 0) n =
    Hom.f (nullHomotopicMap' fun i j hij => Hom.f f i ≫ hom i j hij) n

tactic: ext (i j)
state_before: case h.e_self.e_hom
ι : Type u_1
V : Type u
inst✝¹ : Category V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f✝ g : C ⟶ D
h k : D ⟶ E
i : ι
f : C ⟶ D
hom : (i j : ι) → ComplexShape.Rel c j i → (X D i ⟶ X E j)
n : ι
⊢ (fun i j => Hom.f f i ≫ dite (ComplexShape.Rel c j i) (hom i j) fun x => 0) = fun i j =>
    dite (ComplexShape.Rel c j i) ((fun i j hij => Hom.f f i ≫ hom i j hij) i j) fun x => 0

tactic: split_ifs
state_before: case h.e_self.e_hom.h.h
ι : Type u_1
V : Type u
inst✝¹ : Category V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f✝ g : C ⟶ D
h k : D ⟶ E
i✝ : ι
f : C ⟶ D
hom : (i j : ι) → ComplexShape.Rel c j i → (X D i ⟶ X E j)
n i j : ι
⊢ (Hom.f f i ≫ dite (ComplexShape.Rel c j i) (hom i j) fun x => 0) =
    dite (ComplexShape.Rel c j i) ((fun i j hij => Hom.f f i ≫ hom i j hij) i j) fun x => 0

tactic: rfl
state_before: case h.e_self.e_hom.h.h.inl
ι : Type u_1
V : Type u
inst✝¹ : Category V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f✝ g : C ⟶ D
h k : D ⟶ E
i✝ : ι
f : C ⟶ D
hom : (i j : ι) → ComplexShape.Rel c j i → (X D i ⟶ X E j)
n i j : ι
h✝ : ComplexShape.Rel c j i
⊢ Hom.f f i ≫ hom i j h✝ = (fun i j hij => Hom.f f i ≫ hom i j hij) i j h✝

tactic: rw [comp_zero]
state_before: case h.e_self.e_hom.h.h.inr
ι : Type u_1
V : Type u
inst✝¹ : Category V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f✝ g : C ⟶ D
h k : D ⟶ E
i✝ : ι
f : C ⟶ D
hom : (i j : ι) → ComplexShape.Rel c j i → (X D i ⟶ X E j)
n i j : ι
h✝ : ¬ComplexShape.Rel c j i
⊢ Hom.f f i ≫ 0 = 0
Theorem: List.Ico.inter_consecutive
File: Mathlib/Data/List/Intervals.lean

tactic: apply eq_nil_iff_forall_not_mem.2
state_before: n m l : ℕ
⊢ Ico n m ∩ Ico m l = []

tactic: intro a
state_before: n m l : ℕ
⊢ ∀ (a : ℕ), ¬a ∈ Ico n m ∩ Ico m l

tactic: simp only [and_imp, not_and, not_lt, List.mem_inter, List.Ico.mem]
state_before: n m l a : ℕ
⊢ ¬a ∈ Ico n m ∩ Ico m l

tactic: intro _ h₂ h₃
state_before: n m l a : ℕ
⊢ n ≤ a → a < m → m ≤ a → l ≤ a

tactic: exfalso
state_before: n m l a : ℕ
a✝ : n ≤ a
h₂ : a < m
h₃ : m ≤ a
⊢ l ≤ a

tactic: exact not_lt_of_ge h₃ h₂
state_before: case h
n m l a : ℕ
a✝ : n ≤ a
h₂ : a < m
h₃ : m ≤ a
⊢ False
Theorem: map_le_lineMap_iff_slope_le_slope_right
File: Mathlib/LinearAlgebra/AffineSpace/Ordered.lean

tactic: rw [← lineMap_apply_one_sub, ← lineMap_apply_one_sub _ _ r]
state_before: k : Type u_1
E : Type u_2
PE : Type ?u.171730
inst✝³ : LinearOrderedField k
inst✝² : OrderedAddCommGroup E
inst✝¹ : Module k E
inst✝ : OrderedSMul k E
f : k → E
a b r : k
h : 0 < (1 - r) * (b - a)
⊢ f (↑(lineMap a b) r) ≤ ↑(lineMap (f a) (f b)) r ↔ slope f a b ≤ slope f (↑(lineMap a b) r) b

tactic: revert h
state_before: k : Type u_1
E : Type u_2
PE : Type ?u.171730
inst✝³ : LinearOrderedField k
inst✝² : OrderedAddCommGroup E
inst✝¹ : Module k E
inst✝ : OrderedSMul k E
f : k → E
a b r : k
h : 0 < (1 - r) * (b - a)
⊢ f (↑(lineMap b a) (1 - r)) ≤ ↑(lineMap (f b) (f a)) (1 - r) ↔ slope f a b ≤ slope f (↑(lineMap b a) (1 - r)) b

tactic: generalize 1 - r = r'
state_before: k : Type u_1
E : Type u_2
PE : Type ?u.171730
inst✝³ : LinearOrderedField k
inst✝² : OrderedAddCommGroup E
inst✝¹ : Module k E
inst✝ : OrderedSMul k E
f : k → E
a b r : k
⊢ 0 < (1 - r) * (b - a) →
    (f (↑(lineMap b a) (1 - r)) ≤ ↑(lineMap (f b) (f a)) (1 - r) ↔ slope f a b ≤ slope f (↑(lineMap b a) (1 - r)) b)

tactic: clear! r
state_before: k : Type u_1
E : Type u_2
PE : Type ?u.171730
inst✝³ : LinearOrderedField k
inst✝² : OrderedAddCommGroup E
inst✝¹ : Module k E
inst✝ : OrderedSMul k E
f : k → E
a b r r' : k
⊢ 0 < r' * (b - a) → (f (↑(lineMap b a) r') ≤ ↑(lineMap (f b) (f a)) r' ↔ slope f a b ≤ slope f (↑(lineMap b a) r') b)

tactic: intro h
state_before: k : Type u_1
E : Type u_2
PE : Type ?u.171730
inst✝³ : LinearOrderedField k
inst✝² : OrderedAddCommGroup E
inst✝¹ : Module k E
inst✝ : OrderedSMul k E
f : k → E
a b r' : k
⊢ 0 < r' * (b - a) → (f (↑(lineMap b a) r') ≤ ↑(lineMap (f b) (f a)) r' ↔ slope f a b ≤ slope f (↑(lineMap b a) r') b)

tactic: simp_rw [lineMap_apply, slope, vsub_eq_sub, vadd_eq_add, smul_eq_mul]
state_before: k : Type u_1
E : Type u_2
PE : Type ?u.171730
inst✝³ : LinearOrderedField k
inst✝² : OrderedAddCommGroup E
inst✝¹ : Module k E
inst✝ : OrderedSMul k E
f : k → E
a b r' : k
h : 0 < r' * (b - a)
⊢ f (↑(lineMap b a) r') ≤ ↑(lineMap (f b) (f a)) r' ↔ slope f a b ≤ slope f (↑(lineMap b a) r') b

tactic: rw [sub_add_eq_sub_sub_swap, sub_self, zero_sub, neg_mul_eq_mul_neg, neg_sub, le_inv_smul_iff h,
  smul_smul, mul_inv_cancel_right₀, le_sub_comm, ← neg_sub (f b), smul_neg, neg_add_eq_sub]
state_before: k : Type u_1
E : Type u_2
PE : Type ?u.171730
inst✝³ : LinearOrderedField k
inst✝² : OrderedAddCommGroup E
inst✝¹ : Module k E
inst✝ : OrderedSMul k E
f : k → E
a b r' : k
h : 0 < r' * (b - a)
⊢ f (r' * (a - b) + b) ≤ r' • (f a - f b) + f b ↔
    (b - a)⁻¹ • (f b - f a) ≤ (b - (r' * (a - b) + b))⁻¹ • (f b - f (r' * (a - b) + b))

tactic: exact right_ne_zero_of_mul h.ne'
state_before: case h
k : Type u_1
E : Type u_2
PE : Type ?u.171730
inst✝³ : LinearOrderedField k
inst✝² : OrderedAddCommGroup E
inst✝¹ : Module k E
inst✝ : OrderedSMul k E
f : k → E
a b r' : k
h : 0 < r' * (b - a)
⊢ b - a ≠ 0
Theorem: MvPolynomial.support_esymm
File: Mathlib/RingTheory/MvPolynomial/Symmetric.lean

tactic: rw [support_esymm']
state_before: σ : Type u_1
R : Type u_2
τ : Type ?u.193960
S : Type ?u.193963
inst✝⁵ : CommSemiring R
inst✝⁴ : CommSemiring S
inst✝³ : Fintype σ
inst✝² : Fintype τ
n : ℕ
inst✝¹ : DecidableEq σ
inst✝ : Nontrivial R
⊢ support (esymm σ R n) = image (fun t => ∑ i in t, Finsupp.single i 1) (powersetLen n univ)

tactic: exact biUnion_singleton
state_before: σ : Type u_1
R : Type u_2
τ : Type ?u.193960
S : Type ?u.193963
inst✝⁵ : CommSemiring R
inst✝⁴ : CommSemiring S
inst✝³ : Fintype σ
inst✝² : Fintype τ
n : ℕ
inst✝¹ : DecidableEq σ
inst✝ : Nontrivial R
⊢ (Finset.biUnion (powersetLen n univ) fun t => {∑ i in t, Finsupp.single i 1}) =
    image (fun t => ∑ i in t, Finsupp.single i 1) (powersetLen n univ)
Theorem: Commute.expUnitary
File: Mathlib/Analysis/NormedSpace/Star/Exponential.lean

tactic: rw [← h.expUnitary_add, ← h.symm.expUnitary_add, add_comm]
state_before: A : Type u_1
inst✝⁵ : NormedRing A
inst✝⁴ : NormedAlgebra ℂ A
inst✝³ : StarRing A
inst✝² : ContinuousStar A
inst✝¹ : CompleteSpace A
inst✝ : StarModule ℂ A
a b : { x // x ∈ selfAdjoint A }
h : Commute ↑a ↑b
⊢ selfAdjoint.expUnitary a * selfAdjoint.expUnitary b = selfAdjoint.expUnitary b * selfAdjoint.expUnitary a
Theorem: LieIdeal.normalizer_eq_top
File: Mathlib/Algebra/Lie/CartanSubalgebra.lean

tactic: ext x
state_before: R✝ : Type u
L✝ : Type v
inst✝⁵ : CommRing R✝
inst✝⁴ : LieRing L✝
inst✝³ : LieAlgebra R✝ L✝
H : LieSubalgebra R✝ L✝
R : Type u
L : Type v
inst✝² : CommRing R
inst✝¹ : LieRing L
inst✝ : LieAlgebra R L
I : LieIdeal R L
⊢ LieSubalgebra.normalizer (↑R L I) = ⊤

tactic: simpa only [LieSubalgebra.mem_normalizer_iff, LieSubalgebra.mem_top, iff_true_iff] using
  fun y hy => I.lie_mem hy
state_before: case h
R✝ : Type u
L✝ : Type v
inst✝⁵ : CommRing R✝
inst✝⁴ : LieRing L✝
inst✝³ : LieAlgebra R✝ L✝
H : LieSubalgebra R✝ L✝
R : Type u
L : Type v
inst✝² : CommRing R
inst✝¹ : LieRing L
inst✝ : LieAlgebra R L
I : LieIdeal R L
x : L
⊢ x ∈ LieSubalgebra.normalizer (↑R L I) ↔ x ∈ ⊤
Theorem: Function.periodic_with_period_zero
File: Mathlib/Algebra/Periodic.lean

tactic: rw [add_zero]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.132651
f✝ g : α → β
c c₁ c₂ x✝ : α
inst✝ : AddZeroClass α
f : α → β
x : α
⊢ f (x + 0) = f x
Theorem: PrimeMultiset.coeNat_prime
File: Mathlib/Data/PNat/Factors.lean

tactic: rcases Multiset.mem_map.mp h with ⟨⟨_, hp'⟩, ⟨_, h_eq⟩⟩
state_before: v : PrimeMultiset
p : ℕ
h : p ∈ toNatMultiset v
⊢ Nat.Prime p

tactic: exact h_eq ▸ hp'
state_before: case intro.mk.intro
v : PrimeMultiset
p : ℕ
h : p ∈ toNatMultiset v
val✝ : ℕ
hp' : Nat.Prime val✝
left✝ : { val := val✝, property := hp' } ∈ v
h_eq : Coe.coe { val := val✝, property := hp' } = p
⊢ Nat.Prime p
Theorem: List.countp_join
File: Mathlib/Data/List/Count.lean

tactic: rw [join, countp_append, map_cons, sum_cons, countp_join l]
state_before: α : Type u_1
l✝ : List α
p q : α → Bool
a : List α
l : List (List α)
⊢ countp p (join (a :: l)) = sum (map (countp p) (a :: l))
Theorem: ContinuousLinearEquiv.toLinearEquiv_injective
File: Mathlib/Topology/Algebra/Module/Basic.lean

tactic: rintro ⟨e, _, _⟩ ⟨e', _, _⟩ rfl
state_before: R₁ : Type u_3
R₂ : Type u_4
R₃ : Type ?u.1456114
inst✝²⁴ : Semiring R₁
inst✝²³ : Semiring R₂
inst✝²² : Semiring R₃
σ₁₂ : R₁ →+* R₂
σ₂₁ : R₂ →+* R₁
inst✝²¹ : RingHomInvPair σ₁₂ σ₂₁
inst✝²⁰ : RingHomInvPair σ₂₁ σ₁₂
σ₂₃ : R₂ →+* R₃
σ₃₂ : R₃ →+* R₂
inst✝¹⁹ : RingHomInvPair σ₂₃ σ₃₂
inst✝¹⁸ : RingHomInvPair σ₃₂ σ₂₃
σ₁₃ : R₁ →+* R₃
σ₃₁ : R₃ →+* R₁
inst✝¹⁷ : RingHomInvPair σ₁₃ σ₃₁
inst✝¹⁶ : RingHomInvPair σ₃₁ σ₁₃
inst✝¹⁵ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝¹⁴ : RingHomCompTriple σ₃₂ σ₂₁ σ₃₁
M₁ : Type u_1
inst✝¹³ : TopologicalSpace M₁
inst✝¹² : AddCommMonoid M₁
M'₁ : Type ?u.1456968
inst✝¹¹ : TopologicalSpace M'₁
inst✝¹⁰ : AddCommMonoid M'₁
M₂ : Type u_2
inst✝⁹ : TopologicalSpace M₂
inst✝⁸ : AddCommMonoid M₂
M₃ : Type ?u.1456986
inst✝⁷ : TopologicalSpace M₃
inst✝⁶ : AddCommMonoid M₃
M₄ : Type ?u.1456995
inst✝⁵ : TopologicalSpace M₄
inst✝⁴ : AddCommMonoid M₄
inst✝³ : Module R₁ M₁
inst✝² : Module R₁ M'₁
inst✝¹ : Module R₂ M₂
inst✝ : Module R₃ M₃
⊢ Function.Injective toLinearEquiv

tactic: rfl
state_before: case mk.mk
R₁ : Type u_3
R₂ : Type u_4
R₃ : Type ?u.1456114
inst✝²⁴ : Semiring R₁
inst✝²³ : Semiring R₂
inst✝²² : Semiring R₃
σ₁₂ : R₁ →+* R₂
σ₂₁ : R₂ →+* R₁
inst✝²¹ : RingHomInvPair σ₁₂ σ₂₁
inst✝²⁰ : RingHomInvPair σ₂₁ σ₁₂
σ₂₃ : R₂ →+* R₃
σ₃₂ : R₃ →+* R₂
inst✝¹⁹ : RingHomInvPair σ₂₃ σ₃₂
inst✝¹⁸ : RingHomInvPair σ₃₂ σ₂₃
σ₁₃ : R₁ →+* R₃
σ₃₁ : R₃ →+* R₁
inst✝¹⁷ : RingHomInvPair σ₁₃ σ₃₁
inst✝¹⁶ : RingHomInvPair σ₃₁ σ₁₃
inst✝¹⁵ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝¹⁴ : RingHomCompTriple σ₃₂ σ₂₁ σ₃₁
M₁ : Type u_1
inst✝¹³ : TopologicalSpace M₁
inst✝¹² : AddCommMonoid M₁
M'₁ : Type ?u.1456968
inst✝¹¹ : TopologicalSpace M'₁
inst✝¹⁰ : AddCommMonoid M'₁
M₂ : Type u_2
inst✝⁹ : TopologicalSpace M₂
inst✝⁸ : AddCommMonoid M₂
M₃ : Type ?u.1456986
inst✝⁷ : TopologicalSpace M₃
inst✝⁶ : AddCommMonoid M₃
M₄ : Type ?u.1456995
inst✝⁵ : TopologicalSpace M₄
inst✝⁴ : AddCommMonoid M₄
inst✝³ : Module R₁ M₁
inst✝² : Module R₁ M'₁
inst✝¹ : Module R₂ M₂
inst✝ : Module R₃ M₃
e : M₁ ≃ₛₗ[σ₁₂] M₂
continuous_toFun✝¹ : Continuous e.toFun
continuous_invFun✝¹ : Continuous e.invFun
continuous_toFun✝ : Continuous (↑(mk e).toLinearEquiv).toAddHom.toFun
continuous_invFun✝ : Continuous (mk e).toLinearEquiv.invFun
⊢ mk e = mk (mk e).toLinearEquiv
Theorem: Filter.cofinite.liminf_set_eq
File: Mathlib/Order/LiminfLimsup.lean

tactic: simp only [← cofinite.bliminf_true s, cofinite.bliminf_set_eq, true_and_iff]
state_before: α : Type u_1
β : Type ?u.182852
γ : Type ?u.182855
ι : Type u_2
p : ι → Prop
s : ι → Set α
⊢ liminf s cofinite = {x | Set.Finite {n | ¬x ∈ s n}}
Theorem: Nat.gcd_mul_of_coprime_of_dvd
File: Mathlib/Data/Nat/GCD/Basic.lean

tactic: rcases exists_eq_mul_left_of_dvd b_dvd_c with ⟨d, rfl⟩
state_before: a b c : ℕ
hac : coprime a c
b_dvd_c : b ∣ c
⊢ gcd (a * b) c = b

tactic: rw [gcd_mul_right]
state_before: case intro
a b d : ℕ
hac : coprime a (d * b)
b_dvd_c : b ∣ d * b
⊢ gcd (a * b) (d * b) = b

tactic: convert one_mul b
state_before: case intro
a b d : ℕ
hac : coprime a (d * b)
b_dvd_c : b ∣ d * b
⊢ gcd a d * b = b

tactic: exact coprime.coprime_mul_right_right hac
state_before: case h.e'_2.h.e'_5
a b d : ℕ
hac : coprime a (d * b)
b_dvd_c : b ∣ d * b
⊢ gcd a d = 1
Theorem: CategoryTheory.Limits.imageMonoIsoSource_inv_ι
File: Mathlib/CategoryTheory/Limits/Shapes/Images.lean

tactic: simp [imageMonoIsoSource]
state_before: C : Type u
inst✝¹ : Category C
X Y : C
f : X ⟶ Y
inst✝ : Mono f
⊢ (imageMonoIsoSource f).inv ≫ image.ι f = f
Theorem: Ideal.mem_jacobson_iff
File: Mathlib/RingTheory/JacobsonIdeal.lean

tactic: rw [mul_assoc, ← mul_add_one r (y * x), hr, ← hpq, ← neg_sub, add_sub_cancel]
state_before: R : Type u
S : Type v
inst✝¹ : Ring R
inst✝ : Ring S
I : Ideal R
x : R
hx : x ∈ jacobson I
y : R
hxy : I ⊔ span {y * x + 1} = ⊤
p : R
hpi : p ∈ I
q : R
hq : q ∈ span {y * x + 1}
hpq : p + q = 1
r : R
hr : r * (y * x + 1) = q
⊢ r * y * x + r - 1 ∈ I

tactic: exact I.neg_mem hpi
state_before: R : Type u
S : Type v
inst✝¹ : Ring R
inst✝ : Ring S
I : Ideal R
x : R
hx : x ∈ jacobson I
y : R
hxy : I ⊔ span {y * x + 1} = ⊤
p : R
hpi : p ∈ I
q : R
hq : q ∈ span {y * x + 1}
hpq : p + q = 1
r : R
hr : r * (y * x + 1) = q
⊢ -p ∈ I

tactic: rw [mul_assoc, ← mul_add_one z, neg_mul, ← sub_eq_iff_eq_add.mpr df.symm, neg_sub,
  sub_add_cancel]
state_before: R : Type u
S : Type v
inst✝¹ : Ring R
inst✝ : Ring S
I : Ideal R
x : R
hx : ∀ (y : R), ∃ z, z * y * x + z - 1 ∈ I
M : Ideal R
x✝ : M ∈ {J | I ≤ J ∧ IsMaximal J}
him : I ≤ M
hm : IsMaximal M
hxm : ¬x ∈ M
y i : R
hi : i ∈ M
df : y * x + i = 1
z : R
hz : z * -y * x + z - 1 ∈ I
⊢ z * -y * x + z ∈ M

tactic: exact M.mul_mem_left _ hi
state_before: R : Type u
S : Type v
inst✝¹ : Ring R
inst✝ : Ring S
I : Ideal R
x : R
hx : ∀ (y : R), ∃ z, z * y * x + z - 1 ∈ I
M : Ideal R
x✝ : M ∈ {J | I ≤ J ∧ IsMaximal J}
him : I ≤ M
hm : IsMaximal M
hxm : ¬x ∈ M
y i : R
hi : i ∈ M
df : y * x + i = 1
z : R
hz : z * -y * x + z - 1 ∈ I
⊢ z * i ∈ M
Theorem: ENNReal.tsum_const_eq
File: Mathlib/MeasureTheory/Integral/Lebesgue.lean

tactic: rw [← lintegral_count, lintegral_const]
state_before: α : Type u_1
β : Type ?u.1694799
γ : Type ?u.1694802
δ : Type ?u.1694805
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSingletonClass α
c : ℝ≥0∞
⊢ (∑' (x : α), c) = c * ↑↑count univ
Theorem: CategoryTheory.Limits.coprod.map_desc
File: Mathlib/CategoryTheory/Limits/Shapes/BinaryProducts.lean

tactic: apply coprod.hom_ext
state_before: C : Type u
inst✝² : Category C
X Y S T U V W : C
inst✝¹ : HasBinaryCoproduct U W
inst✝ : HasBinaryCoproduct T V
f : U ⟶ S
g : W ⟶ S
h : T ⟶ U
k : V ⟶ W
⊢ map h k ≫ desc f g = desc (h ≫ f) (k ≫ g)

tactic: simp
state_before: case h₁
C : Type u
inst✝² : Category C
X Y S T U V W : C
inst✝¹ : HasBinaryCoproduct U W
inst✝ : HasBinaryCoproduct T V
f : U ⟶ S
g : W ⟶ S
h : T ⟶ U
k : V ⟶ W
⊢ inl ≫ map h k ≫ desc f g = inl ≫ desc (h ≫ f) (k ≫ g)

case h₂
C : Type u
inst✝² : Category C
X Y S T U V W : C
inst✝¹ : HasBinaryCoproduct U W
inst✝ : HasBinaryCoproduct T V
f : U ⟶ S
g : W ⟶ S
h : T ⟶ U
k : V ⟶ W
⊢ inr ≫ map h k ≫ desc f g = inr ≫ desc (h ≫ f) (k ≫ g)

tactic: simp
state_before: case h₂
C : Type u
inst✝² : Category C
X Y S T U V W : C
inst✝¹ : HasBinaryCoproduct U W
inst✝ : HasBinaryCoproduct T V
f : U ⟶ S
g : W ⟶ S
h : T ⟶ U
k : V ⟶ W
⊢ inr ≫ map h k ≫ desc f g = inr ≫ desc (h ≫ f) (k ≫ g)
Theorem: Filter.HasBasis.uniformity_of_nhds_one_inv_mul
File: Mathlib/Topology/Algebra/UniformGroup.lean

tactic: rw [uniformity_eq_comap_inv_mul_nhds_one]
state_before: α : Type u_2
β : Type ?u.174194
inst✝² : UniformSpace α
inst✝¹ : Group α
inst✝ : UniformGroup α
ι : Sort u_1
p : ι → Prop
U : ι → Set α
h : HasBasis (𝓝 1) p U
⊢ HasBasis (𝓤 α) p fun i => {x | x.fst⁻¹ * x.snd ∈ U i}

tactic: exact h.comap _
state_before: α : Type u_2
β : Type ?u.174194
inst✝² : UniformSpace α
inst✝¹ : Group α
inst✝ : UniformGroup α
ι : Sort u_1
p : ι → Prop
U : ι → Set α
h : HasBasis (𝓝 1) p U
⊢ HasBasis (Filter.comap (fun x => x.fst⁻¹ * x.snd) (𝓝 1)) p fun i => {x | x.fst⁻¹ * x.snd ∈ U i}
Theorem: Finset.card_insert_of_not_mem
File: Mathlib/Data/Finset/Card.lean

tactic: rw [← cons_eq_insert _ _ h, card_cons]
state_before: α : Type u_1
β : Type ?u.4409
s t : Finset α
a b : α
inst✝ : DecidableEq α
h : ¬a ∈ s
⊢ card (insert a s) = card s + 1
Theorem: Matrix.det_permute
File: Mathlib/LinearAlgebra/Matrix/Determinant.lean

tactic: simp [Units.smul_def]
state_before: m : Type ?u.1058568
n : Type u_1
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : Fintype m
R : Type v
inst✝ : CommRing R
σ : Perm n
M : Matrix n n R
⊢ ↑sign σ • ↑detRowAlternating M = ↑↑(↑sign σ) * det M
Theorem: EuclideanSpace.orthonormal_single
File: Mathlib/Analysis/InnerProductSpace/PiL2.lean

tactic: simp_rw [orthonormal_iff_ite, EuclideanSpace.inner_single_left, map_one, one_mul,
  EuclideanSpace.single_apply]
state_before: ι : Type u_1
ι' : Type ?u.723850
𝕜 : Type u_2
inst✝¹⁰ : IsROrC 𝕜
E : Type ?u.723859
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : InnerProductSpace 𝕜 E
E' : Type ?u.723879
inst✝⁷ : NormedAddCommGroup E'
inst✝⁶ : InnerProductSpace 𝕜 E'
F : Type ?u.723897
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : InnerProductSpace ℝ F
F' : Type ?u.723917
inst✝³ : NormedAddCommGroup F'
inst✝² : InnerProductSpace ℝ F'
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
⊢ Orthonormal 𝕜 fun i => single i 1

tactic: intros
state_before: ι : Type u_1
ι' : Type ?u.723850
𝕜 : Type u_2
inst✝¹⁰ : IsROrC 𝕜
E : Type ?u.723859
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : InnerProductSpace 𝕜 E
E' : Type ?u.723879
inst✝⁷ : NormedAddCommGroup E'
inst✝⁶ : InnerProductSpace 𝕜 E'
F : Type ?u.723897
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : InnerProductSpace ℝ F
F' : Type ?u.723917
inst✝³ : NormedAddCommGroup F'
inst✝² : InnerProductSpace ℝ F'
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
⊢ ι → ι → True

tactic: trivial
state_before: ι : Type u_1
ι' : Type ?u.723850
𝕜 : Type u_2
inst✝¹⁰ : IsROrC 𝕜
E : Type ?u.723859
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : InnerProductSpace 𝕜 E
E' : Type ?u.723879
inst✝⁷ : NormedAddCommGroup E'
inst✝⁶ : InnerProductSpace 𝕜 E'
F : Type ?u.723897
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : InnerProductSpace ℝ F
F' : Type ?u.723917
inst✝³ : NormedAddCommGroup F'
inst✝² : InnerProductSpace ℝ F'
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
i✝ j✝ : ι
⊢ True
Theorem: Finset.disjoint_coe
File: Mathlib/Data/Finset/Basic.lean

tactic: simp only [Finset.disjoint_left, Set.disjoint_left, mem_coe]
state_before: α : Type u_1
β : Type ?u.80244
γ : Type ?u.80247
f : α → β
s t u : Finset α
a b : α
⊢ _root_.Disjoint ↑s ↑t ↔ _root_.Disjoint s t
Theorem: LocalRing.PrimeSpectrum.comap_residue
File: Mathlib/AlgebraicGeometry/PrimeSpectrum/Basic.lean

tactic: rw [Subsingleton.elim x ⊥]
state_before: R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : LocalRing R
x : PrimeSpectrum (ResidueField R)
⊢ ↑(PrimeSpectrum.comap (residue R)) x = closedPoint R

tactic: ext1
state_before: R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : LocalRing R
x : PrimeSpectrum (ResidueField R)
⊢ ↑(PrimeSpectrum.comap (residue R)) ⊥ = closedPoint R

tactic: exact Ideal.mk_ker
state_before: case asIdeal
R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : LocalRing R
x : PrimeSpectrum (ResidueField R)
⊢ (↑(PrimeSpectrum.comap (residue R)) ⊥).asIdeal = (closedPoint R).asIdeal
Theorem: List.map_prod_right_eq_zip
File: Mathlib/Data/List/Zip.lean

tactic: rw [← zip_map']
state_before: α : Type u
β : Type u_1
γ : Type ?u.88166
δ : Type ?u.88169
ε : Type ?u.88172
l : List α
f : α → β
⊢ map (fun x => (f x, x)) l = zip (map f l) l

tactic: congr
state_before: α : Type u
β : Type u_1
γ : Type ?u.88166
δ : Type ?u.88169
ε : Type ?u.88172
l : List α
f : α → β
⊢ zip (map (fun x => f x) l) (map (fun x => x) l) = zip (map f l) l

tactic: exact map_id _
state_before: case e_a
α : Type u
β : Type u_1
γ : Type ?u.88166
δ : Type ?u.88169
ε : Type ?u.88172
l : List α
f : α → β
⊢ map (fun x => x) l = l
Theorem: SimpleGraph.IsSRGWith.card_neighborFinset_union_of_not_adj
File: Mathlib/Combinatorics/SimpleGraph/StronglyRegular.lean

tactic: rw [← h.of_not_adj v w hne ha]
state_before: V : Type u
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n k ℓ μ : ℕ
v w : V
h : IsSRGWith G n k ℓ μ
hne : v ≠ w
ha : ¬Adj G v w
⊢ Finset.card (neighborFinset G v ∪ neighborFinset G w) = 2 * k - μ

tactic: apply h.card_neighborFinset_union_eq
state_before: V : Type u
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n k ℓ μ : ℕ
v w : V
h : IsSRGWith G n k ℓ μ
hne : v ≠ w
ha : ¬Adj G v w
⊢ Finset.card (neighborFinset G v ∪ neighborFinset G w) = 2 * k - Fintype.card ↑(commonNeighbors G v w)
Theorem: Behrend.three_le_nValue
File: Mathlib/Combinatorics/Additive/Behrend.lean

tactic: rw [nValue, ← lt_iff_add_one_le, lt_ceil, cast_two]
state_before: α : Type ?u.740413
β : Type ?u.740416
n d k N : ℕ
x : Fin n → ℕ
hN : 64 ≤ N
⊢ 3 ≤ nValue N

tactic: apply lt_sqrt_of_sq_lt
state_before: α : Type ?u.740413
β : Type ?u.740416
n d k N : ℕ
x : Fin n → ℕ
hN : 64 ≤ N
⊢ 2 < Real.sqrt (log ↑N)

tactic: have : (2 : ℝ) ^ ((6 : ℕ) : ℝ) ≤ N := by
  rw [rpow_nat_cast]
  exact (cast_le.2 hN).trans' (by norm_num1)
state_before: case h
α : Type ?u.740413
β : Type ?u.740416
n d k N : ℕ
x : Fin n → ℕ
hN : 64 ≤ N
⊢ 2 ^ 2 < log ↑N

tactic: apply lt_of_lt_of_le _ ((log_le_log (rpow_pos_of_pos zero_lt_two _) _).2 this)
state_before: case h
α : Type ?u.740413
β : Type ?u.740416
n d k N : ℕ
x : Fin n → ℕ
hN : 64 ≤ N
this : 2 ^ ↑6 ≤ ↑N
⊢ 2 ^ 2 < log ↑N

tactic: rw [log_rpow zero_lt_two, ← div_lt_iff']
state_before: α : Type ?u.740413
β : Type ?u.740416
n d k N : ℕ
x : Fin n → ℕ
hN : 64 ≤ N
this : 2 ^ ↑6 ≤ ↑N
⊢ 2 ^ 2 < log (2 ^ ↑6)

α : Type ?u.740413
β : Type ?u.740416
n d k N : ℕ
x : Fin n → ℕ
hN : 64 ≤ N
this : 2 ^ ↑6 ≤ ↑N
⊢ 0 < ↑N

tactic: rw [cast_pos]
state_before: α : Type ?u.740413
β : Type ?u.740416
n d k N : ℕ
x : Fin n → ℕ
hN : 64 ≤ N
this : 2 ^ ↑6 ≤ ↑N
⊢ 0 < ↑N

tactic: exact hN.trans_lt' (by norm_num1)
state_before: α : Type ?u.740413
β : Type ?u.740416
n d k N : ℕ
x : Fin n → ℕ
hN : 64 ≤ N
this : 2 ^ ↑6 ≤ ↑N
⊢ 0 < N

tactic: rw [rpow_nat_cast]
state_before: α : Type ?u.740413
β : Type ?u.740416
n d k N : ℕ
x : Fin n → ℕ
hN : 64 ≤ N
⊢ 2 ^ ↑6 ≤ ↑N

tactic: exact (cast_le.2 hN).trans' (by norm_num1)
state_before: α : Type ?u.740413
β : Type ?u.740416
n d k N : ℕ
x : Fin n → ℕ
hN : 64 ≤ N
⊢ 2 ^ 6 ≤ ↑N

tactic: norm_num1
state_before: α : Type ?u.740413
β : Type ?u.740416
n d k N : ℕ
x : Fin n → ℕ
hN : 64 ≤ N
⊢ 2 ^ 6 ≤ ↑64

tactic: exact log_two_gt_d9.trans_le' (by norm_num1)
state_before: α : Type ?u.740413
β : Type ?u.740416
n d k N : ℕ
x : Fin n → ℕ
hN : 64 ≤ N
this : 2 ^ ↑6 ≤ ↑N
⊢ 2 ^ 2 / ↑6 < log 2

tactic: norm_num1
state_before: α : Type ?u.740413
β : Type ?u.740416
n d k N : ℕ
x : Fin n → ℕ
hN : 64 ≤ N
this : 2 ^ ↑6 ≤ ↑N
⊢ 2 ^ 2 / ↑6 ≤ 0.6931471803

tactic: norm_num1
state_before: α : Type ?u.740413
β : Type ?u.740416
n d k N : ℕ
x : Fin n → ℕ
hN : 64 ≤ N
this : 2 ^ ↑6 ≤ ↑N
⊢ 0 < ↑6

tactic: norm_num1
state_before: α : Type ?u.740413
β : Type ?u.740416
n d k N : ℕ
x : Fin n → ℕ
hN : 64 ≤ N
this : 2 ^ ↑6 ≤ ↑N
⊢ 0 < 64
Theorem: List.splitWrtCompositionAux_cons
File: Mathlib/Combinatorics/Composition.lean

tactic: simp [splitWrtCompositionAux]
state_before: n✝ : ℕ
α : Type u_1
l : List α
n : ℕ
ns : List ℕ
⊢ splitWrtCompositionAux l (n :: ns) = take n l :: splitWrtCompositionAux (drop n l) ns