tasksource/leandojo huggingface dataset:
Theorem: AddCircle.equivIccQuot_comp_mk_eq_toIocMod
File: Mathlib/Topology/Instances/AddCircle.lean

tactic: rw [equivIccQuot_comp_mk_eq_toIcoMod]
state_before: 𝕜 : Type u_1
B : Type ?u.328688
inst✝³ : LinearOrderedAddCommGroup 𝕜
inst✝² : TopologicalSpace 𝕜
inst✝¹ : OrderTopology 𝕜
p a : 𝕜
hp : Fact (0 < p)
inst✝ : Archimedean 𝕜
⊢ ↑(equivIccQuot p a) ∘ Quotient.mk'' = fun x =>
    Quot.mk (EndpointIdent p a)
      { val := toIocMod (_ : 0 < p) a x, property := (_ : toIocMod (_ : 0 < p) a x ∈ Icc a (a + p)) }

tactic: funext x
state_before: 𝕜 : Type u_1
B : Type ?u.328688
inst✝³ : LinearOrderedAddCommGroup 𝕜
inst✝² : TopologicalSpace 𝕜
inst✝¹ : OrderTopology 𝕜
p a : 𝕜
hp : Fact (0 < p)
inst✝ : Archimedean 𝕜
⊢ (fun x =>
      Quot.mk (EndpointIdent p a)
        { val := toIcoMod (_ : 0 < p) a x, property := (_ : toIcoMod (_ : 0 < p) a x ∈ Icc a (a + p)) }) =
    fun x =>
    Quot.mk (EndpointIdent p a)
      { val := toIocMod (_ : 0 < p) a x, property := (_ : toIocMod (_ : 0 < p) a x ∈ Icc a (a + p)) }

tactic: by_cases a ≡ x [PMOD p]
state_before: case h
𝕜 : Type u_1
B : Type ?u.328688
inst✝³ : LinearOrderedAddCommGroup 𝕜
inst✝² : TopologicalSpace 𝕜
inst✝¹ : OrderTopology 𝕜
p a : 𝕜
hp : Fact (0 < p)
inst✝ : Archimedean 𝕜
x : 𝕜
⊢ Quot.mk (EndpointIdent p a)
      { val := toIcoMod (_ : 0 < p) a x, property := (_ : toIcoMod (_ : 0 < p) a x ∈ Icc a (a + p)) } =
    Quot.mk (EndpointIdent p a)
      { val := toIocMod (_ : 0 < p) a x, property := (_ : toIocMod (_ : 0 < p) a x ∈ Icc a (a + p)) }

tactic: simp_rw [(modEq_iff_toIcoMod_eq_left hp.out).1 h, (modEq_iff_toIocMod_eq_right hp.out).1 h]
state_before: case pos
𝕜 : Type u_1
B : Type ?u.328688
inst✝³ : LinearOrderedAddCommGroup 𝕜
inst✝² : TopologicalSpace 𝕜
inst✝¹ : OrderTopology 𝕜
p a : 𝕜
hp : Fact (0 < p)
inst✝ : Archimedean 𝕜
x : 𝕜
h : a ≡ x [PMOD p]
⊢ Quot.mk (EndpointIdent p a)
      { val := toIcoMod (_ : 0 < p) a x, property := (_ : toIcoMod (_ : 0 < p) a x ∈ Icc a (a + p)) } =
    Quot.mk (EndpointIdent p a)
      { val := toIocMod (_ : 0 < p) a x, property := (_ : toIocMod (_ : 0 < p) a x ∈ Icc a (a + p)) }

tactic: exact Quot.sound EndpointIdent.mk
state_before: case pos
𝕜 : Type u_1
B : Type ?u.328688
inst✝³ : LinearOrderedAddCommGroup 𝕜
inst✝² : TopologicalSpace 𝕜
inst✝¹ : OrderTopology 𝕜
p a : 𝕜
hp : Fact (0 < p)
inst✝ : Archimedean 𝕜
x : 𝕜
h : a ≡ x [PMOD p]
⊢ Quot.mk (EndpointIdent p a) { val := a, property := (_ : (fun x => x ∈ Icc a (a + p)) a) } =
    Quot.mk (EndpointIdent p a) { val := a + p, property := (_ : (fun x => x ∈ Icc a (a + p)) (a + p)) }

