ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- AlgebraicGeometry.Scheme.OpenCover.pullbackCover_f
@[simps]
def OpenCover.pullbackCover {X W : Scheme.{u}} (𝒰 : X.OpenCover) (f : W ⟶ X) :
    W.OpenCover 
Arguments: {X W : AlgebraicGeometry.Scheme} (𝒰 : X.OpenCover) (f : W ⟶ X) (x : ↑↑W.toPresheafedSpace)
Goal: (𝒰.pullbackCover f).f x = 𝒰.f (f.val.base x)
-- AlgebraicGeometry.Scheme.OpenCover.pullbackCover_J
@[simps]
def OpenCover.pullbackCover {X W : Scheme.{u}} (𝒰 : X.OpenCover) (f : W ⟶ X) :
    W.OpenCover 
Arguments: {X W : AlgebraicGeometry.Scheme} (𝒰 : X.OpenCover) (f : W ⟶ X)
Goal: (𝒰.pullbackCover f).J = 𝒰.J
-- AlgebraicGeometry.Scheme.OpenCover.pullbackCover_obj
@[simps]
def OpenCover.pullbackCover {X W : Scheme.{u}} (𝒰 : X.OpenCover) (f : W ⟶ X) :
    W.OpenCover 
Arguments: {X W : AlgebraicGeometry.Scheme} (𝒰 : X.OpenCover) (f : W ⟶ X) (x : 𝒰.J)
Goal: (𝒰.pullbackCover f).obj x = CategoryTheory.Limits.pullback f (𝒰.map x)
-- AlgebraicGeometry.Scheme.OpenCover.pullbackHom_map
@[reassoc (attr := simp)]
lemma OpenCover.pullbackHom_map {X W : Scheme.{u}} (𝒰 : X.OpenCover) (f : W ⟶ X) (i) :
    𝒰.pullbackHom f i ≫ 𝒰.map i = (𝒰.pullbackCover f).map i ≫ f 
Arguments: {X W : AlgebraicGeometry.Scheme} (𝒰 : X.OpenCover) (f : W ⟶ X) (i : (𝒰.pullbackCover f).J)
Goal: 𝒰.pullbackHom f i ≫ 𝒰.map i = (𝒰.pullbackCover f).map i ≫ f
-- AlgebraicGeometry.Scheme.OpenCover.pullbackCover'_f
@[simps]
def OpenCover.pullbackCover' {X W : Scheme.{u}} (𝒰 : X.OpenCover) (f : W ⟶ X) :
    W.OpenCover 
