ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- AddCommMonCat.forget_map
@[to_additive (attr := simp)]
lemma forget_map {X Y : CommMonCat} (f : X ⟶ Y) :
    (forget CommMonCat).map f = (f : X → Y) 
Arguments: {X Y : AddCommMonCat} (f : X ⟶ Y)
Goal: (CategoryTheory.forget AddCommMonCat).map f = ⇑f
-- AddCommMonCat.ext
@[to_additive (attr := ext)]
lemma ext {X Y : CommMonCat} {f g : X ⟶ Y} (w : ∀ x : X, f x = g x) : f = g 
Arguments: {X Y : AddCommMonCat} {f g : X ⟶ Y} (w : ∀ (x : ↑X), f x = g x)
Goal: f = g
-- CommMonCat.ext
@[to_additive (attr := ext)]
lemma ext {X Y : CommMonCat} {f g : X ⟶ Y} (w : ∀ x : X, f x = g x) : f = g 
Arguments: {X Y : CommMonCat} {f g : X ⟶ Y} (w : ∀ (x : ↑X), f x = g x)
Goal: f = g
-- CommMonCat.coe_of
@[to_additive]
theorem coe_of (R : Type u) [CommMonoid R] : (CommMonCat.of R : Type u) = R 
Arguments: (R : Type u) [CommMonoid R]
Goal: ↑(CommMonCat.of R) = R
-- AddCommMonCat.coe_of
@[to_additive]
theorem coe_of (R : Type u) [CommMonoid R] : (CommMonCat.of R : Type u) = R 
Arguments: (R : Type u) [AddCommMonoid R]
Goal: ↑(AddCommMonCat.of R) = R
-- AddCommMonCat.ofHom_apply
@[to_additive (attr := simp)]
lemma ofHom_apply {X Y : Type u} [CommMonoid X] [CommMonoid Y] (f : X →* Y) (x : X) :
    (ofHom f) x = f x 
Arguments: {X Y : Type u} [AddCommMonoid X] [AddCommMonoid Y] (f : X →+ Y) (x : X)
Goal: (AddCommMonCat.ofHom f) x = f x
-- CommMonCat.ofHom_apply
@[to_additive (attr := simp)]
lemma ofHom_apply {X Y : Type u} [CommMonoid X] [CommMonoid Y] (f : X →* Y) (x : X) :
    (ofHom f) x = f x 
Arguments: {X Y : Type u} [CommMonoid X] [CommMonoid Y] (f : X →* Y) (x : X)
Goal: (CommMonCat.ofHom f) x = f x
-- CommMonCat.uliftFunctor_obj
@[to_additive (attr := simps)
  "Universe lift functor for additive commutative monoids."]
def uliftFunctor : CommMonCat.{u} ⥤ CommMonCat.{max u v} 
Arguments: (X : CommMonCat)
Goal: CommMonCat.uliftFunctor.obj X = CommMonCat.of (ULift.{v, u} ↑X)
-- CommMonCat.uliftFunctor_map
@[to_additive (attr := simps)
  "Universe lift functor for additive commutative monoids."]
def uliftFunctor : CommMonCat.{u} ⥤ CommMonCat.{max u v} 
Arguments: {X Y : CommMonCat} (f : X ⟶ Y)
Goal: CommMonCat.uliftFunctor.map f =
  CommMonCat.ofHom (MulEquiv.ulift.symm.toMonoidHom.comp (MonoidHom.comp f MulEquiv.ulift.toMonoidHom))
-- AddCommMonCat.uliftFunctor_map
@[to_additive (attr := simps)
  "Universe lift functor for additive commutative monoids."]
def uliftFunctor : CommMonCat.{u} ⥤ CommMonCat.{max u v} 
Arguments: {X Y : AddCommMonCat} (f : X ⟶ Y)
Goal: AddCommMonCat.uliftFunctor.map f =
  AddCommMonCat.ofHom (AddEquiv.ulift.symm.toAddMonoidHom.comp (AddMonoidHom.comp f AddEquiv.ulift.toAddMonoidHom))
-- AddCommMonCat.uliftFunctor_obj
@[to_additive (attr := simps)
  "Universe lift functor for additive commutative monoids."]
def uliftFunctor : CommMonCat.{u} ⥤ CommMonCat.{max u v} 
Arguments: (X : AddCommMonCat)
Goal: AddCommMonCat.uliftFunctor.obj X = AddCommMonCat.of (ULift.{v, u} ↑X)
-- AddEquiv.toAddMonCatIso_hom
@[to_additive (attr := simps) AddEquiv.toAddMonCatIso
      "Build an isomorphism in the category `AddMonCat` from\nan `AddEquiv` between `AddMonoid`s."]
