tasksource/leandojo huggingface dataset:
Theorem: Stream'.WSeq.LiftRel.swap_lem
File: Mathlib/Data/Seq/WSeq.lean

tactic: refine' ⟨swap (LiftRel R), h, fun {s t} (h : LiftRel R t s) => _⟩
state_before: α : Type u
β : Type v
γ : Type w
R : α → β → Prop
s1 : WSeq α
s2 : WSeq β
h : LiftRel R s1 s2
⊢ LiftRel (swap R) s2 s1

tactic: rw [← LiftRelO.swap, Computation.LiftRel.swap]
state_before: α : Type u
β : Type v
γ : Type w
R : α → β → Prop
s1 : WSeq α
s2 : WSeq β
h✝ : LiftRel R s1 s2
s : WSeq β
t : WSeq α
h : LiftRel R t s
⊢ Computation.LiftRel (LiftRelO (swap R) (swap (LiftRel R))) (destruct s) (destruct t)

tactic: apply liftRel_destruct h
state_before: α : Type u
β : Type v
γ : Type w
R : α → β → Prop
s1 : WSeq α
s2 : WSeq β
h✝ : LiftRel R s1 s2
s : WSeq β
t : WSeq α
h : LiftRel R t s
⊢ Computation.LiftRel (LiftRelO R (LiftRel R)) (destruct t) (destruct s)
Theorem: ChainClosure.isChain
File: Mathlib/Order/Chain.lean

tactic: induction hc
state_before: α : Type u_1
β : Type ?u.13781
r : α → α → Prop
c c₁ c₂ c₃ s t : Set α
a b x y : α
hc : ChainClosure r c
⊢ IsChain r c

tactic: case succ c _ h => exact h.succ
state_before: case succ
α : Type u_1
β : Type ?u.13781
r : α → α → Prop
c c₁ c₂ c₃ s t : Set α
a b x y : α
s✝ : Set α
a✝ : ChainClosure r s✝
a_ih✝ : IsChain r s✝
⊢ IsChain r (SuccChain r s✝)

case union
α : Type u_1
β : Type ?u.13781
r : α → α → Prop
c c₁ c₂ c₃ s t : Set α
a b x y : α
s✝ : Set (Set α)
a✝ : ∀ (a : Set α), a ∈ s✝ → ChainClosure r a
a_ih✝ : ∀ (a : Set α), a ∈ s✝ → IsChain r a
⊢ IsChain r (⋃₀ s✝)

tactic: case union s hs h =>
  exact fun c₁ ⟨t₁, ht₁, (hc₁ : c₁ ∈ t₁)⟩ c₂ ⟨t₂, ht₂, (hc₂ : c₂ ∈ t₂)⟩ hneq =>
    ((hs _ ht₁).total <| hs _ ht₂).elim (fun ht => h t₂ ht₂ (ht hc₁) hc₂ hneq) fun ht =>
      h t₁ ht₁ hc₁ (ht hc₂) hneq
state_before: case union
α : Type u_1
β : Type ?u.13781
r : α → α → Prop
c c₁ c₂ c₃ s t : Set α
a b x y : α
s✝ : Set (Set α)
a✝ : ∀ (a : Set α), a ∈ s✝ → ChainClosure r a
a_ih✝ : ∀ (a : Set α), a ∈ s✝ → IsChain r a
⊢ IsChain r (⋃₀ s✝)

tactic: exact h.succ
state_before: α : Type u_1
β : Type ?u.13781
r : α → α → Prop
c✝ c₁ c₂ c₃ s t : Set α
a b x y : α
c : Set α
a✝ : ChainClosure r c
h : IsChain r c
⊢ IsChain r (SuccChain r c)

tactic: exact fun c₁ ⟨t₁, ht₁, (hc₁ : c₁ ∈ t₁)⟩ c₂ ⟨t₂, ht₂, (hc₂ : c₂ ∈ t₂)⟩ hneq =>
  ((hs _ ht₁).total <| hs _ ht₂).elim (fun ht => h t₂ ht₂ (ht hc₁) hc₂ hneq) fun ht =>
    h t₁ ht₁ hc₁ (ht hc₂) hneq
state_before: α : Type u_1
β : Type ?u.13781
r : α → α → Prop
c c₁ c₂ c₃ s✝ t : Set α
a b x y : α
s : Set (Set α)
hs : ∀ (a : Set α), a ∈ s → ChainClosure r a
h : ∀ (a : Set α), a ∈ s → IsChain r a
⊢ IsChain r (⋃₀ s)
Theorem: RegularExpression.map_id
File: Mathlib/Computability/RegularExpressions.lean