tactic: simp_rw [(not_modEq_iff_toIcoMod_eq_toIocMod hp.out).1 h]
state_before: case neg
𝕜 : Type u_1
B : Type ?u.328688
inst✝³ : LinearOrderedAddCommGroup 𝕜
inst✝² : TopologicalSpace 𝕜
inst✝¹ : OrderTopology 𝕜
p a : 𝕜
hp : Fact (0 < p)
inst✝ : Archimedean 𝕜
x : 𝕜
h : ¬a ≡ x [PMOD p]
⊢ Quot.mk (EndpointIdent p a)
      { val := toIcoMod (_ : 0 < p) a x, property := (_ : toIcoMod (_ : 0 < p) a x ∈ Icc a (a + p)) } =
    Quot.mk (EndpointIdent p a)
      { val := toIocMod (_ : 0 < p) a x, property := (_ : toIocMod (_ : 0 < p) a x ∈ Icc a (a + p)) }
Theorem: FreeGroup.norm_eq_zero
File: Mathlib/GroupTheory/FreeGroup.lean

tactic: simp only [norm, List.length_eq_zero, toWord_eq_nil_iff]
state_before: α : Type u
L L₁ L₂ L₃ L₄ : List (α × Bool)
inst✝ : DecidableEq α
x : FreeGroup α
⊢ norm x = 0 ↔ x = 1
Theorem: FreeLieAlgebra.Rel.subRight
File: Mathlib/Algebra/Lie/Free.lean

tactic: simpa only [sub_eq_add_neg] using h.add_right (-c)
state_before: R : Type u
X : Type v
inst✝ : CommRing R
a b c : lib R X
h : Rel R X a b
⊢ Rel R X (a - c) (b - c)
Theorem: CategoryTheory.MonoidalCategory.leftUnitor_tensor
File: Mathlib/CategoryTheory/Monoidal/CoherenceLemmas.lean

tactic: coherence
state_before: C : Type u_2
inst✝¹ : Category C
inst✝ : MonoidalCategory C
X Y : C
⊢ (λ_ (X ⊗ Y)).hom = (α_ (𝟙_ C) X Y).inv ≫ ((λ_ X).hom ⊗ 𝟙 Y)
Theorem: mul_lt_of_lt_one_right
File: Mathlib/Algebra/Order/Ring/Lemmas.lean

tactic: simpa only [mul_one] using mul_lt_mul_of_pos_left h ha
state_before: α : Type u_1
a b c d : α
inst✝³ : MulOneClass α
inst✝² : Zero α
inst✝¹ : Preorder α
inst✝ : PosMulStrictMono α
ha : 0 < a
h : b < 1
⊢ a * b < a
Theorem: Set.pi_univ_Iic
File: Mathlib/Data/Set/Intervals/Pi.lean

tactic: simp [Pi.le_def]
state_before: ι : Type u_1
α : ι → Type u_2
inst✝ : (i : ι) → Preorder (α i)
x y✝ y : (i : ι) → α i
⊢ (y ∈ pi univ fun i => Iic (x i)) ↔ y ∈ Iic x
Theorem: Finset.image_add_left_Ioc
File: Mathlib/Data/Finset/LocallyFinite.lean

tactic: rw [← map_add_left_Ioc, map_eq_image]
state_before: ι : Type ?u.239108
α : Type u_1
inst✝³ : OrderedCancelAddCommMonoid α
inst✝² : ExistsAddOfLE α
inst✝¹ : LocallyFiniteOrder α
inst✝ : DecidableEq α
a b c : α
⊢ image ((fun x x_1 => x + x_1) c) (Ioc a b) = Ioc (c + a) (c + b)

tactic: rfl
state_before: ι : Type ?u.239108
α : Type u_1
inst✝³ : OrderedCancelAddCommMonoid α
inst✝² : ExistsAddOfLE α
inst✝¹ : LocallyFiniteOrder α
inst✝ : DecidableEq α
a b c : α
⊢ image ((fun x x_1 => x + x_1) c) (Ioc a b) = image (↑(addLeftEmbedding c)) (Ioc a b)
Theorem: Lagrange.eval_nodal_derivative_eval_node_eq
File: Mathlib/LinearAlgebra/Lagrange.lean

tactic: rw [derivative_nodal, eval_finset_sum, ← add_sum_erase _ _ hi, add_right_eq_self]
state_before: F : Type u_2
inst✝¹ : Field F
ι : Type u_1
s : Finset ι
v : ι → F
i : ι
r : ι → F
x : F
inst✝ : DecidableEq ι
hi : i ∈ s
⊢ eval (v i) (↑derivative (nodal s v)) = eval (v i) (nodal (Finset.erase s i) v)

tactic: refine' sum_eq_zero fun j hj => _
state_before: F : Type u_2
inst✝¹ : Field F
ι : Type u_1
s : Finset ι
v : ι → F
i : ι
r : ι → F
x : F
inst✝ : DecidableEq ι
hi : i ∈ s
⊢ ∑ x in Finset.erase s i, eval (v i) (nodal (Finset.erase s x) v) = 0