def MulEquiv.toMonCatIso (e : X ≃* Y) : MonCat.of X ≅ MonCat.of Y 
Arguments: {X Y : Type u} [AddMonoid X] [AddMonoid Y] (e : X ≃+ Y)
Goal: e.toAddMonCatIso.hom = AddMonCat.ofHom e.toAddMonoidHom
-- MulEquiv.toMonCatIso_inv
@[to_additive (attr := simps) AddEquiv.toAddMonCatIso
      "Build an isomorphism in the category `AddMonCat` from\nan `AddEquiv` between `AddMonoid`s."]
def MulEquiv.toMonCatIso (e : X ≃* Y) : MonCat.of X ≅ MonCat.of Y 
Arguments: {X Y : Type u} [Monoid X] [Monoid Y] (e : X ≃* Y)
Goal: e.toMonCatIso.inv = MonCat.ofHom e.symm.toMonoidHom
-- AddEquiv.toAddMonCatIso_inv
@[to_additive (attr := simps) AddEquiv.toAddMonCatIso
      "Build an isomorphism in the category `AddMonCat` from\nan `AddEquiv` between `AddMonoid`s."]
def MulEquiv.toMonCatIso (e : X ≃* Y) : MonCat.of X ≅ MonCat.of Y 
Arguments: {X Y : Type u} [AddMonoid X] [AddMonoid Y] (e : X ≃+ Y)
Goal: e.toAddMonCatIso.inv = AddMonCat.ofHom e.symm.toAddMonoidHom
-- MulEquiv.toMonCatIso_hom
@[to_additive (attr := simps) AddEquiv.toAddMonCatIso
      "Build an isomorphism in the category `AddMonCat` from\nan `AddEquiv` between `AddMonoid`s."]
def MulEquiv.toMonCatIso (e : X ≃* Y) : MonCat.of X ≅ MonCat.of Y 
Arguments: {X Y : Type u} [Monoid X] [Monoid Y] (e : X ≃* Y)
Goal: e.toMonCatIso.hom = MonCat.ofHom e.toMonoidHom
-- MulEquiv.toCommMonCatIso_inv
@[to_additive (attr := simps) AddEquiv.toAddCommMonCatIso]
def MulEquiv.toCommMonCatIso (e : X ≃* Y) : CommMonCat.of X ≅ CommMonCat.of Y 
Arguments: {X Y : Type u} [CommMonoid X] [CommMonoid Y] (e : X ≃* Y)
Goal: e.toCommMonCatIso.inv = CommMonCat.ofHom e.symm.toMonoidHom
-- AddEquiv.toAddCommMonCatIso_hom
@[to_additive (attr := simps) AddEquiv.toAddCommMonCatIso]
def MulEquiv.toCommMonCatIso (e : X ≃* Y) : CommMonCat.of X ≅ CommMonCat.of Y 
Arguments: {X Y : Type u} [AddCommMonoid X] [AddCommMonoid Y] (e : X ≃+ Y)
Goal: e.toAddCommMonCatIso.hom = AddCommMonCat.ofHom e.toAddMonoidHom
-- AddEquiv.toAddCommMonCatIso_inv
@[to_additive (attr := simps) AddEquiv.toAddCommMonCatIso]
def MulEquiv.toCommMonCatIso (e : X ≃* Y) : CommMonCat.of X ≅ CommMonCat.of Y 
Arguments: {X Y : Type u} [AddCommMonoid X] [AddCommMonoid Y] (e : X ≃+ Y)
Goal: e.toAddCommMonCatIso.inv = AddCommMonCat.ofHom e.symm.toAddMonoidHom
-- MulEquiv.toCommMonCatIso_hom
@[to_additive (attr := simps) AddEquiv.toAddCommMonCatIso]
def MulEquiv.toCommMonCatIso (e : X ≃* Y) : CommMonCat.of X ≅ CommMonCat.of Y 
Arguments: {X Y : Type u} [CommMonoid X] [CommMonoid Y] (e : X ≃* Y)
Goal: e.toCommMonCatIso.hom = CommMonCat.ofHom e.toMonoidHom
-- MonoidHom.comp_id_monCat
@[to_additive (attr := simp)] theorem MonoidHom.comp_id_monCat
    {G : MonCat.{u}} {H : Type u} [Monoid H] (f : G →* H) : f.comp (𝟙 G) = f 
Arguments: {G : MonCat} {H : Type u} [Monoid H] (f : ↑G →* H)
Goal: f.comp (𝟙 G) = f
-- AddMonoidHom.comp_id_monCat
@[to_additive (attr := simp)] theorem MonoidHom.comp_id_monCat
    {G : MonCat.{u}} {H : Type u} [Monoid H] (f : G →* H) : f.comp (𝟙 G) = f 
