tasksource/leandojo huggingface dataset:
Theorem: UniqueMul.iff_existsUnique
File: Mathlib/Algebra/Group/UniqueProds.lean

tactic: simp
state_before: G : Type u_1
H : Type ?u.2277
inst✝¹ : Mul G
inst✝ : Mul H
A B : Finset G
a0 b0 : G
aA : a0 ∈ A
bB : b0 ∈ B
x✝ : UniqueMul A B a0 b0
⊢ ∀ (y : (a0, b0) ∈ A ×ˢ B), (fun x => (a0, b0).fst * (a0, b0).snd = a0 * b0) y → y = (_ : (a0, b0) ∈ A ×ˢ B)

tactic: simpa
state_before: G : Type u_1
H : Type ?u.2277
inst✝¹ : Mul G
inst✝ : Mul H
A B : Finset G
a0 b0 : G
aA : a0 ∈ A
bB : b0 ∈ B
x✝ : UniqueMul A B a0 b0
⊢ ∀ (y : G × G), (fun ab => ∃! x, ab.fst * ab.snd = a0 * b0) y → y = (a0, b0)

tactic: rintro ⟨x1, x2⟩ _ _ J x y hx hy l
state_before: G : Type u_1
H : Type ?u.2277
inst✝¹ : Mul G
inst✝ : Mul H
A B : Finset G
a0 b0 : G
aA : a0 ∈ A
bB : b0 ∈ B
h : ∃! ab x, ab.fst * ab.snd = a0 * b0
⊢ ∀ (x : G × G),
    x ∈ A ×ˢ B →
      x.fst * x.snd = a0 * b0 → (∀ (y : G × G), y ∈ A ×ˢ B → y.fst * y.snd = a0 * b0 → y = x) → UniqueMul A B a0 b0

tactic: rcases Prod.mk.inj_iff.mp (J (a0, b0) (Finset.mk_mem_product aA bB) rfl) with ⟨rfl, rfl⟩
state_before: case mk
G : Type u_1
H : Type ?u.2277
inst✝¹ : Mul G
inst✝ : Mul H
A B : Finset G
a0 b0 : G
aA : a0 ∈ A
bB : b0 ∈ B
h : ∃! ab x, ab.fst * ab.snd = a0 * b0
x1 x2 : G
h✝ : (x1, x2) ∈ A ×ˢ B
a✝ : (x1, x2).fst * (x1, x2).snd = a0 * b0
J : ∀ (y : G × G), y ∈ A ×ˢ B → y.fst * y.snd = a0 * b0 → y = (x1, x2)
x y : G
hx : x ∈ A
hy : y ∈ B
l : x * y = a0 * b0
⊢ x = a0 ∧ y = b0

tactic: exact Prod.mk.inj_iff.mp (J (x, y) (Finset.mk_mem_product hx hy) l)
state_before: case mk.intro
G : Type u_1
H : Type ?u.2277
inst✝¹ : Mul G
inst✝ : Mul H
A B : Finset G
a0 b0 : G
aA : a0 ∈ A
bB : b0 ∈ B
h : ∃! ab x, ab.fst * ab.snd = a0 * b0
x y : G
hx : x ∈ A
hy : y ∈ B
l : x * y = a0 * b0
h✝ : (a0, b0) ∈ A ×ˢ B
a✝ : (a0, b0).fst * (a0, b0).snd = a0 * b0
J : ∀ (y : G × G), y ∈ A ×ˢ B → y.fst * y.snd = a0 * b0 → y = (a0, b0)
⊢ x = a0 ∧ y = b0
Theorem: dslope_sub_smul_of_ne
File: Mathlib/Analysis/Calculus/Dslope.lean

tactic: rw [dslope_of_ne _ h, slope_sub_smul _ h.symm]
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f✝ : 𝕜 → E
a b : 𝕜
s : Set 𝕜
f : 𝕜 → E
h : b ≠ a
⊢ dslope (fun x => (x - a) • f x) a b = f b
Theorem: Multiset.Nodup.disjSum
File: Mathlib/Data/Multiset/Sum.lean

tactic: refine' ((hs.map inl_injective).add_iff <| ht.map inr_injective).2 fun x hs ht => _
state_before: α : Type u_1
β : Type u_2
s : Multiset α
t : Multiset β
s₁ s₂ : Multiset α
t₁ t₂ : Multiset β
a : α
b : β
x : α ⊕ β
hs : Nodup s
ht : Nodup t
⊢ Nodup (disjSum s t)