tactic: simp_rw [nodal, eval_prod, eval_sub, eval_X, eval_C, prod_eq_zero_iff, mem_erase]
state_before: F : Type u_2
inst✝¹ : Field F
ι : Type u_1
s : Finset ι
v : ι → F
i : ι
r : ι → F
x : F
inst✝ : DecidableEq ι
hi : i ∈ s
j : ι
hj : j ∈ Finset.erase s i
⊢ eval (v i) (nodal (Finset.erase s j) v) = 0

tactic: exact ⟨i, ⟨(mem_erase.mp hj).1.symm, hi⟩, sub_eq_zero_of_eq rfl⟩
state_before: F : Type u_2
inst✝¹ : Field F
ι : Type u_1
s : Finset ι
v : ι → F
i : ι
r : ι → F
x : F
inst✝ : DecidableEq ι
hi : i ∈ s
j : ι
hj : j ∈ Finset.erase s i
⊢ ∃ a, (a ≠ j ∧ a ∈ s) ∧ v i - v a = 0
Theorem: Real.logb_pos_of_base_lt_one
File: Mathlib/Analysis/SpecialFunctions/Log/Base.lean

tactic: rw [logb_pos_iff_of_base_lt_one b_pos b_lt_one hx]
state_before: b x y : ℝ
b_pos : 0 < b
b_lt_one : b < 1
hx : 0 < x
hx' : x < 1
⊢ 0 < logb b x

tactic: exact hx'
state_before: b x y : ℝ
b_pos : 0 < b
b_lt_one : b < 1
hx : 0 < x
hx' : x < 1
⊢ x < 1
Theorem: Int.lcm_zero_left
File: Mathlib/Data/Int/GCD.lean

tactic: rw [Int.lcm]
state_before: i : ℤ
⊢ lcm 0 i = 0

tactic: apply Nat.lcm_zero_left
state_before: i : ℤ
⊢ Nat.lcm (natAbs 0) (natAbs i) = 0
Theorem: Set.ncard_exchange'
File: Mathlib/Data/Set/Ncard.lean

tactic: rw [← ncard_exchange ha hb, ← singleton_union, ← singleton_union, union_diff_distrib,
  @diff_singleton_eq_self _ b {a} fun h ↦ ha (by rwa [← mem_singleton_iff.mp h])]
state_before: α : Type u_1
β : Type ?u.21433
s t : Set α
a b x y : α
f : α → β
ha : ¬a ∈ s
hb : b ∈ s
⊢ ncard (insert a s \ {b}) = ncard s

tactic: rwa [← mem_singleton_iff.mp h]
state_before: α : Type u_1
β : Type ?u.21433
s t : Set α
a b x y : α
f : α → β
ha : ¬a ∈ s
hb : b ∈ s
h : b ∈ {a}
⊢ a ∈ s
Theorem: round_two_inv
File: Mathlib/Algebra/Order/Floor.lean

