tasksource/leandojo huggingface dataset:
Theorem: StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_target_aux
File: Mathlib/Geometry/Manifold/LocalInvariantProperties.lean

tactic: rw [← e.left_inv xe] at xf xf' hgs
state_before: H : Type u_2
M : Type ?u.20880
H' : Type u_3
M' : Type u_4
X : Type u_1
inst✝⁶ : TopologicalSpace H
inst✝⁵ : TopologicalSpace M
inst✝⁴ : ChartedSpace H M
inst✝³ : TopologicalSpace H'
inst✝² : TopologicalSpace M'
inst✝¹ : ChartedSpace H' M'
inst✝ : TopologicalSpace X
G : StructureGroupoid H
G' : StructureGroupoid H'
e✝ e' : LocalHomeomorph M H
f f' : LocalHomeomorph M' H'
P : (H → H') → Set H → H → Prop
g✝ g' : M → M'
s✝ t : Set M
x✝ : M
Q : (H → H) → Set H → H → Prop
hG : LocalInvariantProp G G' P
g : X → M'
e : LocalHomeomorph X H
x : X
s : Set X
xe : x ∈ e.source
hf : f ∈ maximalAtlas M' G'
xf : g x ∈ f.source
hf' : f' ∈ maximalAtlas M' G'
xf' : g x ∈ f'.source
hgs : ContinuousWithinAt g s x
⊢ P (↑f ∘ g ∘ ↑(LocalHomeomorph.symm e)) (↑(LocalHomeomorph.symm e) ⁻¹' s) (↑e x) ↔
    P (↑f' ∘ g ∘ ↑(LocalHomeomorph.symm e)) (↑(LocalHomeomorph.symm e) ⁻¹' s) (↑e x)

tactic: refine' hG.liftPropWithinAt_indep_chart_target_aux2 (g ∘ e.symm) hf xf hf' xf' _
state_before: H : Type u_2
M : Type ?u.20880
H' : Type u_3
M' : Type u_4
X : Type u_1
inst✝⁶ : TopologicalSpace H
inst✝⁵ : TopologicalSpace M
inst✝⁴ : ChartedSpace H M
inst✝³ : TopologicalSpace H'
inst✝² : TopologicalSpace M'
inst✝¹ : ChartedSpace H' M'
inst✝ : TopologicalSpace X
G : StructureGroupoid H
G' : StructureGroupoid H'
e✝ e' : LocalHomeomorph M H
f f' : LocalHomeomorph M' H'
P : (H → H') → Set H → H → Prop
g✝ g' : M → M'
s✝ t : Set M
x✝ : M
Q : (H → H) → Set H → H → Prop
hG : LocalInvariantProp G G' P
g : X → M'
e : LocalHomeomorph X H
x : X
s : Set X
xe : x ∈ e.source
hf : f ∈ maximalAtlas M' G'
xf : g (↑(LocalHomeomorph.symm e) (↑e x)) ∈ f.source
hf' : f' ∈ maximalAtlas M' G'
xf' : g (↑(LocalHomeomorph.symm e) (↑e x)) ∈ f'.source
hgs : ContinuousWithinAt g s (↑(LocalHomeomorph.symm e) (↑e x))
⊢ P (↑f ∘ g ∘ ↑(LocalHomeomorph.symm e)) (↑(LocalHomeomorph.symm e) ⁻¹' s) (↑e x) ↔
    P (↑f' ∘ g ∘ ↑(LocalHomeomorph.symm e)) (↑(LocalHomeomorph.symm e) ⁻¹' s) (↑e x)

tactic: exact hgs.comp (e.symm.continuousAt <| e.mapsTo xe).continuousWithinAt Subset.rfl
state_before: H : Type u_2
M : Type ?u.20880
H' : Type u_3
M' : Type u_4
X : Type u_1
inst✝⁶ : TopologicalSpace H
inst✝⁵ : TopologicalSpace M
inst✝⁴ : ChartedSpace H M
inst✝³ : TopologicalSpace H'
inst✝² : TopologicalSpace M'
inst✝¹ : ChartedSpace H' M'
inst✝ : TopologicalSpace X
G : StructureGroupoid H
G' : StructureGroupoid H'
e✝ e' : LocalHomeomorph M H
f f' : LocalHomeomorph M' H'
P : (H → H') → Set H → H → Prop
g✝ g' : M → M'
s✝ t : Set M
x✝ : M
Q : (H → H) → Set H → H → Prop
hG : LocalInvariantProp G G' P
g : X → M'
e : LocalHomeomorph X H
x : X
s : Set X
xe : x ∈ e.source
hf : f ∈ maximalAtlas M' G'
xf : g (↑(LocalHomeomorph.symm e) (↑e x)) ∈ f.source
hf' : f' ∈ maximalAtlas M' G'
xf' : g (↑(LocalHomeomorph.symm e) (↑e x)) ∈ f'.source
hgs : ContinuousWithinAt g s (↑(LocalHomeomorph.symm e) (↑e x))
⊢ ContinuousWithinAt (g ∘ ↑(LocalHomeomorph.symm e)) (↑(LocalHomeomorph.symm e) ⁻¹' s) (↑e x)
Theorem: Matrix.isSymm_compl
File: Mathlib/Combinatorics/SimpleGraph/AdjMatrix.lean

tactic: ext
state_before: V : Type u_2
α : Type u_1
β : Type ?u.14711
inst✝³ : DecidableEq α
inst✝² : DecidableEq V
A : Matrix V V α
inst✝¹ : Zero α
inst✝ : One α
h : IsSymm A
⊢ IsSymm (compl A)

tactic: simp [compl, h.apply, eq_comm]
state_before: case a.h
V : Type u_2
α : Type u_1
β : Type ?u.14711
inst✝³ : DecidableEq α
inst✝² : DecidableEq V
A : Matrix V V α
inst✝¹ : Zero α
inst✝ : One α
h : IsSymm A
i✝ x✝ : V
⊢ (compl A)ᵀ i✝ x✝ = compl A i✝ x✝
Theorem: IsPGroup.of_surjective
File: Mathlib/GroupTheory/PGroup.lean

tactic: refine' fun h => Exists.elim (hϕ h) fun g hg => Exists.imp (fun k hk => _) (hG g)
state_before: p : ℕ
G : Type u_2
inst✝¹ : Group G
hG : IsPGroup p G
H : Type u_1
inst✝ : Group H
ϕ : G →* H
hϕ : Function.Surjective ↑ϕ
⊢ IsPGroup p H

tactic: rw [← hg, ← ϕ.map_pow, hk, ϕ.map_one]
state_before: p : ℕ
G : Type u_2
inst✝¹ : Group G
hG : IsPGroup p G
H : Type u_1
inst✝ : Group H
ϕ : G →* H
hϕ : Function.Surjective ↑ϕ
h : H
g : G
hg : ↑ϕ g = h
k : ℕ
hk : g ^ p ^ k = 1
⊢ h ^ p ^ k = 1
Theorem: gramSchmidt_orthonormal'
File: Mathlib/Analysis/InnerProductSpace/GramSchmidtOrtho.lean

tactic: refine' ⟨fun i => gramSchmidtNormed_unit_length' i.prop, _⟩
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
ι : Type u_3
inst✝² : LinearOrder ι
inst✝¹ : LocallyFiniteOrderBot ι
inst✝ : IsWellOrder ι fun x x_1 => x < x_1
f : ι → E
⊢ Orthonormal 𝕜 fun i => gramSchmidtNormed 𝕜 f ↑i

tactic: rintro i j (hij : ¬_)
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
ι : Type u_3
inst✝² : LinearOrder ι
inst✝¹ : LocallyFiniteOrderBot ι
inst✝ : IsWellOrder ι fun x x_1 => x < x_1
f : ι → E
⊢ ∀ {i j : ↑{i | gramSchmidtNormed 𝕜 f i ≠ 0}},
    i ≠ j → inner ((fun i => gramSchmidtNormed 𝕜 f ↑i) i) ((fun i => gramSchmidtNormed 𝕜 f ↑i) j) = 0

tactic: rw [Subtype.ext_iff] at hij
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
ι : Type u_3
inst✝² : LinearOrder ι
inst✝¹ : LocallyFiniteOrderBot ι
inst✝ : IsWellOrder ι fun x x_1 => x < x_1
f : ι → E
i j : ↑{i | gramSchmidtNormed 𝕜 f i ≠ 0}
hij : ¬i = j
⊢ inner ((fun i => gramSchmidtNormed 𝕜 f ↑i) i) ((fun i => gramSchmidtNormed 𝕜 f ↑i) j) = 0

tactic: simp [gramSchmidtNormed, inner_smul_left, inner_smul_right, gramSchmidt_orthogonal 𝕜 f hij]
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
ι : Type u_3
inst✝² : LinearOrder ι
inst✝¹ : LocallyFiniteOrderBot ι
inst✝ : IsWellOrder ι fun x x_1 => x < x_1
f : ι → E
i j : ↑{i | gramSchmidtNormed 𝕜 f i ≠ 0}
hij : ¬↑i = ↑j
⊢ inner ((fun i => gramSchmidtNormed 𝕜 f ↑i) i) ((fun i => gramSchmidtNormed 𝕜 f ↑i) j) = 0
Theorem: div_eq_zero_iff
File: Mathlib/Algebra/GroupWithZero/Units/Basic.lean

tactic: simp [div_eq_mul_inv]
state_before: α : Type ?u.19455
M₀ : Type ?u.19458
G₀ : Type u_1
M₀' : Type ?u.19464
G₀' : Type ?u.19467
F : Type ?u.19470
F' : Type ?u.19473
inst✝¹ : MonoidWithZero M₀
inst✝ : GroupWithZero G₀
a b c : G₀
⊢ a / b = 0 ↔ a = 0 ∨ b = 0
Theorem: Set.surjective_iff_surjective_of_iUnion_eq_univ
File: Mathlib/Data/Set/Lattice.lean

tactic: refine' ⟨fun H i => (U i).restrictPreimage_surjective H, fun H x => _⟩
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.186386
ι : Sort ?u.186389
ι' : Sort ?u.186392
ι₂ : Sort ?u.186395
κ : ι → Sort ?u.186400
κ₁ : ι → Sort ?u.186405
κ₂ : ι → Sort ?u.186410
κ' : ι' → Sort ?u.186415
s : Set β
f : α → β
U : ι → Set β
hU : iUnion U = univ
⊢ Surjective f ↔ ∀ (i : ι), Surjective (restrictPreimage (U i) f)

tactic: obtain ⟨i, hi⟩ :=
  Set.mem_iUnion.mp
    (show x ∈ Set.iUnion U by rw [hU]; triv)
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.186386
ι : Sort ?u.186389
ι' : Sort ?u.186392
ι₂ : Sort ?u.186395
κ : ι → Sort ?u.186400
κ₁ : ι → Sort ?u.186405
κ₂ : ι → Sort ?u.186410
κ' : ι' → Sort ?u.186415
s : Set β
f : α → β
U : ι → Set β
hU : iUnion U = univ
H : ∀ (i : ι), Surjective (restrictPreimage (U i) f)
x : β
⊢ ∃ a, f a = x

tactic: exact ⟨_, congr_arg Subtype.val (H i ⟨x, hi⟩).choose_spec⟩
state_before: case intro
α : Type u_1
β : Type u_2
γ : Type ?u.186386
ι : Sort ?u.186389
ι' : Sort ?u.186392
ι₂ : Sort ?u.186395
κ : ι → Sort ?u.186400
κ₁ : ι → Sort ?u.186405
κ₂ : ι → Sort ?u.186410
κ' : ι' → Sort ?u.186415
s : Set β
f : α → β
U : ι → Set β
hU : iUnion U = univ
H : ∀ (i : ι), Surjective (restrictPreimage (U i) f)
x : β
i : ι
hi : x ∈ U i
⊢ ∃ a, f a = x

tactic: rw [hU]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.186386
ι : Sort ?u.186389
ι' : Sort ?u.186392
ι₂ : Sort ?u.186395
κ : ι → Sort ?u.186400
κ₁ : ι → Sort ?u.186405
κ₂ : ι → Sort ?u.186410
κ' : ι' → Sort ?u.186415
s : Set β
f : α → β
U : ι → Set β
hU : iUnion U = univ
H : ∀ (i : ι), Surjective (restrictPreimage (U i) f)
x : β
⊢ x ∈ iUnion U

tactic: triv
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.186386
ι : Sort ?u.186389
ι' : Sort ?u.186392
ι₂ : Sort ?u.186395
κ : ι → Sort ?u.186400
κ₁ : ι → Sort ?u.186405
κ₂ : ι → Sort ?u.186410
κ' : ι' → Sort ?u.186415
s : Set β
f : α → β
U : ι → Set β
hU : iUnion U = univ
H : ∀ (i : ι), Surjective (restrictPreimage (U i) f)
x : β
⊢ x ∈ univ
Theorem: CategoryTheory.GrothendieckTopology.sheafificationWhiskerRightIso_inv_app
File: Mathlib/CategoryTheory/Sites/CompatibleSheafification.lean

tactic: dsimp [sheafificationWhiskerRightIso, sheafifyCompIso]
state_before: C : Type u
inst✝⁸ : Category C
J : GrothendieckTopology C
D : Type w₁
inst✝⁷ : Category D
E : Type w₂
inst✝⁶ : Category E
F : D ⥤ E
inst✝⁵ : ∀ (α β : Type (max v u)) (fst snd : β → α), HasLimitsOfShape (WalkingMulticospan fst snd) D
inst✝⁴ : ∀ (α β : Type (max v u)) (fst snd : β → α), HasLimitsOfShape (WalkingMulticospan fst snd) E
inst✝³ : ∀ (X : C), HasColimitsOfShape (Cover J X)ᵒᵖ D
inst✝² : ∀ (X : C), HasColimitsOfShape (Cover J X)ᵒᵖ E
inst✝¹ : (X : C) → PreservesColimitsOfShape (Cover J X)ᵒᵖ F
inst✝ : (X : C) → (W : Cover J X) → (P : Cᵒᵖ ⥤ D) → PreservesLimit (MulticospanIndex.multicospan (Cover.index W P)) F
P : Cᵒᵖ ⥤ D
⊢ (sheafificationWhiskerRightIso J F).inv.app P = (sheafifyCompIso J F P).inv

tactic: simp only [Category.id_comp, Category.comp_id]
state_before: C : Type u
inst✝⁸ : Category C
J : GrothendieckTopology C
D : Type w₁
inst✝⁷ : Category D
E : Type w₂
inst✝⁶ : Category E
F : D ⥤ E
inst✝⁵ : ∀ (α β : Type (max v u)) (fst snd : β → α), HasLimitsOfShape (WalkingMulticospan fst snd) D
inst✝⁴ : ∀ (α β : Type (max v u)) (fst snd : β → α), HasLimitsOfShape (WalkingMulticospan fst snd) E
inst✝³ : ∀ (X : C), HasColimitsOfShape (Cover J X)ᵒᵖ D
inst✝² : ∀ (X : C), HasColimitsOfShape (Cover J X)ᵒᵖ E
inst✝¹ : (X : C) → PreservesColimitsOfShape (Cover J X)ᵒᵖ F
inst✝ : (X : C) → (W : Cover J X) → (P : Cᵒᵖ ⥤ D) → PreservesLimit (MulticospanIndex.multicospan (Cover.index W P)) F
P : Cᵒᵖ ⥤ D
⊢ ((𝟙 (plusObj J (plusObj J (P ⋙ F))) ≫ plusMap J (plusCompIso J F P).inv ≫ 𝟙 (plusObj J (plusObj J P ⋙ F))) ≫
        (plusCompIso J F (plusObj J P)).inv) ≫
      𝟙 (plusObj J (plusObj J P) ⋙ F) =
    plusMap J (plusCompIso J F P).inv ≫ (plusCompIso J F (plusObj J P)).inv

tactic: erw [Category.id_comp]
state_before: C : Type u
inst✝⁸ : Category C
J : GrothendieckTopology C
D : Type w₁
inst✝⁷ : Category D
E : Type w₂
inst✝⁶ : Category E
F : D ⥤ E
inst✝⁵ : ∀ (α β : Type (max v u)) (fst snd : β → α), HasLimitsOfShape (WalkingMulticospan fst snd) D
inst✝⁴ : ∀ (α β : Type (max v u)) (fst snd : β → α), HasLimitsOfShape (WalkingMulticospan fst snd) E
inst✝³ : ∀ (X : C), HasColimitsOfShape (Cover J X)ᵒᵖ D
inst✝² : ∀ (X : C), HasColimitsOfShape (Cover J X)ᵒᵖ E
inst✝¹ : (X : C) → PreservesColimitsOfShape (Cover J X)ᵒᵖ F
inst✝ : (X : C) → (W : Cover J X) → (P : Cᵒᵖ ⥤ D) → PreservesLimit (MulticospanIndex.multicospan (Cover.index W P)) F
P : Cᵒᵖ ⥤ D
⊢ (𝟙 (plusObj J (plusObj J (P ⋙ F))) ≫ plusMap J (plusCompIso J F P).inv) ≫ (plusCompIso J F (plusObj J P)).inv =
    plusMap J (plusCompIso J F P).inv ≫ (plusCompIso J F (plusObj J P)).inv
Theorem: one_le_gauge_of_not_mem
File: Mathlib/Analysis/Convex/Gauge.lean

tactic: rwa [one_smul]
state_before: 𝕜 : Type ?u.97683
E : Type u_1
F : Type ?u.97689
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s t : Set E
a : ℝ
x : E
hs₁ : StarConvex ℝ 0 s
hs₂ : Absorbs ℝ s {x}
hx : ¬x ∈ s
⊢ ¬x ∈ 1 • s
Theorem: MvPFunctor.supp_eq
File: Mathlib/Data/PFunctor/Multivariate/Basic.lean

tactic: ext x
state_before: n m : ℕ
P : MvPFunctor n
Q : Fin2 n → MvPFunctor m
α✝ β : TypeVec m
α : TypeVec n
a : P.A
f : B P a ⟹ α
i : Fin2 n
⊢ supp { fst := a, snd := f } i = f i '' univ

tactic: simp only [supp, image_univ, mem_range, mem_setOf_eq]
state_before: case h
n m : ℕ
P : MvPFunctor n
Q : Fin2 n → MvPFunctor m
α✝ β : TypeVec m
α : TypeVec n
a : P.A
f : B P a ⟹ α
i : Fin2 n
x : α i
⊢ x ∈ supp { fst := a, snd := f } i ↔ x ∈ f i '' univ

tactic: constructor <;> intro h
state_before: case h
n m : ℕ
P : MvPFunctor n
Q : Fin2 n → MvPFunctor m
α✝ β : TypeVec m
α : TypeVec n
a : P.A
f : B P a ⟹ α
i : Fin2 n
x : α i
⊢ (∀ ⦃P_1 : (i : Fin2 n) → α i → Prop⦄, LiftP P_1 { fst := a, snd := f } → P_1 i x) ↔ ∃ y, f i y = x

tactic: apply @h fun i x => ∃ y : P.B a i, f i y = x
state_before: case h.mp
n m : ℕ
P : MvPFunctor n
Q : Fin2 n → MvPFunctor m
α✝ β : TypeVec m
α : TypeVec n
a : P.A
f : B P a ⟹ α
i : Fin2 n
x : α i
h : ∀ ⦃P_1 : (i : Fin2 n) → α i → Prop⦄, LiftP P_1 { fst := a, snd := f } → P_1 i x
⊢ ∃ y, f i y = x

tactic: rw [liftP_iff']
state_before: case h.mp
n m : ℕ
P : MvPFunctor n
Q : Fin2 n → MvPFunctor m
α✝ β : TypeVec m
α : TypeVec n
a : P.A
f : B P a ⟹ α
i : Fin2 n
x : α i
h : ∀ ⦃P_1 : (i : Fin2 n) → α i → Prop⦄, LiftP P_1 { fst := a, snd := f } → P_1 i x
⊢ LiftP (fun i x => ∃ y, f i y = x) { fst := a, snd := f }

tactic: intros
state_before: case h.mp
n m : ℕ
P : MvPFunctor n
Q : Fin2 n → MvPFunctor m
α✝ β : TypeVec m
α : TypeVec n
a : P.A
f : B P a ⟹ α
i : Fin2 n
x : α i
h : ∀ ⦃P_1 : (i : Fin2 n) → α i → Prop⦄, LiftP P_1 { fst := a, snd := f } → P_1 i x
⊢ ∀ (i : Fin2 n) (x : B P a i), ∃ y, f i y = f i x

tactic: refine' ⟨_, rfl⟩
state_before: case h.mp
n m : ℕ
P : MvPFunctor n
Q : Fin2 n → MvPFunctor m
α✝ β : TypeVec m
α : TypeVec n
a : P.A
f : B P a ⟹ α
i : Fin2 n
x : α i
h : ∀ ⦃P_1 : (i : Fin2 n) → α i → Prop⦄, LiftP P_1 { fst := a, snd := f } → P_1 i x
i✝ : Fin2 n
x✝ : B P a i✝
⊢ ∃ y, f i✝ y = f i✝ x✝

tactic: simp only [liftP_iff']
state_before: case h.mpr
n m : ℕ
P : MvPFunctor n
Q : Fin2 n → MvPFunctor m
α✝ β : TypeVec m
α : TypeVec n
a : P.A
f : B P a ⟹ α
i : Fin2 n
x : α i
h : ∃ y, f i y = x
⊢ ∀ ⦃P_1 : (i : Fin2 n) → α i → Prop⦄, LiftP P_1 { fst := a, snd := f } → P_1 i x

tactic: cases h
state_before: case h.mpr
n m : ℕ
P : MvPFunctor n
Q : Fin2 n → MvPFunctor m
α✝ β : TypeVec m
α : TypeVec n
a : P.A
f : B P a ⟹ α
i : Fin2 n
x : α i
h : ∃ y, f i y = x
⊢ ∀ ⦃P_1 : (i : Fin2 n) → α i → Prop⦄, (∀ (i : Fin2 n) (x : B P a i), P_1 i (f i x)) → P_1 i x

tactic: subst x
state_before: case h.mpr.intro
n m : ℕ
P : MvPFunctor n
Q : Fin2 n → MvPFunctor m
α✝ β : TypeVec m
α : TypeVec n
a : P.A
f : B P a ⟹ α
i : Fin2 n
x : α i
w✝ : B P a i
h✝ : f i w✝ = x
⊢ ∀ ⦃P_1 : (i : Fin2 n) → α i → Prop⦄, (∀ (i : Fin2 n) (x : B P a i), P_1 i (f i x)) → P_1 i x

tactic: tauto
state_before: case h.mpr.intro
n m : ℕ
P : MvPFunctor n
Q : Fin2 n → MvPFunctor m
α✝ β : TypeVec m
α : TypeVec n
a : P.A
f : B P a ⟹ α
i : Fin2 n
w✝ : B P a i
⊢ ∀ ⦃P_1 : (i : Fin2 n) → α i → Prop⦄, (∀ (i : Fin2 n) (x : B P a i), P_1 i (f i x)) → P_1 i (f i w✝)
Theorem: Nat.ofDigits_neg_one
File: Mathlib/Data/Nat/Digits.lean

tactic: simp [ofDigits, List.alternatingSum]
state_before: n✝ n : ℕ
⊢ ofDigits (-1) [n] = List.alternatingSum (List.map (fun n => ↑n) [n])

tactic: simp only [ofDigits, List.alternatingSum, List.map_cons, ofDigits_neg_one t]
state_before: n a b : ℕ
t : List ℕ
⊢ ofDigits (-1) (a :: b :: t) = List.alternatingSum (List.map (fun n => ↑n) (a :: b :: t))

tactic: ring
state_before: n a b : ℕ
t : List ℕ
⊢ ↑a + -1 * (↑b + -1 * List.alternatingSum (List.map (fun n => ↑n) t)) =
    ↑a + -↑b + List.alternatingSum (List.map (fun n => ↑n) t)
Theorem: Real.cos_int_mul_two_pi_sub_pi
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

tactic: simpa only [cos_zero] using (cos_periodic.int_mul n).sub_antiperiod_eq cos_antiperiodic
state_before: n : ℤ
⊢ cos (↑n * (2 * π) - π) = -1
Theorem: CategoryTheory.Presheaf.w
File: Mathlib/CategoryTheory/Sites/Sheaf.lean

tactic: apply limit.hom_ext
state_before: C : Type u₁
inst✝³ : Category C
A : Type u₂
inst✝² : Category A
J : GrothendieckTopology C
U : C
R : Presieve U
P : Cᵒᵖ ⥤ A
inst✝¹ : HasProducts A
inst✝ : HasPullbacks C
⊢ forkMap R P ≫ firstMap R P = forkMap R P ≫ secondMap R P

tactic: rintro ⟨⟨Y, f, hf⟩, ⟨Z, g, hg⟩⟩
state_before: case w
C : Type u₁
inst✝³ : Category C
A : Type u₂
inst✝² : Category A
J : GrothendieckTopology C
U : C
R : Presieve U
P : Cᵒᵖ ⥤ A
inst✝¹ : HasProducts A
inst✝ : HasPullbacks C
⊢ ∀ (j : Discrete (((V : C) × { f // R f }) × (W : C) × { g // R g })),
    (forkMap R P ≫ firstMap R P) ≫
        limit.π (Discrete.functor fun fg => P.obj (Limits.pullback ↑fg.fst.snd ↑fg.snd.snd).op) j =
      (forkMap R P ≫ secondMap R P) ≫
        limit.π (Discrete.functor fun fg => P.obj (Limits.pullback ↑fg.fst.snd ↑fg.snd.snd).op) j

tactic: simp only [firstMap, secondMap, forkMap, limit.lift_π, limit.lift_π_assoc, assoc, Fan.mk_π_app,
  Subtype.coe_mk]
state_before: case w.mk.mk.mk.mk.mk.mk
C : Type u₁
inst✝³ : Category C
A : Type u₂
inst✝² : Category A
J : GrothendieckTopology C
U : C
R : Presieve U
P : Cᵒᵖ ⥤ A
inst✝¹ : HasProducts A
inst✝ : HasPullbacks C
Y : C
f : Y ⟶ U
hf : R f
Z : C
g : Z ⟶ U
hg : R g
⊢ (forkMap R P ≫ firstMap R P) ≫
      limit.π (Discrete.functor fun fg => P.obj (Limits.pullback ↑fg.fst.snd ↑fg.snd.snd).op)
        {
          as :=
            ({ fst := Y, snd := { val := f, property := hf } }, { fst := Z, snd := { val := g, property := hg } }) } =
    (forkMap R P ≫ secondMap R P) ≫
      limit.π (Discrete.functor fun fg => P.obj (Limits.pullback ↑fg.fst.snd ↑fg.snd.snd).op)
        { as := ({ fst := Y, snd := { val := f, property := hf } }, { fst := Z, snd := { val := g, property := hg } }) }

tactic: rw [← P.map_comp, ← op_comp, pullback.condition]
state_before: case w.mk.mk.mk.mk.mk.mk
C : Type u₁
inst✝³ : Category C
A : Type u₂
inst✝² : Category A
J : GrothendieckTopology C
U : C
R : Presieve U
P : Cᵒᵖ ⥤ A
inst✝¹ : HasProducts A
inst✝ : HasPullbacks C
Y : C
f : Y ⟶ U
hf : R f
Z : C
g : Z ⟶ U
hg : R g
⊢ P.map f.op ≫ P.map pullback.fst.op = P.map g.op ≫ P.map pullback.snd.op

tactic: simp
state_before: case w.mk.mk.mk.mk.mk.mk
C : Type u₁
inst✝³ : Category C
A : Type u₂
inst✝² : Category A
J : GrothendieckTopology C
U : C
R : Presieve U
P : Cᵒᵖ ⥤ A
inst✝¹ : HasProducts A
inst✝ : HasPullbacks C
Y : C
f : Y ⟶ U
hf : R f
Z : C
g : Z ⟶ U
hg : R g
⊢ P.map (pullback.snd ≫ g).op = P.map g.op ≫ P.map pullback.snd.op
Theorem: Hyperreal.IsSt.lt
File: Mathlib/Data/Real/Hyperreal.lean

tactic: rcases ofSeq_surjective x with ⟨f, rfl⟩
state_before: x y : ℝ*
r s : ℝ
hxr : IsSt x r
hys : IsSt y s
hrs : r < s
⊢ x < y

tactic: rcases ofSeq_surjective y with ⟨g, rfl⟩
state_before: case intro
y : ℝ*
r s : ℝ
hys : IsSt y s
hrs : r < s
f : ℕ → ℝ
hxr : IsSt (ofSeq f) r
⊢ ofSeq f < y

tactic: rw [isSt_ofSeq_iff_tendsto] at hxr hys
state_before: case intro.intro
r s : ℝ
hrs : r < s
f : ℕ → ℝ
hxr : IsSt (ofSeq f) r
g : ℕ → ℝ
hys : IsSt (ofSeq g) s
⊢ ofSeq f < ofSeq g

tactic: exact ofSeq_lt_ofSeq.2 <| hxr.eventually_lt hys hrs
state_before: case intro.intro
r s : ℝ
hrs : r < s
f : ℕ → ℝ
hxr : Tendsto f (↑(hyperfilter ℕ)) (𝓝 r)
g : ℕ → ℝ
hys : Tendsto g (↑(hyperfilter ℕ)) (𝓝 s)
⊢ ofSeq f < ofSeq g
Theorem: String.contains_iff
File: Std/Data/String/Lemmas.lean

tactic: simp [contains, any_iff]
state_before: s : String
c : Char
⊢ contains s c = true ↔ c ∈ s.data
Theorem: iff_and_self
File: Std/Logic.lean

tactic: rw [and_comm, iff_self_and]
state_before: p q : Prop
⊢ (p ↔ q ∧ p) ↔ p → q
Theorem: upperSemicontinuousWithinAt_univ_iff
File: Mathlib/Topology/Semicontinuous.lean

tactic: simp [UpperSemicontinuousWithinAt, UpperSemicontinuousAt, nhdsWithin_univ]
state_before: α : Type u_1
inst✝¹ : TopologicalSpace α
β : Type u_2
inst✝ : Preorder β
f g : α → β
x : α
s t : Set α
y z : β
⊢ UpperSemicontinuousWithinAt f univ x ↔ UpperSemicontinuousAt f x
Theorem: segment_eq_image_lineMap
File: Mathlib/Analysis/Convex/Segment.lean

tactic: convert segment_eq_image 𝕜 x y using 2
state_before: 𝕜 : Type u_2
E : Type u_1
F : Type ?u.88569
G : Type ?u.88572
ι : Type ?u.88575
π : ι → Type ?u.88580
inst✝⁵ : OrderedRing 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : AddCommGroup F
inst✝² : AddCommGroup G
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
x y : E
⊢ [x-[𝕜]y] = ↑(AffineMap.lineMap x y) '' Icc 0 1

tactic: exact AffineMap.lineMap_apply_module _ _ _
state_before: case h.e'_3.h
𝕜 : Type u_2
E : Type u_1
F : Type ?u.88569
G : Type ?u.88572
ι : Type ?u.88575
π : ι → Type ?u.88580
inst✝⁵ : OrderedRing 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : AddCommGroup F
inst✝² : AddCommGroup G
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
x y : E
a✝¹ : 𝕜
a✝ : a✝¹ ∈ Icc 0 1
⊢ ↑(AffineMap.lineMap x y) a✝¹ = (1 - a✝¹) • x + a✝¹ • y
Theorem: Set.ite_empty_right
File: Mathlib/Data/Set/Basic.lean

tactic: simp [Set.ite]
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
a b : α
s✝ s₁ s₂ t✝ t₁ t₂ u t s : Set α
⊢ Set.ite t s ∅ = s ∩ t
Theorem: ContinuousLinearMap.comp_zero
File: Mathlib/Topology/Algebra/Module/Basic.lean

tactic: ext
state_before: R₁ : Type u_6
R₂ : Type u_1
R₃ : Type u_2
inst✝¹⁷ : Semiring R₁
inst✝¹⁶ : Semiring R₂
inst✝¹⁵ : Semiring R₃
σ₁₂ : R₁ →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R₁ →+* R₃
M₁ : Type u_5
inst✝¹⁴ : TopologicalSpace M₁
inst✝¹³ : AddCommMonoid M₁
M'₁ : Type ?u.510286
inst✝¹² : TopologicalSpace M'₁
inst✝¹¹ : AddCommMonoid M'₁
M₂ : Type u_3
inst✝¹⁰ : TopologicalSpace M₂
inst✝⁹ : AddCommMonoid M₂
M₃ : Type u_4
inst✝⁸ : TopologicalSpace M₃
inst✝⁷ : AddCommMonoid M₃
M₄ : Type ?u.510313
inst✝⁶ : TopologicalSpace M₄
inst✝⁵ : AddCommMonoid M₄
inst✝⁴ : Module R₁ M₁
inst✝³ : Module R₁ M'₁
inst✝² : Module R₂ M₂
inst✝¹ : Module R₃ M₃
inst✝ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
g : M₂ →SL[σ₂₃] M₃
⊢ comp g 0 = 0

tactic: simp
state_before: case h
R₁ : Type u_6
R₂ : Type u_1
R₃ : Type u_2
inst✝¹⁷ : Semiring R₁
inst✝¹⁶ : Semiring R₂
inst✝¹⁵ : Semiring R₃
σ₁₂ : R₁ →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R₁ →+* R₃
M₁ : Type u_5
inst✝¹⁴ : TopologicalSpace M₁
inst✝¹³ : AddCommMonoid M₁
M'₁ : Type ?u.510286
inst✝¹² : TopologicalSpace M'₁
inst✝¹¹ : AddCommMonoid M'₁
M₂ : Type u_3
inst✝¹⁰ : TopologicalSpace M₂
inst✝⁹ : AddCommMonoid M₂
M₃ : Type u_4
inst✝⁸ : TopologicalSpace M₃
inst✝⁷ : AddCommMonoid M₃
M₄ : Type ?u.510313
inst✝⁶ : TopologicalSpace M₄
inst✝⁵ : AddCommMonoid M₄
inst✝⁴ : Module R₁ M₁
inst✝³ : Module R₁ M'₁
inst✝² : Module R₂ M₂
inst✝¹ : Module R₃ M₃
inst✝ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
g : M₂ →SL[σ₂₃] M₃
x✝ : M₁
⊢ ↑(comp g 0) x✝ = ↑0 x✝