tactic: simp_rw [map, map_id]
state_before: α : Type u_1
β : Type ?u.135359
γ : Type ?u.135362
dec : DecidableEq α
a b : α
R S : RegularExpression α
⊢ map id (R + S) = R + S

tactic: simp_rw [map, map_id]
state_before: α : Type u_1
β : Type ?u.135359
γ : Type ?u.135362
dec : DecidableEq α
a b : α
R S : RegularExpression α
⊢ map id (R * S) = R * S

tactic: simp_rw [map, map_id]
state_before: α : Type u_1
β : Type ?u.135359
γ : Type ?u.135362
dec : DecidableEq α
a b : α
R : RegularExpression α
⊢ map id (star R) = star R
Theorem: Finset.card_Ioo_finset
File: Mathlib/Data/Finset/Interval.lean

tactic: rw [card_Ioo_eq_card_Icc_sub_two, card_Icc_finset h]
state_before: α : Type u_1
inst✝ : DecidableEq α
s t : Finset α
h : s ⊆ t
⊢ card (Ioo s t) = 2 ^ (card t - card s) - 2
Theorem: uniformInducing_id
File: Mathlib/Topology/UniformSpace/UniformEmbedding.lean

tactic: rw [← Prod.map_def, Prod.map_id, comap_id]
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
⊢ comap (fun x => (id x.fst, id x.snd)) (𝓤 α) = 𝓤 α
Theorem: LocalHomeomorph.to_openEmbedding
File: Mathlib/Topology/LocalHomeomorph.lean

tactic: apply openEmbedding_of_continuous_injective_open
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.108605
δ : Type ?u.108608
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
e : LocalHomeomorph α β
e' : LocalHomeomorph β γ
h : e.source = univ
⊢ OpenEmbedding ↑e

tactic: apply continuous_iff_continuousOn_univ.mpr
state_before: case h₁
α : Type u_1
β : Type u_2
γ : Type ?u.108605
δ : Type ?u.108608
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
e : LocalHomeomorph α β
e' : LocalHomeomorph β γ
h : e.source = univ
⊢ Continuous ↑e

tactic: rw [← h]
state_before: case h₁
α : Type u_1
β : Type u_2
γ : Type ?u.108605
δ : Type ?u.108608
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
e : LocalHomeomorph α β
e' : LocalHomeomorph β γ
h : e.source = univ
⊢ ContinuousOn (↑e) univ

tactic: exact e.continuousOn
state_before: case h₁
α : Type u_1
β : Type u_2
γ : Type ?u.108605
δ : Type ?u.108608
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
e : LocalHomeomorph α β
e' : LocalHomeomorph β γ
h : e.source = univ
⊢ ContinuousOn (↑e) e.source

tactic: apply Set.injective_iff_injOn_univ.mpr
state_before: case h₂
α : Type u_1
β : Type u_2
γ : Type ?u.108605
δ : Type ?u.108608
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
e : LocalHomeomorph α β
e' : LocalHomeomorph β γ
h : e.source = univ
⊢ Injective ↑e

tactic: rw [← h]
state_before: case h₂
α : Type u_1
β : Type u_2
γ : Type ?u.108605
δ : Type ?u.108608
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
e : LocalHomeomorph α β
e' : LocalHomeomorph β γ
h : e.source = univ
⊢ InjOn (↑e) univ

tactic: exact e.injOn
state_before: case h₂
α : Type u_1
β : Type u_2
γ : Type ?u.108605
δ : Type ?u.108608
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
e : LocalHomeomorph α β
e' : LocalHomeomorph β γ
h : e.source = univ
⊢ InjOn (↑e) e.source

tactic: intro U hU
state_before: case h₃
α : Type u_1
β : Type u_2
γ : Type ?u.108605
δ : Type ?u.108608
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
e : LocalHomeomorph α β
e' : LocalHomeomorph β γ
h : e.source = univ
⊢ IsOpenMap ↑e

tactic: simpa only [h, subset_univ, mfld_simps] using e.image_open_of_open hU
state_before: case h₃
α : Type u_1
β : Type u_2
γ : Type ?u.108605
δ : Type ?u.108608
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
e : LocalHomeomorph α β
e' : LocalHomeomorph β γ
h : e.source = univ
U : Set α
hU : IsOpen U
⊢ IsOpen (↑e '' U)
Theorem: Filter.HasBasis.eq_generate
File: Mathlib/Order/Filter/Bases.lean

