tasksource/leandojo huggingface dataset:
Theorem: IntermediateField.equivOfEq_rfl
File: Mathlib/FieldTheory/Adjoin.lean

tactic: ext
state_before: F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
S : IntermediateField F E
⊢ equivOfEq (_ : S = S) = AlgEquiv.refl

tactic: rfl
state_before: case h.a
F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
S : IntermediateField F E
a✝ : { x // x ∈ S }
⊢ ↑(↑(equivOfEq (_ : S = S)) a✝) = ↑(↑AlgEquiv.refl a✝)
Theorem: VectorSpace.card_fintype
File: Mathlib/LinearAlgebra/Basis.lean

tactic: classical
exact ⟨card (Basis.ofVectorSpaceIndex K V), Module.card_fintype (Basis.ofVectorSpace K V)⟩
state_before: ι : Type ?u.1163482
ι' : Type ?u.1163485
R : Type ?u.1163488
R₂ : Type ?u.1163491
K : Type u_1
M : Type ?u.1163497
M' : Type ?u.1163500
M'' : Type ?u.1163503
V : Type u
V' : Type ?u.1163508
inst✝⁶ : DivisionRing K
inst✝⁵ : AddCommGroup V
inst✝⁴ : AddCommGroup V'
inst✝³ : Module K V
inst✝² : Module K V'
v : ι → V
s t : Set V
x y z : V
inst✝¹ : Fintype K
inst✝ : Fintype V
⊢ ∃ n, card V = card K ^ n

tactic: exact ⟨card (Basis.ofVectorSpaceIndex K V), Module.card_fintype (Basis.ofVectorSpace K V)⟩
state_before: ι : Type ?u.1163482
ι' : Type ?u.1163485
R : Type ?u.1163488
R₂ : Type ?u.1163491
K : Type u_1
M : Type ?u.1163497
M' : Type ?u.1163500
M'' : Type ?u.1163503
V : Type u
V' : Type ?u.1163508
inst✝⁶ : DivisionRing K
inst✝⁵ : AddCommGroup V
inst✝⁴ : AddCommGroup V'
inst✝³ : Module K V
inst✝² : Module K V'
v : ι → V
s t : Set V
x y z : V
inst✝¹ : Fintype K
inst✝ : Fintype V
⊢ ∃ n, card V = card K ^ n
Theorem: Finset.sum_affineCombinationSingleWeights
File: Mathlib/LinearAlgebra/AffineSpace/Combination.lean

tactic: rw [← affineCombinationSingleWeights_apply_self k i]
state_before: k : Type u_2
V : Type ?u.415884
P : Type ?u.415887
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
S : AffineSpace V P
ι : Type u_1
s : Finset ι
ι₂ : Type ?u.416543
s₂ : Finset ι₂
inst✝ : DecidableEq ι
i : ι
h : i ∈ s
⊢ ∑ j in s, affineCombinationSingleWeights k i j = 1

tactic: exact sum_eq_single_of_mem i h fun j _ hj => affineCombinationSingleWeights_apply_of_ne k hj
state_before: k : Type u_2
V : Type ?u.415884
P : Type ?u.415887
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
S : AffineSpace V P
ι : Type u_1
s : Finset ι
ι₂ : Type ?u.416543
s₂ : Finset ι₂
inst✝ : DecidableEq ι
i : ι
h : i ∈ s
⊢ ∑ j in s, affineCombinationSingleWeights k i j = affineCombinationSingleWeights k i i
Theorem: finrank_vectorSpan_range_le
File: Mathlib/LinearAlgebra/AffineSpace/FiniteDimensional.lean

tactic: rw [← Set.image_univ, ← Finset.coe_univ, ← Finset.coe_image]
state_before: k : Type u_2
V : Type u_3
P : Type u_4
ι : Type u_1
inst✝⁴ : DivisionRing k
inst✝³ : AddCommGroup V
inst✝² : Module k V
inst✝¹ : AffineSpace V P
inst✝ : Fintype ι
p : ι → P
n : ℕ
hc : Fintype.card ι = n + 1
⊢ finrank k { x // x ∈ vectorSpan k (Set.range p) } ≤ n

tactic: rw [← Finset.card_univ] at hc
state_before: k : Type u_2
V : Type u_3
P : Type u_4
ι : Type u_1
inst✝⁴ : DivisionRing k
inst✝³ : AddCommGroup V
inst✝² : Module k V
inst✝¹ : AffineSpace V P
inst✝ : Fintype ι
p : ι → P
n : ℕ
hc : Fintype.card ι = n + 1
⊢ finrank k { x // x ∈ vectorSpan k ↑(Finset.image p Finset.univ) } ≤ n

tactic: exact finrank_vectorSpan_image_finset_le _ _ _ hc
state_before: k : Type u_2
V : Type u_3
P : Type u_4
ι : Type u_1
inst✝⁴ : DivisionRing k
inst✝³ : AddCommGroup V
inst✝² : Module k V
inst✝¹ : AffineSpace V P
inst✝ : Fintype ι
p : ι → P
n : ℕ
hc : Finset.card Finset.univ = n + 1
⊢ finrank k { x // x ∈ vectorSpan k ↑(Finset.image p Finset.univ) } ≤ n
Theorem: IsGLB.biUnion_Ioi_eq
File: Mathlib/Data/Set/Intervals/Disjoint.lean

tactic: refine' (iUnion₂_subset fun x hx => _).antisymm fun x hx => _
state_before: ι : Sort u
α : Type v
β : Type w
inst✝ : LinearOrder α
s : Set α
a : α
f : ι → α
h : IsGLB s a
⊢ (⋃ (x : α) (_ : x ∈ s), Ioi x) = Ioi a

tactic: exact Ioi_subset_Ioi (h.1 hx)
state_before: case refine'_1
ι : Sort u
α : Type v
β : Type w
inst✝ : LinearOrder α
s : Set α
a : α
f : ι → α
h : IsGLB s a
x : α
hx : x ∈ s
⊢ Ioi x ⊆ Ioi a

tactic: rcases h.exists_between hx with ⟨y, hys, _, hyx⟩
state_before: case refine'_2
ι : Sort u
α : Type v
β : Type w
inst✝ : LinearOrder α
s : Set α
a : α
f : ι → α
h : IsGLB s a
x : α
hx : x ∈ Ioi a
⊢ x ∈ ⋃ (i : α) (_ : i ∈ s), Ioi i

tactic: exact mem_biUnion hys hyx
state_before: case refine'_2.intro.intro.intro
ι : Sort u
α : Type v
β : Type w
inst✝ : LinearOrder α
s : Set α
a : α
f : ι → α
h : IsGLB s a
x : α
hx : x ∈ Ioi a
y : α
hys : y ∈ s
left✝ : a ≤ y
hyx : y < x
⊢ x ∈ ⋃ (i : α) (_ : i ∈ s), Ioi i
Theorem: CategoryTheory.Bicategory.eqToHom_whiskerRight
File: Mathlib/CategoryTheory/Bicategory/Strict.lean

tactic: cases η
state_before: B : Type u
inst✝ : Bicategory B
a b c : B
f g : a ⟶ b
η : f = g
h : b ⟶ c
⊢ eqToHom η ▷ h = eqToHom (_ : f ≫ h = g ≫ h)

tactic: simp only [id_whiskerRight, eqToHom_refl]
state_before: case refl
B : Type u
inst✝ : Bicategory B
a b c : B
f : a ⟶ b
h : b ⟶ c
⊢ eqToHom (_ : f = f) ▷ h = eqToHom (_ : f ≫ h = f ≫ h)
Theorem: LieAlgebra.abelian_radical_of_semisimple
File: Mathlib/Algebra/Lie/Semisimple.lean

tactic: rw [IsSemisimple.semisimple]
state_before: R : Type u
L : Type v
inst✝³ : CommRing R
inst✝² : LieRing L
inst✝¹ : LieAlgebra R L
inst✝ : IsSemisimple R L
⊢ IsLieAbelian { x // x ∈ ↑(radical R L) }

tactic: exact isLieAbelian_bot R L
state_before: R : Type u
L : Type v
inst✝³ : CommRing R
inst✝² : LieRing L
inst✝¹ : LieAlgebra R L
inst✝ : IsSemisimple R L
⊢ IsLieAbelian { x // x ∈ ↑⊥ }
Theorem: MeasureTheory.restrict_withDensity
File: Mathlib/MeasureTheory/Integral/Lebesgue.lean

tactic: ext1 t ht
state_before: α : Type u_1
β : Type ?u.1771367
γ : Type ?u.1771370
δ : Type ?u.1771373
m : MeasurableSpace α
μ ν : Measure α
s : Set α
hs : MeasurableSet s
f : α → ℝ≥0∞
⊢ Measure.restrict (withDensity μ f) s = withDensity (Measure.restrict μ s) f

tactic: rw [restrict_apply ht, withDensity_apply _ ht, withDensity_apply _ (ht.inter hs),
  restrict_restrict ht]
state_before: case h
α : Type u_1
β : Type ?u.1771367
γ : Type ?u.1771370
δ : Type ?u.1771373
m : MeasurableSpace α
μ ν : Measure α
s : Set α
hs : MeasurableSet s
f : α → ℝ≥0∞
t : Set α
ht : MeasurableSet t
⊢ ↑↑(Measure.restrict (withDensity μ f) s) t = ↑↑(withDensity (Measure.restrict μ s) f) t
Theorem: exists_square_le
File: Mathlib/Algebra/Order/Monoid/Lemmas.lean

tactic: by_cases h:a < 1
state_before: α : Type u_1
β : Type ?u.59597
inst✝² : MulOneClass α
inst✝¹ : LinearOrder α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
a : α
⊢ ∃ b, b * b ≤ a

tactic: use a
state_before: case pos
α : Type u_1
β : Type ?u.59597
inst✝² : MulOneClass α
inst✝¹ : LinearOrder α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
a : α
h : a < 1
⊢ ∃ b, b * b ≤ a

tactic: have : a * a < a * 1 := mul_lt_mul_left' h a
state_before: case pos
α : Type u_1
β : Type ?u.59597
inst✝² : MulOneClass α
inst✝¹ : LinearOrder α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
a : α
h : a < 1
⊢ a * a ≤ a

tactic: rw [mul_one] at this
state_before: case pos
α : Type u_1
β : Type ?u.59597
inst✝² : MulOneClass α
inst✝¹ : LinearOrder α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
a : α
h : a < 1
this : a * a < a * 1
⊢ a * a ≤ a

tactic: exact le_of_lt this
state_before: case pos
α : Type u_1
β : Type ?u.59597
inst✝² : MulOneClass α
inst✝¹ : LinearOrder α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
a : α
h : a < 1
this : a * a < a
⊢ a * a ≤ a

tactic: use 1
state_before: case neg
α : Type u_1
β : Type ?u.59597
inst✝² : MulOneClass α
inst✝¹ : LinearOrder α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
a : α
h : ¬a < 1
⊢ ∃ b, b * b ≤ a

tactic: push_neg  at h
state_before: case neg
α : Type u_1
β : Type ?u.59597
inst✝² : MulOneClass α
inst✝¹ : LinearOrder α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
a : α
h : ¬a < 1
⊢ 1 * 1 ≤ a

tactic: rwa [mul_one]
state_before: case neg
α : Type u_1
β : Type ?u.59597
inst✝² : MulOneClass α
inst✝¹ : LinearOrder α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
a : α
h : 1 ≤ a
⊢ 1 * 1 ≤ a
Theorem: QuaternionGroup.orderOf_a
File: Mathlib/GroupTheory/SpecificGroups/Quaternion.lean

tactic: conv_lhs => rw [← ZMod.nat_cast_zmod_val i]
state_before: n : ℕ
inst✝ : NeZero n
i : ZMod (2 * n)
⊢ orderOf (a i) = 2 * n / Nat.gcd (2 * n) (ZMod.val i)

tactic: rw [← a_one_pow, orderOf_pow, orderOf_a_one]
state_before: n : ℕ
inst✝ : NeZero n
i : ZMod (2 * n)
⊢ orderOf (a ↑(ZMod.val i)) = 2 * n / Nat.gcd (2 * n) (ZMod.val i)
Theorem: Function.Antiperiodic.neg_eq
File: Mathlib/Algebra/Periodic.lean

tactic: simpa only [zero_add] using h.neg 0
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.157720
f g : α → β
c c₁ c₂ x : α
inst✝¹ : AddGroup α
inst✝ : InvolutiveNeg β
h : Antiperiodic f c
⊢ f (-c) = -f 0
Theorem: Nat.div_zero
File: Std/Data/Nat/Lemmas.lean

tactic: rw [div_eq]
state_before: n : Nat
⊢ n / 0 = 0

tactic: simp [Nat.lt_irrefl]
state_before: n : Nat
⊢ (if 0 < 0 ∧ 0 ≤ n then (n - 0) / 0 + 1 else 0) = 0
Theorem: Convex.mem_Icc
File: Mathlib/Analysis/Convex/Segment.lean

tactic: rw [← segment_eq_Icc h]
state_before: 𝕜 : Type u_1
E : Type ?u.291676
F : Type ?u.291679
G : Type ?u.291682
ι : Type ?u.291685
π : ι → Type ?u.291690
inst✝ : LinearOrderedField 𝕜
x y z : 𝕜
h : x ≤ y
⊢ z ∈ Icc x y ↔ ∃ a b, 0 ≤ a ∧ 0 ≤ b ∧ a + b = 1 ∧ a * x + b * y = z

tactic: simp_rw [← exists_prop]
state_before: 𝕜 : Type u_1
E : Type ?u.291676
F : Type ?u.291679
G : Type ?u.291682
ι : Type ?u.291685
π : ι → Type ?u.291690
inst✝ : LinearOrderedField 𝕜
x y z : 𝕜
h : x ≤ y
⊢ z ∈ [x-[𝕜]y] ↔ ∃ a b, 0 ≤ a ∧ 0 ≤ b ∧ a + b = 1 ∧ a * x + b * y = z

tactic: rfl
state_before: 𝕜 : Type u_1
E : Type ?u.291676
F : Type ?u.291679
G : Type ?u.291682
ι : Type ?u.291685
π : ι → Type ?u.291690
inst✝ : LinearOrderedField 𝕜
x y z : 𝕜
h : x ≤ y
⊢ z ∈ [x-[𝕜]y] ↔ ∃ a b _h _h _h, a * x + b * y = z
Theorem: TopologicalSpace.IsTopologicalBasis.prod
File: Mathlib/Topology/Bases.lean

tactic: refine' isTopologicalBasis_of_open_of_nhds _ _
state_before: α : Type u
t : TopologicalSpace α
β : Type u_1
inst✝ : TopologicalSpace β
B₁ : Set (Set α)
B₂ : Set (Set β)
h₁ : IsTopologicalBasis B₁
h₂ : IsTopologicalBasis B₂
⊢ IsTopologicalBasis (image2 (fun x x_1 => x ×ˢ x_1) B₁ B₂)

tactic: rintro _ ⟨u₁, u₂, hu₁, hu₂, rfl⟩
state_before: case refine'_1
α : Type u
t : TopologicalSpace α
β : Type u_1
inst✝ : TopologicalSpace β
B₁ : Set (Set α)
B₂ : Set (Set β)
h₁ : IsTopologicalBasis B₁
h₂ : IsTopologicalBasis B₂
⊢ ∀ (u : Set (α × β)), u ∈ image2 (fun x x_1 => x ×ˢ x_1) B₁ B₂ → IsOpen u

tactic: exact (h₁.isOpen hu₁).prod (h₂.isOpen hu₂)
state_before: case refine'_1.intro.intro.intro.intro
α : Type u
t : TopologicalSpace α
β : Type u_1
inst✝ : TopologicalSpace β
B₁ : Set (Set α)
B₂ : Set (Set β)
h₁ : IsTopologicalBasis B₁
h₂ : IsTopologicalBasis B₂
u₁ : Set α
u₂ : Set β
hu₁ : u₁ ∈ B₁
hu₂ : u₂ ∈ B₂
⊢ IsOpen ((fun x x_1 => x ×ˢ x_1) u₁ u₂)

tactic: rintro ⟨a, b⟩ u hu uo
state_before: case refine'_2
α : Type u
t : TopologicalSpace α
β : Type u_1
inst✝ : TopologicalSpace β
B₁ : Set (Set α)
B₂ : Set (Set β)
h₁ : IsTopologicalBasis B₁
h₂ : IsTopologicalBasis B₂
⊢ ∀ (a : α × β) (u : Set (α × β)), a ∈ u → IsOpen u → ∃ v, v ∈ image2 (fun x x_1 => x ×ˢ x_1) B₁ B₂ ∧ a ∈ v ∧ v ⊆ u

tactic: rcases(h₁.nhds_hasBasis.prod_nhds h₂.nhds_hasBasis).mem_iff.1 (IsOpen.mem_nhds uo hu) with
  ⟨⟨s, t⟩, ⟨⟨hs, ha⟩, ht, hb⟩, hu⟩
state_before: case refine'_2.mk
α : Type u
t : TopologicalSpace α
β : Type u_1
inst✝ : TopologicalSpace β
B₁ : Set (Set α)
B₂ : Set (Set β)
h₁ : IsTopologicalBasis B₁
h₂ : IsTopologicalBasis B₂
a : α
b : β
u : Set (α × β)
hu : (a, b) ∈ u
uo : IsOpen u
⊢ ∃ v, v ∈ image2 (fun x x_1 => x ×ˢ x_1) B₁ B₂ ∧ (a, b) ∈ v ∧ v ⊆ u

tactic: exact ⟨s ×ˢ t, mem_image2_of_mem hs ht, ⟨ha, hb⟩, hu⟩
state_before: case refine'_2.mk.intro.mk.intro.intro.intro.intro
α : Type u
t✝ : TopologicalSpace α
β : Type u_1
inst✝ : TopologicalSpace β
B₁ : Set (Set α)
B₂ : Set (Set β)
h₁ : IsTopologicalBasis B₁
h₂ : IsTopologicalBasis B₂
a : α
b : β
u : Set (α × β)
hu✝ : (a, b) ∈ u
uo : IsOpen u
s : Set α
t : Set β
hu : (s, t).fst ×ˢ (s, t).snd ⊆ u
hs : (s, t).fst ∈ B₁
ha : a ∈ (s, t).fst
ht : (s, t).snd ∈ B₂
hb : b ∈ (s, t).snd
⊢ ∃ v, v ∈ image2 (fun x x_1 => x ×ˢ x_1) B₁ B₂ ∧ (a, b) ∈ v ∧ v ⊆ u
Theorem: IsOfFinOrder.finite_zpowers
File: Mathlib/Data/ZMod/Quotient.lean

tactic: rw [← orderOf_pos_iff, order_eq_card_zpowers'] at h
state_before: n : ℕ
A : Type ?u.324794
R : Type ?u.324797
inst✝² : AddGroup A
inst✝¹ : Ring R
α : Type u_1
inst✝ : Group α
a : α
h : IsOfFinOrder a
⊢ Finite { x // x ∈ zpowers a }

tactic: exact Nat.finite_of_card_ne_zero h.ne.symm
state_before: n : ℕ
A : Type ?u.324794
R : Type ?u.324797
inst✝² : AddGroup A
inst✝¹ : Ring R
α : Type u_1
inst✝ : Group α
a : α
h : 0 < Nat.card { x // x ∈ zpowers a }
⊢ Finite { x // x ∈ zpowers a }
Theorem: Set.mulIndicator_mulIndicator
File: Mathlib/Algebra/IndicatorFunction.lean

tactic: simp only [mulIndicator]
state_before: α : Type u_1
β : Type ?u.12298
ι : Type ?u.12301
M : Type u_2
N : Type ?u.12307
inst✝¹ : One M
inst✝ : One N
s✝ t✝ : Set α
f✝ g : α → M
a : α
s t : Set α
f : α → M
x : α
⊢ mulIndicator s (mulIndicator t f) x = mulIndicator (s ∩ t) f x

tactic: split_ifs
state_before: α : Type u_1
β : Type ?u.12298
ι : Type ?u.12301
M : Type u_2
N : Type ?u.12307
inst✝¹ : One M
inst✝ : One N
s✝ t✝ : Set α
f✝ g : α → M
a : α
s t : Set α
f : α → M
x : α
⊢ (if x ∈ s then if x ∈ t then f x else 1 else 1) = if x ∈ s ∩ t then f x else 1

tactic: repeat' simp_all (config := { contextual := true })
state_before: case inl.inl.inl
α : Type u_1
β : Type ?u.12298
ι : Type ?u.12301
M : Type u_2
N : Type ?u.12307
inst✝¹ : One M
inst✝ : One N
s✝ t✝ : Set α
f✝ g : α → M
a : α
s t : Set α
f : α → M
x : α
h✝² : x ∈ s
h✝¹ : x ∈ t
h✝ : x ∈ s ∩ t
⊢ f x = f x

case inl.inl.inr
α : Type u_1
β : Type ?u.12298
ι : Type ?u.12301
M : Type u_2
N : Type ?u.12307
inst✝¹ : One M
inst✝ : One N
s✝ t✝ : Set α
f✝ g : α → M
a : α
s t : Set α
f : α → M
x : α
h✝² : x ∈ s
h✝¹ : x ∈ t
h✝ : ¬x ∈ s ∩ t
⊢ f x = 1

case inl.inr.inl
α : Type u_1
β : Type ?u.12298
ι : Type ?u.12301
M : Type u_2
N : Type ?u.12307
inst✝¹ : One M
inst✝ : One N
s✝ t✝ : Set α
f✝ g : α → M
a : α
s t : Set α
f : α → M
x : α
h✝² : x ∈ s
h✝¹ : ¬x ∈ t
h✝ : x ∈ s ∩ t
⊢ 1 = f x

case inl.inr.inr
α : Type u_1
β : Type ?u.12298
ι : Type ?u.12301
M : Type u_2
N : Type ?u.12307
inst✝¹ : One M
inst✝ : One N
s✝ t✝ : Set α
f✝ g : α → M
a : α
s t : Set α
f : α → M
x : α
h✝² : x ∈ s
h✝¹ : ¬x ∈ t
h✝ : ¬x ∈ s ∩ t
⊢ 1 = 1

case inr.inl
α : Type u_1
β : Type ?u.12298
ι : Type ?u.12301
M : Type u_2
N : Type ?u.12307
inst✝¹ : One M
inst✝ : One N
s✝ t✝ : Set α
f✝ g : α → M
a : α
s t : Set α
f : α → M
x : α
h✝¹ : ¬x ∈ s
h✝ : x ∈ s ∩ t
⊢ 1 = f x

case inr.inr
α : Type u_1
β : Type ?u.12298
ι : Type ?u.12301
M : Type u_2
N : Type ?u.12307
inst✝¹ : One M
inst✝ : One N
s✝ t✝ : Set α
f✝ g : α → M
a : α
s t : Set α
f : α → M
x : α
h✝¹ : ¬x ∈ s
h✝ : ¬x ∈ s ∩ t
⊢ 1 = 1

tactic: simp_all (config := { contextual := true })
state_before: case inr.inr
α : Type u_1
β : Type ?u.12298
ι : Type ?u.12301
M : Type u_2
N : Type ?u.12307
inst✝¹ : One M
inst✝ : One N
s✝ t✝ : Set α
f✝ g : α → M
a : α
s t : Set α
f : α → M
x : α
h✝¹ : ¬x ∈ s
h✝ : ¬x ∈ s ∩ t
⊢ 1 = 1
Theorem: Nat.succ_descFactorial
File: Mathlib/Data/Nat/Factorial/Basic.lean

tactic: rw [tsub_zero, descFactorial_zero, descFactorial_zero]
state_before: n : ℕ
⊢ (n + 1 - 0) * descFactorial (n + 1) 0 = (n + 1) * descFactorial n 0

tactic: rw [descFactorial, succ_descFactorial _ k, descFactorial_succ, succ_sub_succ, mul_left_comm]
state_before: n k : ℕ
⊢ (n + 1 - (k + 1)) * descFactorial (n + 1) (k + 1) = (n + 1) * descFactorial n (k + 1)
Theorem: MeasurableEquiv.map_measurableEquiv_injective
File: Mathlib/MeasureTheory/Measure/MeasureSpace.lean

tactic: intro μ₁ μ₂ hμ
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.2439120
δ : Type ?u.2439123
ι : Type ?u.2439126
R : Type ?u.2439129
R' : Type ?u.2439132
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSpace β
μ : MeasureTheory.Measure α
ν : MeasureTheory.Measure β
e : α ≃ᵐ β
⊢ Injective (Measure.map ↑e)

tactic: apply_fun Measure.map e.symm  at hμ
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.2439120
δ : Type ?u.2439123
ι : Type ?u.2439126
R : Type ?u.2439129
R' : Type ?u.2439132
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSpace β
μ : MeasureTheory.Measure α
ν : MeasureTheory.Measure β
e : α ≃ᵐ β
μ₁ μ₂ : MeasureTheory.Measure α
hμ : Measure.map (↑e) μ₁ = Measure.map (↑e) μ₂
⊢ μ₁ = μ₂

tactic: simpa [map_symm_map e] using hμ
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.2439120
δ : Type ?u.2439123
ι : Type ?u.2439126
R : Type ?u.2439129
R' : Type ?u.2439132
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSpace β
μ : MeasureTheory.Measure α
ν : MeasureTheory.Measure β
e : α ≃ᵐ β
μ₁ μ₂ : MeasureTheory.Measure α
hμ : Measure.map (↑(symm e)) (Measure.map (↑e) μ₁) = Measure.map (↑(symm e)) (Measure.map (↑e) μ₂)
⊢ μ₁ = μ₂
Theorem: Cardinal.mul_lt_aleph0_iff_of_ne_zero
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: simp [mul_lt_aleph0_iff, ha, hb]
state_before: α β : Type u
a b : Cardinal
ha : a ≠ 0
hb : b ≠ 0
⊢ a * b < ℵ₀ ↔ a < ℵ₀ ∧ b < ℵ₀
Theorem: map_invOf
File: Mathlib/Algebra/Invertible.lean

tactic: subst h
state_before: α : Type u
R : Type u_1
S : Type u_2
F : Type u_3
inst✝³ : MulOneClass R
inst✝² : Monoid S
inst✝¹ : MonoidHomClass F R S
f : F
r : R
inst✝ : Invertible r
ifr : Invertible (↑f r)
h : ifr = Invertible.map f r
⊢ ↑f ⅟r = ⅟(↑f r)

tactic: rfl
state_before: α : Type u
R : Type u_1
S : Type u_2
F : Type u_3
inst✝³ : MulOneClass R
inst✝² : Monoid S
inst✝¹ : MonoidHomClass F R S
f : F
r : R
inst✝ : Invertible r
⊢ ↑f ⅟r = ⅟(↑f r)
Theorem: Stream'.Seq.coinduction2
File: Mathlib/Data/Seq/Seq.lean

tactic: refine' eq_of_bisim (fun s1 s2 => ∃ s, s1 = f s ∧ s2 = g s) _ ⟨s, rfl, rfl⟩
state_before: α : Type u
β : Type v
γ : Type w
s : Seq α
f g : Seq α → Seq β
H : ∀ (s : Seq α), BisimO (fun s1 s2 => ∃ s, s1 = f s ∧ s2 = g s) (destruct (f s)) (destruct (g s))
⊢ f s = g s

tactic: intro s1 s2 h
state_before: α : Type u
β : Type v
γ : Type w
s : Seq α
f g : Seq α → Seq β
H : ∀ (s : Seq α), BisimO (fun s1 s2 => ∃ s, s1 = f s ∧ s2 = g s) (destruct (f s)) (destruct (g s))
⊢ IsBisimulation fun s1 s2 => ∃ s, s1 = f s ∧ s2 = g s

tactic: rcases h with ⟨s, h1, h2⟩
state_before: α : Type u
β : Type v
γ : Type w
s : Seq α
f g : Seq α → Seq β
H : ∀ (s : Seq α), BisimO (fun s1 s2 => ∃ s, s1 = f s ∧ s2 = g s) (destruct (f s)) (destruct (g s))
s1 s2 : Seq β
h : ∃ s, s1 = f s ∧ s2 = g s
⊢ BisimO (fun s1 s2 => ∃ s, s1 = f s ∧ s2 = g s) (destruct s1) (destruct s2)

tactic: rw [h1, h2]
state_before: case intro.intro
α : Type u
β : Type v
γ : Type w
s✝ : Seq α
f g : Seq α → Seq β
H : ∀ (s : Seq α), BisimO (fun s1 s2 => ∃ s, s1 = f s ∧ s2 = g s) (destruct (f s)) (destruct (g s))
s1 s2 : Seq β
s : Seq α
h1 : s1 = f s
h2 : s2 = g s
⊢ BisimO (fun s1 s2 => ∃ s, s1 = f s ∧ s2 = g s) (destruct s1) (destruct s2)

tactic: apply H
state_before: case intro.intro
α : Type u
β : Type v
γ : Type w
s✝ : Seq α
f g : Seq α → Seq β
H : ∀ (s : Seq α), BisimO (fun s1 s2 => ∃ s, s1 = f s ∧ s2 = g s) (destruct (f s)) (destruct (g s))
s1 s2 : Seq β
s : Seq α
h1 : s1 = f s
h2 : s2 = g s
⊢ BisimO (fun s1 s2 => ∃ s, s1 = f s ∧ s2 = g s) (destruct (f s)) (destruct (g s))
Theorem: IsROrC.ofReal_mul_re
File: Mathlib/Data/IsROrC/Basic.lean

tactic: simp only [mul_re, ofReal_im, zero_mul, ofReal_re, sub_zero]
state_before: K : Type u_1
E : Type ?u.1980449
inst✝ : IsROrC K
r : ℝ
z : K
⊢ ↑re (↑r * z) = r * ↑re z
Theorem: MeasureTheory.OuterMeasure.restrict_biInf
File: Mathlib/MeasureTheory/Measure/OuterMeasure.lean

tactic: haveI := hI.to_subtype
state_before: α : Type u_2
ι : Type u_1
I : Set ι
hI : Set.Nonempty I
s : Set α
m : ι → OuterMeasure α
⊢ ↑(restrict s) (⨅ (i : ι) (_ : i ∈ I), m i) = ⨅ (i : ι) (_ : i ∈ I), ↑(restrict s) (m i)

tactic: rw [← iInf_subtype'', ← iInf_subtype'']
state_before: α : Type u_2
ι : Type u_1
I : Set ι
hI : Set.Nonempty I
s : Set α
m : ι → OuterMeasure α
this : Nonempty ↑I
⊢ ↑(restrict s) (⨅ (i : ι) (_ : i ∈ I), m i) = ⨅ (i : ι) (_ : i ∈ I), ↑(restrict s) (m i)

tactic: exact restrict_iInf _ _
state_before: α : Type u_2
ι : Type u_1
I : Set ι
hI : Set.Nonempty I
s : Set α
m : ι → OuterMeasure α
this : Nonempty ↑I
⊢ ↑(restrict s) (⨅ (i : ↑I), m ↑i) = ⨅ (i : ↑I), ↑(restrict s) (m ↑i)
Theorem: Submonoid.LocalizationMap.lift_spec_mul
File: Mathlib/GroupTheory/MonoidLocalization.lean

tactic: erw [mul_comm, ← mul_assoc, mul_inv_left hg, mul_comm]
state_before: M : Type u_3
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_1
inst✝ : CommMonoid P
f : LocalizationMap S N
g : M →* P
hg : ∀ (y : { x // x ∈ S }), IsUnit (↑g ↑y)
z : N
w v : (fun x => P) z
⊢ ↑(lift f hg) z * w = v ↔ ↑g (sec f z).fst * w = ↑g ↑(sec f z).snd * v
Theorem: toIcoDiv_apply_left
File: Mathlib/Algebra/Order/ToIntervalMod.lean

tactic: simp [hp]
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a✝ b c : α
n : ℤ
a : α
⊢ a - 0 • p ∈ Set.Ico a (a + p)
Theorem: div_right_comm
File: Mathlib/Algebra/Group/Basic.lean

tactic: simp
state_before: α : Type u_1
β : Type ?u.34821
G : Type ?u.34824
inst✝ : DivisionCommMonoid α
a b c d : α
⊢ a / b / c = a / c / b
Theorem: Polynomial.eq_C_of_degree_le_zero
File: Mathlib/Data/Polynomial/Degree/Definitions.lean

tactic: ext (_ | n)
state_before: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p q : R[X]
ι : Type ?u.469754
h : degree p ≤ 0
⊢ p = ↑C (coeff p 0)

tactic: rw [coeff_C, if_neg (Nat.succ_ne_zero _), coeff_eq_zero_of_degree_lt]
state_before: case a.succ
R : Type u
S : Type v
a b c d : R
n✝ m : ℕ
inst✝ : Semiring R
p q : R[X]
ι : Type ?u.469754
h : degree p ≤ 0
n : ℕ
⊢ coeff p (Nat.succ n) = coeff (↑C (coeff p 0)) (Nat.succ n)

tactic: exact h.trans_lt (WithBot.some_lt_some.2 n.succ_pos)
state_before: case a.succ
R : Type u
S : Type v
a b c d : R
n✝ m : ℕ
inst✝ : Semiring R
p q : R[X]
ι : Type ?u.469754
h : degree p ≤ 0
n : ℕ
⊢ degree p < ↑(Nat.succ n)

tactic: simp
state_before: case a.zero
R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p q : R[X]
ι : Type ?u.469754
h : degree p ≤ 0
⊢ coeff p Nat.zero = coeff (↑C (coeff p 0)) Nat.zero
Theorem: CircleDeg1Lift.commute_add_nat
File: Mathlib/Dynamics/Circle/RotationNumber/TranslationNumber.lean

tactic: simp only [add_comm _ (n : ℝ), f.commute_nat_add n]
state_before: f g : CircleDeg1Lift
n : ℕ
⊢ Function.Commute ↑f fun x => x + ↑n
Theorem: Finset.mem_pimage
File: Mathlib/Data/Finset/PImage.lean

tactic: simp [pimage]
state_before: α : Type u_2
β : Type u_1
inst✝² : DecidableEq β
f g : α →. β
inst✝¹ : (x : α) → Decidable (f x).Dom
inst✝ : (x : α) → Decidable (g x).Dom
s t : Finset α
b : β
⊢ b ∈ pimage f s ↔ ∃ a, a ∈ s ∧ b ∈ f a
Theorem: Nat.coprime_div_gcd_div_gcd
File: Std/Data/Nat/Gcd.lean

tactic: rw [coprime_iff_gcd_eq_one, gcd_div (gcd_dvd_left m n) (gcd_dvd_right m n), Nat.div_self H]
state_before: m n : Nat
H : 0 < gcd m n
⊢ coprime (m / gcd m n) (n / gcd m n)
Theorem: Nat.SOM.Expr.eq_of_toPoly_eq
File: src/lean/Init/Data/Nat/SOM.lean

tactic: have h := congrArg (Poly.denote ctx) (eq_of_beq h)
state_before: ctx : Context
a b : Expr
h : (toPoly a == toPoly b) = true
⊢ denote ctx a = denote ctx b

tactic: simp [toPoly_denote] at h
state_before: ctx : Context
a b : Expr
h✝ : (toPoly a == toPoly b) = true
h : Poly.denote ctx (toPoly a) = Poly.denote ctx (toPoly b)
⊢ denote ctx a = denote ctx b

tactic: assumption
state_before: ctx : Context
a b : Expr
h✝ : (toPoly a == toPoly b) = true
h : denote ctx a = denote ctx b
⊢ denote ctx a = denote ctx b
Theorem: Matrix.mulVecLin_one
File: Mathlib/LinearAlgebra/Matrix/ToLin.lean

tactic: ext
state_before: R : Type u_2
inst✝² : CommSemiring R
k : Type ?u.293203
l : Type ?u.293206
m : Type ?u.293209
n : Type u_1
inst✝¹ : Fintype n
inst✝ : DecidableEq n
⊢ mulVecLin 1 = LinearMap.id

tactic: simp [Matrix.one_apply, Pi.single_apply]
state_before: case h.h.h
R : Type u_2
inst✝² : CommSemiring R
k : Type ?u.293203
l : Type ?u.293206
m : Type ?u.293209
n : Type u_1
inst✝¹ : Fintype n
inst✝ : DecidableEq n
i✝ x✝ : n
⊢ ↑(comp (mulVecLin 1) (single i✝)) 1 x✝ = ↑(comp LinearMap.id (single i✝)) 1 x✝