tasksource/leandojo huggingface dataset:
Theorem: Set.prod_eq_seq
File: Mathlib/Data/Set/Lattice.lean

tactic: ext ⟨a, b⟩
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.274480
ι : Sort ?u.274483
ι' : Sort ?u.274486
ι₂ : Sort ?u.274489
κ : ι → Sort ?u.274494
κ₁ : ι → Sort ?u.274499
κ₂ : ι → Sort ?u.274504
κ' : ι' → Sort ?u.274509
s : Set α
t : Set β
⊢ s ×ˢ t = seq (Prod.mk '' s) t

tactic: constructor
state_before: case h.mk
α : Type u_1
β : Type u_2
γ : Type ?u.274480
ι : Sort ?u.274483
ι' : Sort ?u.274486
ι₂ : Sort ?u.274489
κ : ι → Sort ?u.274494
κ₁ : ι → Sort ?u.274499
κ₂ : ι → Sort ?u.274504
κ' : ι' → Sort ?u.274509
s : Set α
t : Set β
a : α
b : β
⊢ (a, b) ∈ s ×ˢ t ↔ (a, b) ∈ seq (Prod.mk '' s) t

tactic: rintro ⟨ha, hb⟩
state_before: case h.mk.mp
α : Type u_1
β : Type u_2
γ : Type ?u.274480
ι : Sort ?u.274483
ι' : Sort ?u.274486
ι₂ : Sort ?u.274489
κ : ι → Sort ?u.274494
κ₁ : ι → Sort ?u.274499
κ₂ : ι → Sort ?u.274504
κ' : ι' → Sort ?u.274509
s : Set α
t : Set β
a : α
b : β
⊢ (a, b) ∈ s ×ˢ t → (a, b) ∈ seq (Prod.mk '' s) t

tactic: exact ⟨Prod.mk a, ⟨a, ha, rfl⟩, b, hb, rfl⟩
state_before: case h.mk.mp.intro
α : Type u_1
β : Type u_2
γ : Type ?u.274480
ι : Sort ?u.274483
ι' : Sort ?u.274486
ι₂ : Sort ?u.274489
κ : ι → Sort ?u.274494
κ₁ : ι → Sort ?u.274499
κ₂ : ι → Sort ?u.274504
κ' : ι' → Sort ?u.274509
s : Set α
t : Set β
a : α
b : β
ha : (a, b).fst ∈ s
hb : (a, b).snd ∈ t
⊢ (a, b) ∈ seq (Prod.mk '' s) t

tactic: rintro ⟨f, ⟨x, hx, rfl⟩, y, hy, eq⟩
state_before: case h.mk.mpr
α : Type u_1
β : Type u_2
γ : Type ?u.274480
ι : Sort ?u.274483
ι' : Sort ?u.274486
ι₂ : Sort ?u.274489
κ : ι → Sort ?u.274494
κ₁ : ι → Sort ?u.274499
κ₂ : ι → Sort ?u.274504
κ' : ι' → Sort ?u.274509
s : Set α
t : Set β
a : α
b : β
⊢ (a, b) ∈ seq (Prod.mk '' s) t → (a, b) ∈ s ×ˢ t

tactic: rw [← eq]
state_before: case h.mk.mpr.intro.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type ?u.274480
ι : Sort ?u.274483
ι' : Sort ?u.274486
ι₂ : Sort ?u.274489
κ : ι → Sort ?u.274494
κ₁ : ι → Sort ?u.274499
κ₂ : ι → Sort ?u.274504
κ' : ι' → Sort ?u.274509
s : Set α
t : Set β
a : α
b : β
x : α
hx : x ∈ s
y : β
hy : y ∈ t
eq : (x, y) = (a, b)
⊢ (a, b) ∈ s ×ˢ t

tactic: exact ⟨hx, hy⟩
state_before: case h.mk.mpr.intro.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type ?u.274480
ι : Sort ?u.274483
ι' : Sort ?u.274486
ι₂ : Sort ?u.274489
κ : ι → Sort ?u.274494
κ₁ : ι → Sort ?u.274499
κ₂ : ι → Sort ?u.274504
κ' : ι' → Sort ?u.274509
s : Set α
t : Set β
a : α
b : β
x : α
hx : x ∈ s
y : β
hy : y ∈ t
eq : (x, y) = (a, b)
⊢ (x, y) ∈ s ×ˢ t
Theorem: Int.le_floor_add_floor
File: Mathlib/Algebra/Order/Floor.lean