tactic: rw [← h.isBasis.filter_eq_generate, h.filter_eq]
state_before: α : Type u_1
β : Type ?u.15440
γ : Type ?u.15443
ι : Sort u_2
ι' : Sort ?u.15449
l l' : Filter α
p : ι → Prop
s : ι → Set α
t : Set α
i : ι
p' : ι' → Prop
s' : ι' → Set α
i' : ι'
h : HasBasis l p s
⊢ l = generate {U | ∃ i, p i ∧ s i = U}
Theorem: CategoryTheory.LocallyCoverDense.pushforward_cover_iff_cover_pullback
File: Mathlib/CategoryTheory/Sites/InducedTopology.lean

tactic: constructor
state_before: C : Type u_2
inst✝⁴ : Category C
D : Type u_4
inst✝³ : Category D
G : C ⥤ D
J : GrothendieckTopology C
K : GrothendieckTopology D
A : Type v
inst✝² : Category A
inst✝¹ : Full G
inst✝ : Faithful G
Hld : LocallyCoverDense K G
X : C
S : Sieve X
⊢ GrothendieckTopology.sieves K (G.obj X) (Sieve.functorPushforward G S) ↔ ∃ T, Sieve.functorPullback G ↑T = S

tactic: intro hS
state_before: case mp
C : Type u_2
inst✝⁴ : Category C
D : Type u_4
inst✝³ : Category D
G : C ⥤ D
J : GrothendieckTopology C
K : GrothendieckTopology D
A : Type v
inst✝² : Category A
inst✝¹ : Full G
inst✝ : Faithful G
Hld : LocallyCoverDense K G
X : C
S : Sieve X
⊢ GrothendieckTopology.sieves K (G.obj X) (Sieve.functorPushforward G S) → ∃ T, Sieve.functorPullback G ↑T = S

tactic: exact ⟨⟨_, hS⟩, (Sieve.fullyFaithfulFunctorGaloisCoinsertion G X).u_l_eq S⟩
state_before: case mp
C : Type u_2
inst✝⁴ : Category C
D : Type u_4
inst✝³ : Category D
G : C ⥤ D
J : GrothendieckTopology C
K : GrothendieckTopology D
A : Type v
inst✝² : Category A
inst✝¹ : Full G
inst✝ : Faithful G
Hld : LocallyCoverDense K G
X : C
S : Sieve X
hS : GrothendieckTopology.sieves K (G.obj X) (Sieve.functorPushforward G S)
⊢ ∃ T, Sieve.functorPullback G ↑T = S

tactic: rintro ⟨T, rfl⟩
state_before: case mpr
C : Type u_2
inst✝⁴ : Category C
D : Type u_4
inst✝³ : Category D
G : C ⥤ D
J : GrothendieckTopology C
K : GrothendieckTopology D
A : Type v
inst✝² : Category A
inst✝¹ : Full G
inst✝ : Faithful G
Hld : LocallyCoverDense K G
X : C
S : Sieve X
⊢ (∃ T, Sieve.functorPullback G ↑T = S) → GrothendieckTopology.sieves K (G.obj X) (Sieve.functorPushforward G S)

tactic: exact Hld T
state_before: case mpr.intro
C : Type u_2
inst✝⁴ : Category C
D : Type u_4
inst✝³ : Category D
G : C ⥤ D
J : GrothendieckTopology C
K : GrothendieckTopology D
A : Type v
inst✝² : Category A
inst✝¹ : Full G
inst✝ : Faithful G
Hld : LocallyCoverDense K G
X : C
T : ↑(GrothendieckTopology.sieves K (G.obj X))
⊢ GrothendieckTopology.sieves K (G.obj X) (Sieve.functorPushforward G (Sieve.functorPullback G ↑T))
Theorem: Submodule.finset_inf_coe
File: Mathlib/Algebra/Module/Submodule/Lattice.lean

tactic: letI := Classical.decEq ι
state_before: R : Type u_2
S : Type ?u.133565
M : Type u_3
inst✝⁶ : Semiring R
inst✝⁵ : Semiring S
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
inst✝² : Module S M
inst✝¹ : SMul S R
inst✝ : IsScalarTower S R M
p✝ q : Submodule R M
ι : Type u_1
s : Finset ι
p : ι → Submodule R M
⊢ ↑(Finset.inf s p) = ⋂ (i : ι) (_ : i ∈ s), ↑(p i)

tactic: refine' s.induction_on _ fun i s _ ih ↦ _
state_before: R : Type u_2
S : Type ?u.133565
M : Type u_3
inst✝⁶ : Semiring R
inst✝⁵ : Semiring S
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
inst✝² : Module S M
inst✝¹ : SMul S R
inst✝ : IsScalarTower S R M
p✝ q : Submodule R M
ι : Type u_1
s : Finset ι
p : ι → Submodule R M
this : DecidableEq ι := Classical.decEq ι
⊢ ↑(Finset.inf s p) = ⋂ (i : ι) (_ : i ∈ s), ↑(p i)