tactic: simp only [round_eq, ← one_div, add_halves', floor_one]
state_before: F : Type ?u.280191
α : Type u_1
β : Type ?u.280197
inst✝¹ : LinearOrderedField α
inst✝ : FloorRing α
⊢ round 2⁻¹ = 1
Theorem: Filter.Tendsto.atTop_mul_atBot
File: Mathlib/Order/Filter/AtTopBot.lean

tactic: have := hf.atTop_mul_atTop <| tendsto_neg_atBot_atTop.comp hg
state_before: ι : Type ?u.196199
ι' : Type ?u.196202
α : Type u_2
β : Type u_1
γ : Type ?u.196211
inst✝ : StrictOrderedRing α
l : Filter β
f g : β → α
hf : Tendsto f l atTop
hg : Tendsto g l atBot
⊢ Tendsto (fun x => f x * g x) l atBot
Theorem: TensorAlgebra.ι_eq_zero_iff
File: Mathlib/LinearAlgebra/TensorAlgebra/Basic.lean

tactic: rw [← ι_inj R x 0, LinearMap.map_zero]
state_before: R : Type u_1
inst✝² : CommSemiring R
M : Type u_2
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
x : M
⊢ ↑(ι R) x = 0 ↔ x = 0
Theorem: LipschitzOnWith.mk_one
File: Mathlib/Topology/MetricSpace/Lipschitz.lean

tactic: simpa only [NNReal.coe_one, one_mul] using h
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝² : PseudoMetricSpace α
inst✝¹ : PseudoMetricSpace β
inst✝ : PseudoMetricSpace γ
K : ℝ≥0
s : Set α
f : α → β
h : ∀ (x : α), x ∈ s → ∀ (y : α), y ∈ s → dist (f x) (f y) ≤ dist x y
⊢ ∀ (x : α), x ∈ s → ∀ (y : α), y ∈ s → dist (f x) (f y) ≤ ↑1 * dist x y
Theorem: Orthonormal.orthonormal_of_forall_eq_or_eq_neg
File: Mathlib/Analysis/InnerProductSpace/Basic.lean

tactic: classical!
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.2146112
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
dec_E : DecidableEq E
ι : Type u_3
dec_ι : DecidableEq ι
v w : ι → E
hv : Orthonormal 𝕜 v
hw : ∀ (i : ι), w i = v i ∨ w i = -v i
⊢ Orthonormal 𝕜 w

tactic: rw [orthonormal_iff_ite] at *
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.2146112
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
dec_E : DecidableEq E
ι : Type u_3
dec_ι : DecidableEq ι
v w : ι → E
hv : Orthonormal 𝕜 v
hw : ∀ (i : ι), w i = v i ∨ w i = -v i
em✝ : (a : Prop) → Decidable a
⊢ Orthonormal 𝕜 w

tactic: intro i j
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.2146112
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
dec_E : DecidableEq E
ι : Type u_3
dec_ι : DecidableEq ι
v w : ι → E
hw : ∀ (i : ι), w i = v i ∨ w i = -v i
em✝ : (a : Prop) → Decidable a
hv : ∀ (i j : ι), inner (v i) (v j) = if i = j then 1 else 0
⊢ ∀ (i j : ι), inner (w i) (w j) = if i = j then 1 else 0

tactic: cases' hw i with hi hi <;> cases' hw j with hj hj <;>
  replace hv := hv i j <;> split_ifs at hv ⊢ with h <;>
  simpa only [hi, hj, h, inner_neg_right, inner_neg_left, neg_neg, eq_self_iff_true,
    neg_eq_zero] using hv
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.2146112
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
dec_E : DecidableEq E
ι : Type u_3
dec_ι : DecidableEq ι
v w : ι → E
hw : ∀ (i : ι), w i = v i ∨ w i = -v i
em✝ : (a : Prop) → Decidable a
hv : ∀ (i j : ι), inner (v i) (v j) = if i = j then 1 else 0
i j : ι
⊢ inner (w i) (w j) = if i = j then 1 else 0
Theorem: intervalIntegral.integral_comp_div_sub
File: Mathlib/MeasureTheory/Integral/IntervalIntegral.lean

tactic: simpa only [div_eq_inv_mul, inv_inv] using integral_comp_mul_sub f (inv_ne_zero hc) d
state_before: ι : Type ?u.14935768
𝕜 : Type ?u.14935771
E : Type u_1
F : Type ?u.14935777
A : Type ?u.14935780
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d✝ : ℝ
f : ℝ → E
hc : c ≠ 0
d : ℝ
⊢ (∫ (x : ℝ) in a..b, f (x / c - d)) = c • ∫ (x : ℝ) in a / c - d..b / c - d, f x
Theorem: CategoryTheory.Limits.prod.associator_naturality
File: Mathlib/CategoryTheory/Limits/Shapes/BinaryProducts.lean

tactic: simp
state_before: C : Type u
inst✝¹ : Category C
X Y : C
inst✝ : HasBinaryProducts C
X₁ X₂ X₃ Y₁ Y₂ Y₃ : C
f₁ : X₁ ⟶ Y₁
f₂ : X₂ ⟶ Y₂
f₃ : X₃ ⟶ Y₃
⊢ map (map f₁ f₂) f₃ ≫ (associator Y₁ Y₂ Y₃).hom = (associator X₁ X₂ X₃).hom ≫ map f₁ (map f₂ f₃)
Theorem: Pmf.bind_pure
File: Mathlib/Probability/ProbabilityMassFunction/Monad.lean

tactic: rw [pure_apply_of_ne _ _ hy.symm, MulZeroClass.mul_zero]
state_before: α : Type u_1
β : Type ?u.61522
γ : Type ?u.61525
p : Pmf α
f : α → Pmf β
g : β → Pmf γ
x y : α
hy : y ≠ x
⊢ ↑p y * ↑(pure y) x = 0

tactic: rw [pure_apply_self, mul_one]
state_before: α : Type u_1
β : Type ?u.61522
γ : Type ?u.61525
p : Pmf α
f : α → Pmf β
g : β → Pmf γ
x : α
⊢ ↑p x * ↑(pure x) x = ↑p x
Theorem: Filter.HasBasis.to_has_basis'
File: Mathlib/Order/Filter/Bases.lean

tactic: refine' ⟨fun t => ⟨fun ht => _, fun ⟨i', hi', ht⟩ => mem_of_superset (h' i' hi') ht⟩⟩
state_before: α : Type u_1
β : Type ?u.16192
γ : Type ?u.16195
ι : Sort u_2
ι' : Sort u_3
l l' : Filter α
p : ι → Prop
s : ι → Set α
t : Set α
i : ι
p' : ι' → Prop
s' : ι' → Set α
i' : ι'
hl : HasBasis l p s
h : ∀ (i : ι), p i → ∃ i', p' i' ∧ s' i' ⊆ s i
h' : ∀ (i' : ι'), p' i' → s' i' ∈ l
⊢ HasBasis l p' s'