Arguments: {G : AddMonCat} {H : Type u} [AddMonoid H] (f : ↑G →+ H)
Goal: f.comp (𝟙 G) = f
-- MonoidHom.id_monCat_comp
@[to_additive (attr := simp)] theorem MonoidHom.id_monCat_comp
    {G : Type u} [Monoid G] {H : MonCat.{u}} (f : G →* H) : MonoidHom.comp (𝟙 H) f = f 
Arguments: {G : Type u} [Monoid G] {H : MonCat} (f : G →* ↑H)
Goal: MonoidHom.comp (𝟙 H) f = f
-- AddMonoidHom.id_monCat_comp
@[to_additive (attr := simp)] theorem MonoidHom.id_monCat_comp
    {G : Type u} [Monoid G] {H : MonCat.{u}} (f : G →* H) : MonoidHom.comp (𝟙 H) f = f 
Arguments: {G : Type u} [AddMonoid G] {H : AddMonCat} (f : G →+ ↑H)
Goal: AddMonoidHom.comp (𝟙 H) f = f
-- AddMonoidHom.comp_id_commMonCat
@[to_additive (attr := simp)] theorem MonoidHom.comp_id_commMonCat
    {G : CommMonCat.{u}} {H : Type u} [CommMonoid H] (f : G →* H) : f.comp (𝟙 G) = f 
Arguments: {G : AddCommMonCat} {H : Type u} [AddCommMonoid H] (f : ↑G →+ H)
Goal: f.comp (𝟙 G) = f
-- MonoidHom.comp_id_commMonCat
@[to_additive (attr := simp)] theorem MonoidHom.comp_id_commMonCat
    {G : CommMonCat.{u}} {H : Type u} [CommMonoid H] (f : G →* H) : f.comp (𝟙 G) = f 
Arguments: {G : CommMonCat} {H : Type u} [CommMonoid H] (f : ↑G →* H)
Goal: f.comp (𝟙 G) = f
-- AddMonoidHom.id_commMonCat_comp
@[to_additive (attr := simp)] theorem MonoidHom.id_commMonCat_comp
    {G : Type u} [CommMonoid G] {H : CommMonCat.{u}} (f : G →* H) : MonoidHom.comp (𝟙 H) f = f 
Arguments: {G : Type u} [AddCommMonoid G] {H : AddCommMonCat} (f : G →+ ↑H)
Goal: AddMonoidHom.comp (𝟙 H) f = f
-- MonoidHom.id_commMonCat_comp
@[to_additive (attr := simp)] theorem MonoidHom.id_commMonCat_comp
    {G : Type u} [CommMonoid G] {H : CommMonCat.{u}} (f : G →* H) : MonoidHom.comp (𝟙 H) f = f 
Arguments: {G : Type u} [CommMonoid G] {H : CommMonCat} (f : G →* ↑H)
Goal: MonoidHom.comp (𝟙 H) f = f
-- DirectedSystem.map_self'
class DirectedSystem (f : ∀ i j, i ≤ j → G i → G j) : Prop where
  map_self' : ∀ i x h, f i i h x = x
  map_map' : ∀ {i j k} (hij hjk x), f j k hjk (f i j hij x) = f i k (le_trans hij hjk) x
Arguments: {ι : Type v} [Preorder ι] {G : ι → Type w} {f : (i j : ι) → i ≤ j → G i → G j} [self : DirectedSystem G f] (i : ι) (x : G i) (h : i ≤ i)
Goal: f i i h x = x
-- DirectedSystem.map_map'
class DirectedSystem (f : ∀ i j, i ≤ j → G i → G j) : Prop where
  map_self' : ∀ i x h, f i i h x = x
  map_map' : ∀ {i j k} (hij hjk x), f j k hjk (f i j hij x) = f i k (le_trans hij hjk) x
Arguments: {ι : Type v} [Preorder ι] {G : ι → Type w} {f : (i j : ι) → i ≤ j → G i → G j} [self : DirectedSystem G f] {i j k : ι} (hij : i ≤ j) (hjk : j ≤ k) (x : G i)
Goal: f j k hjk (f i j hij x) = f i k ⋯ x
-- DirectedSystem.map_self
theorem DirectedSystem.map_self i x h : f i i h x = x 
Arguments: {ι : Type v} [Preorder ι] {G : ι → Type w} (f : (i j : ι) → i ≤ j → G i → G j) [DirectedSystem G fun i j h => f i j h] (i : ι) (x : G i) (h : i ≤ i)
Goal: f i i h x = x
-- DirectedSystem.map_map
theorem DirectedSystem.map_map {i j k} (hij hjk x) :
    f j k hjk (f i j hij x) = f i k (le_trans hij hjk) x 
