tasksource/leandojo huggingface dataset:
Theorem: Equiv.Perm.cycleType_eq
File: Mathlib/GroupTheory/Perm/Cycle/Type.lean

tactic: have hl : l.Nodup := nodup_of_pairwise_disjoint_cycles h1 h2
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ : Perm α
l : List (Perm α)
h0 : List.prod l = σ
h1 : ∀ (σ : Perm α), σ ∈ l → IsCycle σ
h2 : List.Pairwise Disjoint l
⊢ cycleType σ = ↑(List.map (Finset.card ∘ support) l)

tactic: rw [cycleType_eq' l.toFinset]
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ : Perm α
l : List (Perm α)
h0 : List.prod l = σ
h1 : ∀ (σ : Perm α), σ ∈ l → IsCycle σ
h2 : List.Pairwise Disjoint l
hl : List.Nodup l
⊢ cycleType σ = ↑(List.map (Finset.card ∘ support) l)

tactic: simpa using h1
state_before: case h1
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ : Perm α
l : List (Perm α)
h0 : List.prod l = σ
h1 : ∀ (σ : Perm α), σ ∈ l → IsCycle σ
h2 : List.Pairwise Disjoint l
hl : List.Nodup l
⊢ ∀ (f : Perm α), f ∈ List.toFinset l → IsCycle f

tactic: simpa [hl] using h2
state_before: case h2
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ : Perm α
l : List (Perm α)
h0 : List.prod l = σ
h1 : ∀ (σ : Perm α), σ ∈ l → IsCycle σ
h2 : List.Pairwise Disjoint l
hl : List.Nodup l
⊢ Set.Pairwise (↑(List.toFinset l)) Disjoint

tactic: simp [hl, h0]
state_before: case h0
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ : Perm α
l : List (Perm α)
h0 : List.prod l = σ
h1 : ∀ (σ : Perm α), σ ∈ l → IsCycle σ
h2 : List.Pairwise Disjoint l
hl : List.Nodup l
⊢ Finset.noncommProd (List.toFinset l) id (_ : Set.Pairwise ↑(List.toFinset l) fun a b => Commute (id a) (id b)) = σ
Theorem: MeasureTheory.integrable_finset_sum_measure
File: Mathlib/MeasureTheory/Function/L1Space.lean

tactic: induction s using Finset.induction_on <;> simp [*]
state_before: α : Type u_2
β : Type u_3
γ : Type ?u.841691
δ : Type ?u.841694
m✝ : MeasurableSpace α
μ✝ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
ι : Type u_1
m : MeasurableSpace α
f : α → β
μ : ι → Measure α
s : Finset ι
⊢ Integrable f ↔ ∀ (i : ι), i ∈ s → Integrable f
Theorem: Cubic.degree_of_b_ne_zero
File: Mathlib/Algebra/CubicDiscriminant.lean

tactic: rw [of_a_eq_zero ha, degree_quadratic hb]
state_before: R : Type u_1
S : Type ?u.579663
F : Type ?u.579666
K : Type ?u.579669
P Q : Cubic R
a b c d a' b' c' d' : R
inst✝ : Semiring R
ha : P.a = 0
hb : P.b ≠ 0
⊢ degree (toPoly P) = 2
Theorem: AlgebraicIndependent.option_iff
File: Mathlib/RingTheory/AlgebraicIndependent.lean

tactic: rw [algebraicIndependent_iff_injective_aeval, isAlgebraic_iff_not_injective, Classical.not_not, ←
  AlgHom.coe_toRingHom, ← hx.aeval_comp_mvPolynomialOptionEquivPolynomialAdjoin,
  RingHom.coe_comp]
state_before: ι : Type u_1
ι' : Type ?u.1278169
R : Type u_2
K : Type ?u.1278175
A : Type u_3
A' : Type ?u.1278181
A'' : Type ?u.1278184
V : Type u
V' : Type ?u.1278189
x : ι → A
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : CommRing A'
inst✝³ : CommRing A''
inst✝² : Algebra R A
inst✝¹ : Algebra R A'
inst✝ : Algebra R A''
a✝ b : R
hx : AlgebraicIndependent R x
a : A
⊢ (AlgebraicIndependent R fun o => Option.elim o a x) ↔ ¬_root_.IsAlgebraic { x_1 // x_1 ∈ adjoin R (range x) } a

tactic: exact Injective.of_comp_iff' (Polynomial.aeval a)
  (mvPolynomialOptionEquivPolynomialAdjoin hx).bijective
state_before: ι : Type u_1
ι' : Type ?u.1278169
R : Type u_2
K : Type ?u.1278175
A : Type u_3
A' : Type ?u.1278181
A'' : Type ?u.1278184
V : Type u
V' : Type ?u.1278189
x : ι → A
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : CommRing A'
inst✝³ : CommRing A''
inst✝² : Algebra R A
inst✝¹ : Algebra R A'
inst✝ : Algebra R A''
a✝ b : R
hx : AlgebraicIndependent R x
a : A
⊢ Injective (↑↑(Polynomial.aeval a) ∘ ↑(RingEquiv.toRingHom (mvPolynomialOptionEquivPolynomialAdjoin hx))) ↔
    Injective ↑(Polynomial.aeval a)
Theorem: Polynomial.support_map_subset
File: Mathlib/Data/Polynomial/Eval.lean

tactic: intro x
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝¹ : Semiring R
inst✝ : Semiring S
f : R →+* S
p : R[X]
⊢ support (map f p) ⊆ support p

tactic: contrapose!
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝¹ : Semiring R
inst✝ : Semiring S
f : R →+* S
p : R[X]
x : ℕ
⊢ x ∈ support (map f p) → x ∈ support p

tactic: simp (config := { contextual := true })
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝¹ : Semiring R
inst✝ : Semiring S
f : R →+* S
p : R[X]
x : ℕ
⊢ ¬x ∈ support p → ¬x ∈ support (map f p)
Theorem: AffineSubspace.wSameSide_smul_vsub_vadd_left
File: Mathlib/Analysis/Convex/Side.lean

tactic: refine' ⟨p₂, hp₂, p₁, hp₁, _⟩
state_before: R : Type u_1
V : Type u_2
V' : Type ?u.160080
P : Type u_3
P' : Type ?u.160086
inst✝⁶ : StrictOrderedCommRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
s : AffineSubspace R P
p₁ p₂ x : P
hp₁ : p₁ ∈ s
hp₂ : p₂ ∈ s
t : R
ht : 0 ≤ t
⊢ WSameSide s (t • (x -ᵥ p₁) +ᵥ p₂) x

tactic: rw [vadd_vsub]
state_before: R : Type u_1
V : Type u_2
V' : Type ?u.160080
P : Type u_3
P' : Type ?u.160086
inst✝⁶ : StrictOrderedCommRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
s : AffineSubspace R P
p₁ p₂ x : P
hp₁ : p₁ ∈ s
hp₂ : p₂ ∈ s
t : R
ht : 0 ≤ t
⊢ SameRay R (t • (x -ᵥ p₁) +ᵥ p₂ -ᵥ p₂) (x -ᵥ p₁)

tactic: exact SameRay.sameRay_nonneg_smul_left _ ht
state_before: R : Type u_1
V : Type u_2
V' : Type ?u.160080
P : Type u_3
P' : Type ?u.160086
inst✝⁶ : StrictOrderedCommRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
s : AffineSubspace R P
p₁ p₂ x : P
hp₁ : p₁ ∈ s
hp₂ : p₂ ∈ s
t : R
ht : 0 ≤ t
⊢ SameRay R (t • (x -ᵥ p₁)) (x -ᵥ p₁)
Theorem: Complex.dist_of_re_eq
File: Mathlib/Analysis/Complex/Basic.lean

tactic: rw [dist_eq_re_im, h, sub_self, zero_pow two_pos, zero_add, Real.sqrt_sq_eq_abs, Real.dist_eq]
state_before: E : Type ?u.11974
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℂ E
z w : ℂ
h : z.re = w.re
⊢ dist z w = dist z.im w.im
Theorem: Primrec.unpair
File: Mathlib/Computability/Primrec.lean

tactic: simp
state_before: α : Type ?u.50039
σ : Type ?u.50042
inst✝¹ : Primcodable α
inst✝ : Primcodable σ
n : ℕ
⊢ ((Nat.unpair n).fst, (Nat.unpair n).snd) = Nat.unpair n
Theorem: Submodule.comap_map_eq
File: Mathlib/LinearAlgebra/Span.lean

tactic: refine' le_antisymm _ (sup_le (le_comap_map _ _) (comap_mono bot_le))
state_before: R : Type u_1
R₂ : Type u_3
K : Type ?u.292037
M : Type u_2
M₂ : Type u_4
V : Type ?u.292046
S : Type ?u.292049
inst✝⁶ : Semiring R
inst✝⁵ : Semiring R₂
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : AddCommGroup M₂
inst✝¹ : Module R₂ M₂
τ₁₂ : R →+* R₂
inst✝ : RingHomSurjective τ₁₂
F : Type u_5
sc : SemilinearMapClass F τ₁₂ M M₂
f : F
p : Submodule R M
⊢ comap f (map f p) = p ⊔ LinearMap.ker f

tactic: rintro x ⟨y, hy, e⟩
state_before: R : Type u_1
R₂ : Type u_3
K : Type ?u.292037
M : Type u_2
M₂ : Type u_4
V : Type ?u.292046
S : Type ?u.292049
inst✝⁶ : Semiring R
inst✝⁵ : Semiring R₂
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : AddCommGroup M₂
inst✝¹ : Module R₂ M₂
τ₁₂ : R →+* R₂
inst✝ : RingHomSurjective τ₁₂
F : Type u_5
sc : SemilinearMapClass F τ₁₂ M M₂
f : F
p : Submodule R M
⊢ comap f (map f p) ≤ p ⊔ LinearMap.ker f

tactic: exact mem_sup.2 ⟨y, hy, x - y, by simpa using sub_eq_zero.2 e.symm, by simp⟩
state_before: case intro.intro
R : Type u_1
R₂ : Type u_3
K : Type ?u.292037
M : Type u_2
M₂ : Type u_4
V : Type ?u.292046
S : Type ?u.292049
inst✝⁶ : Semiring R
inst✝⁵ : Semiring R₂
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : AddCommGroup M₂
inst✝¹ : Module R₂ M₂
τ₁₂ : R →+* R₂
inst✝ : RingHomSurjective τ₁₂
F : Type u_5
sc : SemilinearMapClass F τ₁₂ M M₂
f : F
p : Submodule R M
x y : M
hy : y ∈ ↑p
e : ↑f y = ↑f x
⊢ x ∈ p ⊔ LinearMap.ker f

tactic: simpa using sub_eq_zero.2 e.symm
state_before: R : Type u_1
R₂ : Type u_3
K : Type ?u.292037
M : Type u_2
M₂ : Type u_4
V : Type ?u.292046
S : Type ?u.292049
inst✝⁶ : Semiring R
inst✝⁵ : Semiring R₂
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : AddCommGroup M₂
inst✝¹ : Module R₂ M₂
τ₁₂ : R →+* R₂
inst✝ : RingHomSurjective τ₁₂
F : Type u_5
sc : SemilinearMapClass F τ₁₂ M M₂
f : F
p : Submodule R M
x y : M
hy : y ∈ ↑p
e : ↑f y = ↑f x
⊢ x - y ∈ LinearMap.ker f

tactic: simp
state_before: R : Type u_1
R₂ : Type u_3
K : Type ?u.292037
M : Type u_2
M₂ : Type u_4
V : Type ?u.292046
S : Type ?u.292049
inst✝⁶ : Semiring R
inst✝⁵ : Semiring R₂
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : AddCommGroup M₂
inst✝¹ : Module R₂ M₂
τ₁₂ : R →+* R₂
inst✝ : RingHomSurjective τ₁₂
F : Type u_5
sc : SemilinearMapClass F τ₁₂ M M₂
f : F
p : Submodule R M
x y : M
hy : y ∈ ↑p
e : ↑f y = ↑f x
⊢ y + (x - y) = x
Theorem: List.chain_map
File: Mathlib/Data/List/Chain.lean

tactic: induction l generalizing b <;> simp only [map, Chain.nil, chain_cons, *]
state_before: α : Type u
β : Type v
R r : α → α → Prop
l✝ l₁ l₂ : List α
a b✝ : α
f : β → α
b : β
l : List β
⊢ Chain R (f b) (map f l) ↔ Chain (fun a b => R (f a) (f b)) b l
Theorem: Function.LeftInverse.comp
File: Mathlib/Logic/Function/Basic.lean

tactic: rw [hf (i a), hh a]
state_before: α : Sort u_2
β : Sort u_1
γ : Sort u_3
f✝ f : α → β
g : β → α
h : β → γ
i : γ → β
hf : LeftInverse f g
hh : LeftInverse h i
a : γ
⊢ h (f (g (i a))) = a
Theorem: exists_perfect_nonempty_of_isClosed_of_not_countable
File: Mathlib/Topology/Perfect.lean

tactic: rcases exists_countable_union_perfect_of_isClosed hclosed with ⟨V, D, Vct, Dperf, VD⟩
state_before: α : Type u_1
inst✝¹ : TopologicalSpace α
C : Set α
inst✝ : SecondCountableTopology α
hclosed : IsClosed C
hunc : ¬Set.Countable C
⊢ ∃ D, Perfect D ∧ Set.Nonempty D ∧ D ⊆ C

tactic: refine' ⟨D, ⟨Dperf, _⟩⟩
state_before: case intro.intro.intro.intro
α : Type u_1
inst✝¹ : TopologicalSpace α
C : Set α
inst✝ : SecondCountableTopology α
hclosed : IsClosed C
hunc : ¬Set.Countable C
V D : Set α
Vct : Set.Countable V
Dperf : Perfect D
VD : C = V ∪ D
⊢ ∃ D, Perfect D ∧ Set.Nonempty D ∧ D ⊆ C

tactic: constructor
state_before: case intro.intro.intro.intro
α : Type u_1
inst✝¹ : TopologicalSpace α
C : Set α
inst✝ : SecondCountableTopology α
hclosed : IsClosed C
hunc : ¬Set.Countable C
V D : Set α
Vct : Set.Countable V
Dperf : Perfect D
VD : C = V ∪ D
⊢ Set.Nonempty D ∧ D ⊆ C

tactic: rw [VD]
state_before: case intro.intro.intro.intro.right
α : Type u_1
inst✝¹ : TopologicalSpace α
C : Set α
inst✝ : SecondCountableTopology α
hclosed : IsClosed C
hunc : ¬Set.Countable C
V D : Set α
Vct : Set.Countable V
Dperf : Perfect D
VD : C = V ∪ D
⊢ D ⊆ C

tactic: exact subset_union_right _ _
state_before: case intro.intro.intro.intro.right
α : Type u_1
inst✝¹ : TopologicalSpace α
C : Set α
inst✝ : SecondCountableTopology α
hclosed : IsClosed C
hunc : ¬Set.Countable C
V D : Set α
Vct : Set.Countable V
Dperf : Perfect D
VD : C = V ∪ D
⊢ D ⊆ V ∪ D

tactic: rw [nonempty_iff_ne_empty]
state_before: case intro.intro.intro.intro.left
α : Type u_1
inst✝¹ : TopologicalSpace α
C : Set α
inst✝ : SecondCountableTopology α
hclosed : IsClosed C
hunc : ¬Set.Countable C
V D : Set α
Vct : Set.Countable V
Dperf : Perfect D
VD : C = V ∪ D
⊢ Set.Nonempty D

tactic: by_contra h
state_before: case intro.intro.intro.intro.left
α : Type u_1
inst✝¹ : TopologicalSpace α
C : Set α
inst✝ : SecondCountableTopology α
hclosed : IsClosed C
hunc : ¬Set.Countable C
V D : Set α
Vct : Set.Countable V
Dperf : Perfect D
VD : C = V ∪ D
⊢ D ≠ ∅

tactic: rw [h, union_empty] at VD
state_before: case intro.intro.intro.intro.left
α : Type u_1
inst✝¹ : TopologicalSpace α
C : Set α
inst✝ : SecondCountableTopology α
hclosed : IsClosed C
hunc : ¬Set.Countable C
V D : Set α
Vct : Set.Countable V
Dperf : Perfect D
VD : C = V ∪ D
h : D = ∅
⊢ False

tactic: rw [VD] at hunc
state_before: case intro.intro.intro.intro.left
α : Type u_1
inst✝¹ : TopologicalSpace α
C : Set α
inst✝ : SecondCountableTopology α
hclosed : IsClosed C
hunc : ¬Set.Countable C
V D : Set α
Vct : Set.Countable V
Dperf : Perfect D
VD : C = V
h : D = ∅
⊢ False

tactic: contradiction
state_before: case intro.intro.intro.intro.left
α : Type u_1
inst✝¹ : TopologicalSpace α
C : Set α
inst✝ : SecondCountableTopology α
hclosed : IsClosed C
V : Set α
hunc : ¬Set.Countable V
D : Set α
Vct : Set.Countable V
Dperf : Perfect D
VD : C = V
h : D = ∅
⊢ False
Theorem: Polynomial.eval_mul_X_pow
File: Mathlib/Data/Polynomial/Eval.lean

tactic: induction' k with k ih
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝ : Semiring R
p q r : R[X]
x : R
k : ℕ
⊢ eval x (p * X ^ k) = eval x p * x ^ k

tactic: simp
state_before: case zero
R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝ : Semiring R
p q r : R[X]
x : R
⊢ eval x (p * X ^ Nat.zero) = eval x p * x ^ Nat.zero

tactic: simp [pow_succ', ← mul_assoc, ih]
state_before: case succ
R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝ : Semiring R
p q r : R[X]
x : R
k : ℕ
ih : eval x (p * X ^ k) = eval x p * x ^ k
⊢ eval x (p * X ^ Nat.succ k) = eval x p * x ^ Nat.succ k
Theorem: Nat.land'_assoc
File: Mathlib/Data/Nat/Bitwise.lean

tactic: bitwise_assoc_tac
state_before: n m k : ℕ
⊢ land' (land' n m) k = land' n (land' m k)
Theorem: AffineIsometryEquiv.dist_pointReflection_self'
File: Mathlib/Analysis/NormedSpace/AffineIsometry.lean

tactic: rw [pointReflection_apply, dist_eq_norm_vsub V, vadd_vsub_assoc, bit0]
state_before: 𝕜 : Type u_3
V : Type u_2
V₁ : Type ?u.2060153
V₂ : Type ?u.2060156
V₃ : Type ?u.2060159
V₄ : Type ?u.2060162
P₁ : Type ?u.2060165
P : Type u_1
P₂ : Type ?u.2060171
P₃ : Type ?u.2060174
P₄ : Type ?u.2060177
inst✝²¹ : NormedField 𝕜
inst✝²⁰ : SeminormedAddCommGroup V
inst✝¹⁹ : SeminormedAddCommGroup V₁
inst✝¹⁸ : SeminormedAddCommGroup V₂
inst✝¹⁷ : SeminormedAddCommGroup V₃
inst✝¹⁶ : SeminormedAddCommGroup V₄
inst✝¹⁵ : NormedSpace 𝕜 V
inst✝¹⁴ : NormedSpace 𝕜 V₁
inst✝¹³ : NormedSpace 𝕜 V₂
inst✝¹² : NormedSpace 𝕜 V₃
inst✝¹¹ : NormedSpace 𝕜 V₄
inst✝¹⁰ : PseudoMetricSpace P
inst✝⁹ : MetricSpace P₁
inst✝⁸ : PseudoMetricSpace P₂
inst✝⁷ : PseudoMetricSpace P₃
inst✝⁶ : PseudoMetricSpace P₄
inst✝⁵ : NormedAddTorsor V P
inst✝⁴ : NormedAddTorsor V₁ P₁
inst✝³ : NormedAddTorsor V₂ P₂
inst✝² : NormedAddTorsor V₃ P₃
inst✝¹ : NormedAddTorsor V₄ P₄
e : P ≃ᵃⁱ[𝕜] P₂
α : Type ?u.2060701
inst✝ : TopologicalSpace α
x y : P
⊢ dist (↑(pointReflection 𝕜 x) y) y = ‖bit0 (x -ᵥ y)‖
Theorem: Nat.odd_sub'
File: Mathlib/Data/Nat/Parity.lean

tactic: rw [odd_iff_not_even, even_sub h, not_iff, not_iff_comm, odd_iff_not_even]
state_before: m n : ℕ
h : n ≤ m
⊢ Odd (m - n) ↔ (Odd n ↔ Even m)
Theorem: Finset.sym2_nonempty
File: Mathlib/Data/Finset/Sym.lean

tactic: rw [Finset.sym2, Nonempty.image_iff, nonempty_product, and_self_iff]
state_before: α : Type u_1
inst✝ : DecidableEq α
s t : Finset α
a b : α
m : Sym2 α
⊢ Finset.Nonempty (Finset.sym2 s) ↔ Finset.Nonempty s
Theorem: LinearMap.norm_extendTo𝕜'_apply_sq
File: Mathlib/Analysis/NormedSpace/Extend.lean

tactic: rw [IsROrC.conj_mul, normSq_eq_def', ofReal_re]
state_before: 𝕜 : Type u_2
inst✝⁴ : IsROrC 𝕜
F : Type u_1
inst✝³ : SeminormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : Module ℝ F
inst✝ : IsScalarTower ℝ 𝕜 F
fr : F →ₗ[ℝ] ℝ
x : F
⊢ ‖↑(extendTo𝕜' fr) x‖ ^ 2 = ↑re (↑(starRingEnd ((fun x => 𝕜) x)) (↑(extendTo𝕜' fr) x) * ↑(extendTo𝕜' fr) x)

tactic: rw [← smul_eq_mul, ← map_smul, extendTo𝕜'_apply_re]
state_before: 𝕜 : Type u_2
inst✝⁴ : IsROrC 𝕜
F : Type u_1
inst✝³ : SeminormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : Module ℝ F
inst✝ : IsScalarTower ℝ 𝕜 F
fr : F →ₗ[ℝ] ℝ
x : F
⊢ ↑re (↑(starRingEnd ((fun x => 𝕜) x)) (↑(extendTo𝕜' fr) x) * ↑(extendTo𝕜' fr) x) =
    ↑fr (↑(starRingEnd ((fun x => 𝕜) x)) (↑(extendTo𝕜' fr) x) • x)
Theorem: AlgebraicTopology.DoldKan.map_P
File: Mathlib/AlgebraicTopology/DoldKan/Projections.lean

tactic: induction' q with q hq
state_before: C : Type u_4
inst✝⁴ : Category C
inst✝³ : Preadditive C
X✝ : SimplicialObject C
D : Type u_1
inst✝² : Category D
inst✝¹ : Preadditive D
G : C ⥤ D
inst✝ : Functor.Additive G
X : SimplicialObject C
q n : ℕ
⊢ G.map (HomologicalComplex.Hom.f (P q) n) = HomologicalComplex.Hom.f (P q) n

tactic: simp only [P_zero]
state_before: case zero
C : Type u_4
inst✝⁴ : Category C
inst✝³ : Preadditive C
X✝ : SimplicialObject C
D : Type u_1
inst✝² : Category D
inst✝¹ : Preadditive D
G : C ⥤ D
inst✝ : Functor.Additive G
X : SimplicialObject C
n : ℕ
⊢ G.map (HomologicalComplex.Hom.f (P Nat.zero) n) = HomologicalComplex.Hom.f (P Nat.zero) n

tactic: apply G.map_id
state_before: case zero
C : Type u_4
inst✝⁴ : Category C
inst✝³ : Preadditive C
X✝ : SimplicialObject C
D : Type u_1
inst✝² : Category D
inst✝¹ : Preadditive D
G : C ⥤ D
inst✝ : Functor.Additive G
X : SimplicialObject C
n : ℕ
⊢ G.map (HomologicalComplex.Hom.f (P Nat.zero) n) = HomologicalComplex.Hom.f (P Nat.zero) n

tactic: simp only [P_succ, comp_add, HomologicalComplex.comp_f, HomologicalComplex.add_f_apply,
  comp_id, Functor.map_add, Functor.map_comp, hq, map_Hσ]
state_before: case succ
C : Type u_4
inst✝⁴ : Category C
inst✝³ : Preadditive C
X✝ : SimplicialObject C
D : Type u_1
inst✝² : Category D
inst✝¹ : Preadditive D
G : C ⥤ D
inst✝ : Functor.Additive G
X : SimplicialObject C
n q : ℕ
hq : G.map (HomologicalComplex.Hom.f (P q) n) = HomologicalComplex.Hom.f (P q) n
⊢ G.map (HomologicalComplex.Hom.f (P (Nat.succ q)) n) = HomologicalComplex.Hom.f (P (Nat.succ q)) n
Theorem: CategoryTheory.Limits.Types.FilteredColimit.isColimit_eq_iff
File: Mathlib/CategoryTheory/Limits/Types.lean

tactic: let t' := colimitCocone.{v, u} F
state_before: J : Type v
inst✝¹ : SmallCategory J
F : J ⥤ TypeMax
inst✝ : IsFilteredOrEmpty J
t : Cocone F
ht : IsColimit t
i j : J
xi : F.obj i
xj : F.obj j
⊢ t.ι.app i xi = t.ι.app j xj ↔ ∃ k f g, F.map f xi = F.map g xj

tactic: let e : t' ≅ t := IsColimit.uniqueUpToIso (colimitCoconeIsColimit F) ht
state_before: J : Type v
inst✝¹ : SmallCategory J
F : J ⥤ TypeMax
inst✝ : IsFilteredOrEmpty J
t : Cocone F
ht : IsColimit t
i j : J
xi : F.obj i
xj : F.obj j
t' : Cocone F := colimitCocone F
⊢ t.ι.app i xi = t.ι.app j xj ↔ ∃ k f g, F.map f xi = F.map g xj

tactic: let e' : t'.pt ≅ t.pt := (Cocones.forget _).mapIso e
state_before: J : Type v
inst✝¹ : SmallCategory J
F : J ⥤ TypeMax
inst✝ : IsFilteredOrEmpty J
t : Cocone F
ht : IsColimit t
i j : J
xi : F.obj i
xj : F.obj j
t' : Cocone F := colimitCocone F
e : t' ≅ t := IsColimit.uniqueUpToIso (colimitCoconeIsColimit F) ht
⊢ t.ι.app i xi = t.ι.app j xj ↔ ∃ k f g, F.map f xi = F.map g xj

tactic: refine' Iff.trans _ (colimit_eq_iff_aux.{v, u} F)
state_before: J : Type v
inst✝¹ : SmallCategory J
F : J ⥤ TypeMax
inst✝ : IsFilteredOrEmpty J
t : Cocone F
ht : IsColimit t
i j : J
xi : F.obj i
xj : F.obj j
t' : Cocone F := colimitCocone F
e : t' ≅ t := IsColimit.uniqueUpToIso (colimitCoconeIsColimit F) ht
e' : t'.pt ≅ t.pt := (Cocones.forget F).mapIso e
⊢ t.ι.app i xi = t.ι.app j xj ↔ ∃ k f g, F.map f xi = F.map g xj

tactic: exact @Equiv.apply_eq_iff_eq _ _ e'.toEquiv ((colimitCocone.{v, u} F).ι.app i xi)
  ((colimitCocone.{v, u} F).ι.app j xj)
state_before: J : Type v
inst✝¹ : SmallCategory J
F : J ⥤ TypeMax
inst✝ : IsFilteredOrEmpty J
t : Cocone F
ht : IsColimit t
i j : J
xi : F.obj i
xj : F.obj j
t' : Cocone F := colimitCocone F
e : t' ≅ t := IsColimit.uniqueUpToIso (colimitCoconeIsColimit F) ht
e' : t'.pt ≅ t.pt := (Cocones.forget F).mapIso e
⊢ t.ι.app i xi = t.ι.app j xj ↔ (colimitCocone F).ι.app i xi = (colimitCocone F).ι.app j xj
Theorem: Submodule.mem_colon_singleton
File: Mathlib/RingTheory/Ideal/Operations.lean

tactic: simp [Submodule.mem_colon, Submodule.mem_span_singleton]
state_before: R : Type u
M : Type v
F : Type ?u.187576
G : Type ?u.187579
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
N✝ N₁ N₂ P P₁ P₂ N : Submodule R M
x : M
r : R
⊢ r ∈ colon N (span R {x}) ↔ ∀ (a : R), r • a • x ∈ N

tactic: simp_rw [fun (a : R) ↦ smul_comm r a x]
state_before: R : Type u
M : Type v
F : Type ?u.187576
G : Type ?u.187579
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
N✝ N₁ N₂ P P₁ P₂ N : Submodule R M
x : M
r : R
⊢ (∀ (a : R), r • a • x ∈ N) ↔ r • x ∈ N

tactic: exact SetLike.forall_smul_mem_iff
state_before: R : Type u
M : Type v
F : Type ?u.187576
G : Type ?u.187579
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
N✝ N₁ N₂ P P₁ P₂ N : Submodule R M
x : M
r : R
⊢ (∀ (a : R), a • r • x ∈ N) ↔ r • x ∈ N
Theorem: FirstOrder.Language.Term.realize_le
File: Mathlib/ModelTheory/Order.lean

tactic: simp [Term.le]
state_before: L : Language
α : Type w
M : Type w'
n : ℕ
inst✝³ : IsOrdered L
inst✝² : Structure L M
inst✝¹ : LE M
inst✝ : OrderedStructure L M
t₁ t₂ : Term L (α ⊕ Fin n)
v : α → M
xs : Fin n → M
⊢ BoundedFormula.Realize (le t₁ t₂) v xs ↔ realize (Sum.elim v xs) t₁ ≤ realize (Sum.elim v xs) t₂
Theorem: Polynomial.natDegree_lt_natDegree
File: Mathlib/Data/Polynomial/Degree/Definitions.lean

tactic: by_cases hq : q = 0
state_before: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p✝ q✝ r p q : R[X]
hp : p ≠ 0
hpq : degree p < degree q
⊢ natDegree p < natDegree q

tactic: rwa [degree_eq_natDegree hp, degree_eq_natDegree hq,
  Nat.cast_withBot, Nat.cast_withBot, WithBot.coe_lt_coe] at hpq
state_before: case neg
R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p✝ q✝ r p q : R[X]
hp : p ≠ 0
hpq : degree p < degree q
hq : ¬q = 0
⊢ natDegree p < natDegree q

tactic: exact (not_lt_bot <| hq ▸ hpq).elim
state_before: case pos
R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p✝ q✝ r p q : R[X]
hp : p ≠ 0
hpq : degree p < degree q
hq : q = 0
⊢ natDegree p < natDegree q
Theorem: Bifunctor.snd_fst
File: Mathlib/Control/Bifunctor.lean

tactic: simp [snd, bimap_bimap]
state_before: F : Type u₀ → Type u₁ → Type u₂
inst✝¹ : Bifunctor F
inst✝ : LawfulBifunctor F
α₀ α₁ : Type u₀
β₀ β₁ : Type u₁
f : α₀ → α₁
f' : β₀ → β₁
x : F α₀ β₀
⊢ snd f' (fst f x) = bimap f f' x
Theorem: List.length_pmap
File: Mathlib/Data/List/Basic.lean

tactic: induction l <;> [rfl; simp only [*, pmap, length]]
state_before: ι : Type ?u.330264
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
p : α → Prop
f : (a : α) → p a → β
l : List α
H : ∀ (a : α), a ∈ l → p a
⊢ length (pmap f l H) = length l
Theorem: Bool.eq_false_eq_not_eq_true
File: Mathlib/Init/Data/Bool/Lemmas.lean

tactic: simp
state_before: b : Bool
⊢ (¬b = true) = (b = false)
Theorem: MeasureTheory.Measure.haar.prehaar_self
File: Mathlib/MeasureTheory/Measure/Haar/Basic.lean

tactic: exact_mod_cast index_pos K₀ hU
state_before: G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
U : Set G
hU : Set.Nonempty (interior U)
⊢ 0 < ↑(index (↑K₀.toCompacts) U)
Theorem: ENNReal.exists_countable_dense_no_zero_top
File: Mathlib/Topology/Instances/ENNReal.lean

tactic: obtain ⟨s, s_count, s_dense, hs⟩ :
  ∃ s : Set ℝ≥0∞, s.Countable ∧ Dense s ∧ (∀ x, IsBot x → x ∉ s) ∧ ∀ x, IsTop x → x ∉ s :=
  exists_countable_dense_no_bot_top ℝ≥0∞
state_before: α : Type ?u.161670
β : Type ?u.161673
γ : Type ?u.161676
a b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
⊢ ∃ s, Set.Countable s ∧ Dense s ∧ ¬0 ∈ s ∧ ¬⊤ ∈ s

tactic: exact ⟨s, s_count, s_dense, fun h => hs.1 0 (by simp) h, fun h => hs.2 ∞ (by simp) h⟩
state_before: case intro.intro.intro
α : Type ?u.161670
β : Type ?u.161673
γ : Type ?u.161676
a b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s✝ s : Set ℝ≥0∞
s_count : Set.Countable s
s_dense : Dense s
hs : (∀ (x : ℝ≥0∞), IsBot x → ¬x ∈ s) ∧ ∀ (x : ℝ≥0∞), IsTop x → ¬x ∈ s
⊢ ∃ s, Set.Countable s ∧ Dense s ∧ ¬0 ∈ s ∧ ¬⊤ ∈ s

tactic: simp
state_before: α : Type ?u.161670
β : Type ?u.161673
γ : Type ?u.161676
a b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s✝ s : Set ℝ≥0∞
s_count : Set.Countable s
s_dense : Dense s
hs : (∀ (x : ℝ≥0∞), IsBot x → ¬x ∈ s) ∧ ∀ (x : ℝ≥0∞), IsTop x → ¬x ∈ s
h : 0 ∈ s
⊢ IsBot 0

tactic: simp
state_before: α : Type ?u.161670
β : Type ?u.161673
γ : Type ?u.161676
a b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s✝ s : Set ℝ≥0∞
s_count : Set.Countable s
s_dense : Dense s
hs : (∀ (x : ℝ≥0∞), IsBot x → ¬x ∈ s) ∧ ∀ (x : ℝ≥0∞), IsTop x → ¬x ∈ s
h : ⊤ ∈ s
⊢ IsTop ⊤