tasksource/leandojo huggingface dataset:
Theorem: Relation.TransGen.tail'_iff
File: Mathlib/Logic/Relation.lean

tactic: refine' ⟨fun h ↦ _, fun ⟨b, hab, hbc⟩ ↦ tail' hab hbc⟩
state_before: α : Type u_1
β : Type ?u.21101
γ : Type ?u.21104
δ : Type ?u.21107
r : α → α → Prop
a b c d : α
⊢ TransGen r a c ↔ ∃ b, ReflTransGen r a b ∧ r b c

tactic: cases' h with _ hac b _ hab hbc
state_before: α : Type u_1
β : Type ?u.21101
γ : Type ?u.21104
δ : Type ?u.21107
r : α → α → Prop
a b c d : α
h : TransGen r a c
⊢ ∃ b, ReflTransGen r a b ∧ r b c

tactic: exact ⟨_, by rfl, hac⟩
state_before: case single
α : Type u_1
β : Type ?u.21101
γ : Type ?u.21104
δ : Type ?u.21107
r : α → α → Prop
a b c d : α
hac : r a c
⊢ ∃ b, ReflTransGen r a b ∧ r b c

tactic: rfl
state_before: α : Type u_1
β : Type ?u.21101
γ : Type ?u.21104
δ : Type ?u.21107
r : α → α → Prop
a b c d : α
hac : r a c
⊢ ReflTransGen r a a

tactic: exact ⟨_, hab.to_reflTransGen, hbc⟩
state_before: case tail
α : Type u_1
β : Type ?u.21101
γ : Type ?u.21104
δ : Type ?u.21107
r : α → α → Prop
a b✝ c d b : α
hab : TransGen r a b
hbc : r b c
⊢ ∃ b, ReflTransGen r a b ∧ r b c
Theorem: MeasureTheory.union_ae_eq_right_iff_ae_subset
File: Mathlib/MeasureTheory/Measure/MeasureSpace.lean

tactic: rw [union_comm, union_ae_eq_left_iff_ae_subset]
state_before: α : Type u_1
β : Type ?u.31164
γ : Type ?u.31167
δ : Type ?u.31170
ι : Type ?u.31173
R : Type ?u.31176
R' : Type ?u.31179
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s s₁ s₂ t : Set α
⊢ s ∪ t =ᵐ[μ] t ↔ s ≤ᵐ[μ] t
Theorem: CochainComplex.single₀_obj_x_dTo
File: Mathlib/Algebra/Homology/Single.lean

tactic: cases i
state_before: V : Type u
inst✝² : Category V
inst✝¹ : HasZeroMorphisms V
inst✝ : HasZeroObject V
X : V
i : ℕ
⊢ dTo ((single₀ V).obj X) i = 0

tactic: rw [dTo_eq_zero]
state_before: case zero
V : Type u
inst✝² : Category V
inst✝¹ : HasZeroMorphisms V
inst✝ : HasZeroObject V
X : V
⊢ dTo ((single₀ V).obj X) Nat.zero = 0

tactic: simp
state_before: case zero.h
V : Type u
inst✝² : Category V
inst✝¹ : HasZeroMorphisms V
inst✝ : HasZeroObject V
X : V
⊢ ¬ComplexShape.Rel (ComplexShape.up ℕ) (ComplexShape.prev (ComplexShape.up ℕ) Nat.zero) Nat.zero

tactic: erw [dTo_eq ((single₀ V).obj X) rfl]
state_before: case succ
V : Type u
inst✝² : Category V
inst✝¹ : HasZeroMorphisms V
inst✝ : HasZeroObject V
X : V
n✝ : ℕ
⊢ dTo ((single₀ V).obj X) (Nat.succ n✝) = 0

tactic: simp
state_before: case succ
V : Type u
inst✝² : Category V
inst✝¹ : HasZeroMorphisms V
inst✝ : HasZeroObject V
X : V
n✝ : ℕ
⊢ (xPrevIso ((single₀ V).obj X) (_ : n✝ + 1 = n✝ + 1)).hom ≫ d ((single₀ V).obj X) n✝ (n✝ + 1) = 0
Theorem: Finset.biUnion_subset
File: Mathlib/Data/Finset/Basic.lean

tactic: simp only [subset_iff, mem_biUnion]
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.507429
inst✝ : DecidableEq β
s s₁ s₂ : Finset α
t t₁ t₂ : α → Finset β
s' : Finset β
⊢ Finset.biUnion s t ⊆ s' ↔ ∀ (x : α), x ∈ s → t x ⊆ s'