tactic: simp
state_before: case refine'_1
R : Type u_2
S : Type ?u.133565
M : Type u_3
inst✝⁶ : Semiring R
inst✝⁵ : Semiring S
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
inst✝² : Module S M
inst✝¹ : SMul S R
inst✝ : IsScalarTower S R M
p✝ q : Submodule R M
ι : Type u_1
s : Finset ι
p : ι → Submodule R M
this : DecidableEq ι := Classical.decEq ι
⊢ ↑(Finset.inf ∅ p) = ⋂ (i : ι) (_ : i ∈ ∅), ↑(p i)

tactic: rw [Finset.inf_insert, inf_coe, ih]
state_before: case refine'_2
R : Type u_2
S : Type ?u.133565
M : Type u_3
inst✝⁶ : Semiring R
inst✝⁵ : Semiring S
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
inst✝² : Module S M
inst✝¹ : SMul S R
inst✝ : IsScalarTower S R M
p✝ q : Submodule R M
ι : Type u_1
s✝ : Finset ι
p : ι → Submodule R M
this : DecidableEq ι := Classical.decEq ι
i : ι
s : Finset ι
x✝ : ¬i ∈ s
ih : ↑(Finset.inf s p) = ⋂ (i : ι) (_ : i ∈ s), ↑(p i)
⊢ ↑(Finset.inf (insert i s) p) = ⋂ (i_1 : ι) (_ : i_1 ∈ insert i s), ↑(p i_1)

tactic: simp
state_before: case refine'_2
R : Type u_2
S : Type ?u.133565
M : Type u_3
inst✝⁶ : Semiring R
inst✝⁵ : Semiring S
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
inst✝² : Module S M
inst✝¹ : SMul S R
inst✝ : IsScalarTower S R M
p✝ q : Submodule R M
ι : Type u_1
s✝ : Finset ι
p : ι → Submodule R M
this : DecidableEq ι := Classical.decEq ι
i : ι
s : Finset ι
x✝ : ¬i ∈ s
ih : ↑(Finset.inf s p) = ⋂ (i : ι) (_ : i ∈ s), ↑(p i)
⊢ (↑(p i) ∩ ⋂ (i : ι) (_ : i ∈ s), ↑(p i)) = ⋂ (i_1 : ι) (_ : i_1 ∈ insert i s), ↑(p i_1)
Theorem: Ordinal.lt_nfp
File: Mathlib/SetTheory/Ordinal/FixedPoint.lean

tactic: rw [← sup_iterate_eq_nfp]
state_before: f : Ordinal → Ordinal
a b : Ordinal
⊢ a < nfp f b ↔ ∃ n, a < (f^[n]) b

tactic: exact lt_sup
state_before: f : Ordinal → Ordinal
a b : Ordinal
⊢ a < (fun a => sup fun n => (f^[n]) a) b ↔ ∃ n, a < (f^[n]) b
Theorem: minpoly.natDegree_pos
File: Mathlib/FieldTheory/Minpoly/Basic.lean

tactic: rw [pos_iff_ne_zero]
state_before: A : Type u_2
B : Type u_1
B' : Type ?u.58941
inst✝³ : CommRing A
inst✝² : Ring B
inst✝¹ : Algebra A B
x : B
inst✝ : Nontrivial B
hx : IsIntegral A x
⊢ 0 < natDegree (minpoly A x)

tactic: intro ndeg_eq_zero
state_before: A : Type u_2
B : Type u_1
B' : Type ?u.58941
inst✝³ : CommRing A
inst✝² : Ring B
inst✝¹ : Algebra A B
x : B
inst✝ : Nontrivial B
hx : IsIntegral A x
⊢ natDegree (minpoly A x) ≠ 0

tactic: have eq_one : minpoly A x = 1 := by
  rw [eq_C_of_natDegree_eq_zero ndeg_eq_zero]
  convert C_1 (R := A)
  simpa only [ndeg_eq_zero.symm] using (monic hx).leadingCoeff
state_before: A : Type u_2
B : Type u_1
B' : Type ?u.58941
inst✝³ : CommRing A
inst✝² : Ring B
inst✝¹ : Algebra A B
x : B
inst✝ : Nontrivial B
hx : IsIntegral A x
ndeg_eq_zero : natDegree (minpoly A x) = 0
⊢ False