tactic: rcases hl.mem_iff.1 ht with ⟨i, hi, ht⟩
state_before: α : Type u_1
β : Type ?u.16192
γ : Type ?u.16195
ι : Sort u_2
ι' : Sort u_3
l l' : Filter α
p : ι → Prop
s : ι → Set α
t✝ : Set α
i : ι
p' : ι' → Prop
s' : ι' → Set α
i' : ι'
hl : HasBasis l p s
h : ∀ (i : ι), p i → ∃ i', p' i' ∧ s' i' ⊆ s i
h' : ∀ (i' : ι'), p' i' → s' i' ∈ l
t : Set α
ht : t ∈ l
⊢ ∃ i, p' i ∧ s' i ⊆ t

tactic: rcases h i hi with ⟨i', hi', hs's⟩
state_before: case intro.intro
α : Type u_1
β : Type ?u.16192
γ : Type ?u.16195
ι : Sort u_2
ι' : Sort u_3
l l' : Filter α
p : ι → Prop
s : ι → Set α
t✝ : Set α
i✝ : ι
p' : ι' → Prop
s' : ι' → Set α
i' : ι'
hl : HasBasis l p s
h : ∀ (i : ι), p i → ∃ i', p' i' ∧ s' i' ⊆ s i
h' : ∀ (i' : ι'), p' i' → s' i' ∈ l
t : Set α
ht✝ : t ∈ l
i : ι
hi : p i
ht : s i ⊆ t
⊢ ∃ i, p' i ∧ s' i ⊆ t

tactic: exact ⟨i', hi', hs's.trans ht⟩
state_before: case intro.intro.intro.intro
α : Type u_1
β : Type ?u.16192
γ : Type ?u.16195
ι : Sort u_2
ι' : Sort u_3
l l' : Filter α
p : ι → Prop
s : ι → Set α
t✝ : Set α
i✝ : ι
p' : ι' → Prop
s' : ι' → Set α
i'✝ : ι'
hl : HasBasis l p s
h : ∀ (i : ι), p i → ∃ i', p' i' ∧ s' i' ⊆ s i
h' : ∀ (i' : ι'), p' i' → s' i' ∈ l
t : Set α
ht✝ : t ∈ l
i : ι
hi : p i
ht : s i ⊆ t
i' : ι'
hi' : p' i'
hs's : s' i' ⊆ s i
⊢ ∃ i, p' i ∧ s' i ⊆ t
Theorem: iSup_image
File: Mathlib/Order/CompleteLattice.lean

tactic: rw [← sSup_image, ← sSup_image, ← image_comp]
state_before: α : Type u_3
β : Type u_2
β₂ : Type ?u.142348
γ✝ : Type ?u.142351
ι : Sort ?u.142354
ι' : Sort ?u.142357
κ : ι → Sort ?u.142362
κ' : ι' → Sort ?u.142367
inst✝ : CompleteLattice α
f✝ g✝ s t✝ : ι → α
a b : α
γ : Type u_1
f : β → γ
g : γ → α
t : Set β
⊢ (⨆ (c : γ) (_ : c ∈ f '' t), g c) = ⨆ (b : β) (_ : b ∈ t), g (f b)

tactic: rfl
state_before: α : Type u_3
β : Type u_2
β₂ : Type ?u.142348
γ✝ : Type ?u.142351
ι : Sort ?u.142354
ι' : Sort ?u.142357
κ : ι → Sort ?u.142362
κ' : ι' → Sort ?u.142367
inst✝ : CompleteLattice α
f✝ g✝ s t✝ : ι → α
a b : α
γ : Type u_1
f : β → γ
g : γ → α
t : Set β
⊢ sSup ((fun c => g c) ∘ f '' t) = sSup ((fun b => g (f b)) '' t)
Theorem: Set.diff_nonempty_of_ncard_lt_ncard
File: Mathlib/Data/Set/Ncard.lean