Arguments: {ι : Type v} [Preorder ι] {G : ι → Type w} (f : (i j : ι) → i ≤ j → G i → G j) [DirectedSystem G fun i j h => f i j h] {i j k : ι} (hij : i ≤ j) (hjk : j ≤ k) (x : G i)
Goal: f j k hjk (f i j hij x) = f i k ⋯ x
-- Module.DirectedSystem.map_self
nonrec theorem DirectedSystem.map_self [DirectedSystem G fun i j h => f i j h] (i x h) :
    f i i h x = x 
Arguments: {R : Type u} [Ring R] {ι : Type v} [Preorder ι] {G : ι → Type w} [(i : ι) → AddCommGroup (G i)] [(i : ι) → Module R (G i)] (f : (i j : ι) → i ≤ j → G i →ₗ[R] G j) [DirectedSystem G fun i j h => ⇑(f i j h)] (i : ι) (x : G i) (h : i ≤ i)
Goal: (f i i h) x = x
-- Module.DirectedSystem.map_map
nonrec theorem DirectedSystem.map_map [DirectedSystem G fun i j h => f i j h] {i j k} (hij hjk x) :
    f j k hjk (f i j hij x) = f i k (le_trans hij hjk) x 
Arguments: {R : Type u} [Ring R] {ι : Type v} [Preorder ι] {G : ι → Type w} [(i : ι) → AddCommGroup (G i)] [(i : ι) → Module R (G i)] (f : (i j : ι) → i ≤ j → G i →ₗ[R] G j) [DirectedSystem G fun i j h => ⇑(f i j h)] {i j k : ι} (hij : i ≤ j) (hjk : j ≤ k) (x : G i)
Goal: (f j k hjk) ((f i j hij) x) = (f i k ⋯) x
-- Module.DirectLimit.of_f
@[simp]
theorem of_f {i j hij x} : of R ι G f j (f i j hij x) = of R ι G f i x 
Arguments: {R : Type u} [Ring R] {ι : Type v} [Preorder ι] {G : ι → Type w} [(i : ι) → AddCommGroup (G i)] [(i : ι) → Module R (G i)] {f : (i j : ι) → i ≤ j → G i →ₗ[R] G j} [DecidableEq ι] {i j : ι} {hij : i ≤ j} {x : G i}
Goal: (Module.DirectLimit.of R ι G f j) ((f i j hij) x) = (Module.DirectLimit.of R ι G f i) x
-- Module.DirectLimit.exists_of
theorem exists_of [Nonempty ι] [IsDirected ι (· ≤ ·)] (z : DirectLimit G f) :
    ∃ i x, of R ι G f i x = z 
Arguments: {R : Type u} [Ring R] {ι : Type v} [Preorder ι] {G : ι → Type w} [(i : ι) → AddCommGroup (G i)] [(i : ι) → Module R (G i)] {f : (i j : ι) → i ≤ j → G i →ₗ[R] G j} [DecidableEq ι] [Nonempty ι] [IsDirected ι fun x x_1 => x ≤ x_1] (z : Module.DirectLimit G f)
Goal: ∃ i x, (Module.DirectLimit.of R ι G f i) x = z
-- Module.DirectLimit.induction_on
@[elab_as_elim]
protected theorem induction_on [Nonempty ι] [IsDirected ι (· ≤ ·)] {C : DirectLimit G f → Prop}
    (z : DirectLimit G f) (ih : ∀ i x, C (of R ι G f i x)) : C z 
Arguments: {R : Type u} [Ring R] {ι : Type v} [Preorder ι] {G : ι → Type w} [(i : ι) → AddCommGroup (G i)] [(i : ι) → Module R (G i)] {f : (i j : ι) → i ≤ j → G i →ₗ[R] G j} [DecidableEq ι] [Nonempty ι] [IsDirected ι fun x x_1 => x ≤ x_1] {C : Module.DirectLimit G f → Prop} (z : Module.DirectLimit G f) (ih : ∀ (i : ι) (x : G i), C ((Module.DirectLimit.of R ι G f i) x))
Goal: C z
-- Module.DirectLimit.lift_of
theorem lift_of {i} (x) : lift R ι G f g Hg (of R ι G f i x) = g i x 
Arguments: {R : Type u} [Ring R] {ι : Type v} [Preorder ι] {G : ι → Type w} [(i : ι) → AddCommGroup (G i)] [(i : ι) → Module R (G i)] {f : (i j : ι) → i ≤ j → G i →ₗ[R] G j} [DecidableEq ι] {P : Type u₁} [AddCommGroup P] [Module R P] (g : (i : ι) → G i →ₗ[R] P) (Hg : ∀ (i j : ι) (hij : i ≤ j) (x : G i), (g j) ((f i j hij) x) = (g i) x) {i : ι} (x : G i)
Goal: (Module.DirectLimit.lift R ι G f g Hg) ((Module.DirectLimit.of R ι G f i) x) = (g i) x
-- Module.DirectLimit.lift_unique
theorem lift_unique [IsDirected ι (· ≤ ·)] (F : DirectLimit G f →ₗ[R] P) (x) :
    F x =
      lift R ι G f (fun i => F.comp <| of R ι G f i)
        (fun i j hij x => by rw [LinearMap.comp_apply, of_f]; rfl) x 