tactic: rw [← sub_le_iff_le_add, le_floor, Int.cast_sub, sub_le_comm, Int.cast_sub, Int.cast_one]
state_before: F : Type ?u.132012
α : Type u_1
β : Type ?u.132018
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
z : ℤ
a✝ a b : α
⊢ ⌊a + b⌋ - 1 ≤ ⌊a⌋ + ⌊b⌋

tactic: refine' le_trans _ (sub_one_lt_floor _).le
state_before: F : Type ?u.132012
α : Type u_1
β : Type ?u.132018
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
z : ℤ
a✝ a b : α
⊢ ↑⌊a + b⌋ - 1 - a ≤ ↑⌊b⌋

tactic: rw [sub_le_iff_le_add', ← add_sub_assoc, sub_le_sub_iff_right]
state_before: F : Type ?u.132012
α : Type u_1
β : Type ?u.132018
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
z : ℤ
a✝ a b : α
⊢ ↑⌊a + b⌋ - 1 - a ≤ b - 1

tactic: exact floor_le _
state_before: F : Type ?u.132012
α : Type u_1
β : Type ?u.132018
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
z : ℤ
a✝ a b : α
⊢ ↑⌊a + b⌋ ≤ a + b
Theorem: Finset.disjoint_right
File: Mathlib/Data/Finset/Basic.lean

tactic: rw [_root_.disjoint_comm, disjoint_left]
state_before: α : Type u_1
β : Type ?u.42944
γ : Type ?u.42947
f : α → β
s t u : Finset α
a b : α
⊢ _root_.Disjoint s t ↔ ∀ ⦃a : α⦄, a ∈ t → ¬a ∈ s
Theorem: List.countp_eq_zero
File: Mathlib/Data/List/Count.lean

tactic: rw [← not_iff_not, ← Ne.def, ← pos_iff_ne_zero, countp_pos]
state_before: α : Type u_1
l : List α
p q : α → Bool
⊢ countp p l = 0 ↔ ∀ (a : α), a ∈ l → ¬p a = true

tactic: simp
state_before: α : Type u_1
l : List α
p q : α → Bool
⊢ (∃ a, a ∈ l ∧ p a = true) ↔ ¬∀ (a : α), a ∈ l → ¬p a = true
Theorem: Cardinal.sup_lt_ord_lift_of_isRegular
File: Mathlib/SetTheory/Cardinal/Cofinality.lean

tactic: rwa [hc.cof_eq]
state_before: α : Type ?u.158147
r : α → α → Prop
ι : Type u
f : ι → Ordinal
c : Cardinal
hc : IsRegular c
hι : lift (#ι) < c
⊢ lift (#ι) < Ordinal.cof (ord c)
Theorem: ZNum.ofInt'_neg
File: Mathlib/Data/Num/Lemmas.lean

tactic: simp only [ofInt', Num.zneg_toZNumNeg]
state_before: α : Type ?u.959671
n : ℕ
⊢ ofInt' ↑(n + 1) = -ofInt' -[n+1]

tactic: rw [Num.ofNat'_zero]
state_before: α : Type ?u.959671
⊢ Num.toZNum (Num.ofNat' 0) = -Num.toZNum (Num.ofNat' 0)

tactic: rfl
state_before: α : Type ?u.959671
⊢ Num.toZNum 0 = -Num.toZNum 0

tactic: rw [Num.zneg_toZNum]
state_before: α : Type ?u.959671
n : ℕ
⊢ Num.toZNumNeg (Num.ofNat' (Nat.add n 0 + 1)) = -Num.toZNum (Num.ofNat' (n + 1))
Theorem: OreLocalization.expand
File: Mathlib/RingTheory/OreLocalization/Basic.lean

tactic: apply Quotient.sound
state_before: R : Type u_1
inst✝¹ : Monoid R
S : Submonoid R
inst✝ : OreSet S
r : R
s : { x // x ∈ S }
t : R
hst : ↑s * t ∈ S
⊢ r /ₒ s = r * t /ₒ { val := ↑s * t, property := hst }

tactic: refine' ⟨s, t * s, _, _⟩ <;> dsimp <;> rw [mul_assoc]
state_before: case a
R : Type u_1
inst✝¹ : Monoid R
S : Submonoid R
inst✝ : OreSet S
r : R
s : { x // x ∈ S }
t : R
hst : ↑s * t ∈ S
⊢ (r, s) ≈ (r * t, { val := ↑s * t, property := hst })
Theorem: IsSelfAdjoint.inv
File: Mathlib/Algebra/Star/SelfAdjoint.lean

tactic: simp only [isSelfAdjoint_iff, star_inv', hx.star_eq]
state_before: R : Type u_1
A : Type ?u.44405
inst✝¹ : DivisionSemiring R
inst✝ : StarRing R
x : R
hx : IsSelfAdjoint x
⊢ IsSelfAdjoint x⁻¹
Theorem: CategoryTheory.Limits.HasBiproduct.of_hasProduct
File: Mathlib/CategoryTheory/Preadditive/Biproducts.lean

tactic: cases nonempty_fintype J
state_before: C : Type u
inst✝⁴ : Category C
inst✝³ : Preadditive C
J✝ : Type
inst✝² : Fintype J✝
J : Type
inst✝¹ : Finite J
f : J → C
inst✝ : HasProduct f
⊢ HasBiproduct f

tactic: apply HasBiproduct.mk
  { bicone := _
    isBilimit := biconeIsBilimitOfLimitConeOfIsLimit (limit.isLimit _) }
state_before: case intro
C : Type u
inst✝⁴ : Category C
inst✝³ : Preadditive C
J✝ : Type
inst✝² : Fintype J✝
J : Type
inst✝¹ : Finite J
f : J → C
inst✝ : HasProduct f
val✝ : Fintype J
⊢ HasBiproduct f
Theorem: ContinuousLinearMap.projKerOfRightInverse_comp_inv
File: Mathlib/Topology/Algebra/Module/Basic.lean

tactic: simp [h y]
state_before: R : Type u_2
inst✝¹⁵ : Ring R
R₂ : Type u_3
inst✝¹⁴ : Ring R₂
R₃ : Type ?u.939196
inst✝¹³ : Ring R₃
M : Type u_1
inst✝¹² : TopologicalSpace M
inst✝¹¹ : AddCommGroup M
M₂ : Type u_4
inst✝¹⁰ : TopologicalSpace M₂
inst✝⁹ : AddCommGroup M₂
M₃ : Type ?u.939220
inst✝⁸ : TopologicalSpace M₃
inst✝⁷ : AddCommGroup M₃
M₄ : Type ?u.939229
inst✝⁶ : TopologicalSpace M₄
inst✝⁵ : AddCommGroup M₄
inst✝⁴ : Module R M
inst✝³ : Module R₂ M₂
inst✝² : Module R₃ M₃
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
σ₂₁ : R₂ →+* R
inst✝¹ : RingHomInvPair σ₁₂ σ₂₁
inst✝ : TopologicalAddGroup M
f₁ : M →SL[σ₁₂] M₂
f₂ : M₂ →SL[σ₂₁] M
h : Function.RightInverse ↑f₂ ↑f₁
y : M₂
⊢ ↑(↑(projKerOfRightInverse f₁ f₂ h) (↑f₂ y)) = ↑0
Theorem: Function.IsPeriodicPt.gcd
File: Mathlib/Dynamics/PeriodicPts.lean

tactic: revert hm hn
state_before: α : Type u_1
β : Type ?u.3903
f fa : α → α
fb : β → β
x y : α
m n : ℕ
hm : IsPeriodicPt f m x
hn : IsPeriodicPt f n x
⊢ IsPeriodicPt f (Nat.gcd m n) x

tactic: refine' Nat.gcd.induction m n (fun n _ hn => _) fun m n _ ih hm hn => _
state_before: α : Type u_1
β : Type ?u.3903
f fa : α → α
fb : β → β
x y : α
m n : ℕ
⊢ IsPeriodicPt f m x → IsPeriodicPt f n x → IsPeriodicPt f (Nat.gcd m n) x

tactic: rwa [Nat.gcd_zero_left]
state_before: case refine'_1
α : Type u_1
β : Type ?u.3903
f fa : α → α
fb : β → β
x y : α
m n✝ n : ℕ
x✝ : IsPeriodicPt f 0 x
hn : IsPeriodicPt f n x
⊢ IsPeriodicPt f (Nat.gcd 0 n) x

tactic: rw [Nat.gcd_rec]
state_before: case refine'_2
α : Type u_1
β : Type ?u.3903
f fa : α → α
fb : β → β
x y : α
m✝ n✝ m n : ℕ
x✝ : 0 < m
ih : IsPeriodicPt f (n % m) x → IsPeriodicPt f m x → IsPeriodicPt f (Nat.gcd (n % m) m) x
hm : IsPeriodicPt f m x
hn : IsPeriodicPt f n x
⊢ IsPeriodicPt f (Nat.gcd m n) x

tactic: exact ih (hn.mod hm) hm
state_before: case refine'_2
α : Type u_1
β : Type ?u.3903
f fa : α → α
fb : β → β
x y : α
m✝ n✝ m n : ℕ
x✝ : 0 < m
ih : IsPeriodicPt f (n % m) x → IsPeriodicPt f m x → IsPeriodicPt f (Nat.gcd (n % m) m) x
hm : IsPeriodicPt f m x
hn : IsPeriodicPt f n x
⊢ IsPeriodicPt f (Nat.gcd (n % m) m) x
Theorem: NormedAddGroupHom.extension_unique
File: Mathlib/Analysis/Normed/Group/HomCompletion.lean

tactic: ext v
state_before: G : Type u_1
inst✝³ : SeminormedAddCommGroup G
H : Type u_2
inst✝² : SeminormedAddCommGroup H
inst✝¹ : SeparatedSpace H
inst✝ : CompleteSpace H
f : NormedAddGroupHom G H
g : NormedAddGroupHom (Completion G) H
hg : ∀ (v : G), ↑f v = ↑g (↑G v)
⊢ extension f = g

tactic: rw [NormedAddGroupHom.extension_coe_to_fun,
  Completion.extension_unique f.uniformContinuous g.uniformContinuous fun a => hg a]
state_before: case H
G : Type u_1
inst✝³ : SeminormedAddCommGroup G
H : Type u_2
inst✝² : SeminormedAddCommGroup H
inst✝¹ : SeparatedSpace H
inst✝ : CompleteSpace H
f : NormedAddGroupHom G H
g : NormedAddGroupHom (Completion G) H
hg : ∀ (v : G), ↑f v = ↑g (↑G v)
v : Completion G
⊢ ↑(extension f) v = ↑g v
Theorem: IntermediateField.coe_nat_mem
File: Mathlib/FieldTheory/IntermediateField.lean

tactic: simpa using coe_int_mem S n
state_before: K : Type u_2
L : Type u_1
L' : Type ?u.75335
inst✝⁴ : Field K
inst✝³ : Field L
inst✝² : Field L'
inst✝¹ : Algebra K L
inst✝ : Algebra K L'
S : IntermediateField K L
n : ℕ
⊢ ↑n ∈ S
Theorem: MeasureTheory.SimpleFunc.nearestPtInd_succ
File: Mathlib/MeasureTheory/Function/SimpleFuncDense.lean

tactic: simp only [nearestPtInd, coe_piecewise, Set.piecewise]
state_before: α : Type u_1
β : Type ?u.11058
ι : Type ?u.11061
E : Type ?u.11064
F : Type ?u.11067
𝕜 : Type ?u.11070
inst✝² : MeasurableSpace α
inst✝¹ : PseudoEMetricSpace α
inst✝ : OpensMeasurableSpace α
e : ℕ → α
N : ℕ
x : α
⊢ ↑(nearestPtInd e (N + 1)) x =
    if ∀ (k : ℕ), k ≤ N → edist (e (N + 1)) x < edist (e k) x then N + 1 else ↑(nearestPtInd e N) x

tactic: congr
state_before: α : Type u_1
β : Type ?u.11058
ι : Type ?u.11061
E : Type ?u.11064
F : Type ?u.11067
𝕜 : Type ?u.11070
inst✝² : MeasurableSpace α
inst✝¹ : PseudoEMetricSpace α
inst✝ : OpensMeasurableSpace α
e : ℕ → α
N : ℕ
x : α
⊢ (if x ∈ ⋂ (k : ℕ) (_ : k ≤ Nat.add N 0), {x | edist (e (Nat.add N 0 + 1)) x < edist (e k) x} then
      ↑(const α (Nat.add N 0 + 1)) x
    else ↑(nearestPtInd e (Nat.add N 0)) x) =
    if ∀ (k : ℕ), k ≤ N → edist (e (N + 1)) x < edist (e k) x then N + 1 else ↑(nearestPtInd e N) x

tactic: simp
state_before: case e_c
α : Type u_1
β : Type ?u.11058
ι : Type ?u.11061
E : Type ?u.11064
F : Type ?u.11067
𝕜 : Type ?u.11070
inst✝² : MeasurableSpace α
inst✝¹ : PseudoEMetricSpace α
inst✝ : OpensMeasurableSpace α
e : ℕ → α
N : ℕ
x : α
⊢ (x ∈ ⋂ (k : ℕ) (_ : k ≤ Nat.add N 0), {x | edist (e (Nat.add N 0 + 1)) x < edist (e k) x}) =
    ∀ (k : ℕ), k ≤ N → edist (e (N + 1)) x < edist (e k) x
Theorem: Disjoint.of_preimage
File: Mathlib/Data/Set/Image.lean

tactic: rw [disjoint_iff_inter_eq_empty, ← image_preimage_eq (_ ∩ _) hf, preimage_inter, h.inter_eq,
  image_empty]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.120582
f : α → β
s✝ t✝ : Set α
hf : Surjective f
s t : Set β
h : Disjoint (f ⁻¹' s) (f ⁻¹' t)
⊢ Disjoint s t
Theorem: QuotientAddGroup.norm_eq_infDist
File: Mathlib/Analysis/Normed/Group/Quotient.lean

tactic: simp only [AddSubgroup.quotient_norm_eq, infDist_eq_iInf, sInf_image', dist_zero_left]
state_before: M : Type u_1
N : Type ?u.25731
inst✝¹ : SeminormedAddCommGroup M
inst✝ : SeminormedAddCommGroup N
S : AddSubgroup M
x : M ⧸ S
⊢ ‖x‖ = infDist 0 {m | ↑m = x}
Theorem: Ordnode.findMax_dual
File: Mathlib/Data/Ordmap/Ordset.lean

tactic: rw [← findMin_dual, dual_dual]
state_before: α : Type u_1
t : Ordnode α
⊢ findMax (dual t) = findMin t
Theorem: List.self_mem_range_succ
File: Std/Data/List/Lemmas.lean

tactic: simp
state_before: n : Nat
⊢ n ∈ range (n + 1)
Theorem: Finsupp.some_zero
File: Mathlib/Data/Finsupp/Basic.lean

tactic: ext
state_before: α : Type u_2
β : Type ?u.319084
γ : Type ?u.319087
ι : Type ?u.319090
M : Type u_1
M' : Type ?u.319096
N : Type ?u.319099
P : Type ?u.319102
G : Type ?u.319105
H : Type ?u.319108
R : Type ?u.319111
S : Type ?u.319114
inst✝ : Zero M
⊢ some 0 = 0

tactic: simp
state_before: case h
α : Type u_2
β : Type ?u.319084
γ : Type ?u.319087
ι : Type ?u.319090
M : Type u_1
M' : Type ?u.319096
N : Type ?u.319099
P : Type ?u.319102
G : Type ?u.319105
H : Type ?u.319108
R : Type ?u.319111
S : Type ?u.319114
inst✝ : Zero M
a✝ : α
⊢ ↑(some 0) a✝ = ↑0 a✝
Theorem: MeasureTheory.snorm_indicator_const'
File: Mathlib/MeasureTheory/Function/LpSpace.lean

tactic: by_cases hp_top : p = ∞
state_before: α : Type u_1
E : Type ?u.645570
F : Type ?u.645573
G : Type u_2
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
s : Set α
hs✝ : MeasurableSet s
c✝ : E
f : α → E
hf : AEStronglyMeasurable f μ
c : G
hs : MeasurableSet s
hμs : ↑↑μ s ≠ 0
hp : p ≠ 0
⊢ snorm (Set.indicator s fun x => c) p μ = ↑‖c‖₊ * ↑↑μ s ^ (1 / ENNReal.toReal p)

tactic: simp [hp_top, snormEssSup_indicator_const_eq s c hμs]
state_before: case pos
α : Type u_1
E : Type ?u.645570
F : Type ?u.645573
G : Type u_2
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
s : Set α
hs✝ : MeasurableSet s
c✝ : E
f : α → E
hf : AEStronglyMeasurable f μ
c : G
hs : MeasurableSet s
hμs : ↑↑μ s ≠ 0
hp : p ≠ 0
hp_top : p = ⊤
⊢ snorm (Set.indicator s fun x => c) p μ = ↑‖c‖₊ * ↑↑μ s ^ (1 / ENNReal.toReal p)

tactic: exact snorm_indicator_const hs hp hp_top
state_before: case neg
α : Type u_1
E : Type ?u.645570
F : Type ?u.645573
G : Type u_2
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
s : Set α
hs✝ : MeasurableSet s
c✝ : E
f : α → E
hf : AEStronglyMeasurable f μ
c : G
hs : MeasurableSet s
hμs : ↑↑μ s ≠ 0
hp : p ≠ 0
hp_top : ¬p = ⊤
⊢ snorm (Set.indicator s fun x => c) p μ = ↑‖c‖₊ * ↑↑μ s ^ (1 / ENNReal.toReal p)
Theorem: Option.bind_eq_some'
File: Mathlib/Data/Option/Basic.lean

tactic: cases x <;> simp
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.1609
δ : Type ?u.1612
x : Option α
f : α → Option β
b : β
⊢ Option.bind x f = some b ↔ ∃ a, x = some a ∧ f a = some b
Theorem: MvPolynomial.quotient_map_C_eq_zero
File: Mathlib/RingTheory/Polynomial/Quotient.lean

tactic: simp only [Function.comp_apply, RingHom.coe_comp, Ideal.Quotient.eq_zero_iff_mem]
state_before: R : Type u_1
σ : Type u_2
inst✝ : CommRing R
r : R
I : Ideal R
i : R
hi : i ∈ I
⊢ ↑(RingHom.comp (Ideal.Quotient.mk (Ideal.map C I)) C) i = 0

tactic: exact Ideal.mem_map_of_mem _ hi
state_before: R : Type u_1
σ : Type u_2
inst✝ : CommRing R
r : R
I : Ideal R
i : R
hi : i ∈ I
⊢ ↑C i ∈ Ideal.map C I
Theorem: Filter.Germ.lt_def
File: Mathlib/Order/Filter/FilterProduct.lean

tactic: ext ⟨f⟩ ⟨g⟩
state_before: α : Type u
β : Type v
φ : Ultrafilter α
inst✝ : Preorder β
⊢ (fun x x_1 => x < x_1) = LiftRel fun x x_1 => x < x_1

tactic: exact coe_lt
state_before: case h.mk.h.mk.a
α : Type u
β : Type v
φ : Ultrafilter α
inst✝ : Preorder β
x✝¹ : Germ (↑φ) β
f : α → β
x✝ : Germ (↑φ) β
g : α → β
⊢ Quot.mk Setoid.r f < Quot.mk Setoid.r g ↔ LiftRel (fun x x_1 => x < x_1) (Quot.mk Setoid.r f) (Quot.mk Setoid.r g)
Theorem: iSup_congr_Prop
File: Mathlib/Order/CompleteLattice.lean

tactic: obtain rfl := propext pq
state_before: α : Type u_1
β : Type ?u.63159
β₂ : Type ?u.63162
γ : Type ?u.63165
ι : Sort ?u.63168
ι' : Sort ?u.63171
κ : ι → Sort ?u.63176
κ' : ι' → Sort ?u.63181
inst✝ : SupSet α
f✝ g : ι → α
p q : Prop
f₁ : p → α
f₂ : q → α
pq : p ↔ q
f : ∀ (x : q), f₁ (_ : p) = f₂ x
⊢ iSup f₁ = iSup f₂

tactic: congr with x
state_before: α : Type u_1
β : Type ?u.63159
β₂ : Type ?u.63162
γ : Type ?u.63165
ι : Sort ?u.63168
ι' : Sort ?u.63171
κ : ι → Sort ?u.63176
κ' : ι' → Sort ?u.63181
inst✝ : SupSet α
f✝ g : ι → α
p : Prop
f₁ f₂ : p → α
pq : p ↔ p
f : ∀ (x : p), f₁ (_ : p) = f₂ x
⊢ iSup f₁ = iSup f₂

tactic: apply f
state_before: case e_s.h
α : Type u_1
β : Type ?u.63159
β₂ : Type ?u.63162
γ : Type ?u.63165
ι : Sort ?u.63168
ι' : Sort ?u.63171
κ : ι → Sort ?u.63176
κ' : ι' → Sort ?u.63181
inst✝ : SupSet α
f✝ g : ι → α
p : Prop
f₁ f₂ : p → α
pq : p ↔ p
f : ∀ (x : p), f₁ (_ : p) = f₂ x
x : p
⊢ f₁ x = f₂ x
Theorem: CategoryTheory.NonPreadditiveAbelian.lift_σ
File: Mathlib/CategoryTheory/Abelian/NonPreadditive.lean

tactic: rw [← Category.assoc, IsIso.hom_inv_id]
state_before: C : Type u
inst✝¹ : Category C
inst✝ : NonPreadditiveAbelian C
X : C
⊢ prod.lift (𝟙 X) 0 ≫ σ = 𝟙 X
Theorem: MulChar.one_mul
File: Mathlib/NumberTheory/LegendreSymbol/MulCharacter.lean

tactic: ext
state_before: R : Type u
inst✝¹ : CommMonoid R
R' : Type v
inst✝ : CommMonoidWithZero R'
χ : MulChar R R'
⊢ 1 * χ = χ

tactic: simp only [one_mul, Pi.mul_apply, MulChar.coeToFun_mul, MulChar.one_apply_coe]
state_before: case h
R : Type u
inst✝¹ : CommMonoid R
R' : Type v
inst✝ : CommMonoidWithZero R'
χ : MulChar R R'
a✝ : Rˣ
⊢ ↑(1 * χ) ↑a✝ = ↑χ ↑a✝
Theorem: range_circleMap
File: Mathlib/MeasureTheory/Integral/CircleIntegral.lean

tactic: rw [Complex.range_exp_mul_I, smul_sphere R 0 zero_le_one]
state_before: E : Type ?u.12721
inst✝ : NormedAddCommGroup E
c : ℂ
R : ℝ
⊢ (c +ᵥ R • range fun θ => exp (↑θ * I)) = sphere c (Abs.abs R)

tactic: simp
state_before: E : Type ?u.12721
inst✝ : NormedAddCommGroup E
c : ℂ
R : ℝ
⊢ c +ᵥ sphere (R • 0) (‖R‖ * 1) = sphere c (Abs.abs R)
Theorem: FiberBundle.totalSpaceMk_closedEmbedding
File: Mathlib/Topology/FiberBundle/Basic.lean

tactic: rw [range_sigmaMk]
state_before: ι : Type ?u.6444
B : Type u_1
F : Type ?u.6450
X : Type ?u.6453
inst✝⁶ : TopologicalSpace X
inst✝⁵ : TopologicalSpace B
inst✝⁴ : TopologicalSpace F
E : B → Type u_2
inst✝³ : TopologicalSpace (TotalSpace E)
inst✝² : (b : B) → TopologicalSpace (E b)
inst✝¹ : FiberBundle F E
inst✝ : T1Space B
x : B
⊢ IsClosed (range (totalSpaceMk x))

tactic: exact isClosed_singleton.preimage <| continuous_proj F E
state_before: ι : Type ?u.6444
B : Type u_1
F : Type ?u.6450
X : Type ?u.6453
inst✝⁶ : TopologicalSpace X
inst✝⁵ : TopologicalSpace B
inst✝⁴ : TopologicalSpace F
E : B → Type u_2
inst✝³ : TopologicalSpace (TotalSpace E)
inst✝² : (b : B) → TopologicalSpace (E b)
inst✝¹ : FiberBundle F E
inst✝ : T1Space B
x : B
⊢ IsClosed (Sigma.fst ⁻¹' {x})
Theorem: Nat.eq_one_of_dvd_coprimes
File: Mathlib/Data/Nat/GCD/Basic.lean

tactic: rw [coprime_iff_gcd_eq_one] at h_ab_coprime
state_before: a b k : ℕ
h_ab_coprime : coprime a b
hka : k ∣ a
hkb : k ∣ b
⊢ k = 1

tactic: have h1 := dvd_gcd hka hkb
state_before: a b k : ℕ
h_ab_coprime : gcd a b = 1
hka : k ∣ a
hkb : k ∣ b
⊢ k = 1

tactic: rw [h_ab_coprime] at h1
state_before: a b k : ℕ
h_ab_coprime : gcd a b = 1
hka : k ∣ a
hkb : k ∣ b
h1 : k ∣ gcd a b
⊢ k = 1

tactic: exact Nat.dvd_one.mp h1
state_before: a b k : ℕ
h_ab_coprime : gcd a b = 1
hka : k ∣ a
hkb : k ∣ b
h1 : k ∣ 1
⊢ k = 1
Theorem: NNReal.geom_mean_le_arith_mean_weighted
File: Mathlib/Analysis/MeanInequalities.lean

tactic: exact_mod_cast
  Real.geom_mean_le_arith_mean_weighted _ _ _ (fun i _ => (w i).coe_nonneg)
    (by assumption_mod_cast) fun i _ => (z i).coe_nonneg
state_before: ι : Type u
s : Finset ι
w z : ι → ℝ≥0
hw' : ∑ i in s, w i = 1
⊢ ∏ i in s, z i ^ ↑(w i) ≤ ∑ i in s, w i * z i

tactic: assumption_mod_cast
state_before: ι : Type u
s : Finset ι
w z : ι → ℝ≥0
hw' : ∑ i in s, w i = 1
⊢ ∑ i in s, ↑(w i) = 1
Theorem: FixedPoints.isIntegral
File: Mathlib/FieldTheory/Fixed.lean

tactic: cases nonempty_fintype G
state_before: M : Type u
inst✝⁵ : Monoid M
G : Type u
inst✝⁴ : Group G
F : Type v
inst✝³ : Field F
inst✝² : MulSemiringAction M F
inst✝¹ : MulSemiringAction G F
m : M
inst✝ : Finite G
x : F
⊢ IsIntegral { x // x ∈ subfield G F } x

tactic: exact ⟨minpoly G F x, minpoly.monic G F x, minpoly.eval₂ G F x⟩
state_before: case intro
M : Type u
inst✝⁵ : Monoid M
G : Type u
inst✝⁴ : Group G
F : Type v
inst✝³ : Field F
inst✝² : MulSemiringAction M F
inst✝¹ : MulSemiringAction G F
m : M
inst✝ : Finite G
x : F
val✝ : Fintype G
⊢ IsIntegral { x // x ∈ subfield G F } x
Theorem: Semiquot.liftOn_ofMem
File: Mathlib/Data/Semiquot.lean

tactic: revert h
state_before: α : Type u_1
β : Type u_2
q : Semiquot α
f : α → β
h : ∀ (a : α), a ∈ q → ∀ (b : α), b ∈ q → f a = f b
a : α
aq : a ∈ q
⊢ liftOn q f h = f a

tactic: rw [eq_mk_of_mem aq]
state_before: α : Type u_1
β : Type u_2
q : Semiquot α
f : α → β
a : α
aq : a ∈ q
⊢ ∀ (h : ∀ (a : α), a ∈ q → ∀ (b : α), b ∈ q → f a = f b), liftOn q f h = f a

tactic: intro
state_before: α : Type u_1
β : Type u_2
q : Semiquot α
f : α → β
a : α
aq : a ∈ q
⊢ ∀ (h : ∀ (a_1 : α), a_1 ∈ mk aq → ∀ (b : α), b ∈ mk aq → f a_1 = f b), liftOn (mk aq) f h = f a

tactic: rfl
state_before: α : Type u_1
β : Type u_2
q : Semiquot α
f : α → β
a : α
aq : a ∈ q
h✝ : ∀ (a_1 : α), a_1 ∈ mk aq → ∀ (b : α), b ∈ mk aq → f a_1 = f b
⊢ liftOn (mk aq) f h✝ = f a
Theorem: Equiv.Perm.two_le_of_mem_cycleType
File: Mathlib/GroupTheory/Perm/Cycle/Type.lean

tactic: simp only [cycleType_def, ← Finset.mem_def, Function.comp_apply, Multiset.mem_map,
  mem_cycleFactorsFinset_iff] at h
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ : Perm α
n : ℕ
h : n ∈ cycleType σ
⊢ 2 ≤ n

tactic: obtain ⟨_, ⟨hc, -⟩, rfl⟩ := h
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ : Perm α
n : ℕ
h : ∃ a, (IsCycle a ∧ ∀ (a_1 : α), a_1 ∈ support a → ↑a a_1 = ↑σ a_1) ∧ Finset.card (support a) = n
⊢ 2 ≤ n

tactic: exact hc.two_le_card_support
state_before: case intro.intro.intro
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ w✝ : Perm α
hc : IsCycle w✝
⊢ 2 ≤ Finset.card (support w✝)
Theorem: Nat.card_eq
File: Mathlib/Data/Finite/Card.lean

tactic: cases finite_or_infinite α
state_before: α✝ : Type ?u.215
β : Type ?u.218
γ : Type ?u.221
α : Type u_1
⊢ Nat.card α = if h : Finite α then Fintype.card α else 0

tactic: letI := Fintype.ofFinite α
state_before: case inl
α✝ : Type ?u.215
β : Type ?u.218
γ : Type ?u.221
α : Type u_1
h✝ : Finite α
⊢ Nat.card α = if h : Finite α then Fintype.card α else 0

tactic: simp only [*, Nat.card_eq_fintype_card, dif_pos]
state_before: case inl
α✝ : Type ?u.215
β : Type ?u.218
γ : Type ?u.221
α : Type u_1
h✝ : Finite α
this : Fintype α := Fintype.ofFinite α
⊢ Nat.card α = if h : Finite α then Fintype.card α else 0

tactic: simp only [*, card_eq_zero_of_infinite, not_finite_iff_infinite.mpr, dite_false]
state_before: case inr
α✝ : Type ?u.215
β : Type ?u.218
γ : Type ?u.221
α : Type u_1
h✝ : Infinite α
⊢ Nat.card α = if h : Finite α then Fintype.card α else 0
Theorem: approximatesLinearOn_empty
File: Mathlib/Analysis/Calculus/Inverse.lean

tactic: simp [ApproximatesLinearOn]
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.5815
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type ?u.5918
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
ε : ℝ
f : E → F
f' : E →L[𝕜] F
c : ℝ≥0
⊢ ApproximatesLinearOn f f' ∅ c