tactic: rw [Set.nonempty_iff_ne_empty, Ne.def, diff_eq_empty]
state_before: α : Type u_1
β : Type ?u.127640
s t : Set α
a b x y : α
f : α → β
h : ncard s < ncard t
hs : autoParam (Set.Finite s) _auto✝
⊢ Set.Nonempty (t \ s)

tactic: exact fun h' ↦ h.not_le (ncard_le_of_subset h' hs)
state_before: α : Type u_1
β : Type ?u.127640
s t : Set α
a b x y : α
f : α → β
h : ncard s < ncard t
hs : autoParam (Set.Finite s) _auto✝
⊢ ¬t ⊆ s
Theorem: LocallyConstant.comap_const
File: Mathlib/Topology/LocallyConstant/Basic.lean

tactic: ext
state_before: X : Type u_2
Y : Type u_1
Z : Type u_3
α : Type ?u.34199
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f : X → Y
y : Y
h : ∀ (x : X), f x = y
⊢ comap f = fun g => { toFun := fun x => ↑g y, isLocallyConstant := (_ : IsLocallyConstant (Function.const X (↑g y))) }

tactic: rw [coe_comap]
state_before: case h.h
X : Type u_2
Y : Type u_1
Z : Type u_3
α : Type ?u.34199
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f : X → Y
y : Y
h : ∀ (x : X), f x = y
x✝¹ : LocallyConstant Y Z
x✝ : X
⊢ ↑(comap f x✝¹) x✝ =
    ↑{ toFun := fun x => ↑x✝¹ y, isLocallyConstant := (_ : IsLocallyConstant (Function.const X (↑x✝¹ y))) } x✝

tactic: simp only [h, coe_mk, Function.comp_apply]
state_before: case h.h
X : Type u_2
Y : Type u_1
Z : Type u_3
α : Type ?u.34199
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f : X → Y
y : Y
h : ∀ (x : X), f x = y
x✝¹ : LocallyConstant Y Z
x✝ : X
⊢ (↑x✝¹ ∘ f) x✝ =
    ↑{ toFun := fun x => ↑x✝¹ y, isLocallyConstant := (_ : IsLocallyConstant (Function.const X (↑x✝¹ y))) } x✝

tactic: rw [show f = fun _ => y by ext; apply h]
state_before: case h.h.hf
X : Type u_2
Y : Type u_1
Z : Type u_3
α : Type ?u.34199
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f : X → Y
y : Y
h : ∀ (x : X), f x = y
x✝¹ : LocallyConstant Y Z
x✝ : X
⊢ Continuous f

tactic: exact continuous_const
state_before: case h.h.hf
X : Type u_2
Y : Type u_1
Z : Type u_3
α : Type ?u.34199
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f : X → Y
y : Y
h : ∀ (x : X), f x = y
x✝¹ : LocallyConstant Y Z
x✝ : X
⊢ Continuous fun x => y

tactic: ext
state_before: X : Type u_2
Y : Type u_1
Z : Type u_3
α : Type ?u.34199
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f : X → Y
y : Y
h : ∀ (x : X), f x = y
x✝¹ : LocallyConstant Y Z
x✝ : X
⊢ f = fun x => y

tactic: apply h
state_before: case h
X : Type u_2
Y : Type u_1
Z : Type u_3
α : Type ?u.34199
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f : X → Y
y : Y
h : ∀ (x : X), f x = y
x✝² : LocallyConstant Y Z
x✝¹ x✝ : X
⊢ f x✝ = y
Theorem: List.suffix_cons_iff
File: Std/Data/List/Lemmas.lean

tactic: constructor
state_before: α✝ : Type u_1
l₁ : List α✝
a : α✝
l₂ : List α✝
⊢ l₁ <:+ a :: l₂ ↔ l₁ = a :: l₂ ∨ l₁ <:+ l₂

tactic: rintro ⟨⟨hd, tl⟩, hl₃⟩
state_before: case mp
α✝ : Type u_1
l₁ : List α✝
a : α✝
l₂ : List α✝
⊢ l₁ <:+ a :: l₂ → l₁ = a :: l₂ ∨ l₁ <:+ l₂

tactic: exact Or.inl hl₃
state_before: case mp.intro.nil
α✝ : Type u_1
l₁ : List α✝
a : α✝
l₂ : List α✝
hl₃ : [] ++ l₁ = a :: l₂
⊢ l₁ = a :: l₂ ∨ l₁ <:+ l₂