Arguments: {X W : AlgebraicGeometry.Scheme} (𝒰 : X.OpenCover) (f : W ⟶ X) (x : ↑↑W.toPresheafedSpace)
Goal: (𝒰.pullbackCover' f).f x = 𝒰.f (f.val.base x)
-- AlgebraicGeometry.Scheme.OpenCover.pullbackCover'_J
@[simps]
def OpenCover.pullbackCover' {X W : Scheme.{u}} (𝒰 : X.OpenCover) (f : W ⟶ X) :
    W.OpenCover 
Arguments: {X W : AlgebraicGeometry.Scheme} (𝒰 : X.OpenCover) (f : W ⟶ X)
Goal: (𝒰.pullbackCover' f).J = 𝒰.J
-- AlgebraicGeometry.Scheme.OpenCover.pullbackCover'_map
@[simps]
def OpenCover.pullbackCover' {X W : Scheme.{u}} (𝒰 : X.OpenCover) (f : W ⟶ X) :
    W.OpenCover 
Arguments: {X W : AlgebraicGeometry.Scheme} (𝒰 : X.OpenCover) (f : W ⟶ X) (x : 𝒰.J)
Goal: (𝒰.pullbackCover' f).map x = CategoryTheory.Limits.pullback.snd (𝒰.map x) f
-- AlgebraicGeometry.Scheme.OpenCover.pullbackCover'_obj
@[simps]
def OpenCover.pullbackCover' {X W : Scheme.{u}} (𝒰 : X.OpenCover) (f : W ⟶ X) :
    W.OpenCover 
Arguments: {X W : AlgebraicGeometry.Scheme} (𝒰 : X.OpenCover) (f : W ⟶ X) (x : 𝒰.J)
Goal: (𝒰.pullbackCover' f).obj x = CategoryTheory.Limits.pullback (𝒰.map x) f
-- AlgebraicGeometry.Scheme.OpenCover.finiteSubcover_obj
@[simps! obj map]
def OpenCover.finiteSubcover {X : Scheme.{u}} (𝒰 : OpenCover X) [H : CompactSpace X] :
    OpenCover X 
Arguments: {X : AlgebraicGeometry.Scheme} (𝒰 : X.OpenCover) [H : CompactSpace ↑↑X.toPresheafedSpace] (x : { x // x ∈ ⋯.choose })
Goal: 𝒰.finiteSubcover.obj x = 𝒰.obj (𝒰.f ↑x)
-- AlgebraicGeometry.Scheme.OpenCover.finiteSubcover_map
@[simps! obj map]
def OpenCover.finiteSubcover {X : Scheme.{u}} (𝒰 : OpenCover X) [H : CompactSpace X] :
    OpenCover X 
Arguments: {X : AlgebraicGeometry.Scheme} (𝒰 : X.OpenCover) [H : CompactSpace ↑↑X.toPresheafedSpace] (x : { x // x ∈ ⋯.choose })
Goal: 𝒰.finiteSubcover.map x = 𝒰.map (𝒰.f ↑x)
-- AlgebraicGeometry.Scheme.OpenCover.compactSpace
theorem OpenCover.compactSpace {X : Scheme.{u}} (𝒰 : X.OpenCover) [Finite 𝒰.J]
    [H : ∀ i, CompactSpace (𝒰.obj i)] : CompactSpace X 
Arguments: {X : AlgebraicGeometry.Scheme} (𝒰 : X.OpenCover) [Finite 𝒰.J] [H : ∀ (i : 𝒰.J), CompactSpace ↑↑(𝒰.obj i).toPresheafedSpace]
Goal: CompactSpace ↑↑X.toPresheafedSpace
-- AlgebraicGeometry.Scheme.AffineOpenCover.covers
structure AffineOpenCover (X : Scheme.{u}) where
    J : Type v
    obj : J → CommRingCat.{u}
    map : ∀ j : J, Spec (obj j) ⟶ X
    f : X → J
    covers : ∀ x, x ∈ Set.range (map (f x)).1.base
    IsOpen : ∀ x, IsOpenImmersion (map x) := by infer_instance
Arguments: {X : AlgebraicGeometry.Scheme} (self : X.AffineOpenCover) (x : ↑↑X.toPresheafedSpace)
Goal: x ∈ Set.range ⇑(self.map (self.f x)).val.base
-- AlgebraicGeometry.Scheme.AffineOpenCover.IsOpen
structure AffineOpenCover (X : Scheme.{u}) where
    J : Type v
    obj : J → CommRingCat.{u}
    map : ∀ j : J, Spec (obj j) ⟶ X
    f : X → J
    covers : ∀ x, x ∈ Set.range (map (f x)).1.base
    IsOpen : ∀ x, IsOpenImmersion (map x) := by infer_instance
Arguments: {X : AlgebraicGeometry.Scheme} (self : X.AffineOpenCover) (x : self.J)
Goal: AlgebraicGeometry.IsOpenImmersion (self.map x)
-- AlgebraicGeometry.Scheme.AffineOpenCover.openCover_obj
@[simps]
def openCover {X : Scheme.{u}} (𝓤 : X.AffineOpenCover) : X.OpenCover 
Arguments: {X : AlgebraicGeometry.Scheme} (𝓤 : X.AffineOpenCover) (j : 𝓤.J)
Goal: 𝓤.openCover.obj j = AlgebraicGeometry.Spec (𝓤.obj j)
-- AlgebraicGeometry.Scheme.AffineOpenCover.openCover_map
@[simps]
def openCover {X : Scheme.{u}} (𝓤 : X.AffineOpenCover) : X.OpenCover 
Arguments: {X : AlgebraicGeometry.Scheme} (𝓤 : X.AffineOpenCover) (j : 𝓤.J)
Goal: 𝓤.openCover.map j = 𝓤.map j
-- AlgebraicGeometry.Scheme.AffineOpenCover.openCover_J
@[simps]
def openCover {X : Scheme.{u}} (𝓤 : X.AffineOpenCover) : X.OpenCover 
Arguments: {X : AlgebraicGeometry.Scheme} (𝓤 : X.AffineOpenCover)
Goal: 𝓤.openCover.J = 𝓤.J
-- AlgebraicGeometry.Scheme.AffineOpenCover.openCover_f
@[simps]
def openCover {X : Scheme.{u}} (𝓤 : X.AffineOpenCover) : X.OpenCover 
Arguments: {X : AlgebraicGeometry.Scheme} (𝓤 : X.AffineOpenCover)
Goal: ∀ (a : ↑↑X.toPresheafedSpace), 𝓤.openCover.f a = 𝓤.f a
-- AlgebraicGeometry.Scheme.openCover_affineOpenCover
@[simp]
lemma openCover_affineOpenCover (X : Scheme.{u}) : X.affineOpenCover.openCover = X.affineCover 
Arguments: (X : AlgebraicGeometry.Scheme)
Goal: X.affineOpenCover.openCover = X.affineCover
-- AlgebraicGeometry.Scheme.OpenCover.pullbackCoverAffineRefinementObjIso_inv_map
@[reassoc]
lemma OpenCover.pullbackCoverAffineRefinementObjIso_inv_map (f : X ⟶ Y) (𝒰 : Y.OpenCover) (i) :
    (𝒰.pullbackCoverAffineRefinementObjIso f i).inv ≫
      (𝒰.affineRefinement.openCover.pullbackCover f).map i =
      ((𝒰.obj i.1).affineCover.pullbackCover (𝒰.pullbackHom f i.1)).map i.2 ≫
        (𝒰.pullbackCover f).map i.1 
Arguments: {X Y : AlgebraicGeometry.Scheme} (f : X ⟶ Y) (𝒰 : Y.OpenCover) (i : (𝒰.affineRefinement.openCover.pullbackCover f).J)
Goal: (AlgebraicGeometry.Scheme.OpenCover.pullbackCoverAffineRefinementObjIso f 𝒰 i).inv ≫
    (𝒰.affineRefinement.openCover.pullbackCover f).map i =
  ((𝒰.obj i.fst).affineCover.pullbackCover (𝒰.pullbackHom f i.fst)).map i.snd ≫ (𝒰.pullbackCover f).map i.fst
-- AlgebraicGeometry.Scheme.OpenCover.pullbackCoverAffineRefinementObjIso_inv_pullbackHom
@[reassoc]
lemma OpenCover.pullbackCoverAffineRefinementObjIso_inv_pullbackHom
    (f : X ⟶ Y) (𝒰 : Y.OpenCover) (i) :
    (𝒰.pullbackCoverAffineRefinementObjIso f i).inv ≫
      𝒰.affineRefinement.openCover.pullbackHom f i =
      (𝒰.obj i.1).affineCover.pullbackHom (𝒰.pullbackHom f i.1) i.2 
Arguments: {X Y : AlgebraicGeometry.Scheme} (f : X ⟶ Y) (𝒰 : Y.OpenCover) (i : (𝒰.affineRefinement.openCover.pullbackCover f).J)
Goal: (AlgebraicGeometry.Scheme.OpenCover.pullbackCoverAffineRefinementObjIso f 𝒰 i).inv ≫
    𝒰.affineRefinement.openCover.pullbackHom f i =
  (𝒰.obj i.fst).affineCover.pullbackHom (𝒰.pullbackHom f i.fst) i.snd
-- AlgebraicGeometry.Scheme.OpenCover.Hom.w
structure OpenCover.Hom {X : Scheme.{u}} (𝓤 𝓥 : OpenCover.{v} X) where
    idx : 𝓤.J → 𝓥.J
    app (j : 𝓤.J) : 𝓤.obj j ⟶ 𝓥.obj (idx j)
  isOpen (j : 𝓤.J) : IsOpenImmersion (app j) := by infer_instance
  w (j : 𝓤.J) : app j ≫ 𝓥.map _ = 𝓤.map _ := by aesop_cat
Arguments: {X : AlgebraicGeometry.Scheme} {𝓤 𝓥 : X.OpenCover} (self : 𝓤.Hom 𝓥) (j : 𝓤.J)
Goal: self.app j ≫ 𝓥.map (self.idx j) = 𝓤.map j
-- AlgebraicGeometry.Scheme.OpenCover.Hom.isOpen
structure OpenCover.Hom {X : Scheme.{u}} (𝓤 𝓥 : OpenCover.{v} X) where
    idx : 𝓤.J → 𝓥.J
    app (j : 𝓤.J) : 𝓤.obj j ⟶ 𝓥.obj (idx j)
  isOpen (j : 𝓤.J) : IsOpenImmersion (app j) := by infer_instance
  w (j : 𝓤.J) : app j ≫ 𝓥.map _ = 𝓤.map _ := by aesop_cat
Arguments: {X : AlgebraicGeometry.Scheme} {𝓤 𝓥 : X.OpenCover} (self : 𝓤.Hom 𝓥) (j : 𝓤.J)
Goal: AlgebraicGeometry.IsOpenImmersion (self.app j)
-- AlgebraicGeometry.Scheme.OpenCover.id_idx_apply
@[simp]
lemma OpenCover.id_idx_apply {X : Scheme.{u}} (𝓤 : X.OpenCover) (j : 𝓤.J) :
    (𝟙 𝓤 : 𝓤 ⟶ 𝓤).idx j = j 
Arguments: {X : AlgebraicGeometry.Scheme} (𝓤 : X.OpenCover) (j : 𝓤.J)
Goal: (𝟙 𝓤).idx j = j
-- AlgebraicGeometry.Scheme.OpenCover.id_app
@[simp]
lemma OpenCover.id_app {X : Scheme.{u}} (𝓤 : X.OpenCover) (j : 𝓤.J) :
    (𝟙 𝓤 : 𝓤 ⟶ 𝓤).app j = 𝟙 _ 
Arguments: {X : AlgebraicGeometry.Scheme} (𝓤 : X.OpenCover) (j : 𝓤.J)
Goal: (𝟙 𝓤).app j = 𝟙 (𝓤.obj j)
-- AlgebraicGeometry.Scheme.OpenCover.comp_idx_apply
@[simp]
lemma OpenCover.comp_idx_apply {X : Scheme.{u}} {𝓤 𝓥 𝓦 : X.OpenCover}
    (f : 𝓤 ⟶ 𝓥) (g : 𝓥 ⟶ 𝓦) (j : 𝓤.J) :
    (f ≫ g).idx j = g.idx (f.idx j) 
Arguments: {X : AlgebraicGeometry.Scheme} {𝓤 𝓥 𝓦 : X.OpenCover} (f : 𝓤 ⟶ 𝓥) (g : 𝓥 ⟶ 𝓦) (j : 𝓤.J)
Goal: (f ≫ g).idx j = g.idx (f.idx j)
-- AlgebraicGeometry.Scheme.OpenCover.comp_app
@[simp]
lemma OpenCover.comp_app {X : Scheme.{u}} {𝓤 𝓥 𝓦 : X.OpenCover}
    (f : 𝓤 ⟶ 𝓥) (g : 𝓥 ⟶ 𝓦) (j : 𝓤.J) :
    (f ≫ g).app j = f.app j ≫ g.app _ 
Arguments: {X : AlgebraicGeometry.Scheme} {𝓤 𝓥 𝓦 : X.OpenCover} (f : 𝓤 ⟶ 𝓥) (g : 𝓥 ⟶ 𝓦) (j : 𝓤.J)
Goal: (f ≫ g).app j = f.app j ≫ g.app (f.idx j)
-- AlgebraicGeometry.Scheme.OpenCover.ext_elem
lemma OpenCover.ext_elem {X : Scheme.{u}} {U : X.Opens} (f g : Γ(X, U)) (𝒰 : X.OpenCover)
    (h : ∀ i : 𝒰.J, (𝒰.map i).app U f = (𝒰.map i).app U g) : f = g 
Arguments: {X : AlgebraicGeometry.Scheme} {U : X.Opens} (f g : ↑(X.presheaf.obj (Opposite.op U))) (𝒰 : X.OpenCover) (h : ∀ (i : 𝒰.J), (AlgebraicGeometry.Scheme.Hom.app (𝒰.map i) U) f = (AlgebraicGeometry.Scheme.Hom.app (𝒰.map i) U) g)
Goal: f = g
-- AlgebraicGeometry.Scheme.zero_of_zero_cover
lemma zero_of_zero_cover {X : Scheme.{u}} {U : X.Opens} (s : Γ(X, U)) (𝒰 : X.OpenCover)
    (h : ∀ i : 𝒰.J, (𝒰.map i).app U s = 0) : s = 0 
Arguments: {X : AlgebraicGeometry.Scheme} {U : X.Opens} (s : ↑(X.presheaf.obj (Opposite.op U))) (𝒰 : X.OpenCover) (h : ∀ (i : 𝒰.J), (AlgebraicGeometry.Scheme.Hom.app (𝒰.map i) U) s = 0)
Goal: s = 0
-- AlgebraicGeometry.Scheme.isNilpotent_of_isNilpotent_cover
lemma isNilpotent_of_isNilpotent_cover {X : Scheme.{u}} {U : X.Opens} (s : Γ(X, U))
    (𝒰 : X.OpenCover) [Finite 𝒰.J] (h : ∀ i : 𝒰.J, IsNilpotent ((𝒰.map i).app U s)) :
    IsNilpotent s 
Arguments: {X : AlgebraicGeometry.Scheme} {U : X.Opens} (s : ↑(X.presheaf.obj (Opposite.op U))) (𝒰 : X.OpenCover) [Finite 𝒰.J] (h : ∀ (i : 𝒰.J), IsNilpotent ((AlgebraicGeometry.Scheme.Hom.app (𝒰.map i) U) s))
Goal: IsNilpotent s
-- AlgebraicGeometry.Scheme.affineBasisCover_obj
theorem affineBasisCover_obj (X : Scheme.{u}) (i : X.affineBasisCover.J) :
    X.affineBasisCover.obj i = Spec (X.affineBasisCoverRing i) 
Arguments: (X : AlgebraicGeometry.Scheme) (i : X.affineBasisCover.J)
Goal: X.affineBasisCover.obj i = AlgebraicGeometry.Spec (X.affineBasisCoverRing i)
-- AlgebraicGeometry.Scheme.affineBasisCover_map_range
theorem affineBasisCover_map_range (X : Scheme.{u}) (x : X)
    (r : (X.local_affine x).choose_spec.choose) :
    Set.range (X.affineBasisCover.map ⟨x, r⟩).1.base =
      (X.affineCover.map x).1.base '' (PrimeSpectrum.basicOpen r).1 
Arguments: (X : AlgebraicGeometry.Scheme) (x : ↑↑X.toPresheafedSpace) (r : ↑⋯.choose)
Goal: Set.range ⇑(X.affineBasisCover.map ⟨x, r⟩).val.base =
  ⇑(X.affineCover.map x).val.base '' (PrimeSpectrum.basicOpen r).carrier
-- AlgebraicGeometry.Scheme.affineBasisCover_is_basis
theorem affineBasisCover_is_basis (X : Scheme.{u}) :
    TopologicalSpace.IsTopologicalBasis
      {x : Set X |
        ∃ a : X.affineBasisCover.J, x = Set.range (X.affineBasisCover.map a).1.base} 
Arguments: (X : AlgebraicGeometry.Scheme)
Goal: TopologicalSpace.IsTopologicalBasis {x | ∃ a, x = Set.range ⇑(X.affineBasisCover.map a).val.base}
-- PFun.mem_dom
@[simp]
theorem mem_dom (f : α →. β) (x : α) : x ∈ Dom f ↔ ∃ y, y ∈ f x 
Arguments: {α : Type u_1} {β : Type u_2} (f : α →. β) (x : α)
Goal: x ∈ f.Dom ↔ ∃ y, y ∈ f x
-- PFun.dom_mk
@[simp]
theorem dom_mk (p : α → Prop) (f : ∀ a, p a → β) : (PFun.Dom fun x => ⟨p x, f x⟩) = { x | p x } 
Arguments: {α : Type u_1} {β : Type u_2} (p : α → Prop) (f : (a : α) → p a → β)
Goal: (PFun.Dom fun x => { Dom := p x, get := f x }) = {x | p x}
-- PFun.dom_eq
theorem dom_eq (f : α →. β) : Dom f = { x | ∃ y, y ∈ f x } 
Arguments: {α : Type u_1} {β : Type u_2} (f : α →. β)
Goal: f.Dom = {x | ∃ y, y ∈ f x}
-- PFun.fn_apply
@[simp]
theorem fn_apply (f : α →. β) (a : α) : f.fn a = (f a).get 
Arguments: {α : Type u_1} {β : Type u_2} (f : α →. β) (a : α)
Goal: f.fn a = (f a).get
-- PFun.ext'
theorem ext' {f g : α →. β} (H1 : ∀ a, a ∈ Dom f ↔ a ∈ Dom g) (H2 : ∀ a p q, f.fn a p = g.fn a q) :
    f = g 
Arguments: {α : Type u_1} {β : Type u_2} {f g : α →. β} (H1 : ∀ (a : α), a ∈ f.Dom ↔ a ∈ g.Dom) (H2 : ∀ (a : α) (p : f.Dom a) (q : g.Dom a), f.fn a p = g.fn a q)
Goal: f = g
-- PFun.ext
theorem ext {f g : α →. β} (H : ∀ a b, b ∈ f a ↔ b ∈ g a) : f = g 
Arguments: {α : Type u_1} {β : Type u_2} {f g : α →. β} (H : ∀ (a : α) (b : β), b ∈ f a ↔ b ∈ g a)
Goal: f = g
-- PFun.asSubtype_eq_of_mem
theorem asSubtype_eq_of_mem {f : α →. β} {x : α} {y : β} (fxy : y ∈ f x) (domx : x ∈ f.Dom) :
    f.asSubtype ⟨x, domx⟩ = y 
Arguments: {α : Type u_1} {β : Type u_2} {f : α →. β} {x : α} {y : β} (fxy : y ∈ f x) (domx : x ∈ f.Dom)
Goal: f.asSubtype ⟨x, domx⟩ = y
-- PFun.coe_val
@[simp]
theorem coe_val (f : α → β) (a : α) : (f : α →. β) a = Part.some (f a) 
Arguments: {α : Type u_1} {β : Type u_2} (f : α → β) (a : α)
Goal: ↑f a = Part.some (f a)
-- PFun.dom_coe
@[simp]
theorem dom_coe (f : α → β) : (f : α →. β).Dom = Set.univ 
Arguments: {α : Type u_1} {β : Type u_2} (f : α → β)
Goal: (↑f).Dom = Set.univ
-- PFun.lift_injective
theorem lift_injective : Injective (PFun.lift : (α → β) → α →. β) 
Arguments: {α : Type u_1} {β : Type u_2}
Goal: Function.Injective PFun.lift
-- PFun.mem_restrict
@[simp]
theorem mem_restrict {f : α →. β} {s : Set α} (h : s ⊆ f.Dom) (a : α) (b : β) :
    b ∈ f.restrict h a ↔ a ∈ s ∧ b ∈ f a 
Arguments: {α : Type u_1} {β : Type u_2} {f : α →. β} {s : Set α} (h : s ⊆ f.Dom) (a : α) (b : β)
Goal: b ∈ f.restrict h a ↔ a ∈ s ∧ b ∈ f a
-- PFun.mem_res
theorem mem_res (f : α → β) (s : Set α) (a : α) (b : β) : b ∈ res f s a ↔ a ∈ s ∧ f a = b 
Arguments: {α : Type u_1} {β : Type u_2} (f : α → β) (s : Set α) (a : α) (b : β)
Goal: b ∈ PFun.res f s a ↔ a ∈ s ∧ f a = b
-- PFun.res_univ
theorem res_univ (f : α → β) : PFun.res f Set.univ = f 
Arguments: {α : Type u_1} {β : Type u_2} (f : α → β)
Goal: PFun.res f Set.univ = ↑f
-- PFun.dom_iff_graph
theorem dom_iff_graph (f : α →. β) (x : α) : x ∈ f.Dom ↔ ∃ y, (x, y) ∈ f.graph 
Arguments: {α : Type u_1} {β : Type u_2} (f : α →. β) (x : α)
Goal: x ∈ f.Dom ↔ ∃ y, (x, y) ∈ f.graph
-- PFun.lift_graph
theorem lift_graph {f : α → β} {a b} : (a, b) ∈ (f : α →. β).graph ↔ f a = b 
Arguments: {α : Type u_1} {β : Type u_2} {f : α → β} {a : α} {b : β}
Goal: (a, b) ∈ (↑f).graph ↔ f a = b
-- PFun.bind_apply
@[simp]
theorem bind_apply (f : α →. β) (g : β → α →. γ) (a : α) : f.bind g a = (f a).bind fun b => g b a 
Arguments: {α : Type u_1} {β : Type u_2} {γ : Type u_3} (f : α →. β) (g : β → α →. γ) (a : α)
Goal: f.bind g a = (f a).bind fun b => g b a
-- PFun.pure_defined
theorem pure_defined (p : Set α) (x : β) : p ⊆ (@PFun.pure α _ x).Dom 
Arguments: {α : Type u_1} {β : Type u_2} (p : Set α) (x : β)
Goal: p ⊆ (PFun.pure x).Dom
-- PFun.bind_defined
theorem bind_defined {α β γ} (p : Set α) {f : α →. β} {g : β → α →. γ} (H1 : p ⊆ f.Dom)
    (H2 : ∀ x, p ⊆ (g x).Dom) : p ⊆ (f >>= g).Dom 
Arguments: {α : Type u_7} {β γ : Type u_8} (p : Set α) {f : α →. β} {g : β → α →. γ} (H1 : p ⊆ f.Dom) (H2 : ∀ (x : β), p ⊆ (g x).Dom)
Goal: p ⊆ (f >>= g).Dom
-- PFun.dom_of_mem_fix
theorem dom_of_mem_fix {f : α →. β ⊕ α} {a : α} {b : β} (h : b ∈ f.fix a) : (f a).Dom 
Arguments: {α : Type u_1} {β : Type u_2} {f : α →. β ⊕ α} {a : α} {b : β} (h : b ∈ f.fix a)
Goal: (f a).Dom
-- PFun.mem_fix_iff
theorem mem_fix_iff {f : α →. β ⊕ α} {a : α} {b : β} :
    b ∈ f.fix a ↔ Sum.inl b ∈ f a ∨ ∃ a', Sum.inr a' ∈ f a ∧ b ∈ f.fix a' 
Arguments: {α : Type u_1} {β : Type u_2} {f : α →. β ⊕ α} {a : α} {b : β}
Goal: b ∈ f.fix a ↔ Sum.inl b ∈ f a ∨ ∃ a', Sum.inr a' ∈ f a ∧ b ∈ f.fix a'
-- PFun.fix_stop
theorem fix_stop {f : α →. β ⊕ α} {b : β} {a : α} (hb : Sum.inl b ∈ f a) : b ∈ f.fix a 
Arguments: {α : Type u_1} {β : Type u_2} {f : α →. β ⊕ α} {b : β} {a : α} (hb : Sum.inl b ∈ f a)
Goal: b ∈ f.fix a
-- PFun.fix_fwd_eq
theorem fix_fwd_eq {f : α →. β ⊕ α} {a a' : α} (ha' : Sum.inr a' ∈ f a) : f.fix a = f.fix a' 
Arguments: {α : Type u_1} {β : Type u_2} {f : α →. β ⊕ α} {a a' : α} (ha' : Sum.inr a' ∈ f a)
Goal: f.fix a = f.fix a'
-- PFun.fix_fwd
theorem fix_fwd {f : α →. β ⊕ α} {b : β} {a a' : α} (hb : b ∈ f.fix a) (ha' : Sum.inr a' ∈ f a) :
    b ∈ f.fix a' 
Arguments: {α : Type u_1} {β : Type u_2} {f : α →. β ⊕ α} {b : β} {a a' : α} (hb : b ∈ f.fix a) (ha' : Sum.inr a' ∈ f a)
Goal: b ∈ f.fix a'
-- PFun.fixInduction_spec
theorem fixInduction_spec {C : α → Sort*} {f : α →. β ⊕ α} {b : β} {a : α} (h : b ∈ f.fix a)
    (H : ∀ a', b ∈ f.fix a' → (∀ a'', Sum.inr a'' ∈ f a' → C a'') → C a') :
    @fixInduction _ _ C _ _ _ h H = H a h fun a' h' => fixInduction (fix_fwd h h') H 
Arguments: {α : Type u_1} {β : Type u_2} {C : α → Sort u_7} {f : α →. β ⊕ α} {b : β} {a : α} (h : b ∈ f.fix a) (H : (a' : α) → b ∈ f.fix a' → ((a'' : α) → Sum.inr a'' ∈ f a' → C a'') → C a')
Goal: PFun.fixInduction h H = H a h fun a' h' => PFun.fixInduction ⋯ H
-- PFun.fixInduction'_stop
theorem fixInduction'_stop {C : α → Sort*} {f : α →. β ⊕ α} {b : β} {a : α} (h : b ∈ f.fix a)
    (fa : Sum.inl b ∈ f a) (hbase : ∀ a_final : α, Sum.inl b ∈ f a_final → C a_final)
    (hind : ∀ a₀ a₁ : α, b ∈ f.fix a₁ → Sum.inr a₁ ∈ f a₀ → C a₁ → C a₀) :
    @fixInduction' _ _ C _ _ _ h hbase hind = hbase a fa 
Arguments: {α : Type u_1} {β : Type u_2} {C : α → Sort u_7} {f : α →. β ⊕ α} {b : β} {a : α} (h : b ∈ f.fix a) (fa : Sum.inl b ∈ f a) (hbase : (a_final : α) → Sum.inl b ∈ f a_final → C a_final) (hind : (a₀ a₁ : α) → b ∈ f.fix a₁ → Sum.inr a₁ ∈ f a₀ → C a₁ → C a₀)
Goal: PFun.fixInduction' h hbase hind = hbase a fa
-- PFun.fixInduction'_fwd
theorem fixInduction'_fwd {C : α → Sort*} {f : α →. β ⊕ α} {b : β} {a a' : α} (h : b ∈ f.fix a)
    (h' : b ∈ f.fix a') (fa : Sum.inr a' ∈ f a)
    (hbase : ∀ a_final : α, Sum.inl b ∈ f a_final → C a_final)
    (hind : ∀ a₀ a₁ : α, b ∈ f.fix a₁ → Sum.inr a₁ ∈ f a₀ → C a₁ → C a₀) :
    @fixInduction' _ _ C _ _ _ h hbase hind = hind a a' h' fa (fixInduction' h' hbase hind) 
Arguments: {α : Type u_1} {β : Type u_2} {C : α → Sort u_7} {f : α →. β ⊕ α} {b : β} {a a' : α} (h : b ∈ f.fix a) (h' : b ∈ f.fix a') (fa : Sum.inr a' ∈ f a) (hbase : (a_final : α) → Sum.inl b ∈ f a_final → C a_final) (hind : (a₀ a₁ : α) → b ∈ f.fix a₁ → Sum.inr a₁ ∈ f a₀ → C a₁ → C a₀)
Goal: PFun.fixInduction' h hbase hind = hind a a' h' fa (PFun.fixInduction' h' hbase hind)
-- PFun.image_def
theorem image_def (s : Set α) : f.image s = { y | ∃ x ∈ s, y ∈ f x } 
Arguments: {α : Type u_1} {β : Type u_2} (f : α →. β) (s : Set α)
Goal: f.image s = {y | ∃ x ∈ s, y ∈ f x}
-- PFun.mem_image
theorem mem_image (y : β) (s : Set α) : y ∈ f.image s ↔ ∃ x ∈ s, y ∈ f x 
Arguments: {α : Type u_1} {β : Type u_2} (f : α →. β) (y : β) (s : Set α)
Goal: y ∈ f.image s ↔ ∃ x ∈ s, y ∈ f x
-- PFun.image_mono
theorem image_mono {s t : Set α} (h : s ⊆ t) : f.image s ⊆ f.image t 
Arguments: {α : Type u_1} {β : Type u_2} (f : α →. β) {s t : Set α} (h : s ⊆ t)
Goal: f.image s ⊆ f.image t
-- PFun.image_inter
theorem image_inter (s t : Set α) : f.image (s ∩ t) ⊆ f.image s ∩ f.image t 
Arguments: {α : Type u_1} {β : Type u_2} (f : α →. β) (s t : Set α)
Goal: f.image (s ∩ t) ⊆ f.image s ∩ f.image t
-- PFun.image_union
theorem image_union (s t : Set α) : f.image (s ∪ t) = f.image s ∪ f.image t 
Arguments: {α : Type u_1} {β : Type u_2} (f : α →. β) (s t : Set α)
Goal: f.image (s ∪ t) = f.image s ∪ f.image t
-- PFun.Preimage_def
theorem Preimage_def (s : Set β) : f.preimage s = { x | ∃ y ∈ s, y ∈ f x } 
Arguments: {α : Type u_1} {β : Type u_2} (f : α →. β) (s : Set β)
Goal: f.preimage s = {x | ∃ y ∈ s, y ∈ f x}
-- PFun.mem_preimage
@[simp]
theorem mem_preimage (s : Set β) (x : α) : x ∈ f.preimage s ↔ ∃ y ∈ s, y ∈ f x 
Arguments: {α : Type u_1} {β : Type u_2} (f : α →. β) (s : Set β) (x : α)
Goal: x ∈ f.preimage s ↔ ∃ y ∈ s, y ∈ f x
-- PFun.preimage_subset_dom
theorem preimage_subset_dom (s : Set β) : f.preimage s ⊆ f.Dom 
Arguments: {α : Type u_1} {β : Type u_2} (f : α →. β) (s : Set β)
Goal: f.preimage s ⊆ f.Dom
-- PFun.preimage_mono
theorem preimage_mono {s t : Set β} (h : s ⊆ t) : f.preimage s ⊆ f.preimage t 
Arguments: {α : Type u_1} {β : Type u_2} (f : α →. β) {s t : Set β} (h : s ⊆ t)
Goal: f.preimage s ⊆ f.preimage t
-- PFun.preimage_inter
theorem preimage_inter (s t : Set β) : f.preimage (s ∩ t) ⊆ f.preimage s ∩ f.preimage t 
Arguments: {α : Type u_1} {β : Type u_2} (f : α →. β) (s t : Set β)
Goal: f.preimage (s ∩ t) ⊆ f.preimage s ∩ f.preimage t
-- PFun.preimage_union
theorem preimage_union (s t : Set β) : f.preimage (s ∪ t) = f.preimage s ∪ f.preimage t 
Arguments: {α : Type u_1} {β : Type u_2} (f : α →. β) (s t : Set β)
Goal: f.preimage (s ∪ t) = f.preimage s ∪ f.preimage t
-- PFun.preimage_univ
theorem preimage_univ : f.preimage Set.univ = f.Dom 
Arguments: {α : Type u_1} {β : Type u_2} (f : α →. β)
Goal: f.preimage Set.univ = f.Dom
-- PFun.coe_preimage
theorem coe_preimage (f : α → β) (s : Set β) : (f : α →. β).preimage s = f ⁻¹' s 
Arguments: {α : Type u_1} {β : Type u_2} (f : α → β) (s : Set β)
Goal: (↑f).preimage s = f ⁻¹' s
-- PFun.core_def
theorem core_def (s : Set β) : f.core s = { x | ∀ y, y ∈ f x → y ∈ s } 
Arguments: {α : Type u_1} {β : Type u_2} (f : α →. β) (s : Set β)
Goal: f.core s = {x | ∀ y ∈ f x, y ∈ s}
-- PFun.mem_core
@[simp]
theorem mem_core (x : α) (s : Set β) : x ∈ f.core s ↔ ∀ y, y ∈ f x → y ∈ s 
Arguments: {α : Type u_1} {β : Type u_2} (f : α →. β) (x : α) (s : Set β)
Goal: x ∈ f.core s ↔ ∀ y ∈ f x, y ∈ s
-- PFun.compl_dom_subset_core
theorem compl_dom_subset_core (s : Set β) : f.Domᶜ ⊆ f.core s 
Arguments: {α : Type u_1} {β : Type u_2} (f : α →. β) (s : Set β)
Goal: f.Domᶜ ⊆ f.core s
-- PFun.core_mono
theorem core_mono {s t : Set β} (h : s ⊆ t) : f.core s ⊆ f.core t 
Arguments: {α : Type u_1} {β : Type u_2} (f : α →. β) {s t : Set β} (h : s ⊆ t)
Goal: f.core s ⊆ f.core t
-- PFun.core_inter
theorem core_inter (s t : Set β) : f.core (s ∩ t) = f.core s ∩ f.core t 
Arguments: {α : Type u_1} {β : Type u_2} (f : α →. β) (s t : Set β)
Goal: f.core (s ∩ t) = f.core s ∩ f.core t
-- PFun.mem_core_res
theorem mem_core_res (f : α → β) (s : Set α) (t : Set β) (x : α) :
    x ∈ (res f s).core t ↔ x ∈ s → f x ∈ t 
Arguments: {α : Type u_1} {β : Type u_2} (f : α → β) (s : Set α) (t : Set β) (x : α)
Goal: x ∈ (PFun.res f s).core t ↔ x ∈ s → f x ∈ t
-- PFun.core_res
theorem core_res (f : α → β) (s : Set α) (t : Set β) : (res f s).core t = sᶜ ∪ f ⁻¹' t 
Arguments: {α : Type u_1} {β : Type u_2} (f : α → β) (s : Set α) (t : Set β)
Goal: (PFun.res f s).core t = sᶜ ∪ f ⁻¹' t
-- PFun.core_restrict
theorem core_restrict (f : α → β) (s : Set β) : (f : α →. β).core s = s.preimage f 
Arguments: {α : Type u_1} {β : Type u_2} (f : α → β) (s : Set β)
Goal: (↑f).core s = f ⁻¹' s
-- PFun.preimage_subset_core
theorem preimage_subset_core (f : α →. β) (s : Set β) : f.preimage s ⊆ f.core s 
Arguments: {α : Type u_1} {β : Type u_2} (f : α →. β) (s : Set β)
Goal: f.preimage s ⊆ f.core s
-- PFun.preimage_eq
theorem preimage_eq (f : α →. β) (s : Set β) : f.preimage s = f.core s ∩ f.Dom 
Arguments: {α : Type u_1} {β : Type u_2} (f : α →. β) (s : Set β)
Goal: f.preimage s = f.core s ∩ f.Dom
-- PFun.core_eq
theorem core_eq (f : α →. β) (s : Set β) : f.core s = f.preimage s ∪ f.Domᶜ 
Arguments: {α : Type u_1} {β : Type u_2} (f : α →. β) (s : Set β)
Goal: f.core s = f.preimage s ∪ f.Domᶜ
-- PFun.preimage_asSubtype
theorem preimage_asSubtype (f : α →. β) (s : Set β) :
    f.asSubtype ⁻¹' s = Subtype.val ⁻¹' f.preimage s 
Arguments: {α : Type u_1} {β : Type u_2} (f : α →. β) (s : Set β)
Goal: f.asSubtype ⁻¹' s = Subtype.val ⁻¹' f.preimage s