tactic: simpa only [eq_one, AlgHom.map_one, one_ne_zero] using aeval A x
state_before: A : Type u_2
B : Type u_1
B' : Type ?u.58941
inst✝³ : CommRing A
inst✝² : Ring B
inst✝¹ : Algebra A B
x : B
inst✝ : Nontrivial B
hx : IsIntegral A x
ndeg_eq_zero : natDegree (minpoly A x) = 0
eq_one : minpoly A x = 1
⊢ False

tactic: rw [eq_C_of_natDegree_eq_zero ndeg_eq_zero]
state_before: A : Type u_2
B : Type u_1
B' : Type ?u.58941
inst✝³ : CommRing A
inst✝² : Ring B
inst✝¹ : Algebra A B
x : B
inst✝ : Nontrivial B
hx : IsIntegral A x
ndeg_eq_zero : natDegree (minpoly A x) = 0
⊢ minpoly A x = 1

tactic: convert C_1 (R := A)
state_before: A : Type u_2
B : Type u_1
B' : Type ?u.58941
inst✝³ : CommRing A
inst✝² : Ring B
inst✝¹ : Algebra A B
x : B
inst✝ : Nontrivial B
hx : IsIntegral A x
ndeg_eq_zero : natDegree (minpoly A x) = 0
⊢ ↑C (coeff (minpoly A x) 0) = 1

tactic: simpa only [ndeg_eq_zero.symm] using (monic hx).leadingCoeff
state_before: case h.e'_2.h.e'_6
A : Type u_2
B : Type u_1
B' : Type ?u.58941
inst✝³ : CommRing A
inst✝² : Ring B
inst✝¹ : Algebra A B
x : B
inst✝ : Nontrivial B
hx : IsIntegral A x
ndeg_eq_zero : natDegree (minpoly A x) = 0
⊢ coeff (minpoly A x) 0 = 1
Theorem: isLeast_csInf
File: Mathlib/Order/ConditionallyCompleteLattice/Basic.lean

tactic: rw [sInf_eq_argmin_on hs]
state_before: α : Type u_1
β : Type ?u.69153
γ : Type ?u.69156
ι : Sort ?u.69159
inst✝¹ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
inst✝ : IsWellOrder α fun x x_1 => x < x_1
hs : Set.Nonempty s
⊢ IsLeast s (sInf s)

tactic: exact ⟨argminOn_mem _ _ _ _, fun a ha => argminOn_le id _ _ ha⟩
state_before: α : Type u_1
β : Type ?u.69153
γ : Type ?u.69156
ι : Sort ?u.69159
inst✝¹ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
inst✝ : IsWellOrder α fun x x_1 => x < x_1
hs : Set.Nonempty s
⊢ IsLeast s (argminOn id (_ : WellFounded fun x x_1 => x < x_1) s hs)
Theorem: CategoryTheory.Limits.isIso_ι_of_isInitial
File: Mathlib/CategoryTheory/Limits/Shapes/Terminal.lean

tactic: refine ⟨?_, by ext; simp⟩
state_before: C : Type u₁
inst✝³ : Category C
J : Type u
inst✝² : Category J
j : J
I : IsInitial j
F : J ⥤ C
inst✝¹ : HasColimit F
inst✝ : ∀ (i j : J) (f : i ⟶ j), IsIso (F.map f)
⊢ colimit.ι F j ≫ colimit.desc F (coconeOfDiagramInitial I F) = 𝟙 (F.obj j) ∧
    colimit.desc F (coconeOfDiagramInitial I F) ≫ colimit.ι F j = 𝟙 (colimit F)

tactic: dsimp
state_before: C : Type u₁
inst✝³ : Category C
J : Type u
inst✝² : Category J
j : J
I : IsInitial j
F : J ⥤ C
inst✝¹ : HasColimit F
inst✝ : ∀ (i j : J) (f : i ⟶ j), IsIso (F.map f)
⊢ colimit.ι F j ≫ colimit.desc F (coconeOfDiagramInitial I F) = 𝟙 (F.obj j)

tactic: simp only [colimit.ι_desc, coconeOfDiagramInitial_pt, coconeOfDiagramInitial_ι_app,
Functor.const_obj_obj, IsInitial.to_self, Functor.map_id]
state_before: C : Type u₁
inst✝³ : Category C
J : Type u
inst✝² : Category J
j : J
I : IsInitial j
F : J ⥤ C
inst✝¹ : HasColimit F
inst✝ : ∀ (i j : J) (f : i ⟶ j), IsIso (F.map f)
⊢ colimit.ι F j ≫ colimit.desc F (coconeOfDiagramInitial I F) = 𝟙 (F.obj j)

tactic: dsimp [inv]
state_before: C : Type u₁
inst✝³ : Category C
J : Type u
inst✝² : Category J
j : J
I : IsInitial j
F : J ⥤ C
inst✝¹ : HasColimit F
inst✝ : ∀ (i j : J) (f : i ⟶ j), IsIso (F.map f)
⊢ inv (𝟙 (F.obj j)) = 𝟙 (F.obj j)