tactic: rw [Multiset.mem_map] at hs ht
state_before: α : Type u_1
β : Type u_2
s : Multiset α
t : Multiset β
s₁ s₂ : Multiset α
t₁ t₂ : Multiset β
a : α
b : β
x✝ : α ⊕ β
hs✝ : Nodup s
ht✝ : Nodup t
x : α ⊕ β
hs : x ∈ Multiset.map inl s
ht : x ∈ Multiset.map inr t
⊢ False

tactic: obtain ⟨a, _, rfl⟩ := hs
state_before: α : Type u_1
β : Type u_2
s : Multiset α
t : Multiset β
s₁ s₂ : Multiset α
t₁ t₂ : Multiset β
a : α
b : β
x✝ : α ⊕ β
hs✝ : Nodup s
ht✝ : Nodup t
x : α ⊕ β
hs : ∃ a, a ∈ s ∧ inl a = x
ht : ∃ a, a ∈ t ∧ inr a = x
⊢ False

tactic: obtain ⟨b, _, h⟩ := ht
state_before: case intro.intro
α : Type u_1
β : Type u_2
s : Multiset α
t : Multiset β
s₁ s₂ : Multiset α
t₁ t₂ : Multiset β
a✝ : α
b : β
x : α ⊕ β
hs : Nodup s
ht✝ : Nodup t
a : α
left✝ : a ∈ s
ht : ∃ a_1, a_1 ∈ t ∧ inr a_1 = inl a
⊢ False

tactic: exact inr_ne_inl h
state_before: case intro.intro.intro.intro
α : Type u_1
β : Type u_2
s : Multiset α
t : Multiset β
s₁ s₂ : Multiset α
t₁ t₂ : Multiset β
a✝ : α
b✝ : β
x : α ⊕ β
hs : Nodup s
ht : Nodup t
a : α
left✝¹ : a ∈ s
b : β
left✝ : b ∈ t
h : inr b = inl a
⊢ False
Theorem: ApproximatesLinearOn.image_mem_nhds
File: Mathlib/Analysis/Calculus/Inverse.lean

tactic: obtain ⟨t, hts, ht, xt⟩ : ∃ t, t ⊆ s ∧ IsOpen t ∧ x ∈ t := _root_.mem_nhds_iff.1 hs
state_before: 𝕜 : Type u_1
inst✝⁹ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace 𝕜 F
G : Type ?u.309590
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
G' : Type ?u.309693
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
ε : ℝ
inst✝ : CompleteSpace E
f : E → F
s : Set E
c : ℝ≥0
f' : E →L[𝕜] F
hf : ApproximatesLinearOn f f' s c
f'symm : ContinuousLinearMap.NonlinearRightInverse f'
x : E
hs : s ∈ 𝓝 x
hc : Subsingleton F ∨ c < f'symm.nnnorm⁻¹
⊢ f '' s ∈ 𝓝 (f x)