tactic: simp only [cons_append] at hl₃
state_before: case mp.intro.cons
α✝ : Type u_1
l₁ : List α✝
a : α✝
l₂ : List α✝
head✝ : α✝
tail✝ : List α✝
hl₃ : head✝ :: tail✝ ++ l₁ = a :: l₂
⊢ l₁ = a :: l₂ ∨ l₁ <:+ l₂

tactic: injection hl₃ with _ hl₄
state_before: case mp.intro.cons
α✝ : Type u_1
l₁ : List α✝
a : α✝
l₂ : List α✝
head✝ : α✝
tail✝ : List α✝
hl₃ : head✝ :: (tail✝ ++ l₁) = a :: l₂
⊢ l₁ = a :: l₂ ∨ l₁ <:+ l₂

tactic: exact Or.inr ⟨_, hl₄⟩
state_before: case mp.intro.cons
α✝ : Type u_1
l₁ : List α✝
a : α✝
l₂ : List α✝
head✝ : α✝
tail✝ : List α✝
head_eq✝ : head✝ = a
hl₄ : tail✝ ++ l₁ = l₂
⊢ l₁ = a :: l₂ ∨ l₁ <:+ l₂

tactic: rintro (rfl | hl₁)
state_before: case mpr
α✝ : Type u_1
l₁ : List α✝
a : α✝
l₂ : List α✝
⊢ l₁ = a :: l₂ ∨ l₁ <:+ l₂ → l₁ <:+ a :: l₂

tactic: exact (a :: l₂).suffix_refl
state_before: case mpr.inl
α✝ : Type u_1
a : α✝
l₂ : List α✝
⊢ a :: l₂ <:+ a :: l₂

tactic: exact hl₁.trans (l₂.suffix_cons _)
state_before: case mpr.inr
α✝ : Type u_1
l₁ : List α✝
a : α✝
l₂ : List α✝
hl₁ : l₁ <:+ l₂
⊢ l₁ <:+ a :: l₂
Theorem: MeasureTheory.SimpleFunc.measure_support_lt_top
File: Mathlib/MeasureTheory/Function/SimpleFuncDenseLp.lean