tactic: exact ⟨fun H a ha b hb => H ⟨a, ha, hb⟩, fun H b ⟨a, ha, hb⟩ => H a ha hb⟩
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.507429
inst✝ : DecidableEq β
s s₁ s₂ : Finset α
t t₁ t₂ : α → Finset β
s' : Finset β
⊢ (∀ ⦃x : β⦄, (∃ a, a ∈ s ∧ x ∈ t a) → x ∈ s') ↔ ∀ (x : α), x ∈ s → ∀ ⦃x_1 : β⦄, x_1 ∈ t x → x_1 ∈ s'
Theorem: Cardinal.ord_injective
File: Mathlib/SetTheory/Ordinal/Basic.lean

tactic: intro c c' h
state_before: α : Type ?u.231373
β : Type ?u.231376
γ : Type ?u.231379
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
⊢ Injective ord

tactic: rw [← card_ord c, ← card_ord c', h]
state_before: α : Type ?u.231373
β : Type ?u.231376
γ : Type ?u.231379
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
c c' : Cardinal
h : ord c = ord c'
⊢ c = c'
Theorem: sup_eq_iSup
File: Mathlib/Order/CompleteLattice.lean

tactic: rw [iSup_bool_eq, Bool.cond_true, Bool.cond_false]
state_before: α : Type u_1
β : Type ?u.162516
β₂ : Type ?u.162519
γ : Type ?u.162522
ι : Sort ?u.162525
ι' : Sort ?u.162528
κ : ι → Sort ?u.162533
κ' : ι' → Sort ?u.162538
inst✝ : CompleteLattice α
f g s t : ι → α
a b x y : α
⊢ x ⊔ y = ⨆ (b : Bool), bif b then x else y
Theorem: Rat.coe_nat_eq_divInt
File: Mathlib/Data/Rat/Defs.lean

tactic: rw [← Int.cast_ofNat, coe_int_eq_divInt]
state_before: a b c : ℚ
n : ℕ
⊢ ↑n = ↑n /. 1
Theorem: CategoryTheory.SingleObj.inv_as_inv
File: Mathlib/CategoryTheory/SingleObj.lean

tactic: apply IsIso.inv_eq_of_hom_inv_id
state_before: α : Type u
inst✝ : Group α
x y : SingleObj α
f : x ⟶ y
⊢ inv f = f⁻¹

tactic: rw [comp_as_mul, inv_mul_self, id_as_one]
state_before: case hom_inv_id
α : Type u
inst✝ : Group α
x y : SingleObj α
f : x ⟶ y
⊢ f ≫ f⁻¹ = 𝟙 x
Theorem: Disjoint.aedisjoint
File: Mathlib/MeasureTheory/Measure/AEDisjoint.lean

tactic: rw [AEDisjoint, disjoint_iff_inter_eq_empty.1 h, measure_empty]
state_before: ι : Type ?u.3796
α : Type u_1
m : MeasurableSpace α
μ : Measure α
s t u v : Set α
h : Disjoint s t
⊢ AEDisjoint μ s t
Theorem: DirectSum.mul_eq_sum_support_ghas_mul
File: Mathlib/Algebra/DirectSum/Ring.lean

tactic: simp only [mul_eq_dfinsupp_sum, Dfinsupp.sum, Finset.sum_product]
state_before: ι : Type u_2
inst✝⁴ : DecidableEq ι
A : ι → Type u_1
inst✝³ : (i : ι) → AddCommMonoid (A i)
inst✝² : AddMonoid ι
inst✝¹ : GSemiring A
inst✝ : (i : ι) → (x : A i) → Decidable (x ≠ 0)
a a' : ⨁ (i : ι), A i
⊢ a * a' =
    ∑ ij in Dfinsupp.support a ×ˢ Dfinsupp.support a',
      ↑(of (fun i => (fun i => A i) i) (ij.fst + ij.snd)) (GradedMonoid.GMul.mul (↑a ij.fst) (↑a' ij.snd))
Theorem: Set.image_inter_on
File: Mathlib/Data/Set/Image.lean

tactic: simp [*]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.31251
ι : Sort ?u.31254
ι' : Sort ?u.31257
f✝ : α → β
s✝ t✝ : Set α
f : α → β
s t : Set α
h : ∀ (x : α), x ∈ t → ∀ (y : α), y ∈ s → f x = f y → x = y
b : β
x✝ : b ∈ f '' s ∩ f '' t
a₁ : α
ha₁ : a₁ ∈ s
h₁ : f a₁ = b
a₂ : α
ha₂ : a₂ ∈ t
h₂ : f a₂ = b
⊢ f a₂ = f a₁
Theorem: MvQPF.wEquiv.refl
File: Mathlib/Data/QPF/Multivariate/Constructions/Fix.lean

tactic: apply q.P.w_cases _ x
state_before: n : ℕ
F : TypeVec (n + 1) → Type u
inst✝ : MvFunctor F
q : MvQPF F
α : TypeVec n
x : MvPFunctor.W (P F) α
⊢ WEquiv x x

tactic: intro a f' f
state_before: n : ℕ
F : TypeVec (n + 1) → Type u
inst✝ : MvFunctor F
q : MvQPF F
α : TypeVec n
x : MvPFunctor.W (P F) α
⊢ ∀ (a : (P F).A) (f' : MvPFunctor.B (MvPFunctor.drop (P F)) a ⟹ α)
    (f : PFunctor.B (MvPFunctor.last (P F)) a → MvPFunctor.W (P F) α),
    WEquiv (MvPFunctor.wMk (P F) a f' f) (MvPFunctor.wMk (P F) a f' f)

tactic: exact WEquiv.abs a f' f a f' f rfl
state_before: n : ℕ
F : TypeVec (n + 1) → Type u
inst✝ : MvFunctor F
q : MvQPF F
α : TypeVec n
x : MvPFunctor.W (P F) α
a : (P F).A
f' : MvPFunctor.B (MvPFunctor.drop (P F)) a ⟹ α
f : PFunctor.B (MvPFunctor.last (P F)) a → MvPFunctor.W (P F) α
⊢ WEquiv (MvPFunctor.wMk (P F) a f' f) (MvPFunctor.wMk (P F) a f' f)
Theorem: Finsupp.mul_prod_erase'
File: Mathlib/Algebra/BigOperators/Finsupp.lean

tactic: by_cases hyf : y ∈ f.support
state_before: α : Type u_1
ι : Type ?u.145629
γ : Type ?u.145632
A : Type ?u.145635
B : Type ?u.145638
C : Type ?u.145641
inst✝⁵ : AddCommMonoid A
inst✝⁴ : AddCommMonoid B
inst✝³ : AddCommMonoid C
t : ι → A → C
h0 : ∀ (i : ι), t i 0 = 0
h1 : ∀ (i : ι) (x y : A), t i (x + y) = t i x + t i y
s : Finset α
f✝ : α → ι →₀ A
i : ι
g✝ : ι →₀ A
k : ι → A → γ → B
x : γ
β : Type ?u.148771
M : Type u_2
M' : Type ?u.148777
N : Type u_3
P : Type ?u.148783
G : Type ?u.148786
H : Type ?u.148789
R : Type ?u.148792
S : Type ?u.148795
inst✝² : Zero M
inst✝¹ : Zero M'
inst✝ : CommMonoid N
f : α →₀ M
y : α
g : α → M → N
hg : ∀ (i : α), g i 0 = 1
⊢ g y (↑f y) * prod (erase y f) g = prod f g

tactic: exact Finsupp.mul_prod_erase f y g hyf
state_before: case pos
α : Type u_1
ι : Type ?u.145629
γ : Type ?u.145632
A : Type ?u.145635
B : Type ?u.145638
C : Type ?u.145641
inst✝⁵ : AddCommMonoid A
inst✝⁴ : AddCommMonoid B
inst✝³ : AddCommMonoid C
t : ι → A → C
h0 : ∀ (i : ι), t i 0 = 0
h1 : ∀ (i : ι) (x y : A), t i (x + y) = t i x + t i y
s : Finset α
f✝ : α → ι →₀ A
i : ι
g✝ : ι →₀ A
k : ι → A → γ → B
x : γ
β : Type ?u.148771
M : Type u_2
M' : Type ?u.148777
N : Type u_3
P : Type ?u.148783
G : Type ?u.148786
H : Type ?u.148789
R : Type ?u.148792
S : Type ?u.148795
inst✝² : Zero M
inst✝¹ : Zero M'
inst✝ : CommMonoid N
f : α →₀ M
y : α
g : α → M → N
hg : ∀ (i : α), g i 0 = 1
hyf : y ∈ f.support
⊢ g y (↑f y) * prod (erase y f) g = prod f g

tactic: rw [not_mem_support_iff.mp hyf, hg y, erase_of_not_mem_support hyf, one_mul]
state_before: case neg
α : Type u_1
ι : Type ?u.145629
γ : Type ?u.145632
A : Type ?u.145635
B : Type ?u.145638
C : Type ?u.145641
inst✝⁵ : AddCommMonoid A
inst✝⁴ : AddCommMonoid B
inst✝³ : AddCommMonoid C
t : ι → A → C
h0 : ∀ (i : ι), t i 0 = 0
h1 : ∀ (i : ι) (x y : A), t i (x + y) = t i x + t i y
s : Finset α
f✝ : α → ι →₀ A
i : ι
g✝ : ι →₀ A
k : ι → A → γ → B
x : γ
β : Type ?u.148771
M : Type u_2
M' : Type ?u.148777
N : Type u_3
P : Type ?u.148783
G : Type ?u.148786
H : Type ?u.148789
R : Type ?u.148792
S : Type ?u.148795
inst✝² : Zero M
inst✝¹ : Zero M'
inst✝ : CommMonoid N
f : α →₀ M
y : α
g : α → M → N
hg : ∀ (i : α), g i 0 = 1
hyf : ¬y ∈ f.support
⊢ g y (↑f y) * prod (erase y f) g = prod f g
Theorem: Finset.filter_insert
File: Mathlib/Data/Finset/Basic.lean

tactic: ext x
state_before: α : Type u_1
β : Type ?u.379119
γ : Type ?u.379122
p q : α → Prop
inst✝² : DecidablePred p
inst✝¹ : DecidablePred q
inst✝ : DecidableEq α
a : α
s : Finset α
⊢ filter p (insert a s) = if p a then insert a (filter p s) else filter p s

tactic: split_ifs with h <;> by_cases h' : x = a <;> simp [h, h']
state_before: case a
α : Type u_1
β : Type ?u.379119
γ : Type ?u.379122
p q : α → Prop
inst✝² : DecidablePred p
inst✝¹ : DecidablePred q
inst✝ : DecidableEq α
a : α
s : Finset α
x : α
⊢ x ∈ filter p (insert a s) ↔ x ∈ if p a then insert a (filter p s) else filter p s
Theorem: List.getLast_cons'
File: Std/Data/List/Lemmas.lean

tactic: induction l <;> intros
state_before: α : Type u_1
a : α
l : List α
⊢ ∀ (h₁ : a :: l ≠ []) (h₂ : l ≠ []), getLast (a :: l) h₁ = getLast l h₂

tactic: {contradiction}
state_before: case nil
α : Type u_1
a : α
h₁✝ : [a] ≠ []
h₂✝ : [] ≠ []
⊢ getLast [a] h₁✝ = getLast [] h₂✝

case cons
α : Type u_1
a head✝ : α
tail✝ : List α
tail_ih✝ : ∀ (h₁ : a :: tail✝ ≠ []) (h₂ : tail✝ ≠ []), getLast (a :: tail✝) h₁ = getLast tail✝ h₂
h₁✝ : a :: head✝ :: tail✝ ≠ []
h₂✝ : head✝ :: tail✝ ≠ []
⊢ getLast (a :: head✝ :: tail✝) h₁✝ = getLast (head✝ :: tail✝) h₂✝

tactic: rfl
state_before: case cons
α : Type u_1
a head✝ : α
tail✝ : List α
tail_ih✝ : ∀ (h₁ : a :: tail✝ ≠ []) (h₂ : tail✝ ≠ []), getLast (a :: tail✝) h₁ = getLast tail✝ h₂
h₁✝ : a :: head✝ :: tail✝ ≠ []
h₂✝ : head✝ :: tail✝ ≠ []
⊢ getLast (a :: head✝ :: tail✝) h₁✝ = getLast (head✝ :: tail✝) h₂✝
Theorem: Nat.div_eq_self
File: Mathlib/Data/Nat/Order/Basic.lean

tactic: constructor
state_before: m n k l : ℕ
⊢ m / n = m ↔ m = 0 ∨ n = 1

tactic: intro
state_before: case mp
m n k l : ℕ
⊢ m / n = m → m = 0 ∨ n = 1

tactic: match n with
| 0 => simp_all
| 1 =>
  right
  rfl
| n+2 =>
  left
  have : m / (n + 2) ≤ m / 2 := div_le_div_left (by simp) (by decide)
  refine eq_zero_of_le_half ?_
  simp_all
state_before: case mp
m n k l : ℕ
a✝ : m / n = m
⊢ m = 0 ∨ n = 1

tactic: simp_all
state_before: m n k l : ℕ
a✝ : m / 0 = m
⊢ m = 0 ∨ 0 = 1

tactic: right
state_before: m n k l : ℕ
a✝ : m / 1 = m
⊢ m = 0 ∨ 1 = 1

tactic: rfl
state_before: case h
m n k l : ℕ
a✝ : m / 1 = m
⊢ 1 = 1

tactic: left
state_before: m n✝ k l n : ℕ
a✝ : m / (n + 2) = m
⊢ m = 0 ∨ n + 2 = 1

tactic: have : m / (n + 2) ≤ m / 2 := div_le_div_left (by simp) (by decide)
state_before: case h
m n✝ k l n : ℕ
a✝ : m / (n + 2) = m
⊢ m = 0

tactic: refine eq_zero_of_le_half ?_
state_before: case h
m n✝ k l n : ℕ
a✝ : m / (n + 2) = m
this : m / (n + 2) ≤ m / 2
⊢ m = 0

tactic: simp_all
state_before: case h
m n✝ k l n : ℕ
a✝ : m / (n + 2) = m
this : m / (n + 2) ≤ m / 2
⊢ m ≤ m / 2

tactic: simp
state_before: m n✝ k l n : ℕ
a✝ : m / (n + 2) = m
⊢ 2 ≤ n + 2

tactic: decide
state_before: m n✝ k l n : ℕ
a✝ : m / (n + 2) = m
⊢ 0 < 2

tactic: rintro (rfl | rfl) <;> simp
state_before: case mpr
m n k l : ℕ
⊢ m = 0 ∨ n = 1 → m / n = m
Theorem: Set.diff_singleton_eq_self
File: Mathlib/Data/Set/Basic.lean

tactic: simp [h]
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
a✝ b : α
s✝ s₁ s₂ t t₁ t₂ u : Set α
a : α
s : Set α
h : ¬a ∈ s
⊢ Disjoint {a} s
Theorem: HasSum.star
File: Mathlib/Topology/Algebra/InfiniteSum/Basic.lean

tactic: simpa only using h.map (starAddEquiv : α ≃+ α) continuous_star
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.809017
δ : Type ?u.809020
inst✝³ : AddCommMonoid α
inst✝² : TopologicalSpace α
inst✝¹ : StarAddMonoid α
inst✝ : ContinuousStar α
f : β → α
a : α
h : HasSum f a
⊢ HasSum (fun b => Star.star (f b)) (Star.star a)
Theorem: MeasureTheory.SimpleFunc.posPart_map_norm
File: Mathlib/MeasureTheory/Integral/Bochner.lean

tactic: ext
state_before: α : Type u_1
E : Type ?u.92838
F : Type ?u.92841
𝕜 : Type ?u.92844
inst✝² : LinearOrder E
inst✝¹ : Zero E
inst✝ : MeasurableSpace α
f : α →ₛ ℝ
⊢ map norm (posPart f) = posPart f

tactic: rw [map_apply, Real.norm_eq_abs, abs_of_nonneg]
state_before: case H
α : Type u_1
E : Type ?u.92838
F : Type ?u.92841
𝕜 : Type ?u.92844
inst✝² : LinearOrder E
inst✝¹ : Zero E
inst✝ : MeasurableSpace α
f : α →ₛ ℝ
a✝ : α
⊢ ↑(map norm (posPart f)) a✝ = ↑(posPart f) a✝

tactic: exact le_max_right _ _
state_before: case H
α : Type u_1
E : Type ?u.92838
F : Type ?u.92841
𝕜 : Type ?u.92844
inst✝² : LinearOrder E
inst✝¹ : Zero E
inst✝ : MeasurableSpace α
f : α →ₛ ℝ
a✝ : α
⊢ 0 ≤ ↑(posPart f) a✝
Theorem: MeasureTheory.SimpleFunc.integral_eq_sum_filter
File: Mathlib/MeasureTheory/Integral/Bochner.lean

tactic: rw [integral_def, setToSimpleFunc_eq_sum_filter]
state_before: α : Type u_2
E : Type ?u.101804
F : Type u_1
𝕜 : Type ?u.101810
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
p : ℝ≥0∞
G : Type ?u.101912
F' : Type ?u.101915
inst✝³ : NormedAddCommGroup G
inst✝² : NormedAddCommGroup F'
inst✝¹ : NormedSpace ℝ F'
m✝ : MeasurableSpace α
μ✝ : Measure α
inst✝ : DecidablePred fun x => x ≠ 0
m : MeasurableSpace α
f : α →ₛ F
μ : Measure α
⊢ integral μ f = ∑ x in filter (fun x => x ≠ 0) (SimpleFunc.range f), ENNReal.toReal (↑↑μ (↑f ⁻¹' {x})) • x

tactic: simp_rw [weightedSMul_apply]
state_before: α : Type u_2
E : Type ?u.101804
F : Type u_1
𝕜 : Type ?u.101810
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
p : ℝ≥0∞
G : Type ?u.101912
F' : Type ?u.101915
inst✝³ : NormedAddCommGroup G
inst✝² : NormedAddCommGroup F'
inst✝¹ : NormedSpace ℝ F'
m✝ : MeasurableSpace α
μ✝ : Measure α
inst✝ : DecidablePred fun x => x ≠ 0
m : MeasurableSpace α
f : α →ₛ F
μ : Measure α
⊢ ∑ x in filter (fun x => x ≠ 0) (SimpleFunc.range f), ↑(weightedSMul μ (↑f ⁻¹' {x})) x =
    ∑ x in filter (fun x => x ≠ 0) (SimpleFunc.range f), ENNReal.toReal (↑↑μ (↑f ⁻¹' {x})) • x

tactic: congr
state_before: α : Type u_2
E : Type ?u.101804
F : Type u_1
𝕜 : Type ?u.101810
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
p : ℝ≥0∞
G : Type ?u.101912
F' : Type ?u.101915
inst✝³ : NormedAddCommGroup G
inst✝² : NormedAddCommGroup F'
inst✝¹ : NormedSpace ℝ F'
m✝ : MeasurableSpace α
μ✝ : Measure α
inst✝ : DecidablePred fun x => x ≠ 0
m : MeasurableSpace α
f : α →ₛ F
μ : Measure α
⊢ ∑ x in filter (fun x => x ≠ 0) (SimpleFunc.range f), ENNReal.toReal (↑↑μ (↑f ⁻¹' {x})) • x =
    ∑ x in filter (fun x => x ≠ 0) (SimpleFunc.range f), ENNReal.toReal (↑↑μ (↑f ⁻¹' {x})) • x
Theorem: Ordinal.le_mex_of_forall
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: by_contra' h
state_before: α : Type ?u.373286
β : Type ?u.373289
γ : Type ?u.373292
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
ι : Type u
f : ι → Ordinal
a : Ordinal
H : ∀ (b : Ordinal), b < a → ∃ i, f i = b
⊢ a ≤ mex f

tactic: exact mex_not_mem_range f (H _ h)
state_before: α : Type ?u.373286
β : Type ?u.373289
γ : Type ?u.373292
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
ι : Type u
f : ι → Ordinal
a : Ordinal
H : ∀ (b : Ordinal), b < a → ∃ i, f i = b
h : mex f < a
⊢ False
Theorem: max_sub_max_le_max
File: Mathlib/Algebra/Order/Group/MinMax.lean

tactic: simp only [sub_le_iff_le_add, max_le_iff]
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
a✝ b✝ c✝ a b c d : α
⊢ max a b - max c d ≤ max (a - c) (b - d)

tactic: constructor
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
a✝ b✝ c✝ a b c d : α
⊢ a ≤ max (a - c) (b - d) + max c d ∧ b ≤ max (a - c) (b - d) + max c d

tactic: calc
  a = a - c + c := (sub_add_cancel a c).symm
  _ ≤ max (a - c) (b - d) + max c d := add_le_add (le_max_left _ _) (le_max_left _ _)
state_before: case left
α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
a✝ b✝ c✝ a b c d : α
⊢ a ≤ max (a - c) (b - d) + max c d

case right
α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
a✝ b✝ c✝ a b c d : α
⊢ b ≤ max (a - c) (b - d) + max c d

tactic: calc
  b = b - d + d := (sub_add_cancel b d).symm
  _ ≤ max (a - c) (b - d) + max c d := add_le_add (le_max_right _ _) (le_max_right _ _)
state_before: case right
α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
a✝ b✝ c✝ a b c d : α
⊢ b ≤ max (a - c) (b - d) + max c d
Theorem: thickening_ball
File: Mathlib/Analysis/NormedSpace/Pointwise.lean

tactic: rw [← thickening_singleton, thickening_thickening hε hδ, thickening_singleton]
state_before: 𝕜 : Type ?u.232934
E : Type u_1
inst✝³ : NormedField 𝕜
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : NormedSpace ℝ E
x✝ y z : E
δ ε : ℝ
hε : 0 < ε
hδ : 0 < δ
x : E
⊢ thickening ε (Metric.ball x δ) = Metric.ball x (ε + δ)
Theorem: Isometry.ediam_range
File: Mathlib/Topology/MetricSpace/Isometry.lean

tactic: rw [← image_univ]
state_before: ι : Type ?u.45267
α : Type u
β : Type v
γ : Type w
inst✝² : PseudoEMetricSpace α
inst✝¹ : PseudoEMetricSpace β
inst✝ : PseudoEMetricSpace γ
f : α → β
x y z : α
s : Set α
hf : Isometry f
⊢ EMetric.diam (range f) = EMetric.diam univ

tactic: exact hf.ediam_image univ
state_before: ι : Type ?u.45267
α : Type u
β : Type v
γ : Type w
inst✝² : PseudoEMetricSpace α
inst✝¹ : PseudoEMetricSpace β
inst✝ : PseudoEMetricSpace γ
f : α → β
x y z : α
s : Set α
hf : Isometry f
⊢ EMetric.diam (f '' univ) = EMetric.diam univ
Theorem: continuousSMul_inf
File: Mathlib/Topology/Algebra/MulAction.lean

tactic: rw [inf_eq_iInf]
state_before: ι : Sort ?u.29844
M : Type u_2
X : Type u_1
inst✝³ : TopologicalSpace M
inst✝² : SMul M X
t₁ t₂ : TopologicalSpace X
inst✝¹ : ContinuousSMul M X
inst✝ : ContinuousSMul M X
⊢ ContinuousSMul M X

tactic: refine' continuousSMul_iInf fun b => _
state_before: ι : Sort ?u.29844
M : Type u_2
X : Type u_1
inst✝³ : TopologicalSpace M
inst✝² : SMul M X
t₁ t₂ : TopologicalSpace X
inst✝¹ : ContinuousSMul M X
inst✝ : ContinuousSMul M X
⊢ ContinuousSMul M X

tactic: cases b <;> assumption
state_before: ι : Sort ?u.29844
M : Type u_2
X : Type u_1
inst✝³ : TopologicalSpace M
inst✝² : SMul M X
t₁ t₂ : TopologicalSpace X
inst✝¹ : ContinuousSMul M X
inst✝ : ContinuousSMul M X
b : Bool
⊢ ContinuousSMul M X
Theorem: Real.tendsto_Icc_vitaliFamily_right
File: Mathlib/MeasureTheory/Covering/OneDim.lean

tactic: refine' (VitaliFamily.tendsto_filterAt_iff _).2 ⟨_, _⟩
state_before: x : ℝ
⊢ Tendsto (fun y => Icc x y) (𝓝[Ioi x] x) (VitaliFamily.filterAt (vitaliFamily volume 1) x)

tactic: filter_upwards [self_mem_nhdsWithin] with y hy using Icc_mem_vitaliFamily_at_right hy
state_before: case refine'_1
x : ℝ
⊢ ∀ᶠ (i : ℝ) in 𝓝[Ioi x] x, Icc x i ∈ VitaliFamily.setsAt (vitaliFamily volume 1) x

tactic: intro ε εpos
state_before: case refine'_2
x : ℝ
⊢ ∀ (ε : ℝ), ε > 0 → ∀ᶠ (i : ℝ) in 𝓝[Ioi x] x, Icc x i ⊆ Metric.closedBall x ε

tactic: have : x ∈ Ico x (x + ε) := ⟨le_refl _, by linarith⟩
state_before: case refine'_2
x ε : ℝ
εpos : ε > 0
⊢ ∀ᶠ (i : ℝ) in 𝓝[Ioi x] x, Icc x i ⊆ Metric.closedBall x ε

tactic: filter_upwards [Icc_mem_nhdsWithin_Ioi this] with y hy
state_before: case refine'_2
x ε : ℝ
εpos : ε > 0
this : x ∈ Ico x (x + ε)
⊢ ∀ᶠ (i : ℝ) in 𝓝[Ioi x] x, Icc x i ⊆ Metric.closedBall x ε

tactic: rw [closedBall_eq_Icc]
state_before: case h
x ε : ℝ
εpos : ε > 0
this : x ∈ Ico x (x + ε)
y : ℝ
hy : y ∈ Icc x (x + ε)
⊢ Icc x y ⊆ Metric.closedBall x ε

tactic: exact Icc_subset_Icc (by linarith) hy.2
state_before: case h
x ε : ℝ
εpos : ε > 0
this : x ∈ Ico x (x + ε)
y : ℝ
hy : y ∈ Icc x (x + ε)
⊢ Icc x y ⊆ Icc (x - ε) (x + ε)

tactic: linarith
state_before: x ε : ℝ
εpos : ε > 0
⊢ x < x + ε

tactic: linarith
state_before: x ε : ℝ
εpos : ε > 0
this : x ∈ Ico x (x + ε)
y : ℝ
hy : y ∈ Icc x (x + ε)
⊢ x - ε ≤ x
Theorem: Finsupp.mem_toAlist
File: Mathlib/Data/Finsupp/AList.lean

tactic: classical rw [AList.mem_keys, ← List.mem_toFinset, toAList_keys_toFinset, mem_support_iff]
state_before: α : Type u_1
M : Type u_2
inst✝ : Zero M
f : α →₀ M
x : α
⊢ x ∈ toAList f ↔ ↑f x ≠ 0

tactic: rw [AList.mem_keys, ← List.mem_toFinset, toAList_keys_toFinset, mem_support_iff]
state_before: α : Type u_1
M : Type u_2
inst✝ : Zero M
f : α →₀ M
x : α
⊢ x ∈ toAList f ↔ ↑f x ≠ 0
Theorem: expSeries_hasSum_exp_of_mem_ball'
File: Mathlib/Analysis/NormedSpace/Exponential.lean

tactic: rw [← expSeries_apply_eq']
state_before: 𝕂 : Type u_2
𝔸 : Type u_1
𝔹 : Type ?u.88124
inst✝⁵ : NontriviallyNormedField 𝕂
inst✝⁴ : NormedRing 𝔸
inst✝³ : NormedRing 𝔹
inst✝² : NormedAlgebra 𝕂 𝔸
inst✝¹ : NormedAlgebra 𝕂 𝔹
inst✝ : CompleteSpace 𝔸
x : 𝔸
hx : x ∈ EMetric.ball 0 (FormalMultilinearSeries.radius (expSeries 𝕂 𝔸))
⊢ HasSum (fun n => (↑n !)⁻¹ • x ^ n) (exp 𝕂 x)

tactic: exact expSeries_hasSum_exp_of_mem_ball x hx
state_before: 𝕂 : Type u_2
𝔸 : Type u_1
𝔹 : Type ?u.88124
inst✝⁵ : NontriviallyNormedField 𝕂
inst✝⁴ : NormedRing 𝔸
inst✝³ : NormedRing 𝔹
inst✝² : NormedAlgebra 𝕂 𝔸
inst✝¹ : NormedAlgebra 𝕂 𝔹
inst✝ : CompleteSpace 𝔸
x : 𝔸
hx : x ∈ EMetric.ball 0 (FormalMultilinearSeries.radius (expSeries 𝕂 𝔸))
⊢ HasSum (fun n => ↑(expSeries 𝕂 𝔸 n) fun x_1 => x) (exp 𝕂 x)
Theorem: CategoryTheory.pre_id
File: Mathlib/CategoryTheory/Closed/Cartesian.lean

tactic: simp [pre]
state_before: C : Type u
inst✝³ : Category C
A✝ B X X' Y Y' Z : C
inst✝² : HasFiniteProducts C
inst✝¹ : Exponentiable A✝
A : C
inst✝ : Exponentiable A
⊢ pre (𝟙 A) = 𝟙 (exp A)
Theorem: Ordinal.add_absorp
File: Mathlib/SetTheory/Ordinal/Principal.lean

tactic: rw [← Ordinal.add_sub_cancel_of_le h₂, ← add_assoc, add_omega_opow h₁]
state_before: a b c : Ordinal
h₁ : a < ω ^ b
h₂ : ω ^ b ≤ c
⊢ a + c = c
Theorem: Nat.Linear.Poly.of_denote_le_cancel
File: src/lean/Init/Data/Nat/Linear.lean

tactic: simp at h
state_before: ctx : Context
m₁ m₂ : Poly
h : denote_le ctx (cancel m₁ m₂)
⊢ denote_le ctx (m₁, m₂)

tactic: have := Poly.of_denote_le_cancelAux (h := h)
state_before: ctx : Context
m₁ m₂ : Poly
h : denote_le ctx (cancel m₁ m₂)
⊢ denote_le ctx (m₁, m₂)

tactic: simp at this
state_before: ctx : Context
m₁ m₂ : Poly
h : denote_le ctx (cancel m₁ m₂)
this : denote_le ctx (List.reverse [] ++ m₁, List.reverse [] ++ m₂)
⊢ denote_le ctx (m₁, m₂)

tactic: assumption
state_before: ctx : Context
m₁ m₂ : Poly
h : denote_le ctx (cancel m₁ m₂)
this : denote_le ctx (m₁, m₂)
⊢ denote_le ctx (m₁, m₂)
Theorem: QuotientGroup.eq
File: Mathlib/GroupTheory/Coset.lean

tactic: rw [leftRel_apply]
state_before: α : Type u_1
inst✝ : Group α
s : Subgroup α
a b : α
⊢ Setoid.r a b ↔ a⁻¹ * b ∈ s
Theorem: Rat.lt_def
File: Mathlib/Data/Rat/Order.lean

tactic: rw [lt_iff_le_and_ne, Rat.le_def']
state_before: a b c p q : ℚ
⊢ p < q ↔ p.num * ↑q.den < q.num * ↑p.den

tactic: exact not_iff_not.mpr eq_iff_mul_eq_mul
state_before: a b c p q : ℚ
⊢ p ≠ q ↔ p.num * ↑q.den ≠ q.num * ↑p.den

tactic: constructor <;> intro h
state_before: a b c p q : ℚ
this : p ≠ q ↔ p.num * ↑q.den ≠ q.num * ↑p.den
⊢ p.num * ↑q.den ≤ q.num * ↑p.den ∧ p ≠ q ↔ p.num * ↑q.den < q.num * ↑p.den

tactic: exact lt_iff_le_and_ne.mpr ⟨h.left, this.mp h.right⟩
state_before: case mp
a b c p q : ℚ
this : p ≠ q ↔ p.num * ↑q.den ≠ q.num * ↑p.den
h : p.num * ↑q.den ≤ q.num * ↑p.den ∧ p ≠ q
⊢ p.num * ↑q.den < q.num * ↑p.den

tactic: have tmp := lt_iff_le_and_ne.mp h
state_before: case mpr
a b c p q : ℚ
this : p ≠ q ↔ p.num * ↑q.den ≠ q.num * ↑p.den
h : p.num * ↑q.den < q.num * ↑p.den
⊢ p.num * ↑q.den ≤ q.num * ↑p.den ∧ p ≠ q

tactic: exact ⟨tmp.left, this.mpr tmp.right⟩
state_before: case mpr
a b c p q : ℚ
this : p ≠ q ↔ p.num * ↑q.den ≠ q.num * ↑p.den
h : p.num * ↑q.den < q.num * ↑p.den
tmp : p.num * ↑q.den ≤ q.num * ↑p.den ∧ p.num * ↑q.den ≠ q.num * ↑p.den
⊢ p.num * ↑q.den ≤ q.num * ↑p.den ∧ p ≠ q