tactic: have := IsOpen.mem_nhds ((hf.mono_set hts).open_image f'symm ht hc) (mem_image_of_mem _ xt)
state_before: case intro.intro.intro
𝕜 : Type u_1
inst✝⁹ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace 𝕜 F
G : Type ?u.309590
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
G' : Type ?u.309693
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
ε : ℝ
inst✝ : CompleteSpace E
f : E → F
s : Set E
c : ℝ≥0
f' : E →L[𝕜] F
hf : ApproximatesLinearOn f f' s c
f'symm : ContinuousLinearMap.NonlinearRightInverse f'
x : E
hs : s ∈ 𝓝 x
hc : Subsingleton F ∨ c < f'symm.nnnorm⁻¹
t : Set E
hts : t ⊆ s
ht : IsOpen t
xt : x ∈ t
⊢ f '' s ∈ 𝓝 (f x)

tactic: exact mem_of_superset this (image_subset _ hts)
state_before: case intro.intro.intro
𝕜 : Type u_1
inst✝⁹ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace 𝕜 F
G : Type ?u.309590
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
G' : Type ?u.309693
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
ε : ℝ
inst✝ : CompleteSpace E
f : E → F
s : Set E
c : ℝ≥0
f' : E →L[𝕜] F
hf : ApproximatesLinearOn f f' s c
f'symm : ContinuousLinearMap.NonlinearRightInverse f'
x : E
hs : s ∈ 𝓝 x
hc : Subsingleton F ∨ c < f'symm.nnnorm⁻¹
t : Set E
hts : t ⊆ s
ht : IsOpen t
xt : x ∈ t
this : f '' t ∈ 𝓝 (f x)
⊢ f '' s ∈ 𝓝 (f x)
Theorem: Complex.lim_im
File: Mathlib/Data/Complex/Basic.lean

tactic: rw [lim_eq_lim_im_add_lim_re]
state_before: f : CauSeq ℂ ↑abs
⊢ CauSeq.lim (cauSeqIm f) = (CauSeq.lim f).im

tactic: simp [ofReal']
state_before: f : CauSeq ℂ ↑abs
⊢ CauSeq.lim (cauSeqIm f) = (↑(CauSeq.lim (cauSeqRe f)) + ↑(CauSeq.lim (cauSeqIm f)) * I).im
Theorem: CategoryTheory.Quotient.functor_map_eq_iff
File: Mathlib/CategoryTheory/Quotient.lean

tactic: constructor
state_before: C : Type u_1
inst✝ : Category C
r : HomRel C
h : Congruence r
X Y : C
f f' : X ⟶ Y
⊢ (functor r).map f = (functor r).map f' ↔ r f f'

tactic: erw [Quot.eq]
state_before: case mp
C : Type u_1
inst✝ : Category C
r : HomRel C
h : Congruence r
X Y : C
f f' : X ⟶ Y
⊢ (functor r).map f = (functor r).map f' → r f f'

tactic: intro h
state_before: case mp
C : Type u_1
inst✝ : Category C
r : HomRel C
h : Congruence r
X Y : C
f f' : X ⟶ Y
⊢ EqvGen (CompClosure r) f f' → r f f'

tactic: induction' h with m m' hm
state_before: case mp
C : Type u_1
inst✝ : Category C
r : HomRel C
h✝ : Congruence r
X Y : C
f f' : X ⟶ Y
h : EqvGen (CompClosure r) f f'
⊢ r f f'

tactic: cases hm
state_before: case mp.rel
C : Type u_1
inst✝ : Category C
r : HomRel C
h : Congruence r
X Y : C
f f' m m' : X ⟶ Y
hm : CompClosure r m m'
⊢ r m m'

tactic: apply Congruence.compLeft
state_before: case mp.rel.intro
C : Type u_1
inst✝ : Category C
r : HomRel C
h : Congruence r
X Y : C
f f' : X ⟶ Y
a✝ b✝ : C
f✝ : X ⟶ a✝
m₁✝ m₂✝ : a✝ ⟶ b✝
g✝ : b✝ ⟶ Y
h✝ : r m₁✝ m₂✝
⊢ r (f✝ ≫ m₁✝ ≫ g✝) (f✝ ≫ m₂✝ ≫ g✝)

tactic: apply Congruence.compRight
state_before: case mp.rel.intro.a
C : Type u_1
inst✝ : Category C
r : HomRel C
h : Congruence r
X Y : C
f f' : X ⟶ Y
a✝ b✝ : C
f✝ : X ⟶ a✝
m₁✝ m₂✝ : a✝ ⟶ b✝
g✝ : b✝ ⟶ Y
h✝ : r m₁✝ m₂✝
⊢ r (m₁✝ ≫ g✝) (m₂✝ ≫ g✝)

tactic: assumption
state_before: case mp.rel.intro.a.a
C : Type u_1
inst✝ : Category C
r : HomRel C
h : Congruence r
X Y : C
f f' : X ⟶ Y
a✝ b✝ : C
f✝ : X ⟶ a✝
m₁✝ m₂✝ : a✝ ⟶ b✝
g✝ : b✝ ⟶ Y
h✝ : r m₁✝ m₂✝
⊢ r m₁✝ m₂✝

tactic: haveI := (h.isEquiv : IsEquiv _ (@r X Y))
state_before: case mp.refl
C : Type u_1
inst✝ : Category C
r : HomRel C
h : Congruence r
X Y : C
f f' x✝ : X ⟶ Y
⊢ r x✝ x✝

tactic: apply refl
state_before: case mp.refl
C : Type u_1
inst✝ : Category C
r : HomRel C
h : Congruence r
X Y : C
f f' x✝ : X ⟶ Y
this : IsEquiv (X ⟶ Y) r
⊢ r x✝ x✝

tactic: apply symm
state_before: case mp.symm
C : Type u_1
inst✝ : Category C
r : HomRel C
h : Congruence r
X Y : C
f f' x✝ y✝ : X ⟶ Y
a✝ : EqvGen (CompClosure r) x✝ y✝
a_ih✝ : r x✝ y✝
⊢ r y✝ x✝

tactic: assumption
state_before: case mp.symm.a
C : Type u_1
inst✝ : Category C
r : HomRel C
h : Congruence r
X Y : C
f f' x✝ y✝ : X ⟶ Y
a✝ : EqvGen (CompClosure r) x✝ y✝
a_ih✝ : r x✝ y✝
⊢ r x✝ y✝

tactic: apply _root_.trans <;> assumption
state_before: case mp.trans
C : Type u_1
inst✝ : Category C
r : HomRel C
h : Congruence r
X Y : C
f f' x✝ y✝ z✝ : X ⟶ Y
a✝¹ : EqvGen (CompClosure r) x✝ y✝
a✝ : EqvGen (CompClosure r) y✝ z✝
a_ih✝¹ : r x✝ y✝
a_ih✝ : r y✝ z✝
⊢ r x✝ z✝

tactic: apply Quotient.sound
state_before: case mpr
C : Type u_1
inst✝ : Category C
r : HomRel C
h : Congruence r
X Y : C
f f' : X ⟶ Y
⊢ r f f' → (functor r).map f = (functor r).map f'
Theorem: Matrix.isUnit_nonsing_inv_det_iff
File: Mathlib/LinearAlgebra/Matrix/NonsingularInverse.lean

tactic: rw [Matrix.det_nonsing_inv, isUnit_ring_inverse]
state_before: l : Type ?u.252005
m : Type u
n : Type u'
α : Type v
inst✝² : Fintype n
inst✝¹ : DecidableEq n
inst✝ : CommRing α
A✝ B A : Matrix n n α
⊢ IsUnit (det A⁻¹) ↔ IsUnit (det A)
Theorem: hasSum_zero_iff_of_nonneg
File: Mathlib/Topology/Algebra/InfiniteSum/Order.lean

tactic: refine' ⟨fun hf' => _, _⟩
state_before: ι : Type u_2
κ : Type ?u.35269
α : Type u_1
inst✝² : OrderedAddCommMonoid α
inst✝¹ : TopologicalSpace α
inst✝ : OrderClosedTopology α
f g : ι → α
a a₁ a₂ : α
hf : ∀ (i : ι), 0 ≤ f i
⊢ HasSum f 0 ↔ f = 0

tactic: ext i
state_before: case refine'_1
ι : Type u_2
κ : Type ?u.35269
α : Type u_1
inst✝² : OrderedAddCommMonoid α
inst✝¹ : TopologicalSpace α
inst✝ : OrderClosedTopology α
f g : ι → α
a a₁ a₂ : α
hf : ∀ (i : ι), 0 ≤ f i
hf' : HasSum f 0
⊢ f = 0

tactic: exact (hf i).antisymm' (le_hasSum hf' _ fun j _ => hf j)
state_before: case refine'_1.h
ι : Type u_2
κ : Type ?u.35269
α : Type u_1
inst✝² : OrderedAddCommMonoid α
inst✝¹ : TopologicalSpace α
inst✝ : OrderClosedTopology α
f g : ι → α
a a₁ a₂ : α
hf : ∀ (i : ι), 0 ≤ f i
hf' : HasSum f 0
i : ι
⊢ f i = OfNat.ofNat 0 i

tactic: rintro rfl
state_before: case refine'_2
ι : Type u_2
κ : Type ?u.35269
α : Type u_1
inst✝² : OrderedAddCommMonoid α
inst✝¹ : TopologicalSpace α
inst✝ : OrderClosedTopology α
f g : ι → α
a a₁ a₂ : α
hf : ∀ (i : ι), 0 ≤ f i
⊢ f = 0 → HasSum f 0

tactic: exact hasSum_zero
state_before: case refine'_2
ι : Type u_2
κ : Type ?u.35269
α : Type u_1
inst✝² : OrderedAddCommMonoid α
inst✝¹ : TopologicalSpace α
inst✝ : OrderClosedTopology α
g : ι → α
a a₁ a₂ : α
hf : ∀ (i : ι), 0 ≤ OfNat.ofNat 0 i
⊢ HasSum 0 0
Theorem: Pell.isPell_star
File: Mathlib/NumberTheory/PellMatiyasevic.lean

tactic: simp [IsPell, Zsqrtd.star_mk]
state_before: d x y : ℤ
⊢ IsPell { re := x, im := y } ↔ IsPell (star { re := x, im := y })
Theorem: lt_update_self_iff
File: Mathlib/Order/Basic.lean

tactic: simp [lt_iff_le_not_le]
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
π : ι → Type u_2
r : α → α → Prop
inst✝¹ : DecidableEq ι
inst✝ : (i : ι) → Preorder (π i)
x y : (i : ι) → π i
i : ι
a b : π i
⊢ x < update x i a ↔ x i < a
Theorem: spectrum.nonempty_of_isAlgClosed_of_finiteDimensional
File: Mathlib/FieldTheory/IsAlgClosed/Spectrum.lean

tactic: obtain ⟨p, ⟨h_mon, h_eval_p⟩⟩ := isIntegral_of_noetherian (IsNoetherian.iff_fg.2 I) a
state_before: 𝕜 : Type u
A : Type v
inst✝⁴ : Field 𝕜
inst✝³ : Ring A
inst✝² : Algebra 𝕜 A
inst✝¹ : IsAlgClosed 𝕜
inst✝ : Nontrivial A
I : FiniteDimensional 𝕜 A
a : A
⊢ Set.Nonempty (σ a)

tactic: have nu : ¬IsUnit (aeval a p) := by rw [← aeval_def] at h_eval_p ; rw [h_eval_p]; simp
state_before: case intro.intro
𝕜 : Type u
A : Type v
inst✝⁴ : Field 𝕜
inst✝³ : Ring A
inst✝² : Algebra 𝕜 A
inst✝¹ : IsAlgClosed 𝕜
inst✝ : Nontrivial A
I : FiniteDimensional 𝕜 A
a : A
p : 𝕜[X]
h_mon : Monic p
h_eval_p : eval₂ ↑ₐ a p = 0
⊢ Set.Nonempty (σ a)

tactic: rw [eq_prod_roots_of_monic_of_splits_id h_mon (IsAlgClosed.splits p)] at nu
state_before: case intro.intro
𝕜 : Type u
A : Type v
inst✝⁴ : Field 𝕜
inst✝³ : Ring A
inst✝² : Algebra 𝕜 A
inst✝¹ : IsAlgClosed 𝕜
inst✝ : Nontrivial A
I : FiniteDimensional 𝕜 A
a : A
p : 𝕜[X]
h_mon : Monic p
h_eval_p : eval₂ ↑ₐ a p = 0
nu : ¬IsUnit (↑(aeval a) p)
⊢ Set.Nonempty (σ a)

tactic: obtain ⟨k, hk, _⟩ := exists_mem_of_not_isUnit_aeval_prod nu
state_before: case intro.intro
𝕜 : Type u
A : Type v
inst✝⁴ : Field 𝕜
inst✝³ : Ring A
inst✝² : Algebra 𝕜 A
inst✝¹ : IsAlgClosed 𝕜
inst✝ : Nontrivial A
I : FiniteDimensional 𝕜 A
a : A
p : 𝕜[X]
h_mon : Monic p
h_eval_p : eval₂ ↑ₐ a p = 0
nu : ¬IsUnit (↑(aeval a) (Multiset.prod (Multiset.map (fun a => X - ↑C a) (roots p))))
⊢ Set.Nonempty (σ a)

tactic: exact ⟨k, hk⟩
state_before: case intro.intro.intro.intro
𝕜 : Type u
A : Type v
inst✝⁴ : Field 𝕜
inst✝³ : Ring A
inst✝² : Algebra 𝕜 A
inst✝¹ : IsAlgClosed 𝕜
inst✝ : Nontrivial A
I : FiniteDimensional 𝕜 A
a : A
p : 𝕜[X]
h_mon : Monic p
h_eval_p : eval₂ ↑ₐ a p = 0
nu : ¬IsUnit (↑(aeval a) (Multiset.prod (Multiset.map (fun a => X - ↑C a) (roots p))))
k : 𝕜
hk : k ∈ σ a
right✝ : eval k p = 0
⊢ Set.Nonempty (σ a)

tactic: rw [← aeval_def] at h_eval_p
state_before: 𝕜 : Type u
A : Type v
inst✝⁴ : Field 𝕜
inst✝³ : Ring A
inst✝² : Algebra 𝕜 A
inst✝¹ : IsAlgClosed 𝕜
inst✝ : Nontrivial A
I : FiniteDimensional 𝕜 A
a : A
p : 𝕜[X]
h_mon : Monic p
h_eval_p : eval₂ ↑ₐ a p = 0
⊢ ¬IsUnit (↑(aeval a) p)

tactic: rw [h_eval_p]
state_before: 𝕜 : Type u
A : Type v
inst✝⁴ : Field 𝕜
inst✝³ : Ring A
inst✝² : Algebra 𝕜 A
inst✝¹ : IsAlgClosed 𝕜
inst✝ : Nontrivial A
I : FiniteDimensional 𝕜 A
a : A
p : 𝕜[X]
h_mon : Monic p
h_eval_p : ↑(aeval a) p = 0
⊢ ¬IsUnit (↑(aeval a) p)

tactic: simp
state_before: 𝕜 : Type u
A : Type v
inst✝⁴ : Field 𝕜
inst✝³ : Ring A
inst✝² : Algebra 𝕜 A
inst✝¹ : IsAlgClosed 𝕜
inst✝ : Nontrivial A
I : FiniteDimensional 𝕜 A
a : A
p : 𝕜[X]
h_mon : Monic p
h_eval_p : ↑(aeval a) p = 0
⊢ ¬IsUnit 0
Theorem: OnePoint.isClosed_infty
File: Mathlib/Topology/Compactification/OnePoint.lean

tactic: rw [← compl_range_coe, isClosed_compl_iff]
state_before: X : Type u_1
inst✝ : TopologicalSpace X
s : Set (OnePoint X)
t : Set X
⊢ IsClosed {∞}

tactic: exact isOpen_range_coe
state_before: X : Type u_1
inst✝ : TopologicalSpace X
s : Set (OnePoint X)
t : Set X
⊢ IsOpen (range some)
Theorem: Int.le_antisymm
File: Std/Data/Int/Lemmas.lean

tactic: let ⟨n, hn⟩ := le.dest h₁
state_before: a b : Int
h₁ : a ≤ b
h₂ : b ≤ a
⊢ a = b

tactic: let ⟨m, hm⟩ := le.dest h₂
state_before: a b : Int
h₁ : a ≤ b
h₂ : b ≤ a
n : Nat
hn : a + ↑n = b
⊢ a = b

tactic: have := hn
state_before: a b : Int
h₁ : a ≤ b
h₂ : b ≤ a
n : Nat
hn : a + ↑n = b
m : Nat
hm : b + ↑m = a
⊢ a = b

tactic: rw [← hm, Int.add_assoc, ← ofNat_add] at this
state_before: a b : Int
h₁ : a ≤ b
h₂ : b ≤ a
n : Nat
hn : a + ↑n = b
m : Nat
hm : b + ↑m = a
this : a + ↑n = b
⊢ a = b

tactic: have := Int.ofNat.inj <| Int.add_left_cancel <| this.trans (Int.add_zero _).symm
state_before: a b : Int
h₁ : a ≤ b
h₂ : b ≤ a
n : Nat
hn : a + ↑n = b
m : Nat
hm : b + ↑m = a
this : b + ↑(m + n) = b
⊢ a = b

tactic: rw [← hn, Nat.eq_zero_of_add_eq_zero_left this, ofNat_zero, Int.add_zero a]
state_before: a b : Int
h₁ : a ≤ b
h₂ : b ≤ a
n : Nat
hn : a + ↑n = b
m : Nat
hm : b + ↑m = a
this✝ : b + ↑(m + n) = b
this : m + n = 0
⊢ a = b
Theorem: Geometry.SimplicialComplex.not_facet_iff_subface
File: Mathlib/Analysis/Convex/SimplicialComplex/Basic.lean

tactic: refine' ⟨fun hs' : ¬(_ ∧ _) => _, _⟩
state_before: 𝕜 : Type u_2
E : Type u_1
ι : Type ?u.69803
inst✝² : OrderedRing 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
K : SimplicialComplex 𝕜 E
s t : Finset E
x : E
hs : s ∈ K.faces
⊢ ¬s ∈ facets K ↔ ∃ t, t ∈ K.faces ∧ s ⊂ t

tactic: push_neg at hs'
state_before: case refine'_1
𝕜 : Type u_2
E : Type u_1
ι : Type ?u.69803
inst✝² : OrderedRing 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
K : SimplicialComplex 𝕜 E
s t : Finset E
x : E
hs : s ∈ K.faces
hs' : ¬(s ∈ K.faces ∧ ∀ ⦃t : Finset E⦄, t ∈ K.faces → s ⊆ t → s = t)
⊢ ∃ t, t ∈ K.faces ∧ s ⊂ t

tactic: obtain ⟨t, ht⟩ := hs' hs
state_before: case refine'_1
𝕜 : Type u_2
E : Type u_1
ι : Type ?u.69803
inst✝² : OrderedRing 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
K : SimplicialComplex 𝕜 E
s t : Finset E
x : E
hs : s ∈ K.faces
hs' : s ∈ K.faces → Exists fun ⦃t⦄ => t ∈ K.faces ∧ s ⊆ t ∧ s ≠ t
⊢ ∃ t, t ∈ K.faces ∧ s ⊂ t

tactic: exact ⟨t, ht.1, ⟨ht.2.1, fun hts => ht.2.2 (Subset.antisymm ht.2.1 hts)⟩⟩
state_before: case refine'_1.intro
𝕜 : Type u_2
E : Type u_1
ι : Type ?u.69803
inst✝² : OrderedRing 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
K : SimplicialComplex 𝕜 E
s t✝ : Finset E
x : E
hs : s ∈ K.faces
hs' : s ∈ K.faces → Exists fun ⦃t⦄ => t ∈ K.faces ∧ s ⊆ t ∧ s ≠ t
t : Finset E
ht : t ∈ K.faces ∧ s ⊆ t ∧ s ≠ t
⊢ ∃ t, t ∈ K.faces ∧ s ⊂ t

tactic: rintro ⟨t, ht⟩ ⟨hs, hs'⟩
state_before: case refine'_2
𝕜 : Type u_2
E : Type u_1
ι : Type ?u.69803
inst✝² : OrderedRing 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
K : SimplicialComplex 𝕜 E
s t : Finset E
x : E
hs : s ∈ K.faces
⊢ (∃ t, t ∈ K.faces ∧ s ⊂ t) → ¬s ∈ facets K

tactic: have := hs' ht.1 ht.2.1
state_before: case refine'_2.intro.intro
𝕜 : Type u_2
E : Type u_1
ι : Type ?u.69803
inst✝² : OrderedRing 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
K : SimplicialComplex 𝕜 E
s t✝ : Finset E
x : E
hs✝ : s ∈ K.faces
t : Finset E
ht : t ∈ K.faces ∧ s ⊂ t
hs : s ∈ K.faces
hs' : ∀ ⦃t : Finset E⦄, t ∈ K.faces → s ⊆ t → s = t
⊢ False

tactic: rw [this] at ht
state_before: case refine'_2.intro.intro
𝕜 : Type u_2
E : Type u_1
ι : Type ?u.69803
inst✝² : OrderedRing 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
K : SimplicialComplex 𝕜 E
s t✝ : Finset E
x : E
hs✝ : s ∈ K.faces
t : Finset E
ht : t ∈ K.faces ∧ s ⊂ t
hs : s ∈ K.faces
hs' : ∀ ⦃t : Finset E⦄, t ∈ K.faces → s ⊆ t → s = t
this : s = t
⊢ False

tactic: exact ht.2.2 (Subset.refl t)
state_before: case refine'_2.intro.intro
𝕜 : Type u_2
E : Type u_1
ι : Type ?u.69803
inst✝² : OrderedRing 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
K : SimplicialComplex 𝕜 E
s t✝ : Finset E
x : E
hs✝ : s ∈ K.faces
t : Finset E
ht : t ∈ K.faces ∧ t ⊂ t
hs : s ∈ K.faces
hs' : ∀ ⦃t : Finset E⦄, t ∈ K.faces → s ⊆ t → s = t
this : s = t
⊢ False
Theorem: list_prod_mem
File: Mathlib/GroupTheory/Submonoid/Membership.lean

tactic: lift l to List S using hl
state_before: M : Type u_1
A : Type ?u.11708
B : Type u_2
inst✝² : Monoid M
inst✝¹ : SetLike B M
inst✝ : SubmonoidClass B M
S : B
l : List M
hl : ∀ (x : M), x ∈ l → x ∈ S
⊢ List.prod l ∈ S

tactic: rw [← coe_list_prod]
state_before: case intro
M : Type u_1
A : Type ?u.11708
B : Type u_2
inst✝² : Monoid M
inst✝¹ : SetLike B M
inst✝ : SubmonoidClass B M
S : B
l : List { x // x ∈ S }
⊢ List.prod (List.map Subtype.val l) ∈ S

tactic: exact l.prod.coe_prop
state_before: case intro
M : Type u_1
A : Type ?u.11708
B : Type u_2
inst✝² : Monoid M
inst✝¹ : SetLike B M
inst✝ : SubmonoidClass B M
S : B
l : List { x // x ∈ S }
⊢ ↑(List.prod l) ∈ S
Theorem: MeasureTheory.L1.norm_setToL1_le_norm_setToL1SCLM
File: Mathlib/MeasureTheory/Integral/SetToL1.lean

tactic: refine'
  ContinuousLinearMap.op_norm_extend_le (setToL1SCLM α E μ hT) (coeToLp α E ℝ)
    (simpleFunc.denseRange one_ne_top) fun x => le_of_eq _
state_before: α : Type u_1
E : Type u_2
F : Type u_3
F' : Type ?u.1256704
G : Type ?u.1256707
𝕜 : Type ?u.1256710
p : ℝ≥0∞
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace ℝ E
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace ℝ F
inst✝⁶ : NormedAddCommGroup F'
inst✝⁵ : NormedSpace ℝ F'
inst✝⁴ : NormedAddCommGroup G
m : MeasurableSpace α
μ : Measure α
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedSpace 𝕜 E
inst✝¹ : NormedSpace 𝕜 F
inst✝ : CompleteSpace F
T T' T'' : Set α → E →L[ℝ] F
C C' C'' : ℝ
hT : DominatedFinMeasAdditive μ T C
⊢ ‖setToL1 hT‖ ≤ ↑1 * ‖setToL1SCLM α E μ hT‖

tactic: rw [NNReal.coe_one, one_mul]
state_before: α : Type u_1
E : Type u_2
F : Type u_3
F' : Type ?u.1256704
G : Type ?u.1256707
𝕜 : Type ?u.1256710
p : ℝ≥0∞
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace ℝ E
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace ℝ F
inst✝⁶ : NormedAddCommGroup F'
inst✝⁵ : NormedSpace ℝ F'
inst✝⁴ : NormedAddCommGroup G
m : MeasurableSpace α
μ : Measure α
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedSpace 𝕜 E
inst✝¹ : NormedSpace 𝕜 F
inst✝ : CompleteSpace F
T T' T'' : Set α → E →L[ℝ] F
C C' C'' : ℝ
hT : DominatedFinMeasAdditive μ T C
x : { x // x ∈ simpleFunc E 1 μ }
⊢ ‖x‖ = ↑1 * ‖↑(coeToLp α E ℝ) x‖

tactic: rfl
state_before: α : Type u_1
E : Type u_2
F : Type u_3
F' : Type ?u.1256704
G : Type ?u.1256707
𝕜 : Type ?u.1256710
p : ℝ≥0∞
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace ℝ E
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace ℝ F
inst✝⁶ : NormedAddCommGroup F'
inst✝⁵ : NormedSpace ℝ F'
inst✝⁴ : NormedAddCommGroup G
m : MeasurableSpace α
μ : Measure α
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedSpace 𝕜 E
inst✝¹ : NormedSpace 𝕜 F
inst✝ : CompleteSpace F
T T' T'' : Set α → E →L[ℝ] F
C C' C'' : ℝ
hT : DominatedFinMeasAdditive μ T C
x : { x // x ∈ simpleFunc E 1 μ }
⊢ ‖x‖ = ‖↑(coeToLp α E ℝ) x‖

tactic: rw [NNReal.coe_one, one_mul]
state_before: α : Type u_1
E : Type u_2
F : Type u_3
F' : Type ?u.1256704
G : Type ?u.1256707
𝕜 : Type ?u.1256710
p : ℝ≥0∞
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace ℝ E
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace ℝ F
inst✝⁶ : NormedAddCommGroup F'
inst✝⁵ : NormedSpace ℝ F'
inst✝⁴ : NormedAddCommGroup G
m : MeasurableSpace α
μ : Measure α
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedSpace 𝕜 E
inst✝¹ : NormedSpace 𝕜 F
inst✝ : CompleteSpace F
T T' T'' : Set α → E →L[ℝ] F
C C' C'' : ℝ
hT : DominatedFinMeasAdditive μ T C
⊢ ↑1 * ‖setToL1SCLM α E μ hT‖ = ‖setToL1SCLM α E μ hT‖
Theorem: Ordinal.derivBFamily_fp
File: Mathlib/SetTheory/Ordinal/FixedPoint.lean

tactic: rw [← familyOfBFamily_enum o f]
state_before: o : Ordinal
f : (b : Ordinal) → b < o → Ordinal → Ordinal
i : Ordinal
hi : i < o
H : IsNormal (f i hi)
a : Ordinal
⊢ f i hi (derivBFamily o f a) = derivBFamily o f a

tactic: apply derivFamily_fp
state_before: o : Ordinal
f : (b : Ordinal) → b < o → Ordinal → Ordinal
i : Ordinal
hi : i < o
H : IsNormal (f i hi)
a : Ordinal
⊢ familyOfBFamily o f (enum (fun x x_1 => x < x_1) i (_ : i < type fun x x_1 => x < x_1)) (derivBFamily o f a) =
    derivBFamily o f a

tactic: rw [familyOfBFamily_enum]
state_before: case H
o : Ordinal
f : (b : Ordinal) → b < o → Ordinal → Ordinal
i : Ordinal
hi : i < o
H : IsNormal (f i hi)
a : Ordinal
⊢ IsNormal (familyOfBFamily o f (enum (fun x x_1 => x < x_1) i (_ : i < type fun x x_1 => x < x_1)))

tactic: exact H
state_before: case H
o : Ordinal
f : (b : Ordinal) → b < o → Ordinal → Ordinal
i : Ordinal
hi : i < o
H : IsNormal (f i hi)
a : Ordinal
⊢ IsNormal (f i ?H.hi)

case H.hi
o : Ordinal
f : (b : Ordinal) → b < o → Ordinal → Ordinal
i : Ordinal
hi : i < o
H : IsNormal (f i hi)
a : Ordinal
⊢ i < o