tactic: rw [support_eq]
state_before: α : Type u_2
β : Type u_1
ι : Type ?u.1439544
E : Type ?u.1439547
F : Type ?u.1439550
𝕜 : Type ?u.1439553
inst✝³ : MeasurableSpace α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
μ : Measure α
p : ℝ≥0∞
inst✝ : Zero β
f : α →ₛ β
hf : ∀ (y : β), y ≠ 0 → ↑↑μ (↑f ⁻¹' {y}) < ⊤
⊢ ↑↑μ (support ↑f) < ⊤

tactic: refine' (measure_biUnion_finset_le _ _).trans_lt (ENNReal.sum_lt_top_iff.mpr fun y hy => _)
state_before: α : Type u_2
β : Type u_1
ι : Type ?u.1439544
E : Type ?u.1439547
F : Type ?u.1439550
𝕜 : Type ?u.1439553
inst✝³ : MeasurableSpace α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
μ : Measure α
p : ℝ≥0∞
inst✝ : Zero β
f : α →ₛ β
hf : ∀ (y : β), y ≠ 0 → ↑↑μ (↑f ⁻¹' {y}) < ⊤
⊢ ↑↑μ (⋃ (y : β) (_ : y ∈ filter (fun y => y ≠ 0) (SimpleFunc.range f)), ↑f ⁻¹' {y}) < ⊤

tactic: rw [Finset.mem_filter] at hy
state_before: α : Type u_2
β : Type u_1
ι : Type ?u.1439544
E : Type ?u.1439547
F : Type ?u.1439550
𝕜 : Type ?u.1439553
inst✝³ : MeasurableSpace α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
μ : Measure α
p : ℝ≥0∞
inst✝ : Zero β
f : α →ₛ β
hf : ∀ (y : β), y ≠ 0 → ↑↑μ (↑f ⁻¹' {y}) < ⊤
y : β
hy : y ∈ filter (fun y => y ≠ 0) (SimpleFunc.range f)
⊢ ↑↑μ (↑f ⁻¹' {y}) < ⊤

tactic: exact hf y hy.2
state_before: α : Type u_2
β : Type u_1
ι : Type ?u.1439544
E : Type ?u.1439547
F : Type ?u.1439550
𝕜 : Type ?u.1439553
inst✝³ : MeasurableSpace α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
μ : Measure α
p : ℝ≥0∞
inst✝ : Zero β
f : α →ₛ β
hf : ∀ (y : β), y ≠ 0 → ↑↑μ (↑f ⁻¹' {y}) < ⊤
y : β
hy : y ∈ SimpleFunc.range f ∧ y ≠ 0
⊢ ↑↑μ (↑f ⁻¹' {y}) < ⊤
Theorem: Subgroup.comap_injective
File: Mathlib/GroupTheory/Subgroup/Basic.lean

tactic: simp only [le_antisymm_iff, comap_le_comap_of_surjective h, imp_self]
state_before: G : Type u_1
G' : Type ?u.580217
inst✝³ : Group G
inst✝² : Group G'
A : Type ?u.580226
inst✝¹ : AddGroup A
N : Type u_2
inst✝ : Group N
f✝ f : G →* N
h : Surjective ↑f
K L : Subgroup N
⊢ comap f K = comap f L → K = L
Theorem: Finset.product_sdiff_diag
File: Mathlib/Data/Finset/Prod.lean

tactic: rw [← diag_union_offDiag, union_comm, union_sdiff_self,
  sdiff_eq_self_of_disjoint (disjoint_diag_offDiag _).symm]
state_before: α : Type u_1
β : Type ?u.119528
γ : Type ?u.119531
inst✝ : DecidableEq α
s t : Finset α
x : α × α
⊢ s ×ˢ s \ diag s = offDiag s
Theorem: Set.Finset.coe_einfsep
File: Mathlib/Topology/MetricSpace/Infsep.lean

tactic: simp_rw [einfsep_of_fintype, ← Finset.coe_offDiag, Finset.toFinset_coe]
state_before: α : Type u_1
β : Type ?u.34662
inst✝¹ : EDist α
x y : α
s✝ t : Set α
inst✝ : DecidableEq α
s : Finset α
⊢ einfsep ↑s = Finset.inf (Finset.offDiag s) (uncurry edist)
Theorem: Pi.toLex_strictMono
File: Mathlib/Data/Pi/Lex.lean

tactic: contrapose! hl
state_before: ι : Type u_1
β : ι → Type u_2
r : ι → ι → Prop
s : {i : ι} → β i → β i → Prop
inst✝² : LinearOrder ι
inst✝¹ : IsWellOrder ι fun x x_1 => x < x_1
inst✝ : (i : ι) → PartialOrder (β i)
x y : (i : ι) → β i
i✝ : ι
a✝ : β i✝
a b : (i : ι) → β i
h : a < b
i : ι
hi : i ∈ {i | a i ≠ b i}
hl : ∀ (x : ι), x ∈ {i | a i ≠ b i} → ¬x < i
j : ι
hj : (fun x x_1 => x < x_1) j i
⊢ ↑toLex a j = ↑toLex b j

tactic: exact ⟨j, hl, hj⟩
state_before: ι : Type u_1
β : ι → Type u_2
r : ι → ι → Prop
s : {i : ι} → β i → β i → Prop
inst✝² : LinearOrder ι
inst✝¹ : IsWellOrder ι fun x x_1 => x < x_1
inst✝ : (i : ι) → PartialOrder (β i)
x y : (i : ι) → β i
i✝ : ι
a✝ : β i✝
a b : (i : ι) → β i
h : a < b
i : ι
hi : i ∈ {i | a i ≠ b i}
j : ι
hj : (fun x x_1 => x < x_1) j i
hl : ↑toLex a j ≠ ↑toLex b j
⊢ ∃ x, x ∈ {i | a i ≠ b i} ∧ x < i
Theorem: MvPowerSeries.coeff_mul_C
File: Mathlib/RingTheory/PowerSeries/Basic.lean

tactic: simpa using coeff_add_mul_monomial n 0 φ a
state_before: σ : Type u_1
R : Type u_2
inst✝ : Semiring R
n : σ →₀ ℕ
φ : MvPowerSeries σ R
a : R
⊢ ↑(coeff R n) (φ * ↑(C σ R) a) = ↑(coeff R n) φ * a
Theorem: Real.Angle.two_zsmul_toReal_eq_two_mul_sub_two_pi
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Angle.lean

tactic: rw [two_zsmul, ← two_nsmul, two_nsmul_toReal_eq_two_mul_sub_two_pi]
state_before: θ : Angle
⊢ toReal (2 • θ) = 2 * toReal θ - 2 * π ↔ π / 2 < toReal θ
Theorem: ENNReal.ofReal_lt_ofReal_iff
File: Mathlib/Data/Real/ENNReal.lean

tactic: rw [ENNReal.ofReal, ENNReal.ofReal, coe_lt_coe, Real.toNNReal_lt_toNNReal_iff h]
state_before: α : Type ?u.806824
β : Type ?u.806827
a b c d : ℝ≥0∞
r p✝ q✝ : ℝ≥0
p q : ℝ
h : 0 < q
⊢ ENNReal.ofReal p < ENNReal.ofReal q ↔ p < q