tactic: simp only [Category.id_comp, Category.comp_id, and_self]
state_before: C : Type u₁
inst✝³ : Category C
J : Type u
inst✝² : Category J
j : J
I : IsInitial j
F : J ⥤ C
inst✝¹ : HasColimit F
inst✝ : ∀ (i j : J) (f : i ⟶ j), IsIso (F.map f)
⊢ Classical.choose (_ : ∃ inv, 𝟙 (F.obj j) ≫ inv = 𝟙 (F.obj j) ∧ inv ≫ 𝟙 (F.obj j) = 𝟙 (F.obj j)) = 𝟙 (F.obj j)

tactic: apply @Classical.choose_spec _ (fun x => x = 𝟙 F.obj j) _
state_before: C : Type u₁
inst✝³ : Category C
J : Type u
inst✝² : Category J
j : J
I : IsInitial j
F : J ⥤ C
inst✝¹ : HasColimit F
inst✝ : ∀ (i j : J) (f : i ⟶ j), IsIso (F.map f)
⊢ Classical.choose (_ : ∃ x, (fun x => x = 𝟙 (F.obj j)) x) = 𝟙 (F.obj j)

tactic: ext
state_before: C : Type u₁
inst✝³ : Category C
J : Type u
inst✝² : Category J
j : J
I : IsInitial j
F : J ⥤ C
inst✝¹ : HasColimit F
inst✝ : ∀ (i j : J) (f : i ⟶ j), IsIso (F.map f)
⊢ colimit.desc F (coconeOfDiagramInitial I F) ≫ colimit.ι F j = 𝟙 (colimit F)

tactic: simp
state_before: case w
C : Type u₁
inst✝³ : Category C
J : Type u
inst✝² : Category J
j : J
I : IsInitial j
F : J ⥤ C
inst✝¹ : HasColimit F
inst✝ : ∀ (i j : J) (f : i ⟶ j), IsIso (F.map f)
j✝ : J
⊢ colimit.ι F j✝ ≫ colimit.desc F (coconeOfDiagramInitial I F) ≫ colimit.ι F j = colimit.ι F j✝ ≫ 𝟙 (colimit F)
Theorem: Nat.Partrec.prec'
File: Mathlib/Computability/Partrec.lean

tactic: simp [Seq.seq]
state_before: f g h : ℕ →. ℕ
hf : Partrec f
hg : Partrec g
hh : Partrec h
a s : ℕ
⊢ (s ∈
      (Seq.seq (Nat.pair <$> Part.some a) fun x => f a) >>=
        unpaired fun a n =>
          Nat.rec (g a)
            (fun y IH => do
              let i ← IH
              h (Nat.pair a (Nat.pair y i)))
            n) ↔
    s ∈
      Part.bind (f a) fun n =>
        Nat.rec (g a)
          (fun y IH => do
            let i ← IH
            h (Nat.pair a (Nat.pair y i)))
          n
Theorem: MeasureTheory.measure_mul_measure_eq
File: Mathlib/MeasureTheory/Group/Prod.lean

tactic: have h1 :=
  measure_lintegral_div_measure ν ν hs h2s h3s (t.indicator fun _ => 1)
    (measurable_const.indicator ht)
state_before: G : Type u_1
inst✝⁷ : MeasurableSpace G
inst✝⁶ : Group G
inst✝⁵ : MeasurableMul₂ G
μ ν : Measure G
inst✝⁴ : SigmaFinite ν
inst✝³ : SigmaFinite μ
s✝ : Set G
inst✝² : MeasurableInv G
inst✝¹ : IsMulLeftInvariant μ
inst✝ : IsMulLeftInvariant ν
s t : Set G
hs : MeasurableSet s
ht : MeasurableSet t
h2s : ↑↑ν s ≠ 0
h3s : ↑↑ν s ≠ ⊤
⊢ ↑↑μ s * ↑↑ν t = ↑↑ν s * ↑↑μ t

tactic: have h2 :=
  measure_lintegral_div_measure μ ν hs h2s h3s (t.indicator fun _ => 1)
    (measurable_const.indicator ht)