Arguments: {R : Type u} [Ring R] {ι : Type v} [Preorder ι] {G : ι → Type w} [(i : ι) → AddCommGroup (G i)] [(i : ι) → Module R (G i)] {f : (i j : ι) → i ≤ j → G i →ₗ[R] G j} [DecidableEq ι] {P : Type u₁} [AddCommGroup P] [Module R P] [IsDirected ι fun x x_1 => x ≤ x_1] (F : Module.DirectLimit G f →ₗ[R] P) (x : Module.DirectLimit G f)
Goal: F x = (Module.DirectLimit.lift R ι G f (fun i => F ∘ₗ Module.DirectLimit.of R ι G f i) ⋯) x
-- Module.DirectLimit.lift_injective
lemma lift_injective [IsDirected ι (· ≤ ·)]
    (injective : ∀ i, Function.Injective <| g i) :
    Function.Injective (lift R ι G f g Hg) 
Arguments: {R : Type u} [Ring R] {ι : Type v} [Preorder ι] {G : ι → Type w} [(i : ι) → AddCommGroup (G i)] [(i : ι) → Module R (G i)] {f : (i j : ι) → i ≤ j → G i →ₗ[R] G j} [DecidableEq ι] {P : Type u₁} [AddCommGroup P] [Module R P] (g : (i : ι) → G i →ₗ[R] P) (Hg : ∀ (i j : ι) (hij : i ≤ j) (x : G i), (g j) ((f i j hij) x) = (g i) x) [IsDirected ι fun x x_1 => x ≤ x_1] (injective : ∀ (i : ι), Function.Injective ⇑(g i))
Goal: Function.Injective ⇑(Module.DirectLimit.lift R ι G f g Hg)
-- Module.DirectLimit.map_apply_of
@[simp] lemma map_apply_of (g : (i : ι) → G i →ₗ[R] G' i)
    (hg : ∀ i j h, g j ∘ₗ f i j h = f' i j h ∘ₗ g i)
    {i : ι} (x : G i) :
    map g hg (of _ _ G f _ x) = of R ι G' f' i (g i x) 
Arguments: {R : Type u} [Ring R] {ι : Type v} [Preorder ι] {G : ι → Type w} [(i : ι) → AddCommGroup (G i)] [(i : ι) → Module R (G i)] {f : (i j : ι) → i ≤ j → G i →ₗ[R] G j} [DecidableEq ι] {G' : ι → Type v'} [(i : ι) → AddCommGroup (G' i)] [(i : ι) → Module R (G' i)] {f' : (i j : ι) → i ≤ j → G' i →ₗ[R] G' j} (g : (i : ι) → G i →ₗ[R] G' i) (hg : ∀ (i j : ι) (h : i ≤ j), g j ∘ₗ f i j h = f' i j h ∘ₗ g i) {i : ι} (x : G i)
Goal: (Module.DirectLimit.map g hg) ((Module.DirectLimit.of R ι G f i) x) = (Module.DirectLimit.of R ι G' f' i) ((g i) x)
-- Module.DirectLimit.map_id
@[simp] lemma map_id [IsDirected ι (· ≤ ·)] :
    map (fun i ↦ LinearMap.id) (fun _ _ _ ↦ rfl) = LinearMap.id (R := R) (M := DirectLimit G f) 
Arguments: {R : Type u} [Ring R] {ι : Type v} [Preorder ι] {G : ι → Type w} [(i : ι) → AddCommGroup (G i)] [(i : ι) → Module R (G i)] {f : (i j : ι) → i ≤ j → G i →ₗ[R] G j} [DecidableEq ι] [IsDirected ι fun x x_1 => x ≤ x_1]
Goal: Module.DirectLimit.map (fun i => LinearMap.id) ⋯ = LinearMap.id
-- Module.DirectLimit.map_comp
lemma map_comp [IsDirected ι (· ≤ ·)]
    (g₁ : (i : ι) → G i →ₗ[R] G' i) (g₂ : (i : ι) → G' i →ₗ[R] G'' i)
    (hg₁ : ∀ i j h, g₁ j ∘ₗ f i j h = f' i j h ∘ₗ g₁ i)
    (hg₂ : ∀ i j h, g₂ j ∘ₗ f' i j h = f'' i j h ∘ₗ g₂ i) :
    (map g₂ hg₂ ∘ₗ map g₁ hg₁ :
      DirectLimit G f →ₗ[R] DirectLimit G'' f'') =
    (map (fun i ↦ g₂ i ∘ₗ g₁ i) fun i j h ↦ by
        rw [LinearMap.comp_assoc, hg₁ i, ← LinearMap.comp_assoc, hg₂ i, LinearMap.comp_assoc] :
      DirectLimit G f →ₗ[R] DirectLimit G'' f'') 
Arguments: {R : Type u} [Ring R] {ι : Type v} [Preorder ι] {G : ι → Type w} [(i : ι) → AddCommGroup (G i)] [(i : ι) → Module R (G i)] {f : (i j : ι) → i ≤ j → G i →ₗ[R] G j} [DecidableEq ι] {G' : ι → Type v'} [(i : ι) → AddCommGroup (G' i)] [(i : ι) → Module R (G' i)] {f' : (i j : ι) → i ≤ j → G' i →ₗ[R] G' j} {G'' : ι → Type v''} [(i : ι) → AddCommGroup (G'' i)] [(i : ι) → Module R (G'' i)] {f'' : (i j : ι) → i ≤ j → G'' i →ₗ[R] G'' j} [IsDirected ι fun x x_1 => x ≤ x_1] (g₁ : (i : ι) → G i →ₗ[R] G' i) (g₂ : (i : ι) → G' i →ₗ[R] G'' i) (hg₁ : ∀ (i j : ι) (h : i ≤ j), g₁ j ∘ₗ f i j h = f' i j h ∘ₗ g₁ i) (hg₂ : ∀ (i j : ι) (h : i ≤ j), g₂ j ∘ₗ f' i j h = f'' i j h ∘ₗ g₂ i)
Goal: Module.DirectLimit.map g₂ hg₂ ∘ₗ Module.DirectLimit.map g₁ hg₁ = Module.DirectLimit.map (fun i => g₂ i ∘ₗ g₁ i) ⋯
-- Module.DirectLimit.congr_apply_of
lemma congr_apply_of [IsDirected ι (· ≤ ·)]
    (e : (i : ι) → G i ≃ₗ[R] G' i) (he : ∀ i j h, e j ∘ₗ f i j h = f' i j h ∘ₗ e i)
    {i : ι} (g : G i) :
    congr e he (of _ _ G f i g) = of _ _ G' f' i (e i g) 
Arguments: {R : Type u} [Ring R] {ι : Type v} [Preorder ι] {G : ι → Type w} [(i : ι) → AddCommGroup (G i)] [(i : ι) → Module R (G i)] {f : (i j : ι) → i ≤ j → G i →ₗ[R] G j} [DecidableEq ι] {G' : ι → Type v'} [(i : ι) → AddCommGroup (G' i)] [(i : ι) → Module R (G' i)] {f' : (i j : ι) → i ≤ j → G' i →ₗ[R] G' j} [IsDirected ι fun x x_1 => x ≤ x_1] (e : (i : ι) → G i ≃ₗ[R] G' i) (he : ∀ (i j : ι) (h : i ≤ j), ↑(e j) ∘ₗ f i j h = f' i j h ∘ₗ ↑(e i)) {i : ι} (g : G i)
Goal: (Module.DirectLimit.congr e he) ((Module.DirectLimit.of R ι G f i) g) = (Module.DirectLimit.of R ι G' f' i) ((e i) g)
-- Module.DirectLimit.congr_symm_apply_of
lemma congr_symm_apply_of [IsDirected ι (· ≤ ·)]
    (e : (i : ι) → G i ≃ₗ[R] G' i) (he : ∀ i j h, e j ∘ₗ f i j h = f' i j h ∘ₗ e i)
    {i : ι} (g : G' i) :
    (congr e he).symm (of _ _ G' f' i g) = of _ _ G f i ((e i).symm g) 
Arguments: {R : Type u} [Ring R] {ι : Type v} [Preorder ι] {G : ι → Type w} [(i : ι) → AddCommGroup (G i)] [(i : ι) → Module R (G i)] {f : (i j : ι) → i ≤ j → G i →ₗ[R] G j} [DecidableEq ι] {G' : ι → Type v'} [(i : ι) → AddCommGroup (G' i)] [(i : ι) → Module R (G' i)] {f' : (i j : ι) → i ≤ j → G' i →ₗ[R] G' j} [IsDirected ι fun x x_1 => x ≤ x_1] (e : (i : ι) → G i ≃ₗ[R] G' i) (he : ∀ (i j : ι) (h : i ≤ j), ↑(e j) ∘ₗ f i j h = f' i j h ∘ₗ ↑(e i)) {i : ι} (g : G' i)
Goal: (Module.DirectLimit.congr e he).symm ((Module.DirectLimit.of R ι G' f' i) g) =
  (Module.DirectLimit.of R ι G f i) ((e i).symm g)
-- Module.DirectLimit.totalize_of_le
theorem totalize_of_le {i j} (h : i ≤ j) : totalize G f i j = f i j h 
Arguments: {R : Type u} [Ring R] {ι : Type v} [Preorder ι] {G : ι → Type w} [(i : ι) → AddCommGroup (G i)] [(i : ι) → Module R (G i)] {f : (i j : ι) → i ≤ j → G i →ₗ[R] G j} {i j : ι} (h : i ≤ j)
Goal: Module.DirectLimit.totalize G f i j = f i j h
-- Module.DirectLimit.totalize_of_not_le
theorem totalize_of_not_le {i j} (h : ¬i ≤ j) : totalize G f i j = 0 
Arguments: {R : Type u} [Ring R] {ι : Type v} [Preorder ι] {G : ι → Type w} [(i : ι) → AddCommGroup (G i)] [(i : ι) → Module R (G i)] {f : (i j : ι) → i ≤ j → G i →ₗ[R] G j} {i j : ι} (h : ¬i ≤ j)
Goal: Module.DirectLimit.totalize G f i j = 0
-- Module.DirectLimit.toModule_totalize_of_le
theorem toModule_totalize_of_le [∀ i (k : G i), Decidable (k ≠ 0)] {x : DirectSum ι G} {i j : ι}
    (hij : i ≤ j) (hx : ∀ k ∈ x.support, k ≤ i) :
    DirectSum.toModule R ι (G j) (fun k => totalize G f k j) x =
      f i j hij (DirectSum.toModule R ι (G i) (fun k => totalize G f k i) x) 
Arguments: {R : Type u} [Ring R] {ι : Type v} [Preorder ι] {G : ι → Type w} [(i : ι) → AddCommGroup (G i)] [(i : ι) → Module R (G i)] {f : (i j : ι) → i ≤ j → G i →ₗ[R] G j} [DecidableEq ι] [DirectedSystem G fun i j h => ⇑(f i j h)] [(i : ι) → (k : G i) → Decidable (k ≠ 0)] {x : DirectSum ι G} {i j : ι} (hij : i ≤ j) (hx : ∀ k ∈ DFinsupp.support x, k ≤ i)
Goal: (DirectSum.toModule R ι (G j) fun k => Module.DirectLimit.totalize G f k j) x =
  (f i j hij) ((DirectSum.toModule R ι (G i) fun k => Module.DirectLimit.totalize G f k i) x)
-- Module.DirectLimit.of.zero_exact_aux
theorem of.zero_exact_aux [∀ i (k : G i), Decidable (k ≠ 0)] [Nonempty ι] [IsDirected ι (· ≤ ·)]
    {x : DirectSum ι G} (H : (Submodule.Quotient.mk x : DirectLimit G f) = (0 : DirectLimit G f)) :
    ∃ j,
      (∀ k ∈ x.support, k ≤ j) ∧
        DirectSum.toModule R ι (G j) (fun i => totalize G f i j) x = (0 : G j) 
Arguments: {R : Type u} [Ring R] {ι : Type v} [Preorder ι] {G : ι → Type w} [(i : ι) → AddCommGroup (G i)] [(i : ι) → Module R (G i)] {f : (i j : ι) → i ≤ j → G i →ₗ[R] G j} [DecidableEq ι] [DirectedSystem G fun i j h => ⇑(f i j h)] [(i : ι) → (k : G i) → Decidable (k ≠ 0)] [Nonempty ι] [IsDirected ι fun x x_1 => x ≤ x_1] {x : DirectSum ι G} (H : Submodule.Quotient.mk x = 0)
Goal: ∃ j,
  (∀ k ∈ DFinsupp.support x, k ≤ j) ∧ (DirectSum.toModule R ι (G j) fun i => Module.DirectLimit.totalize G f i j) x = 0
-- Module.DirectLimit.of.zero_exact
theorem of.zero_exact [IsDirected ι (· ≤ ·)] {i x} (H : of R ι G f i x = 0) :
    ∃ j hij, f i j hij x = (0 : G j) 
Arguments: {R : Type u} [Ring R] {ι : Type v} [Preorder ι] {G : ι → Type w} [(i : ι) → AddCommGroup (G i)] [(i : ι) → Module R (G i)] {f : (i j : ι) → i ≤ j → G i →ₗ[R] G j} [DecidableEq ι] [DirectedSystem G fun i j h => ⇑(f i j h)] [IsDirected ι fun x x_1 => x ≤ x_1] {i : ι} {x : G i} (H : (Module.DirectLimit.of R ι G f i) x = 0)
Goal: ∃ j, ∃ (hij : i ≤ j), (f i j hij) x = 0
-- AddCommGroup.DirectLimit.directedSystem
protected theorem directedSystem [h : DirectedSystem G fun i j h => f i j h] :
    DirectedSystem G fun i j hij => (f i j hij).toIntLinearMap 
Arguments: {ι : Type v} [Preorder ι] (G : ι → Type w) [(i : ι) → AddCommGroup (G i)] (f : (i j : ι) → i ≤ j → G i →+ G j) [h : DirectedSystem G fun i j h => ⇑(f i j h)]
Goal: DirectedSystem G fun i j hij => ⇑(f i j hij).toIntLinearMap
-- AddCommGroup.DirectLimit.of_f
@[simp]
theorem of_f {i j} (hij) (x) : of G f j (f i j hij x) = of G f i x 
Arguments: {ι : Type v} [Preorder ι] {G : ι → Type w} [DecidableEq ι] [(i : ι) → AddCommGroup (G i)] {f : (i j : ι) → i ≤ j → G i →+ G j} {i j : ι} (hij : i ≤ j) (x : G i)
Goal: (AddCommGroup.DirectLimit.of G f j) ((f i j hij) x) = (AddCommGroup.DirectLimit.of G f i) x
-- AddCommGroup.DirectLimit.induction_on
@[elab_as_elim]
protected theorem induction_on [Nonempty ι] [IsDirected ι (· ≤ ·)] {C : DirectLimit G f → Prop}
    (z : DirectLimit G f) (ih : ∀ i x, C (of G f i x)) : C z 
Arguments: {ι : Type v} [Preorder ι] {G : ι → Type w} [DecidableEq ι] [(i : ι) → AddCommGroup (G i)] {f : (i j : ι) → i ≤ j → G i →+ G j} [Nonempty ι] [IsDirected ι fun x x_1 => x ≤ x_1] {C : AddCommGroup.DirectLimit G f → Prop} (z : AddCommGroup.DirectLimit G f) (ih : ∀ (i : ι) (x : G i), C ((AddCommGroup.DirectLimit.of G f i) x))
Goal: C z
-- AddCommGroup.DirectLimit.of.zero_exact
theorem of.zero_exact [IsDirected ι (· ≤ ·)] [DirectedSystem G fun i j h => f i j h] (i x)
    (h : of G f i x = 0) : ∃ j hij, f i j hij x = 0 
Arguments: {ι : Type v} [Preorder ι] {G : ι → Type w} [DecidableEq ι] [(i : ι) → AddCommGroup (G i)] {f : (i j : ι) → i ≤ j → G i →+ G j} [IsDirected ι fun x x_1 => x ≤ x_1] [DirectedSystem G fun i j h => ⇑(f i j h)] (i : ι) (x : G i) (h : (AddCommGroup.DirectLimit.of G f i) x = 0)
Goal: ∃ j, ∃ (hij : i ≤ j), (f i j hij) x = 0
-- AddCommGroup.DirectLimit.lift_of
@[simp]
theorem lift_of (i x) : lift G f P g Hg (of G f i x) = g i x 
Arguments: {ι : Type v} [Preorder ι] {G : ι → Type w} [DecidableEq ι] [(i : ι) → AddCommGroup (G i)] {f : (i j : ι) → i ≤ j → G i →+ G j} (P : Type u₁) [AddCommGroup P] (g : (i : ι) → G i →+ P) (Hg : ∀ (i j : ι) (hij : i ≤ j) (x : G i), (g j) ((f i j hij) x) = (g i) x) (i : ι) (x : G i)
Goal: (AddCommGroup.DirectLimit.lift G f P g Hg) ((AddCommGroup.DirectLimit.of G f i) x) = (g i) x
-- AddCommGroup.DirectLimit.lift_unique
theorem lift_unique [IsDirected ι (· ≤ ·)] (F : DirectLimit G f →+ P) (x) :
    F x = lift G f P (fun i => F.comp (of G f i)) (fun i j hij x => by simp) x 
Arguments: {ι : Type v} [Preorder ι] {G : ι → Type w} [DecidableEq ι] [(i : ι) → AddCommGroup (G i)] {f : (i j : ι) → i ≤ j → G i →+ G j} (P : Type u₁) [AddCommGroup P] [IsDirected ι fun x x_1 => x ≤ x_1] (F : AddCommGroup.DirectLimit G f →+ P) (x : AddCommGroup.DirectLimit G f)
Goal: F x = (AddCommGroup.DirectLimit.lift G f P (fun i => F.comp (AddCommGroup.DirectLimit.of G f i)) ⋯) x