state_before: G : Type u_1
inst✝⁷ : MeasurableSpace G
inst✝⁶ : Group G
inst✝⁵ : MeasurableMul₂ G
μ ν : Measure G
inst✝⁴ : SigmaFinite ν
inst✝³ : SigmaFinite μ
s✝ : Set G
inst✝² : MeasurableInv G
inst✝¹ : IsMulLeftInvariant μ
inst✝ : IsMulLeftInvariant ν
s t : Set G
hs : MeasurableSet s
ht : MeasurableSet t
h2s : ↑↑ν s ≠ 0
h3s : ↑↑ν s ≠ ⊤
h1 :
  (↑↑ν s * ∫⁻ (y : G), indicator t (fun x => 1) y⁻¹ / ↑↑ν ((fun x => x * y⁻¹) ⁻¹' s) ∂ν) =
    ∫⁻ (x : G), indicator t (fun x => 1) x ∂ν
⊢ ↑↑μ s * ↑↑ν t = ↑↑ν s * ↑↑μ t

tactic: rw [lintegral_indicator _ ht, set_lintegral_one] at h1 h2
state_before: G : Type u_1
inst✝⁷ : MeasurableSpace G
inst✝⁶ : Group G
inst✝⁵ : MeasurableMul₂ G
μ ν : Measure G
inst✝⁴ : SigmaFinite ν
inst✝³ : SigmaFinite μ
s✝ : Set G
inst✝² : MeasurableInv G
inst✝¹ : IsMulLeftInvariant μ
inst✝ : IsMulLeftInvariant ν
s t : Set G
hs : MeasurableSet s
ht : MeasurableSet t
h2s : ↑↑ν s ≠ 0
h3s : ↑↑ν s ≠ ⊤
h1 :
  (↑↑ν s * ∫⁻ (y : G), indicator t (fun x => 1) y⁻¹ / ↑↑ν ((fun x => x * y⁻¹) ⁻¹' s) ∂ν) =
    ∫⁻ (x : G), indicator t (fun x => 1) x ∂ν
h2 :
  (↑↑μ s * ∫⁻ (y : G), indicator t (fun x => 1) y⁻¹ / ↑↑ν ((fun x => x * y⁻¹) ⁻¹' s) ∂ν) =
    ∫⁻ (x : G), indicator t (fun x => 1) x ∂μ
⊢ ↑↑μ s * ↑↑ν t = ↑↑ν s * ↑↑μ t

tactic: rw [← h1, mul_left_comm, h2]
state_before: G : Type u_1
inst✝⁷ : MeasurableSpace G
inst✝⁶ : Group G
inst✝⁵ : MeasurableMul₂ G
μ ν : Measure G
inst✝⁴ : SigmaFinite ν
inst✝³ : SigmaFinite μ
s✝ : Set G
inst✝² : MeasurableInv G
inst✝¹ : IsMulLeftInvariant μ
inst✝ : IsMulLeftInvariant ν
s t : Set G
hs : MeasurableSet s
ht : MeasurableSet t
h2s : ↑↑ν s ≠ 0
h3s : ↑↑ν s ≠ ⊤
h1 : (↑↑ν s * ∫⁻ (y : G), indicator t (fun x => 1) y⁻¹ / ↑↑ν ((fun x => x * y⁻¹) ⁻¹' s) ∂ν) = ↑↑ν t
h2 : (↑↑μ s * ∫⁻ (y : G), indicator t (fun x => 1) y⁻¹ / ↑↑ν ((fun x => x * y⁻¹) ⁻¹' s) ∂ν) = ↑↑μ t
⊢ ↑↑μ s * ↑↑ν t = ↑↑ν s * ↑↑μ t
Theorem: IsLocalization.smul_toInvSubmonoid
File: Mathlib/RingTheory/Localization/InvSubmonoid.lean

tactic: convert mul_toInvSubmonoid M S m
state_before: R : Type u_1
inst✝⁴ : CommRing R
M : Submonoid R
S : Type u_2
inst✝³ : CommRing S
inst✝² : Algebra R S
P : Type ?u.131549
inst✝¹ : CommRing P
inst✝ : IsLocalization M S
m : { x // x ∈ M }
⊢ m • ↑(↑(toInvSubmonoid M S) m) = 1

tactic: ext
state_before: case h.e'_2.h.e
R : Type u_1
inst✝⁴ : CommRing R
M : Submonoid R
S : Type u_2
inst✝³ : CommRing S
inst✝² : Algebra R S
P : Type ?u.131549
inst✝¹ : CommRing P
inst✝ : IsLocalization M S
m : { x // x ∈ M }
⊢ HSMul.hSMul m = HMul.hMul (↑(algebraMap R S) ↑m)

tactic: rw [← Algebra.smul_def]
state_before: case h.e'_2.h.e.h
R : Type u_1
inst✝⁴ : CommRing R
M : Submonoid R
S : Type u_2
inst✝³ : CommRing S
inst✝² : Algebra R S
P : Type ?u.131549
inst✝¹ : CommRing P
inst✝ : IsLocalization M S
m : { x // x ∈ M }
x✝ : S
⊢ m • x✝ = ↑(algebraMap R S) ↑m * x✝

tactic: rfl
state_before: case h.e'_2.h.e.h
R : Type u_1
inst✝⁴ : CommRing R
M : Submonoid R
S : Type u_2
inst✝³ : CommRing S
inst✝² : Algebra R S
P : Type ?u.131549
inst✝¹ : CommRing P
inst✝ : IsLocalization M S
m : { x // x ∈ M }
x✝ : S
⊢ m • x✝ = ↑m • x✝
Theorem: uniformEmbedding_translate_mul
File: Mathlib/Topology/Algebra/UniformGroup.lean

tactic: nth_rewrite 1 [← uniformity_translate_mul a, comap_map]
state_before: α : Type u_1
β : Type ?u.112462
inst✝² : UniformSpace α
inst✝¹ : Group α
inst✝ : UniformGroup α
a : α
⊢ comap (fun x => (x.fst * a, x.snd * a)) (𝓤 α) = 𝓤 α

tactic: rfl
state_before: α : Type u_1
β : Type ?u.112462
inst✝² : UniformSpace α
inst✝¹ : Group α
inst✝ : UniformGroup α
a : α
⊢ 𝓤 α = 𝓤 α

α : Type u_1
β : Type ?u.112462
inst✝² : UniformSpace α
inst✝¹ : Group α
inst✝ : UniformGroup α
a : α
⊢ Function.Injective fun x => (x.fst * a, x.snd * a)

tactic: rintro ⟨p₁, p₂⟩ ⟨q₁, q₂⟩
state_before: α : Type u_1
β : Type ?u.112462
inst✝² : UniformSpace α
inst✝¹ : Group α
inst✝ : UniformGroup α
a : α
⊢ Function.Injective fun x => (x.fst * a, x.snd * a)

tactic: simp only [Prod.mk.injEq, mul_left_inj, imp_self]
state_before: case mk.mk
α : Type u_1
β : Type ?u.112462
inst✝² : UniformSpace α
inst✝¹ : Group α
inst✝ : UniformGroup α
a p₁ p₂ q₁ q₂ : α
⊢ (fun x => (x.fst * a, x.snd * a)) (p₁, p₂) = (fun x => (x.fst * a, x.snd * a)) (q₁, q₂) → (p₁, p₂) = (q₁, q₂)
Theorem: FreeGroup.map_eq_lift
File: Mathlib/GroupTheory/FreeGroup.lean

tactic: simp
state_before: α : Type u
L L₁ L₂ L₃ L₄ : List (α × Bool)
β : Type v
f : α → β
x✝ y : FreeGroup α
x : α
⊢ ↑(↑lift (of ∘ f)) (of x) = of (f x)
Theorem: Nat.ArithmeticFunction.ppow_zero
File: Mathlib/NumberTheory/ArithmeticFunction.lean

tactic: rw [ppow, dif_pos rfl]
state_before: R : Type u_1
inst✝ : Semiring R
f : ArithmeticFunction R
⊢ ppow f 0 = ↑ζ
Theorem: SimpleGraph.dart_card_eq_sum_degrees
File: Mathlib/Combinatorics/SimpleGraph/DegreeSum.lean

tactic: haveI := Classical.decEq V
state_before: V : Type u
G : SimpleGraph V
inst✝² : Fintype V
inst✝¹ : DecidableRel G.Adj
inst✝ : Fintype (Sym2 V)
⊢ Fintype.card (Dart G) = ∑ v : V, degree G v

tactic: simp only [← card_univ, ← dart_fst_fiber_card_eq_degree]
state_before: V : Type u
G : SimpleGraph V
inst✝² : Fintype V
inst✝¹ : DecidableRel G.Adj
inst✝ : Fintype (Sym2 V)
this : DecidableEq V
⊢ Fintype.card (Dart G) = ∑ v : V, degree G v

tactic: exact card_eq_sum_card_fiberwise (by simp)
state_before: V : Type u
G : SimpleGraph V
inst✝² : Fintype V
inst✝¹ : DecidableRel G.Adj
inst✝ : Fintype (Sym2 V)
this : DecidableEq V
⊢ card univ = ∑ x : V, card (filter (fun d => d.fst = x) univ)

tactic: simp
state_before: V : Type u
G : SimpleGraph V
inst✝² : Fintype V
inst✝¹ : DecidableRel G.Adj
inst✝ : Fintype (Sym2 V)
this : DecidableEq V
⊢ ∀ (x : Dart G), x ∈ univ → x.fst ∈ univ