{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE FlexibleInstances, FlexibleContexts #-}
{-# LANGUAGE DataKinds #-}
module OAlg.AbelianGroup.KernelsAndCokernels
(
abhKernels, abhKernelsFreeFromG, abhKernelsFreeFromG'
, abhKernelsSomeFreeFreeTip
, abhCokernels, abhCokernelsLftFreeG
, abhCokernelsLiftableSomeFree
, isoSmithNormal
, abhSliceFreeAdjunction
)
where
import Control.Monad
import Data.Typeable
import Data.List (map,(++),repeat,zip)
import OAlg.Prelude hiding ((//))
import OAlg.Data.Canonical
import OAlg.Data.FinitelyPresentable
import OAlg.Structure.Oriented
import OAlg.Structure.Multiplicative as M
import OAlg.Structure.Additive
import OAlg.Structure.Distributive
import OAlg.Structure.Exponential
import OAlg.Structure.Operational
import OAlg.Structure.Number
import OAlg.Adjunction
import OAlg.Limes.Cone
import OAlg.Limes.Definition
import OAlg.Limes.Limits
import OAlg.Limes.KernelsAndCokernels
import OAlg.Limes.PullbacksAndPushouts
import OAlg.Entity.Natural hiding ((++))
import OAlg.Entity.FinList as F hiding ((++),repeat,zip)
import OAlg.Entity.Diagram
import OAlg.Entity.Sequence
import OAlg.Entity.Matrix as M
import OAlg.Entity.Slice
import OAlg.Entity.Slice.Liftable
import OAlg.Entity.Product (fromWord)
import OAlg.AbelianGroup.Definition
import OAlg.AbelianGroup.ZMod
import OAlg.AbelianGroup.Euclid
import OAlg.AbelianGroup.Free
abhCokernelFreeDgmLftFreeG
:: CokernelDiagrammatic DiagramFree N1 AbHom -> CokernelG ConeLiftable DiagramFree N1 AbHom
abhCokernelFreeDgmLftFreeG :: DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
-> CokernelG ConeLiftable DiagramFree N1 AbHom
abhCokernelFreeDgmLftFreeG d :: DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
d@(DiagramFree FinList N2 (SomeFree AbHom)
_ (DiagramParallelRL Point AbHom
_ Point AbHom
_ (AbHom
h:|FinList n1 AbHom
Nil)))
= ConeLiftable
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
-> (Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
-> AbHom)
-> CokernelG ConeLiftable DiagramFree N1 AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (d :: DiagramType -> N' -> N' -> * -> *) (t :: DiagramType)
(n :: N') (m :: N') x.
c s 'Injective d t n m x
-> (Cone s 'Injective d t n m x -> x)
-> LimesG c s 'Injective d t n m x
LimesInjective (Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
-> LiftableFree 'Injective AbHom
-> ConeLiftable
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
forall (d :: DiagramType -> N' -> N' -> * -> *) x.
CokernelConic Cone d N1 x
-> LiftableFree 'Injective x
-> ConeLiftable Dst 'Injective d ('Parallel 'RightToLeft) N2 N1 x
ConeCokernelLiftable (DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
-> AbHom
-> Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
forall a (d :: DiagramType -> N' -> N' -> * -> *) (m :: N').
Distributive a =>
d ('Parallel 'RightToLeft) N2 m a
-> a -> Cone Dst 'Injective d ('Parallel 'RightToLeft) N2 m a
ConeCokernel DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
d AbHom
coker) ((forall (k :: N'). Any k -> Liftable 'Injective (Free k) AbHom)
-> LiftableFree 'Injective AbHom
forall (p :: Perspective) x.
(forall (k :: N'). Any k -> Liftable p (Free k) x)
-> LiftableFree p x
LiftableFree Any k -> Liftable 'Injective (Free k) AbHom
forall (k :: N'). Any k -> Liftable 'Injective (Free k) AbHom
lftAny)) Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
-> AbHom
univ where
m :: Matrix Z
m = AbHom -> Matrix Z
abhz AbHom
h
SmithNormalForm N
o [Z]
ds (RowTrafo GLT Z
ra) ColTrafo Z
_ = Matrix Z -> SmithNormalForm Z
smithNormalForm Matrix Z
m
Inv Matrix Z
a Matrix Z
aInv = GLApp (GLT Z) (Inv (Matrix Z)) -> GLT Z -> Inv (Matrix Z)
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
amap GLApp (GLT Z) (Inv (Matrix Z))
forall x1. Distributive x1 => GLApp (GLT x1) (Inv (Matrix x1))
GLTGL GLT Z
ra
AbHom Matrix ZModHom
aInv' = Matrix Z -> AbHom
zabh Matrix Z
aInv
p :: N
p = [Z] -> N
forall x. LengthN x => x -> N
lengthN [Z]
ds
q :: N
q = Dim Z () -> N
forall x. LengthN x => x -> N
lengthN (Matrix Z -> Dim' Z
forall x. Matrix x -> Dim' x
rows Matrix Z
m) N -> N -> N
>- (N
o N -> N -> N
forall a. Additive a => a -> a -> a
+ N
p)
d0 :: Dim ZModHom ZMod
d0 = ZMod -> Dim ZModHom ZMod
forall p x. (Entity p, p ~ Point x) => p -> Dim x p
dim (N -> ZMod
ZMod N
0)
gp :: Dim ZModHom ZMod
gp = CSequence (Point ZModHom) -> Dim ZModHom (Point ZModHom)
ProductSymbol ZMod -> Dim ZModHom ZMod
forall x. CSequence (Point x) -> Dim x (Point x)
Dim (ProductSymbol ZMod -> Dim ZModHom ZMod)
-> ProductSymbol ZMod -> Dim ZModHom ZMod
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ [ZMod] -> ProductSymbol ZMod
forall x. Entity x => [x] -> ProductSymbol x
productSymbol ([ZMod] -> ProductSymbol ZMod) -> [ZMod] -> ProductSymbol ZMod
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ (Z -> ZMod) -> [Z] -> [ZMod]
forall (h :: * -> * -> *) (f :: * -> *) x y.
Applicative1 h f =>
h x y -> f x -> f y
amap1 (N -> ZMod
ZMod (N -> ZMod) -> (Z -> N) -> Z -> ZMod
forall y z x. (y -> z) -> (x -> y) -> x -> z
forall (c :: * -> * -> *) y z x.
Category c =>
c y z -> c x y -> c x z
. Z -> N
forall a b. Projectible a b => b -> a
prj) [Z]
ds
gq :: Dim ZModHom ZMod
gq = Dim ZModHom ZMod
d0 Dim ZModHom ZMod -> Exponent (Dim ZModHom ZMod) -> Dim ZModHom ZMod
forall f. Exponential f => f -> Exponent f -> f
^ N
Exponent (Dim ZModHom ZMod)
q
gpq :: Dim ZModHom ZMod
gpq = Dim ZModHom ZMod
gp Dim ZModHom ZMod -> Dim ZModHom ZMod -> Dim ZModHom ZMod
forall c. Multiplicative c => c -> c -> c
* Dim ZModHom ZMod
gq
coker :: AbHom
coker = ( Matrix ZModHom -> AbHom
AbHom (Matrix ZModHom -> AbHom) -> Matrix ZModHom -> AbHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ Matrix (Matrix ZModHom) -> Matrix ZModHom
forall x. Oriented x => Matrix (Matrix x) -> Matrix x
mtxJoin
(Matrix (Matrix ZModHom) -> Matrix ZModHom)
-> Matrix (Matrix ZModHom) -> Matrix ZModHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ [Dim ZModHom (Point ZModHom)]
-> [Dim ZModHom (Point ZModHom)]
-> [(Matrix ZModHom, N, N)]
-> Matrix (Matrix ZModHom)
forall x.
(Additive x, FibredOriented x) =>
[Dim' x] -> [Dim' x] -> [(Matrix x, N, N)] -> Matrix (Matrix x)
matrixBlc [Dim ZModHom (Point ZModHom)
Dim ZModHom ZMod
gp,Dim ZModHom (Point ZModHom)
Dim ZModHom ZMod
gq] [Dim ZModHom ZMod
d0Dim ZModHom ZMod -> Exponent (Dim ZModHom ZMod) -> Dim ZModHom ZMod
forall f. Exponential f => f -> Exponent f -> f
^N
Exponent (Dim ZModHom ZMod)
o,Dim ZModHom ZMod
d0Dim ZModHom ZMod -> Exponent (Dim ZModHom ZMod) -> Dim ZModHom ZMod
forall f. Exponential f => f -> Exponent f -> f
^N
Exponent (Dim ZModHom ZMod)
p,Dim ZModHom (Point ZModHom)
Dim ZModHom ZMod
gq] [(Dim ZModHom ZMod
-> Dim ZModHom ZMod -> [(ZModHom, N, N)] -> Matrix ZModHom
forall x p.
(Additive x, p ~ Point x) =>
Dim x p -> Dim x p -> [(x, N, N)] -> Matrix x
matrix Dim ZModHom ZMod
gp (Dim ZModHom ZMod
d0Dim ZModHom ZMod -> Exponent (Dim ZModHom ZMod) -> Dim ZModHom ZMod
forall f. Exponential f => f -> Exponent f -> f
^N
Exponent (Dim ZModHom ZMod)
p) [(ZModHom, N, N)]
ps,N
0,N
1),(Point (Matrix ZModHom) -> Matrix ZModHom
forall c. Multiplicative c => Point c -> c
one Point (Matrix ZModHom)
Dim ZModHom ZMod
gq,N
1,N
2)]
)
AbHom -> AbHom -> AbHom
forall c. Multiplicative c => c -> c -> c
* Matrix Z -> AbHom
zabh Matrix Z
a where
ps :: [(ZModHom, N, N)]
ps = [(Orientation ZMod -> Z -> ZModHom
zmh (N -> ZMod
ZMod N
0 ZMod -> ZMod -> Orientation ZMod
forall p. p -> p -> Orientation p
:> N -> ZMod
ZMod (Z -> N
forall a b. Projectible a b => b -> a
prj Z
d)) Z
1,N
i,N
i)| (Z
d,N
i) <- [Z]
ds [Z] -> [N] -> [(Z, N)]
forall a b. [a] -> [b] -> [(a, b)]
`zip` [N
0..]]
univ :: CokernelConic Cone DiagramFree N1 AbHom -> AbHom
univ :: Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
-> AbHom
univ (ConeCokernel DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
_ (AbHom Matrix ZModHom
x))
= Matrix ZModHom -> AbHom
AbHom
(Matrix ZModHom -> AbHom) -> Matrix ZModHom -> AbHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ Dim ZModHom (Point ZModHom)
-> Dim ZModHom (Point ZModHom)
-> Entries N N ZModHom
-> Matrix ZModHom
forall x. Dim' x -> Dim' x -> Entries N N x -> Matrix x
Matrix (Matrix ZModHom -> Dim ZModHom (Point ZModHom)
forall x. Matrix x -> Dim' x
rows Matrix ZModHom
x) Dim ZModHom (Point ZModHom)
Dim ZModHom ZMod
gpq
(Entries N N ZModHom -> Matrix ZModHom)
-> Entries N N ZModHom -> Matrix ZModHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ Row N (Col N ZModHom) -> Entries N N ZModHom
forall i j x. (Ord i, Ord j) => Row j (Col i x) -> Entries i j x
rcets (Row N (Col N ZModHom) -> Entries N N ZModHom)
-> Row N (Col N ZModHom) -> Entries N N ZModHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ PSequence N (Col N ZModHom) -> Row N (Col N ZModHom)
forall j x. PSequence j x -> Row j x
Row (PSequence N (Col N ZModHom) -> Row N (Col N ZModHom))
-> PSequence N (Col N ZModHom) -> Row N (Col N ZModHom)
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ [(Col N ZModHom, N)] -> PSequence N (Col N ZModHom)
forall i x. [(x, i)] -> PSequence i x
PSequence
([(Col N ZModHom, N)] -> PSequence N (Col N ZModHom))
-> [(Col N ZModHom, N)] -> PSequence N (Col N ZModHom)
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ ((Col N ZModHom, N) -> (Col N ZModHom, N))
-> [(Col N ZModHom, N)] -> [(Col N ZModHom, N)]
forall a b. (a -> b) -> [a] -> [b]
map (\(Col N ZModHom
cl,N
j) -> (Col N ZModHom
cl,N
jN -> N -> N
>-N
o))
([(Col N ZModHom, N)] -> [(Col N ZModHom, N)])
-> [(Col N ZModHom, N)] -> [(Col N ZModHom, N)]
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ N -> [ZMod] -> [(Col N ZModHom, N)] -> [(Col N ZModHom, N)]
forall j i.
(Enum j, Ord j) =>
j -> [ZMod] -> [(Col i ZModHom, j)] -> [(Col i ZModHom, j)]
fcts N
o (((ZMod, N) -> ZMod) -> [(ZMod, N)] -> [ZMod]
forall a b. (a -> b) -> [a] -> [b]
map (ZMod, N) -> ZMod
forall a b. (a, b) -> a
fst ([(ZMod, N)] -> [ZMod]) -> [(ZMod, N)] -> [ZMod]
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ Dim ZModHom ZMod -> [(ZMod, N)]
forall (s :: * -> *) x. Sequence s N x => s x -> [(x, N)]
listN Dim ZModHom ZMod
gp)
([(Col N ZModHom, N)] -> [(Col N ZModHom, N)])
-> [(Col N ZModHom, N)] -> [(Col N ZModHom, N)]
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ Row N (Col N ZModHom) -> [(Col N ZModHom, N)]
forall (s :: * -> *) x. Sequence s N x => s x -> [(x, N)]
listN (Row N (Col N ZModHom) -> [(Col N ZModHom, N)])
-> Row N (Col N ZModHom) -> [(Col N ZModHom, N)]
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ Entries N N ZModHom -> Row N (Col N ZModHom)
forall i j x. (Ord i, Ord j) => Entries i j x -> Row j (Col i x)
etsrc (Entries N N ZModHom -> Row N (Col N ZModHom))
-> Entries N N ZModHom -> Row N (Col N ZModHom)
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ Matrix ZModHom -> Entries N N ZModHom
forall x. Matrix x -> Entries N N x
mtxxs (Matrix ZModHom
xMatrix ZModHom -> Matrix ZModHom -> Matrix ZModHom
forall c. Multiplicative c => c -> c -> c
*Matrix ZModHom
aInv')
where
fcts :: (Enum j, Ord j) => j -> [ZMod] -> [(Col i ZModHom,j)] -> [(Col i ZModHom,j)]
fcts :: forall j i.
(Enum j, Ord j) =>
j -> [ZMod] -> [(Col i ZModHom, j)] -> [(Col i ZModHom, j)]
fcts j
_ [] [(Col i ZModHom, j)]
cls = [(Col i ZModHom, j)]
cls
fcts j
_ [ZMod]
_ [] = []
fcts j
j (ZMod
z:[ZMod]
zs) cls :: [(Col i ZModHom, j)]
cls@((Col i ZModHom
cl,j
j'):[(Col i ZModHom, j)]
cls') = if j
j j -> j -> Bool
forall a. Ord a => a -> a -> Bool
< j
j'
then j -> [ZMod] -> [(Col i ZModHom, j)] -> [(Col i ZModHom, j)]
forall j i.
(Enum j, Ord j) =>
j -> [ZMod] -> [(Col i ZModHom, j)] -> [(Col i ZModHom, j)]
fcts (j -> j
forall a. Enum a => a -> a
succ j
j) [ZMod]
zs [(Col i ZModHom, j)]
cls
else (((ZModHom -> ZModHom) -> Col i ZModHom -> Col i ZModHom
forall (h :: * -> * -> *) (f :: * -> *) x y.
Applicative1 h f =>
h x y -> f x -> f y
amap1 (ZMod -> ZModHom -> ZModHom
fct ZMod
z) Col i ZModHom
cl,j
j')(Col i ZModHom, j) -> [(Col i ZModHom, j)] -> [(Col i ZModHom, j)]
forall a. a -> [a] -> [a]
:j -> [ZMod] -> [(Col i ZModHom, j)] -> [(Col i ZModHom, j)]
forall j i.
(Enum j, Ord j) =>
j -> [ZMod] -> [(Col i ZModHom, j)] -> [(Col i ZModHom, j)]
fcts (j -> j
forall a. Enum a => a -> a
succ j
j) [ZMod]
zs [(Col i ZModHom, j)]
cls')
fct :: ZMod -> ZModHom -> ZModHom
fct :: ZMod -> ZModHom -> ZModHom
fct ZMod
z ZModHom
h = Orientation ZMod -> Z -> ZModHom
zmh (ZMod
zZMod -> ZMod -> Orientation ZMod
forall p. p -> p -> Orientation p
:>ZModHom -> Point ZModHom
forall q. Oriented q => q -> Point q
end ZModHom
h) (ZModHom -> Z
toZ ZModHom
h)
lftAny :: Any k -> Liftable Injective (Free k) AbHom
lftAny :: forall (k :: N'). Any k -> Liftable 'Injective (Free k) AbHom
lftAny Any k
k = case Any k -> Ats k
forall (n :: N'). Any n -> Ats n
ats Any k
k of Ats k
Ats -> AbHom
-> (Slice 'From (Free k) AbHom -> Slice 'From (Free k) AbHom)
-> Liftable 'Injective (Free k) AbHom
forall (i :: * -> *) x.
Sliced i x =>
x
-> (Slice 'From i x -> Slice 'From i x) -> Liftable 'Injective i x
LiftableInjective AbHom
coker (AbHom -> Slice 'From (Free k) AbHom -> Slice 'From (Free k) AbHom
forall (k :: N').
Attestable k =>
AbHom -> Slice 'From (Free k) AbHom -> Slice 'From (Free k) AbHom
lft AbHom
coker)
lft :: Attestable k => AbHom -> Slice From (Free k) AbHom -> Slice From (Free k) AbHom
lft :: forall (k :: N').
Attestable k =>
AbHom -> Slice 'From (Free k) AbHom -> Slice 'From (Free k) AbHom
lft AbHom
c s :: Slice 'From (Free k) AbHom
s@(SliceFrom Free k AbHom
i AbHom
f)
| Free k AbHom -> Point AbHom
forall (i :: * -> *) c. Sliced i c => i c -> Point c
slicePoint Free k AbHom
i AbGroup -> AbGroup -> Bool
forall a. Eq a => a -> a -> Bool
/= AbHom -> Point AbHom
forall q. Oriented q => q -> Point q
start AbHom
f = AlgebraicException -> Slice 'From (Free k) AbHom
forall a e. Exception e => e -> a
throw (AlgebraicException -> Slice 'From (Free k) AbHom)
-> AlgebraicException -> Slice 'From (Free k) AbHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ String -> AlgebraicException
InvalidData (String -> AlgebraicException) -> String -> AlgebraicException
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ Slice 'From (Free k) AbHom -> String
forall a. Show a => a -> String
show Slice 'From (Free k) AbHom
s
| AbHom -> Point AbHom
forall q. Oriented q => q -> Point q
end AbHom
c AbGroup -> AbGroup -> Bool
forall a. Eq a => a -> a -> Bool
/= AbHom -> Point AbHom
forall q. Oriented q => q -> Point q
end AbHom
f = LiftableException -> Slice 'From (Free k) AbHom
forall a e. Exception e => e -> a
throw LiftableException
NotLiftable
| Bool
otherwise = Free k AbHom -> AbHom -> Slice 'From (Free k) AbHom
forall (i :: * -> *) x. i x -> x -> Slice 'From i x
SliceFrom Free k AbHom
i AbHom
f' where
f' :: AbHom
f' = Matrix Z -> AbHom
zabh (Matrix Z
aInv Matrix Z -> Matrix Z -> Matrix Z
forall c. Multiplicative c => c -> c -> c
* Matrix Z
zf')
zf :: Matrix Z
zf = AbHom -> Matrix Z
abhz AbHom
f
zf' :: Matrix Z
zf' = Matrix (Matrix Z) -> Matrix Z
forall x. Oriented x => Matrix (Matrix x) -> Matrix x
mtxJoin (Matrix (Matrix Z) -> Matrix Z) -> Matrix (Matrix Z) -> Matrix Z
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ [Dim' Z] -> [Dim' Z] -> [(Matrix Z, N, N)] -> Matrix (Matrix Z)
forall x.
(Additive x, FibredOriented x) =>
[Dim' x] -> [Dim' x] -> [(Matrix x, N, N)] -> Matrix (Matrix x)
matrixBlc [() -> Dim Z ()
forall p x. (Entity p, p ~ Point x) => p -> Dim x p
dim () Dim Z () -> Exponent (Dim Z ()) -> Dim Z ()
forall f. Exponential f => f -> Exponent f -> f
^ N
Exponent (Dim Z ())
r,Matrix Z -> Dim' Z
forall x. Matrix x -> Dim' x
rows Matrix Z
zf] [Matrix Z -> Dim' Z
forall x. Matrix x -> Dim' x
cols Matrix Z
zf] [(Matrix Z
zf,N
1,N
0)]
r :: N
r = Dim Z () -> N
forall x. LengthN x => x -> N
lengthN (Matrix Z -> Point (Matrix Z)
forall q. Oriented q => q -> Point q
start Matrix Z
aInv) N -> N -> N
>- Dim Z () -> N
forall x. LengthN x => x -> N
lengthN (Matrix Z -> Dim' Z
forall x. Matrix x -> Dim' x
rows Matrix Z
zf)
abhCokernelsFreeDgmLftFreeG :: CokernelsG ConeLiftable DiagramFree N1 AbHom
abhCokernelsFreeDgmLftFreeG :: CokernelsG ConeLiftable DiagramFree N1 AbHom
abhCokernelsFreeDgmLftFreeG = (DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
-> CokernelG ConeLiftable DiagramFree N1 AbHom)
-> CokernelsG ConeLiftable DiagramFree N1 AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
(d t n m x -> LimesG c s p d t n m x) -> LimitsG c s p d t n m x
LimitsG DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
-> CokernelG ConeLiftable DiagramFree N1 AbHom
abhCokernelFreeDgmLftFreeG
xCokernelDiagramFree :: X (Matrix Z) -> X (CokernelDiagrammatic DiagramFree N1 AbHom)
xCokernelDiagramFree :: X (Matrix Z)
-> X (DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom)
xCokernelDiagramFree X (Matrix Z)
xm = do
Matrix Z
m <- X (Matrix Z)
xm
let r :: N
r = Dim Z () -> N
forall x. LengthN x => x -> N
lengthN (Dim Z () -> N) -> Dim Z () -> N
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ Matrix Z -> Dim' Z
forall x. Matrix x -> Dim' x
rows Matrix Z
m
c :: N
c = Dim Z () -> N
forall x. LengthN x => x -> N
lengthN (Dim Z () -> N) -> Dim Z () -> N
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ Matrix Z -> Dim' Z
forall x. Matrix x -> Dim' x
cols Matrix Z
m
a :: AbHom
a = Matrix Z -> AbHom
zabh Matrix Z
m
in case (N -> SomeNatural
someNatural N
r, N -> SomeNatural
someNatural N
c) of
(SomeNatural W n
r',SomeNatural W n
c')
-> DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
-> X (DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom)
forall a. a -> X a
forall (m :: * -> *) a. Monad m => a -> m a
return (FinList N2 (SomeFree AbHom)
-> Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
-> DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
forall (t :: DiagramType) (n :: N') (m :: N') a.
FinList n (SomeFree a) -> Diagram t n m a -> DiagramFree t n m a
DiagramFree
(Free n AbHom -> SomeFree AbHom
forall (k :: N') c.
(Attestable k, Sliced (Free k) c) =>
Free k c -> SomeFree c
SomeFree (W n -> Free n AbHom
forall (k :: N') c. Any k -> Free k c
Free W n
r')SomeFree AbHom
-> FinList N1 (SomeFree AbHom) -> FinList (N1 + 1) (SomeFree AbHom)
forall a (n1 :: N'). a -> FinList n1 a -> FinList (n1 + 1) a
:|Free n AbHom -> SomeFree AbHom
forall (k :: N') c.
(Attestable k, Sliced (Free k) c) =>
Free k c -> SomeFree c
SomeFree (W n -> Free n AbHom
forall (k :: N') c. Any k -> Free k c
Free W n
c')SomeFree AbHom
-> FinList N0 (SomeFree AbHom) -> FinList (N0 + 1) (SomeFree AbHom)
forall a (n1 :: N'). a -> FinList n1 a -> FinList (n1 + 1) a
:|FinList N0 (SomeFree AbHom)
forall a. FinList N0 a
Nil)
(Point AbHom
-> Point AbHom
-> FinList N1 AbHom
-> Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
forall a (m :: N').
Point a
-> Point a
-> FinList m a
-> Diagram ('Parallel 'RightToLeft) N2 m a
DiagramParallelRL (AbHom -> Point AbHom
forall q. Oriented q => q -> Point q
end AbHom
a) (AbHom -> Point AbHom
forall q. Oriented q => q -> Point q
start AbHom
a) (AbHom
aAbHom -> FinList N0 AbHom -> FinList (N0 + 1) AbHom
forall a (n1 :: N'). a -> FinList n1 a -> FinList (n1 + 1) a
:|FinList N0 AbHom
forall a. FinList N0 a
Nil))
)
xZeroFactor :: XOrtSite From (Matrix Z) -> Matrix Z -> X AbHom
xZeroFactor :: XOrtSite 'From (Matrix Z) -> Matrix Z -> X AbHom
xZeroFactor XOrtSite 'From (Matrix Z)
xFrom Matrix Z
h = do
Matrix Z
f <- XOrtSite 'From (Matrix Z) -> Point (Matrix Z) -> X (Matrix Z)
forall q. XOrtSite 'From q -> Point q -> X q
xosStart XOrtSite 'From (Matrix Z)
xFrom (Matrix Z -> Point (Matrix Z)
forall q. Oriented q => q -> Point q
end Matrix Z
h)
AbHom -> X AbHom
forall a. a -> X a
forall (m :: * -> *) a. Monad m => a -> m a
return (Matrix Z -> AbHom
prjZero (Matrix Z
f Matrix Z -> Matrix Z -> Matrix Z
forall c. Multiplicative c => c -> c -> c
* Matrix Z
h) AbHom -> AbHom -> AbHom
forall c. Multiplicative c => c -> c -> c
* Matrix Z -> AbHom
zabh Matrix Z
f)
where
prjZero :: Matrix Z -> AbHom
prjZero :: Matrix Z -> AbHom
prjZero Matrix Z
f = Orientation AbGroup -> [(Z, N, N)] -> AbHom
abh' ((N -> AbGroup
abg N
0 AbGroup -> Exponent AbGroup -> AbGroup
forall f. Exponential f => f -> Exponent f -> f
^ N
Exponent AbGroup
d) AbGroup -> AbGroup -> Orientation AbGroup
forall p. p -> p -> Orientation p
:> N -> N -> [(Row N Z, N)] -> AbGroup
gcdRows N
d N
0 (Col N (Row N Z) -> [(Row N Z, N)]
forall i x. Col i x -> [(x, i)]
colxs (Col N (Row N Z) -> [(Row N Z, N)])
-> Col N (Row N Z) -> [(Row N Z, N)]
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ Matrix Z -> Col N (Row N Z)
forall x. Matrix x -> Col N (Row N x)
mtxColRow Matrix Z
f)) (N -> [(Z, N, N)]
forall {c} {a}. (Enum c, Num c, Num a) => c -> [(a, c, c)]
one N
d) where
d :: N
d = Dim Z () -> N
forall x. LengthN x => x -> N
lengthN (Dim Z () -> N) -> Dim Z () -> N
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ Matrix Z -> Dim' Z
forall x. Matrix x -> Dim' x
rows Matrix Z
f
one :: c -> [(a, c, c)]
one c
d = [let i :: c
i = c -> c
forall a. Enum a => a -> a
pred c
i' in (a
1,c
i,c
i) | c
i' <- [c
1..c
d]]
gcdRows :: N -> N -> [(Row N Z,N)] -> AbGroup
gcdRows :: N -> N -> [(Row N Z, N)] -> AbGroup
gcdRows N
0 N
_ [(Row N Z, N)]
_ = Point AbGroup -> AbGroup
forall c. Multiplicative c => Point c -> c
one ()
gcdRows N
d N
i [] = N -> AbGroup
abg N
0 AbGroup -> AbGroup -> AbGroup
forall c. Multiplicative c => c -> c -> c
* N -> N -> [(Row N Z, N)] -> AbGroup
gcdRows (N -> N
forall a. Enum a => a -> a
pred N
d) (N -> N
forall a. Enum a => a -> a
succ N
i) []
gcdRows N
d N
i ((Row N Z
c,N
i'):[(Row N Z, N)]
cs) = case N -> N -> Ordering
forall a. Ord a => a -> a -> Ordering
compare N
i N
i' of
Ordering
LT -> N -> AbGroup
abg N
0 AbGroup -> AbGroup -> AbGroup
forall c. Multiplicative c => c -> c -> c
* N -> N -> [(Row N Z, N)] -> AbGroup
gcdRows (N -> N
forall a. Enum a => a -> a
pred N
d) (N -> N
forall a. Enum a => a -> a
succ N
i) ((Row N Z
c,N
i')(Row N Z, N) -> [(Row N Z, N)] -> [(Row N Z, N)]
forall a. a -> [a] -> [a]
:[(Row N Z, N)]
cs)
Ordering
EQ -> N -> AbGroup
abg (Row N Z -> N
forall j. Row j Z -> N
gcdRow Row N Z
c) AbGroup -> AbGroup -> AbGroup
forall c. Multiplicative c => c -> c -> c
* N -> N -> [(Row N Z, N)] -> AbGroup
gcdRows (N -> N
forall a. Enum a => a -> a
pred N
d) (N -> N
forall a. Enum a => a -> a
succ N
i) [(Row N Z, N)]
cs
Ordering
_ -> AlgebraicException -> AbGroup
forall a e. Exception e => e -> a
throw (AlgebraicException -> AbGroup) -> AlgebraicException -> AbGroup
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ String -> AlgebraicException
ImplementationError String
""
gcdRow :: Row j Z -> N
gcdRow :: forall j. Row j Z -> N
gcdRow = [N] -> N
gcds ([N] -> N) -> (Row j Z -> [N]) -> Row j Z -> N
forall y z x. (y -> z) -> (x -> y) -> x -> z
forall (c :: * -> * -> *) y z x.
Category c =>
c y z -> c x y -> c x z
. ((Z, j) -> N) -> [(Z, j)] -> [N]
forall (h :: * -> * -> *) (f :: * -> *) x y.
Applicative1 h f =>
h x y -> f x -> f y
amap1 (Z -> N
forall a b. Projectible a b => b -> a
prj (Z -> N) -> ((Z, j) -> Z) -> (Z, j) -> N
forall y z x. (y -> z) -> (x -> y) -> x -> z
forall (c :: * -> * -> *) y z x.
Category c =>
c y z -> c x y -> c x z
. (Z, j) -> Z
forall a b. (a, b) -> a
fst) ([(Z, j)] -> [N]) -> (Row j Z -> [(Z, j)]) -> Row j Z -> [N]
forall y z x. (y -> z) -> (x -> y) -> x -> z
forall (c :: * -> * -> *) y z x.
Category c =>
c y z -> c x y -> c x z
. Row j Z -> [(Z, j)]
forall j x. Row j x -> [(x, j)]
rowxs
vldXZeroFactor :: Statement
vldXZeroFactor :: Statement
vldXZeroFactor = X (Matrix Z) -> (Matrix Z -> Statement) -> Statement
forall x. X x -> (x -> Statement) -> Statement
Forall X (Matrix Z)
xm (\Matrix Z
h -> X AbHom -> (AbHom -> Statement) -> Statement
forall x. X x -> (x -> Statement) -> Statement
Forall (XOrtSite 'From (Matrix Z) -> Matrix Z -> X AbHom
xZeroFactor XOrtSite 'From (Matrix Z)
forall (s :: Site) a. XStandardOrtSite s a => XOrtSite s a
xStandardOrtSite Matrix Z
h)
(\AbHom
f -> AbHom -> Bool
forall a. Additive a => a -> Bool
isZero (AbHom
f AbHom -> AbHom -> AbHom
forall c. Multiplicative c => c -> c -> c
* Matrix Z -> AbHom
zabh Matrix Z
h) Bool -> Message -> Statement
:?> [Parameter] -> Message
Params [String
"h"String -> String -> Parameter
:=Matrix Z -> String
forall a. Show a => a -> String
show Matrix Z
h,String
"f"String -> String -> Parameter
:=AbHom -> String
forall a. Show a => a -> String
show AbHom
f
,String
"fh"String -> String -> Parameter
:=AbHom -> String
forall a. Show a => a -> String
show (AbHom
fAbHom -> AbHom -> AbHom
forall c. Multiplicative c => c -> c -> c
*Matrix Z -> AbHom
zabh Matrix Z
h)
]
)
)
where xm :: X (Matrix Z)
xm = XOrtOrientation (Matrix Z)
-> Orientation (Point (Matrix Z)) -> X (Matrix Z)
forall q. XOrtOrientation q -> Orientation (Point q) -> X q
xoArrow XOrtOrientation (Matrix Z)
xodZ (() -> Dim Z ()
forall p x. (Entity p, p ~ Point x) => p -> Dim x p
dim () Dim Z () -> Exponent (Dim Z ()) -> Dim Z ()
forall f. Exponential f => f -> Exponent f -> f
^ N
Exponent (Dim Z ())
10 Dim Z () -> Dim Z () -> Orientation (Dim Z ())
forall p. p -> p -> Orientation p
:> () -> Dim Z ()
forall p x. (Entity p, p ~ Point x) => p -> Dim x p
dim () Dim Z () -> Exponent (Dim Z ()) -> Dim Z ()
forall f. Exponential f => f -> Exponent f -> f
^ N
Exponent (Dim Z ())
8)
xecCokernelDiagramFreeAbHom
:: XOrtSite From (Matrix Z)
-> CokernelDiagrammatic DiagramFree N1 AbHom
-> X (CokernelConic Cone DiagramFree N1 AbHom)
xecCokernelDiagramFreeAbHom :: XOrtSite 'From (Matrix Z)
-> DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
-> X (Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom)
xecCokernelDiagramFreeAbHom XOrtSite 'From (Matrix Z)
xFrom DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
d = XOrtSite 'From (Matrix Z) -> Matrix Z -> X AbHom
xZeroFactor XOrtSite 'From (Matrix Z)
xFrom Matrix Z
hz X AbHom
-> (AbHom
-> X (Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom))
-> X (Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom)
forall a b. X a -> (a -> X b) -> X b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
-> X (Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom)
forall a. a -> X a
forall (m :: * -> *) a. Monad m => a -> m a
return (Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
-> X (Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom))
-> (AbHom
-> Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom)
-> AbHom
-> X (Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom)
forall y z x. (y -> z) -> (x -> y) -> x -> z
forall (c :: * -> * -> *) y z x.
Category c =>
c y z -> c x y -> c x z
. DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
-> AbHom
-> Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
forall a (d :: DiagramType -> N' -> N' -> * -> *) (m :: N').
Distributive a =>
d ('Parallel 'RightToLeft) N2 m a
-> a -> Cone Dst 'Injective d ('Parallel 'RightToLeft) N2 m a
ConeCokernel DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
d where
DiagramParallelRL Point AbHom
_ Point AbHom
_ (AbHom
h:|FinList n1 AbHom
Nil) = DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
-> Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
forall (t :: DiagramType) (n :: N') (m :: N') x.
DiagramFree t n m x -> Diagram t n m x
forall (d :: DiagramType -> N' -> N' -> * -> *) (t :: DiagramType)
(n :: N') (m :: N') x.
Diagrammatic d =>
d t n m x -> Diagram t n m x
diagram DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
d
hz :: Matrix Z
hz = AbHom -> Matrix Z
abhz AbHom
h
xecAbhCokernelsFreeDgmLftFreeG :: XEligibleConeG
ConeLiftable Dst Injective DiagramFree (Parallel RightToLeft) N2 N1 AbHom
xecAbhCokernelsFreeDgmLftFreeG :: XEligibleConeG
ConeLiftable
Dst
'Injective
DiagramFree
('Parallel 'RightToLeft)
N2
N1
AbHom
xecAbhCokernelsFreeDgmLftFreeG
= (CokernelG ConeLiftable DiagramFree N1 AbHom
-> X (Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom))
-> XEligibleConeG
ConeLiftable
Dst
'Injective
DiagramFree
('Parallel 'RightToLeft)
N2
N1
AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
(LimesG c s p d t n m x -> X (Cone s p d t n m x))
-> XEligibleConeG c s p d t n m x
XEligibleConeG (XOrtSite 'From (Matrix Z)
-> DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
-> X (Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom)
xecCokernelDiagramFreeAbHom XOrtSite 'From (Matrix Z)
forall (s :: Site) a. XStandardOrtSite s a => XOrtSite s a
xStandardOrtSite (DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
-> X (Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom))
-> (CokernelG ConeLiftable DiagramFree N1 AbHom
-> DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom)
-> CokernelG ConeLiftable DiagramFree N1 AbHom
-> X (Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom)
forall y z x. (y -> z) -> (x -> y) -> x -> z
forall (c :: * -> * -> *) y z x.
Category c =>
c y z -> c x y -> c x z
. CokernelG ConeLiftable DiagramFree N1 AbHom
-> DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
Conic c =>
LimesG c s p d t n m x -> d t n m x
universalDiagram)
xecfAbhCokernelsFreeDgmLftFreeG :: XEligibleConeFactorG
ConeLiftable Dst Injective DiagramFree (Parallel RightToLeft) N2 N1 AbHom
xecfAbhCokernelsFreeDgmLftFreeG :: XEligibleConeFactorG
ConeLiftable
Dst
'Injective
DiagramFree
('Parallel 'RightToLeft)
N2
N1
AbHom
xecfAbhCokernelsFreeDgmLftFreeG = XOrtSite 'From AbHom
-> XEligibleConeFactorG
ConeLiftable
Dst
(ToPerspective 'From)
DiagramFree
('Parallel 'RightToLeft)
N2
N1
AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
(r :: Site) x s (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N').
Conic c =>
XOrtSite r x
-> XEligibleConeFactorG c s (ToPerspective r) d t n m x
xecfOrtSite (XOrtSite 'From AbHom
forall (s :: Site) a. XStandardOrtSite s a => XOrtSite s a
xStandardOrtSite :: XOrtSite From AbHom)
xdgAbhCokernelsFreeDgmLftFreeG :: X (DiagramFree (Parallel RightToLeft) N2 N1 AbHom)
xdgAbhCokernelsFreeDgmLftFreeG :: X (DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom)
xdgAbhCokernelsFreeDgmLftFreeG = X (Matrix Z)
-> X (DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom)
xCokernelDiagramFree X (Matrix Z)
forall x. XStandard x => X x
xStandard
prpAbhCokernelsFreeDgmLftFreeG :: Statement
prpAbhCokernelsFreeDgmLftFreeG :: Statement
prpAbhCokernelsFreeDgmLftFreeG
= XEligibleConeG
ConeLiftable
Dst
'Injective
DiagramFree
('Parallel 'RightToLeft)
N2
N1
AbHom
-> XEligibleConeFactorG
ConeLiftable
Dst
'Injective
DiagramFree
('Parallel 'RightToLeft)
N2
N1
AbHom
-> X (DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom)
-> CokernelsG ConeLiftable DiagramFree N1 AbHom
-> Statement
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
(d :: DiagramType -> N' -> N' -> * -> *) s (p :: Perspective)
(t :: DiagramType) (n :: N') (m :: N') x.
(Conic c, Diagrammatic d, Show (c s p d t n m x),
Validable (c s p d t n m x), Entity (d t n m x), Entity x) =>
XEligibleConeG c s p d t n m x
-> XEligibleConeFactorG c s p d t n m x
-> X (d t n m x)
-> LimitsG c s p d t n m x
-> Statement
prpLimitsG
XEligibleConeG
ConeLiftable
Dst
'Injective
DiagramFree
('Parallel 'RightToLeft)
N2
N1
AbHom
xecAbhCokernelsFreeDgmLftFreeG
XEligibleConeFactorG
ConeLiftable
Dst
'Injective
DiagramFree
('Parallel 'RightToLeft)
N2
N1
AbHom
xecfAbhCokernelsFreeDgmLftFreeG
X (DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom)
xdgAbhCokernelsFreeDgmLftFreeG
CokernelsG ConeLiftable DiagramFree N1 AbHom
abhCokernelsFreeDgmLftFreeG
abgIsFree :: AbGroup -> Bool
abgIsFree :: AbGroup -> Bool
abgIsFree AbGroup
g = case N -> SomeNatural
someNatural (N -> SomeNatural) -> N -> SomeNatural
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ AbGroup -> N
forall x. LengthN x => x -> N
lengthN AbGroup
g of SomeNatural W n
k -> Free n AbHom -> AbGroup -> Bool
forall (k :: N'). Attestable k => Free k AbHom -> AbGroup -> Bool
isFree' (W n -> Free n AbHom
forall (k :: N') c. Any k -> Free k c
Free W n
k) AbGroup
g
where
isFree' :: Attestable k => Free k AbHom -> AbGroup -> Bool
isFree' :: forall (k :: N'). Attestable k => Free k AbHom -> AbGroup -> Bool
isFree' = Free k AbHom -> Point AbHom -> Bool
Free k AbHom -> AbGroup -> Bool
forall (k :: N') c.
Sliced (Free k) c =>
Free k c -> Point c -> Bool
isFree
dstCokerDgmFrLft :: Int -> IO ()
dstCokerDgmFrLft :: Int -> IO ()
dstCokerDgmFrLft Int
n = ((Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom,
AbHom)
-> [String])
-> Int
-> X (Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom,
AbHom)
-> IO ()
forall x. (x -> [String]) -> Int -> X x -> IO ()
putDstr (Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom,
AbHom)
-> [String]
forall {a} {a}
{c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *}
{d :: DiagramType -> N' -> N' -> * -> *} {n :: N'}.
(Point a ~ AbGroup, Point a ~ AbGroup, Conic c, Oriented a,
Oriented a, Additive a, Additive a) =>
(CokernelConic c d n a, a) -> [String]
asp Int
n (X (Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom,
AbHom)
-> IO ())
-> X (Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom,
AbHom)
-> IO ()
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ X (X (Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom,
AbHom))
-> X (Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom,
AbHom)
forall (m :: * -> *) a. Monad m => m (m a) -> m a
join (X (X (Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom,
AbHom))
-> X (Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom,
AbHom))
-> X (X (Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom,
AbHom))
-> X (Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom,
AbHom)
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ ((DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
-> X (Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom,
AbHom))
-> X (DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom)
-> X (X (Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom,
AbHom))
forall (h :: * -> * -> *) (f :: * -> *) x y.
Applicative1 h f =>
h x y -> f x -> f y
amap1 (XEligibleConeFactorG
ConeLiftable
Dst
'Injective
DiagramFree
('Parallel 'RightToLeft)
N2
N1
AbHom
-> CokernelG ConeLiftable DiagramFree N1 AbHom
-> X (Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom,
AbHom)
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
XEligibleConeFactorG c s p d t n m x
-> LimesG c s p d t n m x -> X (Cone s p d t n m x, x)
xecf XEligibleConeFactorG
ConeLiftable
Dst
'Injective
DiagramFree
('Parallel 'RightToLeft)
N2
N1
AbHom
xe (CokernelG ConeLiftable DiagramFree N1 AbHom
-> X (Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom,
AbHom))
-> (DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
-> CokernelG ConeLiftable DiagramFree N1 AbHom)
-> DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
-> X (Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom,
AbHom)
forall y z x. (y -> z) -> (x -> y) -> x -> z
forall (c :: * -> * -> *) y z x.
Category c =>
c y z -> c x y -> c x z
. CokernelsG ConeLiftable DiagramFree N1 AbHom
-> DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
-> CokernelG ConeLiftable DiagramFree N1 AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
LimitsG c s p d t n m x -> d t n m x -> LimesG c s p d t n m x
limes CokernelsG ConeLiftable DiagramFree N1 AbHom
abhCokernelsFreeDgmLftFreeG) X (DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom)
xdg)
where
asp :: (CokernelConic c d n a, a) -> [String]
asp (CokernelConic c d n a
c,a
x) = [ AbGroup -> String
sf (a -> Point a
forall q. Oriented q => q -> Point q
start a
x), a -> String
forall {a}. Additive a => a -> String
sz a
x
, AbGroup -> String
sf (a -> Point a
forall q. Oriented q => q -> Point q
end a
f), a -> String
forall {a}. Additive a => a -> String
sz a
f
]
where f :: a
f = CokernelConic c d n a -> a
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
(d :: DiagramType -> N' -> N' -> * -> *) (n :: N') x.
Conic c =>
CokernelConic c d n x -> x
cokernelFactor CokernelConic c d n a
c
sf :: AbGroup -> String
sf AbGroup
g = if AbGroup -> Bool
abgIsFree AbGroup
g then String
"free" else String
"cycl"
sz :: a -> String
sz a
f = if a -> Bool
forall a. Additive a => a -> Bool
isZero a
f then String
"0" else String
"f"
xdg :: X (DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom)
xdg = X (DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom)
xdgAbhCokernelsFreeDgmLftFreeG
xe :: XEligibleConeFactorG
ConeLiftable
Dst
'Injective
DiagramFree
('Parallel 'RightToLeft)
N2
N1
AbHom
xe = XEligibleConeFactorG
ConeLiftable
Dst
'Injective
DiagramFree
('Parallel 'RightToLeft)
N2
N1
AbHom
xecfAbhCokernelsFreeDgmLftFreeG
abhCokernelFreeTo'G :: Attestable k
=> SliceDiagram (Free k) (Parallel RightToLeft) N2 N1 AbHom
-> CokernelG ConeLiftable (SliceDiagram (Free k)) N1 AbHom
abhCokernelFreeTo'G :: forall (k :: N').
Attestable k =>
SliceDiagram (Free k) ('Parallel 'RightToLeft) N2 N1 AbHom
-> CokernelG ConeLiftable (SliceDiagram (Free k)) N1 AbHom
abhCokernelFreeTo'G hDgm :: SliceDiagram (Free k) ('Parallel 'RightToLeft) N2 N1 AbHom
hDgm@(SliceDiagramCokernel (SliceTo Free k AbHom
k AbHom
h)) = ConeLiftable
Dst
'Injective
(SliceDiagram (Free k))
('Parallel 'RightToLeft)
N2
N1
AbHom
-> (Cone
Dst
'Injective
(SliceDiagram (Free k))
('Parallel 'RightToLeft)
N2
N1
AbHom
-> AbHom)
-> LimesG
ConeLiftable
Dst
'Injective
(SliceDiagram (Free k))
('Parallel 'RightToLeft)
N2
N1
AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (d :: DiagramType -> N' -> N' -> * -> *) (t :: DiagramType)
(n :: N') (m :: N') x.
c s 'Injective d t n m x
-> (Cone s 'Injective d t n m x -> x)
-> LimesG c s 'Injective d t n m x
LimesInjective ConeLiftable
Dst
'Injective
(SliceDiagram (Free k))
('Parallel 'RightToLeft)
N2
N1
AbHom
hCoker Cone
Dst
'Injective
(SliceDiagram (Free k))
('Parallel 'RightToLeft)
N2
N1
AbHom
-> AbHom
hUniv where
h' :: AbHom
h' = AbHomFree (Matrix Z) AbHom -> Matrix Z -> AbHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
amap AbHomFree (Matrix Z) AbHom
FreeAbHom (AbHomFree AbHom (Matrix Z) -> AbHom -> Matrix Z
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
amap AbHomFree AbHom (Matrix Z)
AbHomFree AbHom
h)
h'Dgm :: DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
h'Dgm = case N -> SomeNatural
someNatural (AbGroup -> N
forall x. LengthN x => x -> N
lengthN (AbGroup -> N) -> AbGroup -> N
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ AbHom -> Point AbHom
forall q. Oriented q => q -> Point q
start AbHom
h') of
SomeNatural W n
k' -> FinList N2 (SomeFree AbHom)
-> Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
-> DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
forall (t :: DiagramType) (n :: N') (m :: N') a.
FinList n (SomeFree a) -> Diagram t n m a -> DiagramFree t n m a
DiagramFree FinList (N1 + 1) (SomeFree AbHom)
FinList N2 (SomeFree AbHom)
ks (AbHom -> Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
forall x. Oriented x => x -> CokernelDiagram N1 x
cokernelDiagram AbHom
h') where
ks :: FinList (N1 + 1) (SomeFree AbHom)
ks = Free k AbHom -> SomeFree AbHom
forall (k :: N') c.
(Attestable k, Sliced (Free k) c) =>
Free k c -> SomeFree c
SomeFree Free k AbHom
kSomeFree AbHom
-> FinList N1 (SomeFree AbHom) -> FinList (N1 + 1) (SomeFree AbHom)
forall a (n1 :: N'). a -> FinList n1 a -> FinList (n1 + 1) a
:|Free n AbHom -> SomeFree AbHom
forall (k :: N') c.
(Attestable k, Sliced (Free k) c) =>
Free k c -> SomeFree c
SomeFree (W n -> Free n AbHom
forall (k :: N') c. Any k -> Free k c
Free W n
k')SomeFree AbHom
-> FinList N0 (SomeFree AbHom) -> FinList (N0 + 1) (SomeFree AbHom)
forall a (n1 :: N'). a -> FinList n1 a -> FinList (n1 + 1) a
:|FinList N0 (SomeFree AbHom)
forall a. FinList N0 a
Nil
LimesInjective ConeLiftable
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
h'Coker Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
-> AbHom
h'Univ = CokernelsG ConeLiftable DiagramFree N1 AbHom
-> DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
-> CokernelG ConeLiftable DiagramFree N1 AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
LimitsG c s p d t n m x -> d t n m x -> LimesG c s p d t n m x
limes CokernelsG ConeLiftable DiagramFree N1 AbHom
abhCokernelsFreeDgmLftFreeG DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
h'Dgm
ConeCokernelLiftable Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
h'Cone LiftableFree 'Injective AbHom
h'lft = ConeLiftable
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
h'Coker
hCoker :: ConeLiftable
Dst
'Injective
(SliceDiagram (Free k))
('Parallel 'RightToLeft)
N2
N1
AbHom
hCoker = Cone
Dst
'Injective
(SliceDiagram (Free k))
('Parallel 'RightToLeft)
N2
N1
AbHom
-> LiftableFree 'Injective AbHom
-> ConeLiftable
Dst
'Injective
(SliceDiagram (Free k))
('Parallel 'RightToLeft)
N2
N1
AbHom
forall (d :: DiagramType -> N' -> N' -> * -> *) x.
CokernelConic Cone d N1 x
-> LiftableFree 'Injective x
-> ConeLiftable Dst 'Injective d ('Parallel 'RightToLeft) N2 N1 x
ConeCokernelLiftable (SliceDiagram (Free k) ('Parallel 'RightToLeft) N2 N1 AbHom
-> AbHom
-> Cone
Dst
'Injective
(SliceDiagram (Free k))
('Parallel 'RightToLeft)
N2
N1
AbHom
forall a (d :: DiagramType -> N' -> N' -> * -> *) (m :: N').
Distributive a =>
d ('Parallel 'RightToLeft) N2 m a
-> a -> Cone Dst 'Injective d ('Parallel 'RightToLeft) N2 m a
ConeCokernel SliceDiagram (Free k) ('Parallel 'RightToLeft) N2 N1 AbHom
hDgm (Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
-> AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
(d :: DiagramType -> N' -> N' -> * -> *) (n :: N') x.
Conic c =>
CokernelConic c d n x -> x
cokernelFactor Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
h'Cone)) LiftableFree 'Injective AbHom
h'lft
hUniv :: Cone
Dst
'Injective
(SliceDiagram (Free k))
('Parallel 'RightToLeft)
N2
N1
AbHom
-> AbHom
hUniv (ConeCokernel SliceDiagram (Free k) ('Parallel 'RightToLeft) N2 N1 AbHom
_ AbHom
x) = Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
-> AbHom
h'Univ (DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
-> AbHom
-> Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
forall a (d :: DiagramType -> N' -> N' -> * -> *) (m :: N').
Distributive a =>
d ('Parallel 'RightToLeft) N2 m a
-> a -> Cone Dst 'Injective d ('Parallel 'RightToLeft) N2 m a
ConeCokernel DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
h'Dgm AbHom
x)
abhCokernelsFreeTo'G :: Attestable k => CokernelsG ConeLiftable (SliceDiagram (Free k)) N1 AbHom
abhCokernelsFreeTo'G :: forall (k :: N').
Attestable k =>
CokernelsG ConeLiftable (SliceDiagram (Free k)) N1 AbHom
abhCokernelsFreeTo'G = (SliceDiagram (Free k) ('Parallel 'RightToLeft) N2 N1 AbHom
-> LimesG
ConeLiftable
Dst
'Injective
(SliceDiagram (Free k))
('Parallel 'RightToLeft)
N2
N1
AbHom)
-> LimitsG
ConeLiftable
Dst
'Injective
(SliceDiagram (Free k))
('Parallel 'RightToLeft)
N2
N1
AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
(d t n m x -> LimesG c s p d t n m x) -> LimitsG c s p d t n m x
LimitsG SliceDiagram (Free k) ('Parallel 'RightToLeft) N2 N1 AbHom
-> LimesG
ConeLiftable
Dst
'Injective
(SliceDiagram (Free k))
('Parallel 'RightToLeft)
N2
N1
AbHom
forall (k :: N').
Attestable k =>
SliceDiagram (Free k) ('Parallel 'RightToLeft) N2 N1 AbHom
-> CokernelG ConeLiftable (SliceDiagram (Free k)) N1 AbHom
abhCokernelFreeTo'G
abhCokernelsFreeTo'G' :: Attestable k
=> q k -> CokernelsG ConeLiftable (SliceDiagram (Free k)) N1 AbHom
abhCokernelsFreeTo'G' :: forall (k :: N') (q :: N' -> *).
Attestable k =>
q k -> CokernelsG ConeLiftable (SliceDiagram (Free k)) N1 AbHom
abhCokernelsFreeTo'G' q k
_ = CokernelsG ConeLiftable (SliceDiagram (Free k)) N1 AbHom
forall (k :: N').
Attestable k =>
CokernelsG ConeLiftable (SliceDiagram (Free k)) N1 AbHom
abhCokernelsFreeTo'G
xdgAbhCokernelsFreeTo'G :: Attestable k => X (SliceDiagram (Free k) (Parallel RightToLeft) N2 N1 AbHom)
xdgAbhCokernelsFreeTo'G :: forall (k :: N').
Attestable k =>
X (SliceDiagram (Free k) ('Parallel 'RightToLeft) N2 N1 AbHom)
xdgAbhCokernelsFreeTo'G = (Slice 'To (Free k) AbHom
-> SliceDiagram (Free k) ('Parallel 'RightToLeft) N2 N1 AbHom)
-> X (Slice 'To (Free k) AbHom)
-> X (SliceDiagram (Free k) ('Parallel 'RightToLeft) N2 N1 AbHom)
forall (h :: * -> * -> *) (f :: * -> *) x y.
Applicative1 h f =>
h x y -> f x -> f y
amap1 Slice 'To (Free k) AbHom
-> SliceDiagram (Free k) ('Parallel 'RightToLeft) N2 N1 AbHom
forall (i :: * -> *) x.
Sliced i x =>
Slice 'To i x -> SliceDiagram i ('Parallel 'RightToLeft) N2 N1 x
SliceDiagramCokernel X (Slice 'To (Free k) AbHom)
forall x. XStandard x => X x
xStandard
xecCokernelSliceDiagramAbHom :: XOrtSite From (Matrix Z)
-> CokernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
-> X (CokernelConic Cone (SliceDiagram (Free k)) N1 AbHom)
xecCokernelSliceDiagramAbHom :: forall (k :: N').
XOrtSite 'From (Matrix Z)
-> CokernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
-> X (CokernelConic Cone (SliceDiagram (Free k)) N1 AbHom)
xecCokernelSliceDiagramAbHom XOrtSite 'From (Matrix Z)
xFrom CokernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
d = XOrtSite 'From (Matrix Z) -> Matrix Z -> X AbHom
xZeroFactor XOrtSite 'From (Matrix Z)
xFrom Matrix Z
hz X AbHom
-> (AbHom
-> X (CokernelConic Cone (SliceDiagram (Free k)) N1 AbHom))
-> X (CokernelConic Cone (SliceDiagram (Free k)) N1 AbHom)
forall a b. X a -> (a -> X b) -> X b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= CokernelConic Cone (SliceDiagram (Free k)) N1 AbHom
-> X (CokernelConic Cone (SliceDiagram (Free k)) N1 AbHom)
forall a. a -> X a
forall (m :: * -> *) a. Monad m => a -> m a
return (CokernelConic Cone (SliceDiagram (Free k)) N1 AbHom
-> X (CokernelConic Cone (SliceDiagram (Free k)) N1 AbHom))
-> (AbHom -> CokernelConic Cone (SliceDiagram (Free k)) N1 AbHom)
-> AbHom
-> X (CokernelConic Cone (SliceDiagram (Free k)) N1 AbHom)
forall y z x. (y -> z) -> (x -> y) -> x -> z
forall (c :: * -> * -> *) y z x.
Category c =>
c y z -> c x y -> c x z
. CokernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
-> AbHom -> CokernelConic Cone (SliceDiagram (Free k)) N1 AbHom
forall a (d :: DiagramType -> N' -> N' -> * -> *) (m :: N').
Distributive a =>
d ('Parallel 'RightToLeft) N2 m a
-> a -> Cone Dst 'Injective d ('Parallel 'RightToLeft) N2 m a
ConeCokernel CokernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
d where
SliceDiagramCokernel (SliceTo Free k AbHom
_ AbHom
h) = CokernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
d
hz :: Matrix Z
hz = AbHomFree AbHom (Matrix Z) -> AbHom -> Matrix Z
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
amap AbHomFree AbHom (Matrix Z)
AbHomFree AbHom
h
vldXecCokernelSliceDiagramAbHom :: N -> Statement
vldXecCokernelSliceDiagramAbHom :: N -> Statement
vldXecCokernelSliceDiagramAbHom N
k = case N -> SomeNatural
someNatural N
k of
SomeNatural W n
k' -> X (SliceDiagram (Free n) ('Parallel 'RightToLeft) N2 N1 AbHom)
-> (SliceDiagram (Free n) ('Parallel 'RightToLeft) N2 N1 AbHom
-> Statement)
-> Statement
forall x. X x -> (x -> Statement) -> Statement
Forall (W n
-> X (SliceDiagram (Free n) ('Parallel 'RightToLeft) N2 N1 AbHom)
forall (k :: N') (q :: N' -> *).
Attestable k =>
q k
-> X (SliceDiagram (Free k) ('Parallel 'RightToLeft) N2 N1 AbHom)
xsdg W n
k')
(\SliceDiagram (Free n) ('Parallel 'RightToLeft) N2 N1 AbHom
d -> X (CokernelConic Cone (SliceDiagram (Free n)) N1 AbHom)
-> (CokernelConic Cone (SliceDiagram (Free n)) N1 AbHom
-> Statement)
-> Statement
forall x. X x -> (x -> Statement) -> Statement
Forall (XOrtSite 'From (Matrix Z)
-> SliceDiagram (Free n) ('Parallel 'RightToLeft) N2 N1 AbHom
-> X (CokernelConic Cone (SliceDiagram (Free n)) N1 AbHom)
forall (k :: N').
XOrtSite 'From (Matrix Z)
-> CokernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
-> X (CokernelConic Cone (SliceDiagram (Free k)) N1 AbHom)
xecCokernelSliceDiagramAbHom XOrtSite 'From (Matrix Z)
forall (s :: Site) a. XStandardOrtSite s a => XOrtSite s a
xStandardOrtSite SliceDiagram (Free n) ('Parallel 'RightToLeft) N2 N1 AbHom
d) CokernelConic Cone (SliceDiagram (Free n)) N1 AbHom -> Statement
forall a. Validable a => a -> Statement
valid
)
where
xsdg :: Attestable k => q k -> X (SliceDiagram (Free k) (Parallel RightToLeft) N2 N1 AbHom)
xsdg :: forall (k :: N') (q :: N' -> *).
Attestable k =>
q k
-> X (SliceDiagram (Free k) ('Parallel 'RightToLeft) N2 N1 AbHom)
xsdg q k
_ = X (SliceDiagram (Free k) ('Parallel 'RightToLeft) N2 N1 AbHom)
forall (k :: N').
Attestable k =>
X (SliceDiagram (Free k) ('Parallel 'RightToLeft) N2 N1 AbHom)
xdgAbhCokernelsFreeTo'G
xecAbhCokernelsFreeTo'G :: XEligibleConeG
ConeLiftable Dst Injective (SliceDiagram (Free k)) (Parallel RightToLeft) N2 N1 AbHom
xecAbhCokernelsFreeTo'G :: forall (k :: N').
XEligibleConeG
ConeLiftable
Dst
'Injective
(SliceDiagram (Free k))
('Parallel 'RightToLeft)
N2
N1
AbHom
xecAbhCokernelsFreeTo'G
= (LimesG
ConeLiftable
Dst
'Injective
(SliceDiagram (Free k))
('Parallel 'RightToLeft)
N2
N1
AbHom
-> X (Cone
Dst
'Injective
(SliceDiagram (Free k))
('Parallel 'RightToLeft)
N2
N1
AbHom))
-> XEligibleConeG
ConeLiftable
Dst
'Injective
(SliceDiagram (Free k))
('Parallel 'RightToLeft)
N2
N1
AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
(LimesG c s p d t n m x -> X (Cone s p d t n m x))
-> XEligibleConeG c s p d t n m x
XEligibleConeG (XOrtSite 'From (Matrix Z)
-> CokernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
-> X (Cone
Dst
'Injective
(SliceDiagram (Free k))
('Parallel 'RightToLeft)
N2
N1
AbHom)
forall (k :: N').
XOrtSite 'From (Matrix Z)
-> CokernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
-> X (CokernelConic Cone (SliceDiagram (Free k)) N1 AbHom)
xecCokernelSliceDiagramAbHom XOrtSite 'From (Matrix Z)
forall (s :: Site) a. XStandardOrtSite s a => XOrtSite s a
xStandardOrtSite (CokernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
-> X (Cone
Dst
'Injective
(SliceDiagram (Free k))
('Parallel 'RightToLeft)
N2
N1
AbHom))
-> (LimesG
ConeLiftable
Dst
'Injective
(SliceDiagram (Free k))
('Parallel 'RightToLeft)
N2
N1
AbHom
-> CokernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom)
-> LimesG
ConeLiftable
Dst
'Injective
(SliceDiagram (Free k))
('Parallel 'RightToLeft)
N2
N1
AbHom
-> X (Cone
Dst
'Injective
(SliceDiagram (Free k))
('Parallel 'RightToLeft)
N2
N1
AbHom)
forall y z x. (y -> z) -> (x -> y) -> x -> z
forall (c :: * -> * -> *) y z x.
Category c =>
c y z -> c x y -> c x z
. LimesG
ConeLiftable
Dst
'Injective
(SliceDiagram (Free k))
('Parallel 'RightToLeft)
N2
N1
AbHom
-> CokernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
Conic c =>
LimesG c s p d t n m x -> d t n m x
universalDiagram)
xecfAbhCokernelsFreeTo'G :: XEligibleConeFactorG
ConeLiftable Dst Injective (SliceDiagram (Free k)) (Parallel RightToLeft) N2 N1 AbHom
xecfAbhCokernelsFreeTo'G :: forall (k :: N').
XEligibleConeFactorG
ConeLiftable
Dst
'Injective
(SliceDiagram (Free k))
('Parallel 'RightToLeft)
N2
N1
AbHom
xecfAbhCokernelsFreeTo'G = XOrtSite 'From AbHom
-> XEligibleConeFactorG
ConeLiftable
Dst
(ToPerspective 'From)
(SliceDiagram (Free k))
('Parallel 'RightToLeft)
N2
N1
AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
(r :: Site) x s (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N').
Conic c =>
XOrtSite r x
-> XEligibleConeFactorG c s (ToPerspective r) d t n m x
xecfOrtSite (XOrtSite 'From AbHom
forall (s :: Site) a. XStandardOrtSite s a => XOrtSite s a
xStandardOrtSite :: XOrtSite From AbHom)
prpAbhCokernelsFreeTo'G :: N -> Statement
prpAbhCokernelsFreeTo'G :: N -> Statement
prpAbhCokernelsFreeTo'G N
k = case N -> SomeNatural
someNatural N
k of
SomeNatural W n
k' -> XEligibleConeG
ConeLiftable
Dst
'Injective
(SliceDiagram (Free n))
('Parallel 'RightToLeft)
N2
N1
AbHom
-> XEligibleConeFactorG
ConeLiftable
Dst
'Injective
(SliceDiagram (Free n))
('Parallel 'RightToLeft)
N2
N1
AbHom
-> X (SliceDiagram (Free n) ('Parallel 'RightToLeft) N2 N1 AbHom)
-> LimitsG
ConeLiftable
Dst
'Injective
(SliceDiagram (Free n))
('Parallel 'RightToLeft)
N2
N1
AbHom
-> Statement
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
(d :: DiagramType -> N' -> N' -> * -> *) s (p :: Perspective)
(t :: DiagramType) (n :: N') (m :: N') x.
(Conic c, Diagrammatic d, Show (c s p d t n m x),
Validable (c s p d t n m x), Entity (d t n m x), Entity x) =>
XEligibleConeG c s p d t n m x
-> XEligibleConeFactorG c s p d t n m x
-> X (d t n m x)
-> LimitsG c s p d t n m x
-> Statement
prpLimitsG
XEligibleConeG
ConeLiftable
Dst
'Injective
(SliceDiagram (Free n))
('Parallel 'RightToLeft)
N2
N1
AbHom
forall (k :: N').
XEligibleConeG
ConeLiftable
Dst
'Injective
(SliceDiagram (Free k))
('Parallel 'RightToLeft)
N2
N1
AbHom
xecAbhCokernelsFreeTo'G
XEligibleConeFactorG
ConeLiftable
Dst
'Injective
(SliceDiagram (Free n))
('Parallel 'RightToLeft)
N2
N1
AbHom
forall (k :: N').
XEligibleConeFactorG
ConeLiftable
Dst
'Injective
(SliceDiagram (Free k))
('Parallel 'RightToLeft)
N2
N1
AbHom
xecfAbhCokernelsFreeTo'G
X (SliceDiagram (Free n) ('Parallel 'RightToLeft) N2 N1 AbHom)
forall (k :: N').
Attestable k =>
X (SliceDiagram (Free k) ('Parallel 'RightToLeft) N2 N1 AbHom)
xdgAbhCokernelsFreeTo'G
(W n
-> LimitsG
ConeLiftable
Dst
'Injective
(SliceDiagram (Free n))
('Parallel 'RightToLeft)
N2
N1
AbHom
forall (k :: N') (q :: N' -> *).
Attestable k =>
q k -> CokernelsG ConeLiftable (SliceDiagram (Free k)) N1 AbHom
abhCokernelsFreeTo'G' W n
k')
abhCokernelLiftableSomeFree :: CokernelDiagrammatic SomeFreeSliceDiagram N1 AbHom
-> CokernelG ConeLiftable SomeFreeSliceDiagram N1 AbHom
abhCokernelLiftableSomeFree :: CokernelDiagrammatic SomeFreeSliceDiagram N1 AbHom
-> CokernelG ConeLiftable SomeFreeSliceDiagram N1 AbHom
abhCokernelLiftableSomeFree d :: CokernelDiagrammatic SomeFreeSliceDiagram N1 AbHom
d@(SomeFreeSliceCokernel Slice 'To (Free k) AbHom
to) = ConeLiftable
Dst
'Injective
SomeFreeSliceDiagram
('Parallel 'RightToLeft)
N2
N1
AbHom
-> (Cone
Dst
'Injective
SomeFreeSliceDiagram
('Parallel 'RightToLeft)
N2
N1
AbHom
-> AbHom)
-> CokernelG ConeLiftable SomeFreeSliceDiagram N1 AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (d :: DiagramType -> N' -> N' -> * -> *) (t :: DiagramType)
(n :: N') (m :: N') x.
c s 'Injective d t n m x
-> (Cone s 'Injective d t n m x -> x)
-> LimesG c s 'Injective d t n m x
LimesInjective ConeLiftable
Dst
'Injective
SomeFreeSliceDiagram
('Parallel 'RightToLeft)
N2
N1
AbHom
cnLft Cone
Dst
'Injective
SomeFreeSliceDiagram
('Parallel 'RightToLeft)
N2
N1
AbHom
-> AbHom
univLft where
d' :: SliceDiagram (Free k) ('Parallel 'RightToLeft) N2 N1 AbHom
d' = Slice 'To (Free k) AbHom
-> SliceDiagram (Free k) ('Parallel 'RightToLeft) N2 N1 AbHom
forall (i :: * -> *) x.
Sliced i x =>
Slice 'To i x -> SliceDiagram i ('Parallel 'RightToLeft) N2 N1 x
SliceDiagramCokernel Slice 'To (Free k) AbHom
to
LimesInjective ConeLiftable
Dst
'Injective
(SliceDiagram (Free k))
('Parallel 'RightToLeft)
N2
N1
AbHom
cnLft' Cone
Dst
'Injective
(SliceDiagram (Free k))
('Parallel 'RightToLeft)
N2
N1
AbHom
-> AbHom
univLft' = LimitsG
ConeLiftable
Dst
'Injective
(SliceDiagram (Free k))
('Parallel 'RightToLeft)
N2
N1
AbHom
-> SliceDiagram (Free k) ('Parallel 'RightToLeft) N2 N1 AbHom
-> LimesG
ConeLiftable
Dst
'Injective
(SliceDiagram (Free k))
('Parallel 'RightToLeft)
N2
N1
AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
LimitsG c s p d t n m x -> d t n m x -> LimesG c s p d t n m x
limes LimitsG
ConeLiftable
Dst
'Injective
(SliceDiagram (Free k))
('Parallel 'RightToLeft)
N2
N1
AbHom
forall (k :: N').
Attestable k =>
CokernelsG ConeLiftable (SliceDiagram (Free k)) N1 AbHom
abhCokernelsFreeTo'G SliceDiagram (Free k) ('Parallel 'RightToLeft) N2 N1 AbHom
d'
cnLft :: ConeLiftable
Dst
'Injective
SomeFreeSliceDiagram
('Parallel 'RightToLeft)
N2
N1
AbHom
cnLft = Cone
Dst
'Injective
SomeFreeSliceDiagram
('Parallel 'RightToLeft)
N2
N1
AbHom
-> LiftableFree 'Injective AbHom
-> ConeLiftable
Dst
'Injective
SomeFreeSliceDiagram
('Parallel 'RightToLeft)
N2
N1
AbHom
forall (d :: DiagramType -> N' -> N' -> * -> *) x.
CokernelConic Cone d N1 x
-> LiftableFree 'Injective x
-> ConeLiftable Dst 'Injective d ('Parallel 'RightToLeft) N2 N1 x
ConeCokernelLiftable Cone
Dst
'Injective
SomeFreeSliceDiagram
('Parallel 'RightToLeft)
N2
N1
AbHom
cn LiftableFree 'Injective AbHom
lft where
cn :: Cone
Dst
'Injective
SomeFreeSliceDiagram
('Parallel 'RightToLeft)
N2
N1
AbHom
cn = CokernelDiagrammatic SomeFreeSliceDiagram N1 AbHom
-> AbHom
-> Cone
Dst
'Injective
SomeFreeSliceDiagram
('Parallel 'RightToLeft)
N2
N1
AbHom
forall a (d :: DiagramType -> N' -> N' -> * -> *) (m :: N').
Distributive a =>
d ('Parallel 'RightToLeft) N2 m a
-> a -> Cone Dst 'Injective d ('Parallel 'RightToLeft) N2 m a
ConeCokernel CokernelDiagrammatic SomeFreeSliceDiagram N1 AbHom
d (ConeLiftable
Dst
'Injective
(SliceDiagram (Free k))
('Parallel 'RightToLeft)
N2
N1
AbHom
-> AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
(d :: DiagramType -> N' -> N' -> * -> *) (n :: N') x.
Conic c =>
CokernelConic c d n x -> x
cokernelFactor (ConeLiftable
Dst
'Injective
(SliceDiagram (Free k))
('Parallel 'RightToLeft)
N2
N1
AbHom
-> AbHom)
-> ConeLiftable
Dst
'Injective
(SliceDiagram (Free k))
('Parallel 'RightToLeft)
N2
N1
AbHom
-> AbHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ ConeLiftable
Dst
'Injective
(SliceDiagram (Free k))
('Parallel 'RightToLeft)
N2
N1
AbHom
cnLft')
lft :: LiftableFree 'Injective AbHom
lft = ConeLiftable
Dst
'Injective
(SliceDiagram (Free k))
('Parallel 'RightToLeft)
N2
N1
AbHom
-> LiftableFree 'Injective AbHom
forall s (p :: Perspective)
(d :: DiagramType -> N' -> N' -> * -> *) (t :: DiagramType)
(n :: N') (m :: N') x.
ConeLiftable s p d t n m x -> LiftableFree p x
cnLiftable ConeLiftable
Dst
'Injective
(SliceDiagram (Free k))
('Parallel 'RightToLeft)
N2
N1
AbHom
cnLft'
univLft :: Cone
Dst
'Injective
SomeFreeSliceDiagram
('Parallel 'RightToLeft)
N2
N1
AbHom
-> AbHom
univLft (ConeCokernel CokernelDiagrammatic SomeFreeSliceDiagram N1 AbHom
_ AbHom
x) = Cone
Dst
'Injective
(SliceDiagram (Free k))
('Parallel 'RightToLeft)
N2
N1
AbHom
-> AbHom
univLft' (SliceDiagram (Free k) ('Parallel 'RightToLeft) N2 N1 AbHom
-> AbHom
-> Cone
Dst
'Injective
(SliceDiagram (Free k))
('Parallel 'RightToLeft)
N2
N1
AbHom
forall a (d :: DiagramType -> N' -> N' -> * -> *) (m :: N').
Distributive a =>
d ('Parallel 'RightToLeft) N2 m a
-> a -> Cone Dst 'Injective d ('Parallel 'RightToLeft) N2 m a
ConeCokernel SliceDiagram (Free k) ('Parallel 'RightToLeft) N2 N1 AbHom
d' AbHom
x)
abhCokernelsLiftableSomeFree :: CokernelsG ConeLiftable SomeFreeSliceDiagram N1 AbHom
abhCokernelsLiftableSomeFree :: CokernelsG ConeLiftable SomeFreeSliceDiagram N1 AbHom
abhCokernelsLiftableSomeFree = (CokernelDiagrammatic SomeFreeSliceDiagram N1 AbHom
-> CokernelG ConeLiftable SomeFreeSliceDiagram N1 AbHom)
-> CokernelsG ConeLiftable SomeFreeSliceDiagram N1 AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
(d t n m x -> LimesG c s p d t n m x) -> LimitsG c s p d t n m x
LimitsG CokernelDiagrammatic SomeFreeSliceDiagram N1 AbHom
-> CokernelG ConeLiftable SomeFreeSliceDiagram N1 AbHom
abhCokernelLiftableSomeFree
abhPullbackFreeG :: PullbackDiagrammatic DiagramFree n AbHom
-> PullbackG (ConicFreeTip Cone) DiagramFree n AbHom
abhPullbackFreeG :: forall (n :: N').
PullbackDiagrammatic DiagramFree n AbHom
-> PullbackG (ConicFreeTip Cone) DiagramFree n AbHom
abhPullbackFreeG d :: PullbackDiagrammatic DiagramFree n AbHom
d@(DiagramFree FinList (n + 1) (SomeFree AbHom)
_ Diagram ('Star 'To) (n + 1) n AbHom
d') = ConicFreeTip
Cone Mlt 'Projective DiagramFree ('Star 'To) ('S n) n AbHom
-> (Cone Mlt 'Projective DiagramFree ('Star 'To) ('S n) n AbHom
-> AbHom)
-> LimesG
(ConicFreeTip Cone)
Mlt
'Projective
DiagramFree
('Star 'To)
('S n)
n
AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (d :: DiagramType -> N' -> N' -> * -> *) (t :: DiagramType)
(n :: N') (m :: N') x.
c s 'Projective d t n m x
-> (Cone s 'Projective d t n m x -> x)
-> LimesG c s 'Projective d t n m x
LimesProjective ConicFreeTip
Cone Mlt 'Projective DiagramFree ('Star 'To) ('S n) n AbHom
pCn Cone Mlt 'Projective DiagramFree ('Star 'To) ('S n) n AbHom
-> AbHom
pUniv where
freeTip :: PullbackCone n AbHom -> SomeFree AbHom
freeTip :: forall (n :: N'). PullbackCone n AbHom -> SomeFree AbHom
freeTip PullbackCone n AbHom
p = case N -> SomeNatural
someNatural N
n of
SomeNatural W n
n' -> Free n AbHom -> SomeFree AbHom
forall (k :: N') c.
(Attestable k, Sliced (Free k) c) =>
Free k c -> SomeFree c
SomeFree (W n -> Free n AbHom
forall (k :: N') c. Any k -> Free k c
Free W n
n')
where n :: N
n = Point AbHom -> N
forall x. LengthN x => x -> N
lengthN (Point AbHom -> N) -> Point AbHom -> N
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ Cone Mlt 'Projective Diagram ('Star 'To) ('S n) n AbHom
-> Point AbHom
forall s (p :: Perspective)
(d :: DiagramType -> N' -> N' -> * -> *) (t :: DiagramType)
(n :: N') (m :: N') a.
Cone s p d t n m a -> Point a
tip (Cone Mlt 'Projective Diagram ('Star 'To) ('S n) n AbHom
-> Point AbHom)
-> Cone Mlt 'Projective Diagram ('Star 'To) ('S n) n AbHom
-> Point AbHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ PullbackCone n AbHom
Cone Mlt 'Projective Diagram ('Star 'To) ('S n) n AbHom
p
LimesProjective Cone Mlt 'Projective Diagram ('Star 'To) ('S n) n AbHom
pCn' Cone Mlt 'Projective Diagram ('Star 'To) ('S n) n AbHom -> AbHom
pUniv' = Adjunction AbHomFree (Matrix Z) AbHom
-> Limes Mlt 'Projective ('Star 'To) ('S n) n (Matrix Z)
-> LimesG Cone Mlt 'Projective Diagram ('Star 'To) ('S n) n AbHom
forall (h :: * -> * -> *) d c (t :: DiagramType) (n :: N')
(m :: N').
HomMultiplicative h =>
Adjunction h d c
-> Limes Mlt 'Projective t n m d -> Limes Mlt 'Projective t n m c
lmPrjMap Adjunction AbHomFree (Matrix Z) AbHom
adj (Limes Mlt 'Projective ('Star 'To) ('S n) n (Matrix Z)
-> LimesG Cone Mlt 'Projective Diagram ('Star 'To) ('S n) n AbHom)
-> Limes Mlt 'Projective ('Star 'To) ('S n) n (Matrix Z)
-> LimesG Cone Mlt 'Projective Diagram ('Star 'To) ('S n) n AbHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ LimitsG
Cone Mlt 'Projective Diagram ('Star 'To) ('S n) n (Matrix Z)
-> Diagram ('Star 'To) ('S n) n (Matrix Z)
-> Limes Mlt 'Projective ('Star 'To) ('S n) n (Matrix Z)
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
LimitsG c s p d t n m x -> d t n m x -> LimesG c s p d t n m x
limes Pullbacks n (Matrix Z)
LimitsG
Cone Mlt 'Projective Diagram ('Star 'To) ('S n) n (Matrix Z)
forall (n :: N'). Pullbacks n (Matrix Z)
zmxPullbacks (Diagram ('Star 'To) ('S n) n (Matrix Z)
-> Limes Mlt 'Projective ('Star 'To) ('S n) n (Matrix Z))
-> Diagram ('Star 'To) ('S n) n (Matrix Z)
-> Limes Mlt 'Projective ('Star 'To) ('S n) n (Matrix Z)
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ AbHomFree AbHom (Matrix Z)
-> Diagram ('Star 'To) ('S n) n AbHom
-> Diagram ('Star 'To) ('S n) n (Matrix Z)
forall (h :: * -> * -> *) x y (t :: DiagramType) (n :: N')
(m :: N').
HomOriented h =>
h x y -> Diagram t n m x -> Diagram t n m y
dgMap AbHomFree AbHom (Matrix Z)
l Diagram ('Star 'To) (n + 1) n AbHom
Diagram ('Star 'To) ('S n) n AbHom
d' where
adj :: Adjunction AbHomFree (Matrix Z) AbHom
adj = Adjunction AbHomFree (Matrix Z) AbHom
abhFreeAdjunction
Adjunction AbHomFree AbHom (Matrix Z)
l AbHomFree (Matrix Z) AbHom
_ Point AbHom -> AbHom
_ Point (Matrix Z) -> Matrix Z
_ = Adjunction AbHomFree (Matrix Z) AbHom
adj
pCn :: ConicFreeTip
Cone Mlt 'Projective DiagramFree ('Star 'To) ('S n) n AbHom
pCn = case PullbackCone n AbHom -> SomeFree AbHom
forall (n :: N'). PullbackCone n AbHom -> SomeFree AbHom
freeTip PullbackCone n AbHom
Cone Mlt 'Projective Diagram ('Star 'To) ('S n) n AbHom
pCn' of
SomeFree Free k AbHom
k -> Free k AbHom
-> Cone Mlt 'Projective DiagramFree ('Star 'To) ('S n) n AbHom
-> ConicFreeTip
Cone Mlt 'Projective DiagramFree ('Star 'To) ('S n) n AbHom
forall (k :: N') x
(c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N').
(Attestable k, Sliced (Free k) x) =>
Free k x -> c s p d t n m x -> ConicFreeTip c s p d t n m x
ConicFreeTip Free k AbHom
k (DiagramFree ('Star 'To) ('S n) n AbHom
-> Point AbHom
-> FinList ('S n) AbHom
-> Cone Mlt 'Projective DiagramFree ('Star 'To) ('S n) n AbHom
forall a (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N').
Multiplicative a =>
d t n m a
-> Point a -> FinList n a -> Cone Mlt 'Projective d t n m a
ConeProjective PullbackDiagrammatic DiagramFree n AbHom
DiagramFree ('Star 'To) ('S n) n AbHom
d (Cone Mlt 'Projective Diagram ('Star 'To) ('S n) n AbHom
-> Point AbHom
forall s (p :: Perspective)
(d :: DiagramType -> N' -> N' -> * -> *) (t :: DiagramType)
(n :: N') (m :: N') a.
Cone s p d t n m a -> Point a
tip Cone Mlt 'Projective Diagram ('Star 'To) ('S n) n AbHom
pCn') (Cone Mlt 'Projective Diagram ('Star 'To) ('S n) n AbHom
-> FinList ('S n) AbHom
forall (d :: DiagramType -> N' -> N' -> * -> *) s
(p :: Perspective) (t :: DiagramType) (n :: N') (m :: N') a.
Diagrammatic d =>
Cone s p d t n m a -> FinList n a
shell Cone Mlt 'Projective Diagram ('Star 'To) ('S n) n AbHom
pCn'))
pUniv :: Cone Mlt 'Projective DiagramFree ('Star 'To) ('S n) n AbHom
-> AbHom
pUniv (ConeProjective DiagramFree ('Star 'To) ('S n) n AbHom
d Point AbHom
t FinList ('S n) AbHom
x) = Cone Mlt 'Projective Diagram ('Star 'To) ('S n) n AbHom -> AbHom
pUniv' (Diagram ('Star 'To) ('S n) n AbHom
-> Point AbHom
-> FinList ('S n) AbHom
-> Cone Mlt 'Projective Diagram ('Star 'To) ('S n) n AbHom
forall a (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N').
Multiplicative a =>
d t n m a
-> Point a -> FinList n a -> Cone Mlt 'Projective d t n m a
ConeProjective (DiagramFree ('Star 'To) ('S n) n AbHom
-> Diagram ('Star 'To) ('S n) n AbHom
forall (t :: DiagramType) (n :: N') (m :: N') x.
DiagramFree t n m x -> Diagram t n m x
forall (d :: DiagramType -> N' -> N' -> * -> *) (t :: DiagramType)
(n :: N') (m :: N') x.
Diagrammatic d =>
d t n m x -> Diagram t n m x
diagram DiagramFree ('Star 'To) ('S n) n AbHom
d) Point AbHom
t FinList ('S n) AbHom
x)
abhPullbacksFreeG :: PullbacksG (ConicFreeTip Cone) DiagramFree n AbHom
abhPullbacksFreeG :: forall (n :: N').
PullbacksG (ConicFreeTip Cone) DiagramFree n AbHom
abhPullbacksFreeG = (DiagramFree ('Star 'To) ('S n) n AbHom
-> LimesG
(ConicFreeTip Cone)
Mlt
'Projective
DiagramFree
('Star 'To)
('S n)
n
AbHom)
-> LimitsG
(ConicFreeTip Cone)
Mlt
'Projective
DiagramFree
('Star 'To)
('S n)
n
AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
(d t n m x -> LimesG c s p d t n m x) -> LimitsG c s p d t n m x
LimitsG PullbackDiagrammatic DiagramFree n AbHom
-> PullbackG (ConicFreeTip Cone) DiagramFree n AbHom
DiagramFree ('Star 'To) ('S n) n AbHom
-> LimesG
(ConicFreeTip Cone)
Mlt
'Projective
DiagramFree
('Star 'To)
('S n)
n
AbHom
forall (n :: N').
PullbackDiagrammatic DiagramFree n AbHom
-> PullbackG (ConicFreeTip Cone) DiagramFree n AbHom
abhPullbackFreeG
abhPullbacksFreeG' :: q n -> PullbacksG (ConicFreeTip Cone) DiagramFree n AbHom
abhPullbacksFreeG' :: forall (q :: N' -> *) (n :: N').
q n -> PullbacksG (ConicFreeTip Cone) DiagramFree n AbHom
abhPullbacksFreeG' q n
_ = PullbacksG (ConicFreeTip Cone) DiagramFree n AbHom
forall (n :: N').
PullbacksG (ConicFreeTip Cone) DiagramFree n AbHom
abhPullbacksFreeG
xecfAbhPullbacksFreeG :: XEligibleConeFactorG
(ConicFreeTip Cone) Mlt Projective DiagramFree (Star To) (S n) n AbHom
xecfAbhPullbacksFreeG :: forall (n :: N').
XEligibleConeFactorG
(ConicFreeTip Cone)
Mlt
'Projective
DiagramFree
('Star 'To)
('S n)
n
AbHom
xecfAbhPullbacksFreeG = XOrtSite 'To AbHom
-> XEligibleConeFactorG
(ConicFreeTip Cone)
Mlt
(ToPerspective 'To)
DiagramFree
('Star 'To)
('S n)
n
AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
(r :: Site) x s (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N').
Conic c =>
XOrtSite r x
-> XEligibleConeFactorG c s (ToPerspective r) d t n m x
xecfOrtSite (XOrtSite 'To AbHom
forall (s :: Site) a. XStandardOrtSite s a => XOrtSite s a
xStandardOrtSite :: XOrtSite To AbHom)
xecAbhPullbacksFreeG :: XEligibleConeG
(ConicFreeTip Cone) Mlt Projective DiagramFree (Star To) (S n) n AbHom
xecAbhPullbacksFreeG :: forall (n :: N').
XEligibleConeG
(ConicFreeTip Cone)
Mlt
'Projective
DiagramFree
('Star 'To)
('S n)
n
AbHom
xecAbhPullbacksFreeG = XEligibleConeFactorG
(ConicFreeTip Cone)
Mlt
'Projective
DiagramFree
('Star 'To)
('S n)
n
AbHom
-> XEligibleConeG
(ConicFreeTip Cone)
Mlt
'Projective
DiagramFree
('Star 'To)
('S n)
n
AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
XEligibleConeFactorG c s p d t n m x
-> XEligibleConeG c s p d t n m x
xecfEligibleCone XEligibleConeFactorG
(ConicFreeTip Cone)
Mlt
'Projective
DiagramFree
('Star 'To)
('S n)
n
AbHom
forall (n :: N').
XEligibleConeFactorG
(ConicFreeTip Cone)
Mlt
'Projective
DiagramFree
('Star 'To)
('S n)
n
AbHom
xecfAbhPullbacksFreeG
xdgAbhPullbacksFreeG :: Any n -> X (DiagramFree (Star To) (n+1) n AbHom)
xdgAbhPullbacksFreeG :: forall (n :: N').
Any n -> X (DiagramFree ('Star 'To) (n + 1) n AbHom)
xdgAbhPullbacksFreeG Any n
n
= (Diagram ('Star 'To) ('S n) n (Matrix Z)
-> DiagramFree ('Star 'To) ('S n) n AbHom)
-> X (Diagram ('Star 'To) ('S n) n (Matrix Z))
-> X (DiagramFree ('Star 'To) ('S n) n AbHom)
forall (h :: * -> * -> *) (f :: * -> *) x y.
Applicative1 h f =>
h x y -> f x -> f y
amap1 Diagram ('Star 'To) (n + 1) n (Matrix Z)
-> DiagramFree ('Star 'To) (n + 1) n AbHom
Diagram ('Star 'To) ('S n) n (Matrix Z)
-> DiagramFree ('Star 'To) ('S n) n AbHom
forall (n :: N').
Diagram ('Star 'To) (n + 1) n (Matrix Z)
-> DiagramFree ('Star 'To) (n + 1) n AbHom
toDiagramFree (X (Diagram ('Star 'To) ('S n) n (Matrix Z))
-> X (DiagramFree ('Star 'To) ('S n) n AbHom))
-> X (Diagram ('Star 'To) ('S n) n (Matrix Z))
-> X (DiagramFree ('Star 'To) ('S n) n AbHom)
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ (Dual (Dual ('Star 'To)) :~: 'Star 'To)
-> XDiagram ('Star 'To) ('S n) n (Matrix Z)
-> X (Diagram ('Star 'To) ('S n) n (Matrix Z))
forall a (t :: DiagramType) (n :: N') (m :: N').
Oriented a =>
(Dual (Dual t) :~: t) -> XDiagram t n m a -> X (Diagram t n m a)
xDiagram Dual (Dual ('Star 'To)) :~: 'Star 'To
'Star 'To :~: 'Star 'To
forall {k} (a :: k). a :~: a
Refl (Any n
-> XOrtSite 'To (Matrix Z)
-> XDiagram ('Star 'To) (n + 1) n (Matrix Z)
forall (m :: N') a.
Any m -> XOrtSite 'To a -> XDiagram ('Star 'To) (m + 1) m a
XDiagramSink Any n
n (XOrtSite 'To (Matrix Z)
forall (s :: Site) a. XStandardOrtSite s a => XOrtSite s a
xStandardOrtSite :: XOrtSite To (Matrix Z)))
where
toDiagramFree :: Diagram (Star To) (n+1) n (Matrix Z) -> DiagramFree (Star To) (n+1) n AbHom
toDiagramFree :: forall (n :: N').
Diagram ('Star 'To) (n + 1) n (Matrix Z)
-> DiagramFree ('Star 'To) (n + 1) n AbHom
toDiagramFree Diagram ('Star 'To) (n + 1) n (Matrix Z)
zDgm = FinList ('S n) (SomeFree AbHom)
-> Diagram ('Star 'To) ('S n) n AbHom
-> DiagramFree ('Star 'To) ('S n) n AbHom
forall (t :: DiagramType) (n :: N') (m :: N') a.
FinList n (SomeFree a) -> Diagram t n m a -> DiagramFree t n m a
DiagramFree ((Dim Z () -> SomeFree AbHom)
-> FinList ('S n) (Dim Z ()) -> FinList ('S n) (SomeFree AbHom)
forall (h :: * -> * -> *) (f :: * -> *) x y.
Applicative1 h f =>
h x y -> f x -> f y
amap1 Dim Z () -> SomeFree AbHom
sfrAbg (FinList ('S n) (Dim Z ()) -> FinList ('S n) (SomeFree AbHom))
-> FinList ('S n) (Dim Z ()) -> FinList ('S n) (SomeFree AbHom)
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ Diagram ('Star 'To) ('S n) n (Matrix Z)
-> FinList ('S n) (Point (Matrix Z))
forall a (t :: DiagramType) (n :: N') (m :: N').
Oriented a =>
Diagram t n m a -> FinList n (Point a)
dgPoints Diagram ('Star 'To) (n + 1) n (Matrix Z)
Diagram ('Star 'To) ('S n) n (Matrix Z)
zDgm) (AbHomFree (Matrix Z) AbHom
-> Diagram ('Star 'To) ('S n) n (Matrix Z)
-> Diagram ('Star 'To) ('S n) n AbHom
forall (h :: * -> * -> *) x y (t :: DiagramType) (n :: N')
(m :: N').
HomOriented h =>
h x y -> Diagram t n m x -> Diagram t n m y
dgMap AbHomFree (Matrix Z) AbHom
FreeAbHom Diagram ('Star 'To) (n + 1) n (Matrix Z)
Diagram ('Star 'To) ('S n) n (Matrix Z)
zDgm)
sfrAbg :: Dim Z () -> SomeFree AbHom
sfrAbg :: Dim Z () -> SomeFree AbHom
sfrAbg Dim Z ()
d = case N -> SomeNatural
someNatural (N -> SomeNatural) -> N -> SomeNatural
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ Dim Z () -> N
forall x. LengthN x => x -> N
lengthN (Dim Z () -> N) -> Dim Z () -> N
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ Dim Z ()
d of SomeNatural W n
d' -> Free n AbHom -> SomeFree AbHom
forall (k :: N') c.
(Attestable k, Sliced (Free k) c) =>
Free k c -> SomeFree c
SomeFree (W n -> Free n AbHom
forall (k :: N') c. Any k -> Free k c
Free W n
d')
prpAbhPullbacksFreeGN :: N -> Statement
prpAbhPullbacksFreeGN :: N -> Statement
prpAbhPullbacksFreeGN N
n = case N -> SomeNatural
someNatural N
n of
SomeNatural W n
n' -> XEligibleConeG
(ConicFreeTip Cone)
Mlt
'Projective
DiagramFree
('Star 'To)
('S n)
n
AbHom
-> XEligibleConeFactorG
(ConicFreeTip Cone)
Mlt
'Projective
DiagramFree
('Star 'To)
('S n)
n
AbHom
-> X (DiagramFree ('Star 'To) ('S n) n AbHom)
-> LimitsG
(ConicFreeTip Cone)
Mlt
'Projective
DiagramFree
('Star 'To)
('S n)
n
AbHom
-> Statement
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
(d :: DiagramType -> N' -> N' -> * -> *) s (p :: Perspective)
(t :: DiagramType) (n :: N') (m :: N') x.
(Conic c, Diagrammatic d, Show (c s p d t n m x),
Validable (c s p d t n m x), Entity (d t n m x), Entity x) =>
XEligibleConeG c s p d t n m x
-> XEligibleConeFactorG c s p d t n m x
-> X (d t n m x)
-> LimitsG c s p d t n m x
-> Statement
prpLimitsG
XEligibleConeG
(ConicFreeTip Cone)
Mlt
'Projective
DiagramFree
('Star 'To)
('S n)
n
AbHom
forall (n :: N').
XEligibleConeG
(ConicFreeTip Cone)
Mlt
'Projective
DiagramFree
('Star 'To)
('S n)
n
AbHom
xecAbhPullbacksFreeG
XEligibleConeFactorG
(ConicFreeTip Cone)
Mlt
'Projective
DiagramFree
('Star 'To)
('S n)
n
AbHom
forall (n :: N').
XEligibleConeFactorG
(ConicFreeTip Cone)
Mlt
'Projective
DiagramFree
('Star 'To)
('S n)
n
AbHom
xecfAbhPullbacksFreeG
(W n -> X (DiagramFree ('Star 'To) (n + 1) n AbHom)
forall (n :: N').
Any n -> X (DiagramFree ('Star 'To) (n + 1) n AbHom)
xdgAbhPullbacksFreeG W n
n')
PullbacksG (ConicFreeTip Cone) DiagramFree n AbHom
LimitsG
(ConicFreeTip Cone)
Mlt
'Projective
DiagramFree
('Star 'To)
('S n)
n
AbHom
forall (n :: N').
PullbacksG (ConicFreeTip Cone) DiagramFree n AbHom
abhPullbacksFreeG
prpAbhPullbacksFreeG :: Statement
prpAbhPullbacksFreeG :: Statement
prpAbhPullbacksFreeG = X N -> (N -> Statement) -> Statement
forall x. X x -> (x -> Statement) -> Statement
Forall (N -> N -> X N
xNB N
0 N
10) N -> Statement
prpAbhPullbacksFreeGN
abhSplitCy :: AbHom -> [AbHom]
abhSplitCy :: AbHom -> [AbHom]
abhSplitCy (AbHom m :: Matrix ZModHom
m@(Matrix Dim ZModHom (Point ZModHom)
r Dim ZModHom (Point ZModHom)
_ Entries N N ZModHom
_))
= ((Matrix ZModHom, N, N) -> AbHom)
-> [(Matrix ZModHom, N, N)] -> [AbHom]
forall (h :: * -> * -> *) (f :: * -> *) x y.
Applicative1 h f =>
h x y -> f x -> f y
amap1 (\(Matrix ZModHom
m',N
_,N
_) -> Matrix ZModHom -> AbHom
AbHom Matrix ZModHom
m')
([(Matrix ZModHom, N, N)] -> [AbHom])
-> [(Matrix ZModHom, N, N)] -> [AbHom]
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ Entries N N (Matrix ZModHom) -> [(Matrix ZModHom, N, N)]
forall i j x. Entries i j x -> [(x, i, j)]
etsxs
(Entries N N (Matrix ZModHom) -> [(Matrix ZModHom, N, N)])
-> Entries N N (Matrix ZModHom) -> [(Matrix ZModHom, N, N)]
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ Matrix (Matrix ZModHom) -> Entries N N (Matrix ZModHom)
forall x. Matrix x -> Entries N N x
mtxxs
(Matrix (Matrix ZModHom) -> Entries N N (Matrix ZModHom))
-> Matrix (Matrix ZModHom) -> Entries N N (Matrix ZModHom)
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ Matrix ZModHom -> Matrix (Matrix ZModHom)
forall x. Distributive x => Matrix x -> Matrix (Matrix x)
mtxGroupRow
(Matrix ZModHom -> Matrix (Matrix ZModHom))
-> Matrix ZModHom -> Matrix (Matrix ZModHom)
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ (GLT ZModHom -> RowTrafo ZModHom
forall x. GLT x -> RowTrafo x
RowTrafo (Dim ZModHom (Point ZModHom)
-> Dim ZModHom (Point ZModHom) -> Permutation N -> GLT ZModHom
forall x.
Distributive x =>
Dim' x -> Dim' x -> Permutation N -> GLT x
permute Dim ZModHom (Point ZModHom)
Dim ZModHom ZMod
r' Dim ZModHom (Point ZModHom)
r Permutation N
p) RowTrafo ZModHom -> Matrix ZModHom -> Matrix ZModHom
forall f x. Opl f x => f -> x -> x
*> Matrix ZModHom
m)
where (Dim ZModHom ZMod
r',Permutation N
p) = Proxy N
-> (ZMod -> ZMod -> Ordering)
-> (ZMod -> ZMod)
-> Dim ZModHom ZMod
-> (Dim ZModHom ZMod, Permutation N)
forall (p :: * -> *) w.
p N
-> (w -> w -> Ordering)
-> (ZMod -> w)
-> Dim ZModHom ZMod
-> (Dim ZModHom ZMod, Permutation N)
forall (s :: * -> *) i x (p :: * -> *) w.
PermutableSequence s i x =>
p i
-> (w -> w -> Ordering) -> (x -> w) -> s x -> (s x, Permutation i)
permuteBy Proxy N
nProxy ZMod -> ZMod -> Ordering
forall a. Ord a => a -> a -> Ordering
compare ZMod -> ZMod
forall x. x -> x
id Dim ZModHom (Point ZModHom)
Dim ZModHom ZMod
r
abhFreeFromSplitCyG
:: KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
-> SomeFinList (KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom)
abhFreeFromSplitCyG :: forall (k :: N').
KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
-> SomeFinList
(KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom)
abhFreeFromSplitCyG (SliceDiagramKernel (SliceFrom Free k AbHom
k AbHom
h))
= [SliceDiagram (Free k) ('Parallel 'LeftToRight) N2 N1 AbHom]
-> SomeFinList
(SliceDiagram (Free k) ('Parallel 'LeftToRight) N2 N1 AbHom)
forall a. [a] -> SomeFinList a
someFinList ([SliceDiagram (Free k) ('Parallel 'LeftToRight) N2 N1 AbHom]
-> SomeFinList
(SliceDiagram (Free k) ('Parallel 'LeftToRight) N2 N1 AbHom))
-> [SliceDiagram (Free k) ('Parallel 'LeftToRight) N2 N1 AbHom]
-> SomeFinList
(SliceDiagram (Free k) ('Parallel 'LeftToRight) N2 N1 AbHom)
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ (AbHom
-> SliceDiagram (Free k) ('Parallel 'LeftToRight) N2 N1 AbHom)
-> [AbHom]
-> [SliceDiagram (Free k) ('Parallel 'LeftToRight) N2 N1 AbHom]
forall (h :: * -> * -> *) (f :: * -> *) x y.
Applicative1 h f =>
h x y -> f x -> f y
amap1 (Slice 'From (Free k) AbHom
-> SliceDiagram (Free k) ('Parallel 'LeftToRight) N2 N1 AbHom
forall (i :: * -> *) x.
Sliced i x =>
Slice 'From i x -> SliceDiagram i ('Parallel 'LeftToRight) N2 N1 x
SliceDiagramKernel (Slice 'From (Free k) AbHom
-> SliceDiagram (Free k) ('Parallel 'LeftToRight) N2 N1 AbHom)
-> (AbHom -> Slice 'From (Free k) AbHom)
-> AbHom
-> SliceDiagram (Free k) ('Parallel 'LeftToRight) N2 N1 AbHom
forall y z x. (y -> z) -> (x -> y) -> x -> z
forall (c :: * -> * -> *) y z x.
Category c =>
c y z -> c x y -> c x z
. Free k AbHom -> AbHom -> Slice 'From (Free k) AbHom
forall (i :: * -> *) x. i x -> x -> Slice 'From i x
SliceFrom Free k AbHom
k) ([AbHom]
-> [SliceDiagram (Free k) ('Parallel 'LeftToRight) N2 N1 AbHom])
-> [AbHom]
-> [SliceDiagram (Free k) ('Parallel 'LeftToRight) N2 N1 AbHom]
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ AbHom -> [AbHom]
abhSplitCy AbHom
h
abhKernelFreeFromCyG :: Attestable k
=> KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
-> KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
abhKernelFreeFromCyG :: forall (k :: N').
Attestable k =>
KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
-> KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
abhKernelFreeFromCyG s :: KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
s@(SliceDiagramKernel (SliceFrom Free k AbHom
k AbHom
h))
= [(ZMod, N)]
-> LimesG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
hKer ([(ZMod, N)]
-> LimesG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom)
-> [(ZMod, N)]
-> LimesG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ Word N ZMod -> [(ZMod, N)]
forall r a. Word r a -> [(a, r)]
fromWord (Word N ZMod -> [(ZMod, N)]) -> Word N ZMod -> [(ZMod, N)]
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ Dim ZModHom (Point ZModHom) -> Word N (Point ZModHom)
Dim ZModHom ZMod -> Word N ZMod
forall p x. (Entity p, p ~ Point x) => Dim x p -> Word N p
dimwrd (Dim ZModHom ZMod -> Word N ZMod)
-> Dim ZModHom ZMod -> Word N ZMod
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ AbGroup -> Dim ZModHom (Point ZModHom)
AbGroup -> Dim ZModHom ZMod
abgDim (AbGroup -> Dim ZModHom ZMod) -> AbGroup -> Dim ZModHom ZMod
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ AbHom -> Point AbHom
forall q. Oriented q => q -> Point q
end AbHom
h where
freeTip :: KernelCone N1 AbHom -> SomeFree AbHom
freeTip :: Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
-> SomeFree AbHom
freeTip Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
c = case N -> SomeNatural
someNatural (N -> SomeNatural) -> N -> SomeNatural
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ AbGroup -> N
forall x. LengthN x => x -> N
lengthN (AbGroup -> N) -> AbGroup -> N
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
-> Point AbHom
forall s (p :: Perspective)
(d :: DiagramType -> N' -> N' -> * -> *) (t :: DiagramType)
(n :: N') (m :: N') a.
Cone s p d t n m a -> Point a
tip Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
c of SomeNatural W n
k -> Free n AbHom -> SomeFree AbHom
forall (k :: N') c.
(Attestable k, Sliced (Free k) c) =>
Free k c -> SomeFree c
SomeFree (W n -> Free n AbHom
forall (k :: N') c. Any k -> Free k c
Free W n
k)
hKer :: [(ZMod, N)]
-> LimesG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
hKer [] = ConicFreeTip
Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> (Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> AbHom)
-> LimesG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (d :: DiagramType -> N' -> N' -> * -> *) (t :: DiagramType)
(n :: N') (m :: N') x.
c s 'Projective d t n m x
-> (Cone s 'Projective d t n m x -> x)
-> LimesG c s 'Projective d t n m x
LimesProjective (Free k AbHom
-> ConicFreeTip
Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
cft Free k AbHom
k) Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> AbHom
cftUniv where
LimesProjective Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
kCone Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
-> AbHom
kUniv = KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
-> Orientation (Point AbHom)
-> LimesG
Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
forall x (p :: * -> *).
Distributive x =>
p x -> Orientation (Point x) -> Kernel N1 x
kernelZero KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
s (AbHom -> Orientation (Point AbHom)
forall q. Oriented q => q -> Orientation (Point q)
orientation AbHom
h)
cft :: Free k AbHom
-> ConicFreeTip
Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
cft Free k AbHom
k = Free k AbHom
-> Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> ConicFreeTip
Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
forall (k :: N') x
(c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N').
(Attestable k, Sliced (Free k) x) =>
Free k x -> c s p d t n m x -> ConicFreeTip c s p d t n m x
ConicFreeTip Free k AbHom
k (KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
-> AbHom
-> Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
forall a (d :: DiagramType -> N' -> N' -> * -> *) (m :: N').
Distributive a =>
d ('Parallel 'LeftToRight) N2 m a
-> a -> Cone Dst 'Projective d ('Parallel 'LeftToRight) N2 m a
ConeKernel KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
s (Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
-> AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
(d :: DiagramType -> N' -> N' -> * -> *) (n :: N') x.
Conic c =>
KernelConic c d n x -> x
kernelFactor Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
kCone))
cftUniv :: Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> AbHom
cftUniv (ConeKernel KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
d AbHom
x) = Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
-> AbHom
kUniv (Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
-> AbHom
-> Cone
Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
forall a (d :: DiagramType -> N' -> N' -> * -> *) (m :: N').
Distributive a =>
d ('Parallel 'LeftToRight) N2 m a
-> a -> Cone Dst 'Projective d ('Parallel 'LeftToRight) N2 m a
ConeKernel (KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
-> Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
forall (t :: DiagramType) (n :: N') (m :: N') x.
SliceDiagram (Free k) t n m x -> Diagram t n m x
forall (d :: DiagramType -> N' -> N' -> * -> *) (t :: DiagramType)
(n :: N') (m :: N') x.
Diagrammatic d =>
d t n m x -> Diagram t n m x
diagram KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
d) AbHom
x)
hKer [(ZMod N
0,N
_)] = case Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
-> SomeFree AbHom
freeTip Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
kCone of
SomeFree Free k AbHom
k' -> ConicFreeTip
Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> (Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> AbHom)
-> LimesG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (d :: DiagramType -> N' -> N' -> * -> *) (t :: DiagramType)
(n :: N') (m :: N') x.
c s 'Projective d t n m x
-> (Cone s 'Projective d t n m x -> x)
-> LimesG c s 'Projective d t n m x
LimesProjective (Free k AbHom
-> ConicFreeTip
Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
cft Free k AbHom
k') Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> AbHom
cftUniv where
cft :: Free k AbHom
-> ConicFreeTip
Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
cft Free k AbHom
k = Free k AbHom
-> Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> ConicFreeTip
Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
forall (k :: N') x
(c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N').
(Attestable k, Sliced (Free k) x) =>
Free k x -> c s p d t n m x -> ConicFreeTip c s p d t n m x
ConicFreeTip Free k AbHom
k (KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
-> AbHom
-> Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
forall a (d :: DiagramType -> N' -> N' -> * -> *) (m :: N').
Distributive a =>
d ('Parallel 'LeftToRight) N2 m a
-> a -> Cone Dst 'Projective d ('Parallel 'LeftToRight) N2 m a
ConeKernel KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
s (Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
-> AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
(d :: DiagramType -> N' -> N' -> * -> *) (n :: N') x.
Conic c =>
KernelConic c d n x -> x
kernelFactor Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
kCone))
cftUniv :: Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> AbHom
cftUniv (ConeKernel KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
s AbHom
x) = Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
-> AbHom
kUniv (Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
-> AbHom
-> Cone
Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
forall a (d :: DiagramType -> N' -> N' -> * -> *) (m :: N').
Distributive a =>
d ('Parallel 'LeftToRight) N2 m a
-> a -> Cone Dst 'Projective d ('Parallel 'LeftToRight) N2 m a
ConeKernel (KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
-> Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
forall (t :: DiagramType) (n :: N') (m :: N') x.
SliceDiagram (Free k) t n m x -> Diagram t n m x
forall (d :: DiagramType -> N' -> N' -> * -> *) (t :: DiagramType)
(n :: N') (m :: N') x.
Diagrammatic d =>
d t n m x -> Diagram t n m x
diagram KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
s) AbHom
x)
where
LimesProjective Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
kCone Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
-> AbHom
kUniv = Adjunction AbHomFree (Matrix Z) AbHom
-> Limes Dst 'Projective ('Parallel 'LeftToRight) N2 N1 (Matrix Z)
-> LimesG
Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
forall (h :: * -> * -> *) d c (t :: DiagramType) (n :: N')
(m :: N').
HomDistributive h =>
Adjunction h d c
-> Limes Dst 'Projective t n m d -> Limes Dst 'Projective t n m c
lmPrjMapDst Adjunction AbHomFree (Matrix Z) AbHom
adj (Limes Dst 'Projective ('Parallel 'LeftToRight) N2 N1 (Matrix Z)
-> LimesG
Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom)
-> Limes Dst 'Projective ('Parallel 'LeftToRight) N2 N1 (Matrix Z)
-> LimesG
Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ LimitsG
Cone
Dst
'Projective
Diagram
('Parallel 'LeftToRight)
N2
N1
(Matrix Z)
-> Diagram ('Parallel 'LeftToRight) N2 N1 (Matrix Z)
-> Limes Dst 'Projective ('Parallel 'LeftToRight) N2 N1 (Matrix Z)
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
LimitsG c s p d t n m x -> d t n m x -> LimesG c s p d t n m x
limes LimitsG
Cone
Dst
'Projective
Diagram
('Parallel 'LeftToRight)
N2
N1
(Matrix Z)
forall (n :: N'). Kernels n (Matrix Z)
zmxKernels (Diagram ('Parallel 'LeftToRight) N2 N1 (Matrix Z)
-> Limes Dst 'Projective ('Parallel 'LeftToRight) N2 N1 (Matrix Z))
-> Diagram ('Parallel 'LeftToRight) N2 N1 (Matrix Z)
-> Limes Dst 'Projective ('Parallel 'LeftToRight) N2 N1 (Matrix Z)
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ AbHomFree AbHom (Matrix Z)
-> Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
-> Diagram ('Parallel 'LeftToRight) N2 N1 (Matrix Z)
forall (h :: * -> * -> *) x y (t :: DiagramType) (n :: N')
(m :: N').
HomOriented h =>
h x y -> Diagram t n m x -> Diagram t n m y
dgMap AbHomFree AbHom (Matrix Z)
l (KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
-> Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
forall (t :: DiagramType) (n :: N') (m :: N') x.
SliceDiagram (Free k) t n m x -> Diagram t n m x
forall (d :: DiagramType -> N' -> N' -> * -> *) (t :: DiagramType)
(n :: N') (m :: N') x.
Diagrammatic d =>
d t n m x -> Diagram t n m x
diagram KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
s) where
adj :: Adjunction AbHomFree (Matrix Z) AbHom
adj = Adjunction AbHomFree (Matrix Z) AbHom
abhFreeAdjunction
Adjunction AbHomFree AbHom (Matrix Z)
l AbHomFree (Matrix Z) AbHom
_ Point AbHom -> AbHom
_ Point (Matrix Z) -> Matrix Z
_ = Adjunction AbHomFree (Matrix Z) AbHom
adj
hKer [(ZMod N
1,N
_)] = [(ZMod, N)]
-> LimesG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
hKer []
hKer [(ZMod N
c,N
_)] = case Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
-> SomeFree AbHom
freeTip Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
kCone of
SomeFree Free k AbHom
k' -> ConicFreeTip
Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> (Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> AbHom)
-> LimesG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (d :: DiagramType -> N' -> N' -> * -> *) (t :: DiagramType)
(n :: N') (m :: N') x.
c s 'Projective d t n m x
-> (Cone s 'Projective d t n m x -> x)
-> LimesG c s 'Projective d t n m x
LimesProjective (Free k AbHom
-> ConicFreeTip
Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
cft Free k AbHom
k') Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> AbHom
cftUniv where
cft :: Free k AbHom
-> ConicFreeTip
Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
cft Free k AbHom
k = Free k AbHom
-> Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> ConicFreeTip
Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
forall (k :: N') x
(c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N').
(Attestable k, Sliced (Free k) x) =>
Free k x -> c s p d t n m x -> ConicFreeTip c s p d t n m x
ConicFreeTip Free k AbHom
k (KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
-> AbHom
-> Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
forall a (d :: DiagramType -> N' -> N' -> * -> *) (m :: N').
Distributive a =>
d ('Parallel 'LeftToRight) N2 m a
-> a -> Cone Dst 'Projective d ('Parallel 'LeftToRight) N2 m a
ConeKernel KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
s (Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
-> AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
(d :: DiagramType -> N' -> N' -> * -> *) (n :: N') x.
Conic c =>
KernelConic c d n x -> x
kernelFactor Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
kCone))
cftUniv :: Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> AbHom
cftUniv (ConeKernel KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
s AbHom
x) = Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
-> AbHom
kUniv (Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
-> AbHom
-> Cone
Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
forall a (d :: DiagramType -> N' -> N' -> * -> *) (m :: N').
Distributive a =>
d ('Parallel 'LeftToRight) N2 m a
-> a -> Cone Dst 'Projective d ('Parallel 'LeftToRight) N2 m a
ConeKernel (KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
-> Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
forall (t :: DiagramType) (n :: N') (m :: N') x.
SliceDiagram (Free k) t n m x -> Diagram t n m x
forall (d :: DiagramType -> N' -> N' -> * -> *) (t :: DiagramType)
(n :: N') (m :: N') x.
Diagrammatic d =>
d t n m x -> Diagram t n m x
diagram KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
s) AbHom
x)
where
DiagonalForm [Z]
d RowTrafo Z
_ (ColTrafo GLT Z
t) = Matrix Z -> DiagonalForm Z
zmxDiagonalForm (AbHom -> Matrix Z
abhz AbHom
h)
m :: N
m = AbGroup -> N
forall x. LengthN x => x -> N
lengthN (AbHom -> Point AbHom
forall q. Oriented q => q -> Point q
start AbHom
h)
r :: N
r = N
m N -> N -> N
>- [Z] -> N
forall x. LengthN x => x -> N
lengthN [Z]
d
Inv Matrix Z
b Matrix Z
bInv = GLApp (GLT Z) (Inv (Matrix Z)) -> GLT Z -> Inv (Matrix Z)
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
amap GLApp (GLT Z) (Inv (Matrix Z))
forall x1. Distributive x1 => GLApp (GLT x1) (Inv (Matrix x1))
GLTGL GLT Z
t
dm :: Dim Z ()
dm = () -> Dim Z ()
forall p x. (Entity p, p ~ Point x) => p -> Dim x p
dim () Dim Z () -> Exponent (Dim Z ()) -> Dim Z ()
forall f. Exponential f => f -> Exponent f -> f
^ N
Exponent (Dim Z ())
m
kDgm :: Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
kDgm = Point AbHom
-> Point AbHom
-> FinList N1 AbHom
-> Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
forall a (m :: N').
Point a
-> Point a
-> FinList m a
-> Diagram ('Parallel 'LeftToRight) N2 m a
DiagramParallelLR (AbHom -> Point AbHom
forall q. Oriented q => q -> Point q
start AbHom
h) (AbHom -> Point AbHom
forall q. Oriented q => q -> Point q
end AbHom
h) (AbHom
hAbHom -> FinList N0 AbHom -> FinList (N0 + 1) AbHom
forall a (n1 :: N'). a -> FinList n1 a -> FinList (n1 + 1) a
:|FinList N0 AbHom
forall a. FinList N0 a
Nil)
k :: [Z]
k = (Z -> Z) -> [Z] -> [Z]
forall a b. (a -> b) -> [a] -> [b]
map Z -> Z
f [Z]
d [Z] -> [Z] -> [Z]
forall a. [a] -> [a] -> [a]
++ N -> [Z] -> [Z]
forall a. N -> [a] -> [a]
takeN N
r (Z -> [Z]
forall a. a -> [a]
repeat Z
1)
f :: Z -> Z
f Z
d = if N
d' N -> N -> Bool
forall a. Eq a => a -> a -> Bool
== N
0 then Z
1 else N -> Z
forall a b. Embeddable a b => a -> b
inj (N -> N -> N
lcm N
d' N
c) Z -> N -> Z
// N
d' where d' :: N
d' = Z -> N
forall a b. Projectible a b => b -> a
prj (Z -> N -> Z
mod0 Z
d N
c)
kLim :: AbHom
kLim = Matrix Z -> AbHom
zabh (Matrix Z
bMatrix Z -> Matrix Z -> Matrix Z
forall c. Multiplicative c => c -> c -> c
*Dim' Z -> Dim' Z -> [Z] -> Matrix Z
forall x. Additive x => Dim' x -> Dim' x -> [x] -> Matrix x
diagonal Dim Z ()
Dim' Z
dm Dim Z ()
Dim' Z
dm [Z]
k)
kCone :: Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
kCone = Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
-> AbHom
-> Cone
Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
forall a (d :: DiagramType -> N' -> N' -> * -> *) (m :: N').
Distributive a =>
d ('Parallel 'LeftToRight) N2 m a
-> a -> Cone Dst 'Projective d ('Parallel 'LeftToRight) N2 m a
ConeKernel Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
kDgm AbHom
kLim
kUniv :: Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
-> AbHom
kUniv cn :: Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
cn@(ConeKernel Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
_ AbHom
x) = Matrix ZModHom -> AbHom
AbHom (Matrix ZModHom -> AbHom) -> Matrix ZModHom -> AbHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ Dim ZModHom (Point ZModHom)
-> Dim ZModHom (Point ZModHom)
-> Entries N N ZModHom
-> Matrix ZModHom
forall x. Dim' x -> Dim' x -> Entries N N x -> Matrix x
Matrix (CSequence (Point ZModHom) -> Dim ZModHom (Point ZModHom)
forall x. CSequence (Point x) -> Dim x (Point x)
Dim CSequence (Point ZModHom)
ProductSymbol ZMod
e) (CSequence (Point ZModHom) -> Dim ZModHom (Point ZModHom)
forall x. CSequence (Point x) -> Dim x (Point x)
Dim CSequence (Point ZModHom)
ProductSymbol ZMod
sx) Entries N N ZModHom
xs'' where
AbGroup ProductSymbol ZMod
e = AbHom -> Point AbHom
forall q. Oriented q => q -> Point q
end AbHom
kLim
AbGroup ProductSymbol ZMod
sx = Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
-> Point AbHom
forall s (p :: Perspective)
(d :: DiagramType -> N' -> N' -> * -> *) (t :: DiagramType)
(n :: N') (m :: N') a.
Cone s p d t n m a -> Point a
tip Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
cn
Matrix Dim' Z
_ Dim' Z
_ Entries N N Z
xs' = Matrix Z
bInv Matrix Z -> Matrix Z -> Matrix Z
forall c. Multiplicative c => c -> c -> c
* AbHom -> Matrix Z
abhz AbHom
x
xs'' :: Entries N N ZModHom
xs'' = Col N (Row N ZModHom) -> Entries N N ZModHom
forall i j x. Col i (Row j x) -> Entries i j x
crets (Col N (Row N ZModHom) -> Entries N N ZModHom)
-> Col N (Row N ZModHom) -> Entries N N ZModHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ PSequence N (Row N ZModHom) -> Col N (Row N ZModHom)
forall i x. PSequence i x -> Col i x
Col (PSequence N (Row N ZModHom) -> Col N (Row N ZModHom))
-> PSequence N (Row N ZModHom) -> Col N (Row N ZModHom)
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ [(Row N ZModHom, N)] -> PSequence N (Row N ZModHom)
forall i x. [(x, i)] -> PSequence i x
PSequence ([(Row N ZModHom, N)] -> PSequence N (Row N ZModHom))
-> [(Row N ZModHom, N)] -> PSequence N (Row N ZModHom)
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ [(Row N Z, N)] -> [(Z, N)] -> [(Row N ZModHom, N)]
forall i j.
Ord i =>
[(Row j Z, i)] -> [(Z, i)] -> [(Row j ZModHom, i)]
div' (Proxy N -> Col N (Row N Z) -> [(Row N Z, N)]
forall (p :: * -> *). p N -> Col N (Row N Z) -> [(Row N Z, N)]
forall (s :: * -> *) i x (p :: * -> *).
Sequence s i x =>
p i -> s x -> [(x, i)]
list Proxy N
nProxy (Col N (Row N Z) -> [(Row N Z, N)])
-> Col N (Row N Z) -> [(Row N Z, N)]
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ Entries N N Z -> Col N (Row N Z)
forall i j x. Eq i => Entries i j x -> Col i (Row j x)
etscr Entries N N Z
xs') ([Z]
k [Z] -> [N] -> [(Z, N)]
forall a b. [a] -> [b] -> [(a, b)]
`zip` [N
0..])
div' :: Ord i => [(Row j Z,i)] -> [(Z,i)] -> [(Row j ZModHom,i)]
div' :: forall i j.
Ord i =>
[(Row j Z, i)] -> [(Z, i)] -> [(Row j ZModHom, i)]
div' [] [(Z, i)]
_ = []
div' ((Row j Z
rw,i
i):[(Row j Z, i)]
rws') [] = ((Z -> ZModHom) -> Row j Z -> Row j ZModHom
forall (h :: * -> * -> *) (f :: * -> *) x y.
Applicative1 h f =>
h x y -> f x -> f y
amap1 Z -> ZModHom
fromZ Row j Z
rw,i
i)(Row j ZModHom, i) -> [(Row j ZModHom, i)] -> [(Row j ZModHom, i)]
forall a. a -> [a] -> [a]
:[(Row j Z, i)] -> [(Z, i)] -> [(Row j ZModHom, i)]
forall i j.
Ord i =>
[(Row j Z, i)] -> [(Z, i)] -> [(Row j ZModHom, i)]
div' [(Row j Z, i)]
rws' []
div' rws :: [(Row j Z, i)]
rws@((Row j Z
rw,i
i):[(Row j Z, i)]
rws') ((Z
k,i
i'):[(Z, i)]
kis')
| i
i' i -> i -> Bool
forall a. Ord a => a -> a -> Bool
< i
i = [(Row j Z, i)] -> [(Z, i)] -> [(Row j ZModHom, i)]
forall i j.
Ord i =>
[(Row j Z, i)] -> [(Z, i)] -> [(Row j ZModHom, i)]
div' [(Row j Z, i)]
rws [(Z, i)]
kis'
| Bool
otherwise = ((Z -> ZModHom) -> Row j Z -> Row j ZModHom
forall (h :: * -> * -> *) (f :: * -> *) x y.
Applicative1 h f =>
h x y -> f x -> f y
amap1 (Z -> ZModHom
fromZ (Z -> ZModHom) -> (Z -> Z) -> Z -> ZModHom
forall y z x. (y -> z) -> (x -> y) -> x -> z
forall (c :: * -> * -> *) y z x.
Category c =>
c y z -> c x y -> c x z
. \Z
z -> Z -> Z -> Z
forall a. Integral a => a -> a -> a
div Z
z Z
k) Row j Z
rw,i
i)(Row j ZModHom, i) -> [(Row j ZModHom, i)] -> [(Row j ZModHom, i)]
forall a. a -> [a] -> [a]
:[(Row j Z, i)] -> [(Z, i)] -> [(Row j ZModHom, i)]
forall i j.
Ord i =>
[(Row j Z, i)] -> [(Z, i)] -> [(Row j ZModHom, i)]
div' [(Row j Z, i)]
rws' [(Z, i)]
kis'
hKer [(ZMod, N)]
_ = AlgebraicException
-> LimesG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
forall a e. Exception e => e -> a
throw (AlgebraicException
-> LimesG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom)
-> AlgebraicException
-> LimesG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ String -> AlgebraicException
ImplementationError String
"faild precondition"
abhKernelsFreeFromCyG :: Attestable k => KernelsG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
abhKernelsFreeFromCyG :: forall (k :: N').
Attestable k =>
KernelsG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
abhKernelsFreeFromCyG = (SliceDiagram (Free k) ('Parallel 'LeftToRight) N2 N1 AbHom
-> LimesG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom)
-> LimitsG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
(d t n m x -> LimesG c s p d t n m x) -> LimitsG c s p d t n m x
LimitsG SliceDiagram (Free k) ('Parallel 'LeftToRight) N2 N1 AbHom
-> LimesG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
forall (k :: N').
Attestable k =>
KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
-> KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
abhKernelFreeFromCyG
xecfAbhKernelsFreeFromCyG :: XEligibleConeFactorG
(ConicFreeTip Cone) Dst Projective (SliceDiagram (Free k)) (Parallel LeftToRight) N2 N1 AbHom
xecfAbhKernelsFreeFromCyG :: forall (k :: N').
XEligibleConeFactorG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
xecfAbhKernelsFreeFromCyG = XOrtSite 'To AbHom
-> XEligibleConeFactorG
(ConicFreeTip Cone)
Dst
(ToPerspective 'To)
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
(r :: Site) x s (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N').
Conic c =>
XOrtSite r x
-> XEligibleConeFactorG c s (ToPerspective r) d t n m x
xecfOrtSite (XOrtSite 'To AbHom
forall (s :: Site) a. XStandardOrtSite s a => XOrtSite s a
xStandardOrtSite :: XOrtSite To AbHom)
xecAbhKernelsFreeFromCyG :: XEligibleConeG
(ConicFreeTip Cone) Dst Projective (SliceDiagram (Free k)) (Parallel LeftToRight) N2 N1 AbHom
xecAbhKernelsFreeFromCyG :: forall (k :: N').
XEligibleConeG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
xecAbhKernelsFreeFromCyG = XEligibleConeFactorG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> XEligibleConeG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
XEligibleConeFactorG c s p d t n m x
-> XEligibleConeG c s p d t n m x
xecfEligibleCone XEligibleConeFactorG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
forall (k :: N').
XEligibleConeFactorG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
xecfAbhKernelsFreeFromCyG
xdgAbhKernelsFreeFromCyG :: Attestable k
=> Any k -> X (KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom)
xdgAbhKernelsFreeFromCyG :: forall (k :: N').
Attestable k =>
Any k -> X (KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom)
xdgAbhKernelsFreeFromCyG Any k
k = do
N
n <- N -> N -> X N
xNB N
0 N
1000
N
r <- N -> N -> X N
xNB N
0 N
10
AbHom
h <- Q -> Orientation AbGroup -> X AbHom
xAbHom Q
0.3 (N -> AbGroup
abg N
0 AbGroup -> Exponent AbGroup -> AbGroup
forall f. Exponential f => f -> Exponent f -> f
^ Any k -> N
forall x. LengthN x => x -> N
lengthN Any k
k AbGroup -> AbGroup -> Orientation AbGroup
forall p. p -> p -> Orientation p
:> N -> AbGroup
abg N
n AbGroup -> Exponent AbGroup -> AbGroup
forall f. Exponential f => f -> Exponent f -> f
^ N
Exponent AbGroup
r)
KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
-> X (KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom)
forall a. a -> X a
forall (m :: * -> *) a. Monad m => a -> m a
return (Slice 'From (Free k) AbHom
-> KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
forall (i :: * -> *) x.
Sliced i x =>
Slice 'From i x -> SliceDiagram i ('Parallel 'LeftToRight) N2 N1 x
SliceDiagramKernel (Free k AbHom -> AbHom -> Slice 'From (Free k) AbHom
forall (i :: * -> *) x. i x -> x -> Slice 'From i x
SliceFrom (Any k -> Free k AbHom
forall (k :: N') c. Any k -> Free k c
Free Any k
k) AbHom
h))
prpAbhKernelsFreeFromCyGN :: N -> Statement
prpAbhKernelsFreeFromCyGN :: N -> Statement
prpAbhKernelsFreeFromCyGN N
k = case N -> SomeNatural
someNatural N
k of
SomeNatural W n
k' -> XEligibleConeG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free n))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> XEligibleConeFactorG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free n))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> X (SliceDiagram (Free n) ('Parallel 'LeftToRight) N2 N1 AbHom)
-> LimitsG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free n))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> Statement
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
(d :: DiagramType -> N' -> N' -> * -> *) s (p :: Perspective)
(t :: DiagramType) (n :: N') (m :: N') x.
(Conic c, Diagrammatic d, Show (c s p d t n m x),
Validable (c s p d t n m x), Entity (d t n m x), Entity x) =>
XEligibleConeG c s p d t n m x
-> XEligibleConeFactorG c s p d t n m x
-> X (d t n m x)
-> LimitsG c s p d t n m x
-> Statement
prpLimitsG
XEligibleConeG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free n))
('Parallel 'LeftToRight)
N2
N1
AbHom
forall (k :: N').
XEligibleConeG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
xecAbhKernelsFreeFromCyG
XEligibleConeFactorG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free n))
('Parallel 'LeftToRight)
N2
N1
AbHom
forall (k :: N').
XEligibleConeFactorG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
xecfAbhKernelsFreeFromCyG
(W n
-> X (SliceDiagram (Free n) ('Parallel 'LeftToRight) N2 N1 AbHom)
forall (k :: N').
Attestable k =>
Any k -> X (KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom)
xdgAbhKernelsFreeFromCyG W n
k')
LimitsG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free n))
('Parallel 'LeftToRight)
N2
N1
AbHom
forall (k :: N').
Attestable k =>
KernelsG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
abhKernelsFreeFromCyG
prpAbhKernelsFreeFromCyG :: Statement
prpAbhKernelsFreeFromCyG :: Statement
prpAbhKernelsFreeFromCyG = X N -> (N -> Statement) -> Statement
forall x. X x -> (x -> Statement) -> Statement
Forall (N -> N -> X N
xNB N
0 N
14) N -> Statement
prpAbhKernelsFreeFromCyGN
abhKernelFreeFromG :: Attestable k
=> KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
-> KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
abhKernelFreeFromG :: forall (k :: N').
Attestable k =>
KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
-> KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
abhKernelFreeFromG KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
s = KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
-> SomeFinList
(KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom)
-> KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
forall (k :: N').
Attestable k =>
KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
-> SomeFinList
(KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom)
-> KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
ker KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
s (SomeFinList
(KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom)
-> KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom)
-> SomeFinList
(KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom)
-> KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ (KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
-> KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom)
-> SomeFinList
(KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom)
-> SomeFinList
(KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom)
forall (h :: * -> * -> *) (f :: * -> *) x y.
Applicative1 h f =>
h x y -> f x -> f y
amap1 (LimitsG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
-> KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
LimitsG c s p d t n m x -> d t n m x -> LimesG c s p d t n m x
limes LimitsG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
forall (k :: N').
Attestable k =>
KernelsG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
abhKernelsFreeFromCyG) (SomeFinList (KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom)
-> SomeFinList
(KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom))
-> SomeFinList
(KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom)
-> SomeFinList
(KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom)
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
-> SomeFinList
(KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom)
forall (k :: N').
KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
-> SomeFinList
(KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom)
abhFreeFromSplitCyG KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
s where
tipSomeFree :: KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom -> SomeFree AbHom
tipSomeFree :: forall (k :: N').
KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
-> SomeFree AbHom
tipSomeFree KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
ker = case KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
-> ConicFreeTip
Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
LimesG c s p d t n m x -> c s p d t n m x
universalCone KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
ker of ConicFreeTip Free k AbHom
k Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
_ -> Free k AbHom -> SomeFree AbHom
forall (k :: N') c.
(Attestable k, Sliced (Free k) c) =>
Free k c -> SomeFree c
SomeFree Free k AbHom
k
plbDgm :: Attestable k
=> KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
-> FinList n (KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom)
-> PullbackDiagrammatic DiagramFree n AbHom
plbDgm :: forall (k :: N') (n :: N').
Attestable k =>
KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
-> FinList
n (KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom)
-> PullbackDiagrammatic DiagramFree n AbHom
plbDgm (SliceDiagramKernel (SliceFrom Free k AbHom
k AbHom
_)) FinList
n (KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom)
kers = FinList ('S n) (SomeFree AbHom)
-> Diagram ('Star 'To) ('S n) n AbHom
-> DiagramFree ('Star 'To) ('S n) n AbHom
forall (t :: DiagramType) (n :: N') (m :: N') a.
FinList n (SomeFree a) -> Diagram t n m a -> DiagramFree t n m a
DiagramFree FinList (n + 1) (SomeFree AbHom)
FinList ('S n) (SomeFree AbHom)
ks Diagram ('Star 'To) ('S n) n AbHom
dgm where
ks :: FinList (n + 1) (SomeFree AbHom)
ks = Free k AbHom -> SomeFree AbHom
forall (k :: N') c.
(Attestable k, Sliced (Free k) c) =>
Free k c -> SomeFree c
SomeFree Free k AbHom
k SomeFree AbHom
-> FinList n (SomeFree AbHom) -> FinList (n + 1) (SomeFree AbHom)
forall a (n1 :: N'). a -> FinList n1 a -> FinList (n1 + 1) a
:| (KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
-> SomeFree AbHom)
-> FinList
n (KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom)
-> FinList n (SomeFree AbHom)
forall (h :: * -> * -> *) (f :: * -> *) x y.
Applicative1 h f =>
h x y -> f x -> f y
amap1 KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
-> SomeFree AbHom
forall (k :: N').
KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
-> SomeFree AbHom
tipSomeFree FinList
n (KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom)
kers
dgm :: Diagram ('Star 'To) ('S n) n AbHom
dgm = Point AbHom
-> FinList n AbHom -> Diagram ('Star 'To) (n + 1) n AbHom
forall a (m :: N').
Point a -> FinList m a -> Diagram ('Star 'To) (m + 1) m a
DiagramSink (Free k AbHom -> Point AbHom
forall (i :: * -> *) c. Sliced i c => i c -> Point c
slicePoint Free k AbHom
k) (FinList n AbHom -> Diagram ('Star 'To) ('S n) n AbHom)
-> FinList n AbHom -> Diagram ('Star 'To) ('S n) n AbHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ (KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
-> AbHom)
-> FinList
n (KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom)
-> FinList n AbHom
forall (h :: * -> * -> *) (f :: * -> *) x y.
Applicative1 h f =>
h x y -> f x -> f y
amap1 (KernelConic Cone (SliceDiagram (Free k)) N1 AbHom -> AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
(d :: DiagramType -> N' -> N' -> * -> *) (n :: N') x.
Conic c =>
KernelConic c d n x -> x
kernelFactor (KernelConic Cone (SliceDiagram (Free k)) N1 AbHom -> AbHom)
-> (KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
-> KernelConic Cone (SliceDiagram (Free k)) N1 AbHom)
-> KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
-> AbHom
forall y z x. (y -> z) -> (x -> y) -> x -> z
forall (c :: * -> * -> *) y z x.
Category c =>
c y z -> c x y -> c x z
. ConicFreeTip
Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> KernelConic Cone (SliceDiagram (Free k)) N1 AbHom
forall s (p :: Perspective)
(d :: DiagramType -> N' -> N' -> * -> *) (t :: DiagramType)
(n :: N') (m :: N') x.
ConicFreeTip Cone s p d t n m x -> Cone s p d t n m x
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
Conic c =>
c s p d t n m x -> Cone s p d t n m x
cone (ConicFreeTip
Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> KernelConic Cone (SliceDiagram (Free k)) N1 AbHom)
-> (KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
-> ConicFreeTip
Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom)
-> KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
-> KernelConic Cone (SliceDiagram (Free k)) N1 AbHom
forall y z x. (y -> z) -> (x -> y) -> x -> z
forall (c :: * -> * -> *) y z x.
Category c =>
c y z -> c x y -> c x z
. KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
-> ConicFreeTip
Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
LimesG c s p d t n m x -> c s p d t n m x
universalCone) FinList
n (KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom)
kers
ker :: Attestable k
=> KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
-> SomeFinList (KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom)
-> KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
ker :: forall (k :: N').
Attestable k =>
KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
-> SomeFinList
(KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom)
-> KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
ker KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
s (SomeFinList FinList
n (KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom)
kers) = KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
-> FinList
n (KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom)
-> PullbackG (ConicFreeTip Cone) DiagramFree n AbHom
-> KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
forall (k :: N') (n :: N').
KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
-> FinList
n (KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom)
-> PullbackG (ConicFreeTip Cone) DiagramFree n AbHom
-> KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
ker' KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
s FinList
n (KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom)
kers (LimitsG
(ConicFreeTip Cone)
Mlt
'Projective
DiagramFree
('Star 'To)
('S n)
n
AbHom
-> DiagramFree ('Star 'To) ('S n) n AbHom
-> LimesG
(ConicFreeTip Cone)
Mlt
'Projective
DiagramFree
('Star 'To)
('S n)
n
AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
LimitsG c s p d t n m x -> d t n m x -> LimesG c s p d t n m x
limes PullbacksG (ConicFreeTip Cone) DiagramFree n AbHom
LimitsG
(ConicFreeTip Cone)
Mlt
'Projective
DiagramFree
('Star 'To)
('S n)
n
AbHom
forall (n :: N').
PullbacksG (ConicFreeTip Cone) DiagramFree n AbHom
abhPullbacksFreeG (DiagramFree ('Star 'To) ('S n) n AbHom
-> LimesG
(ConicFreeTip Cone)
Mlt
'Projective
DiagramFree
('Star 'To)
('S n)
n
AbHom)
-> DiagramFree ('Star 'To) ('S n) n AbHom
-> LimesG
(ConicFreeTip Cone)
Mlt
'Projective
DiagramFree
('Star 'To)
('S n)
n
AbHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
-> FinList
n (KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom)
-> PullbackDiagrammatic DiagramFree n AbHom
forall (k :: N') (n :: N').
Attestable k =>
KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
-> FinList
n (KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom)
-> PullbackDiagrammatic DiagramFree n AbHom
plbDgm KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
s FinList
n (KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom)
kers)
ker' :: KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
-> FinList n (KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom)
-> PullbackG (ConicFreeTip Cone) DiagramFree n AbHom
-> KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
ker' :: forall (k :: N') (n :: N').
KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
-> FinList
n (KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom)
-> PullbackG (ConicFreeTip Cone) DiagramFree n AbHom
-> KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
ker' KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
s FinList
n (KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom)
kers (LimesProjective (ConicFreeTip Free k AbHom
k Cone Mlt 'Projective DiagramFree ('Star 'To) (n + 1) n AbHom
pCn) Cone Mlt 'Projective DiagramFree ('Star 'To) (n + 1) n AbHom
-> AbHom
pUniv) = ConicFreeTip
Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> (Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> AbHom)
-> KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (d :: DiagramType -> N' -> N' -> * -> *) (t :: DiagramType)
(n :: N') (m :: N') x.
c s 'Projective d t n m x
-> (Cone s 'Projective d t n m x -> x)
-> LimesG c s 'Projective d t n m x
LimesProjective ConicFreeTip
Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
kCn Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> AbHom
kUniv where
kCn :: ConicFreeTip
Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
kCn = Free k AbHom
-> Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> ConicFreeTip
Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
forall (k :: N') x
(c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N').
(Attestable k, Sliced (Free k) x) =>
Free k x -> c s p d t n m x -> ConicFreeTip c s p d t n m x
ConicFreeTip Free k AbHom
k (KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
-> AbHom
-> Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
forall a (d :: DiagramType -> N' -> N' -> * -> *) (m :: N').
Distributive a =>
d ('Parallel 'LeftToRight) N2 m a
-> a -> Cone Dst 'Projective d ('Parallel 'LeftToRight) N2 m a
ConeKernel KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
s (FinList (n + 1) AbHom -> AbHom
FinList ('S n) AbHom -> AbHom
forall (n :: N') a. FinList (n + 1) a -> a
F.head (FinList ('S n) AbHom -> AbHom) -> FinList ('S n) AbHom -> AbHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ Cone Mlt 'Projective DiagramFree ('Star 'To) ('S n) n AbHom
-> FinList ('S n) AbHom
forall (d :: DiagramType -> N' -> N' -> * -> *) s
(p :: Perspective) (t :: DiagramType) (n :: N') (m :: N') a.
Diagrammatic d =>
Cone s p d t n m a -> FinList n a
shell (Cone Mlt 'Projective DiagramFree ('Star 'To) ('S n) n AbHom
-> FinList ('S n) AbHom)
-> Cone Mlt 'Projective DiagramFree ('Star 'To) ('S n) n AbHom
-> FinList ('S n) AbHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ Cone Mlt 'Projective DiagramFree ('Star 'To) ('S n) n AbHom
-> Cone Mlt 'Projective DiagramFree ('Star 'To) ('S n) n AbHom
forall s (p :: Perspective)
(d :: DiagramType -> N' -> N' -> * -> *) (t :: DiagramType)
(n :: N') (m :: N') x.
Cone s p d t n m x -> Cone s p d t n m x
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
Conic c =>
c s p d t n m x -> Cone s p d t n m x
cone Cone Mlt 'Projective DiagramFree ('Star 'To) (n + 1) n AbHom
Cone Mlt 'Projective DiagramFree ('Star 'To) ('S n) n AbHom
pCn))
kUniv :: Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> AbHom
kUniv (ConeKernel KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
_ AbHom
x) = Cone Mlt 'Projective DiagramFree ('Star 'To) (n + 1) n AbHom
-> AbHom
pUniv (DiagramFree ('Star 'To) ('S n) n AbHom
-> Point AbHom
-> FinList ('S n) AbHom
-> Cone Mlt 'Projective DiagramFree ('Star 'To) ('S n) n AbHom
forall a (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N').
Multiplicative a =>
d t n m a
-> Point a -> FinList n a -> Cone Mlt 'Projective d t n m a
ConeProjective DiagramFree ('Star 'To) ('S n) n AbHom
pDgm Point AbHom
pTip FinList (n + 1) AbHom
FinList ('S n) AbHom
pShell) where
pDgm :: DiagramFree ('Star 'To) ('S n) n AbHom
pDgm = Cone Mlt 'Projective DiagramFree ('Star 'To) ('S n) n AbHom
-> DiagramFree ('Star 'To) ('S n) n AbHom
forall s (p :: Perspective)
(d :: DiagramType -> N' -> N' -> * -> *) (t :: DiagramType)
(n :: N') (m :: N') a.
Cone s p d t n m a -> d t n m a
diagrammaticObject Cone Mlt 'Projective DiagramFree ('Star 'To) (n + 1) n AbHom
Cone Mlt 'Projective DiagramFree ('Star 'To) ('S n) n AbHom
pCn
pTip :: Point AbHom
pTip = AbHom -> Point AbHom
forall q. Oriented q => q -> Point q
start AbHom
x
pShell :: FinList (n + 1) AbHom
pShell = AbHom
x AbHom -> FinList n AbHom -> FinList (n + 1) AbHom
forall a (n1 :: N'). a -> FinList n1 a -> FinList (n1 + 1) a
:| (KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
-> AbHom)
-> FinList
n (KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom)
-> FinList n AbHom
forall (h :: * -> * -> *) (f :: * -> *) x y.
Applicative1 h f =>
h x y -> f x -> f y
amap1 (AbHom
-> KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
-> AbHom
forall (k :: N').
AbHom
-> KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
-> AbHom
pLft AbHom
x) FinList
n (KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom)
kers
pLft :: AbHom
-> KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
-> AbHom
pLft :: forall (k :: N').
AbHom
-> KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
-> AbHom
pLft AbHom
x KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
ker = KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
-> Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
LimesG c s p d t n m x -> Cone s p d t n m x -> x
universalFactor KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
ker (SliceDiagram (Free k) ('Parallel 'LeftToRight) N2 N1 AbHom
-> AbHom
-> Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
forall a (d :: DiagramType -> N' -> N' -> * -> *) (m :: N').
Distributive a =>
d ('Parallel 'LeftToRight) N2 m a
-> a -> Cone Dst 'Projective d ('Parallel 'LeftToRight) N2 m a
ConeKernel SliceDiagram (Free k) ('Parallel 'LeftToRight) N2 N1 AbHom
d AbHom
x) where
d :: SliceDiagram (Free k) ('Parallel 'LeftToRight) N2 N1 AbHom
d = Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> SliceDiagram (Free k) ('Parallel 'LeftToRight) N2 N1 AbHom
forall s (p :: Perspective)
(d :: DiagramType -> N' -> N' -> * -> *) (t :: DiagramType)
(n :: N') (m :: N') a.
Cone s p d t n m a -> d t n m a
diagrammaticObject (Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> SliceDiagram (Free k) ('Parallel 'LeftToRight) N2 N1 AbHom)
-> Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> SliceDiagram (Free k) ('Parallel 'LeftToRight) N2 N1 AbHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ ConicFreeTip
Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
forall s (p :: Perspective)
(d :: DiagramType -> N' -> N' -> * -> *) (t :: DiagramType)
(n :: N') (m :: N') x.
ConicFreeTip Cone s p d t n m x -> Cone s p d t n m x
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
Conic c =>
c s p d t n m x -> Cone s p d t n m x
cone (ConicFreeTip
Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom)
-> ConicFreeTip
Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
-> ConicFreeTip
Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
LimesG c s p d t n m x -> c s p d t n m x
universalCone KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
ker
abhKernelsFreeFromG :: Attestable k => KernelsG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
abhKernelsFreeFromG :: forall (k :: N').
Attestable k =>
KernelsG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
abhKernelsFreeFromG = (SliceDiagram (Free k) ('Parallel 'LeftToRight) N2 N1 AbHom
-> LimesG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom)
-> LimitsG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
(d t n m x -> LimesG c s p d t n m x) -> LimitsG c s p d t n m x
LimitsG SliceDiagram (Free k) ('Parallel 'LeftToRight) N2 N1 AbHom
-> LimesG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
forall (k :: N').
Attestable k =>
KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom
-> KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
abhKernelFreeFromG
abhKernelsFreeFromG' :: Attestable k
=> q k -> KernelsG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
abhKernelsFreeFromG' :: forall (k :: N') (q :: N' -> *).
Attestable k =>
q k
-> KernelsG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
abhKernelsFreeFromG' q k
_ = KernelsG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
forall (k :: N').
Attestable k =>
KernelsG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
abhKernelsFreeFromG
xdgKernelsFreeFromG :: Attestable k
=> Any k -> X (SliceDiagram (Free k) (Parallel LeftToRight) N2 N1 AbHom)
xdgKernelsFreeFromG :: forall (k :: N').
Attestable k =>
Any k -> X (KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom)
xdgKernelsFreeFromG Any k
k = do
AbHom
h <- AbGroup -> X AbHom
xh (N -> AbGroup
abg N
0 AbGroup -> Exponent AbGroup -> AbGroup
forall f. Exponential f => f -> Exponent f -> f
^ (Any k -> N
forall x. LengthN x => x -> N
lengthN Any k
k))
SliceDiagram (Free k) ('Parallel 'LeftToRight) N2 N1 AbHom
-> X (SliceDiagram (Free k) ('Parallel 'LeftToRight) N2 N1 AbHom)
forall a. a -> X a
forall (m :: * -> *) a. Monad m => a -> m a
return (Slice 'From (Free k) AbHom
-> SliceDiagram (Free k) ('Parallel 'LeftToRight) N2 N1 AbHom
forall (i :: * -> *) x.
Sliced i x =>
Slice 'From i x -> SliceDiagram i ('Parallel 'LeftToRight) N2 N1 x
SliceDiagramKernel (Free k AbHom -> AbHom -> Slice 'From (Free k) AbHom
forall (i :: * -> *) x. i x -> x -> Slice 'From i x
SliceFrom (Any k -> Free k AbHom
forall (k :: N') c. Any k -> Free k c
Free Any k
k) AbHom
h))
where XStart X (Point AbHom)
_ Point AbHom -> X AbHom
AbGroup -> X AbHom
xh = XOrtSite 'From AbHom
forall (s :: Site) a. XStandardOrtSite s a => XOrtSite s a
xStandardOrtSite :: XOrtSite From AbHom
prpAbhKernelsFreeFromGN :: N -> Statement
prpAbhKernelsFreeFromGN :: N -> Statement
prpAbhKernelsFreeFromGN N
k = case N -> SomeNatural
someNatural N
k of
SomeNatural W n
k' -> XEligibleConeG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free n))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> XEligibleConeFactorG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free n))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> X (SliceDiagram (Free n) ('Parallel 'LeftToRight) N2 N1 AbHom)
-> LimitsG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free n))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> Statement
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
(d :: DiagramType -> N' -> N' -> * -> *) s (p :: Perspective)
(t :: DiagramType) (n :: N') (m :: N') x.
(Conic c, Diagrammatic d, Show (c s p d t n m x),
Validable (c s p d t n m x), Entity (d t n m x), Entity x) =>
XEligibleConeG c s p d t n m x
-> XEligibleConeFactorG c s p d t n m x
-> X (d t n m x)
-> LimitsG c s p d t n m x
-> Statement
prpLimitsG
XEligibleConeG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free n))
('Parallel 'LeftToRight)
N2
N1
AbHom
forall (k :: N').
XEligibleConeG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
xecAbhKernelsFreeFromCyG
XEligibleConeFactorG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free n))
('Parallel 'LeftToRight)
N2
N1
AbHom
forall (k :: N').
XEligibleConeFactorG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
xecfAbhKernelsFreeFromCyG
(W n
-> X (SliceDiagram (Free n) ('Parallel 'LeftToRight) N2 N1 AbHom)
forall (k :: N').
Attestable k =>
Any k -> X (KernelDiagrammatic (SliceDiagram (Free k)) N1 AbHom)
xdgKernelsFreeFromG W n
k')
LimitsG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free n))
('Parallel 'LeftToRight)
N2
N1
AbHom
forall (k :: N').
Attestable k =>
KernelsG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
abhKernelsFreeFromG
prpAbhKernelsFreeFromG :: Statement
prpAbhKernelsFreeFromG :: Statement
prpAbhKernelsFreeFromG = X N -> (N -> Statement) -> Statement
forall x. X x -> (x -> Statement) -> Statement
Forall (N -> N -> X N
xNB N
0 N
15) N -> Statement
prpAbhKernelsFreeFromGN
abhKernelSomeFreeFreeTip :: KernelDiagrammatic SomeFreeSliceDiagram N1 AbHom
-> KernelSomeFreeFreeTip AbHom
abhKernelSomeFreeFreeTip :: KernelDiagrammatic SomeFreeSliceDiagram N1 AbHom
-> KernelSomeFreeFreeTip AbHom
abhKernelSomeFreeFreeTip d :: KernelDiagrammatic SomeFreeSliceDiagram N1 AbHom
d@(SomeFreeSliceKernel Slice 'From (Free k) AbHom
frm) = ConicFreeTip
Cone
Dst
'Projective
SomeFreeSliceDiagram
('Parallel 'LeftToRight)
N2
N1
AbHom
-> (Cone
Dst
'Projective
SomeFreeSliceDiagram
('Parallel 'LeftToRight)
N2
N1
AbHom
-> AbHom)
-> KernelSomeFreeFreeTip AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (d :: DiagramType -> N' -> N' -> * -> *) (t :: DiagramType)
(n :: N') (m :: N') x.
c s 'Projective d t n m x
-> (Cone s 'Projective d t n m x -> x)
-> LimesG c s 'Projective d t n m x
LimesProjective ConicFreeTip
Cone
Dst
'Projective
SomeFreeSliceDiagram
('Parallel 'LeftToRight)
N2
N1
AbHom
cnFrT Cone
Dst
'Projective
SomeFreeSliceDiagram
('Parallel 'LeftToRight)
N2
N1
AbHom
-> AbHom
univFrT where
d' :: SliceDiagram (Free k) ('Parallel 'LeftToRight) N2 N1 AbHom
d' = Slice 'From (Free k) AbHom
-> SliceDiagram (Free k) ('Parallel 'LeftToRight) N2 N1 AbHom
forall (i :: * -> *) x.
Sliced i x =>
Slice 'From i x -> SliceDiagram i ('Parallel 'LeftToRight) N2 N1 x
SliceDiagramKernel Slice 'From (Free k) AbHom
frm
LimesProjective ConicFreeTip
Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
cnFrT' Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> AbHom
univFrT' = LimitsG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> SliceDiagram (Free k) ('Parallel 'LeftToRight) N2 N1 AbHom
-> LimesG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
LimitsG c s p d t n m x -> d t n m x -> LimesG c s p d t n m x
limes LimitsG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
forall (k :: N').
Attestable k =>
KernelsG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
abhKernelsFreeFromG SliceDiagram (Free k) ('Parallel 'LeftToRight) N2 N1 AbHom
d'
cnFrT :: ConicFreeTip
Cone
Dst
'Projective
SomeFreeSliceDiagram
('Parallel 'LeftToRight)
N2
N1
AbHom
cnFrT = case ConicFreeTip
Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
cnFrT' of
ConicFreeTip Free k AbHom
k Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
cn' -> Free k AbHom
-> Cone
Dst
'Projective
SomeFreeSliceDiagram
('Parallel 'LeftToRight)
N2
N1
AbHom
-> ConicFreeTip
Cone
Dst
'Projective
SomeFreeSliceDiagram
('Parallel 'LeftToRight)
N2
N1
AbHom
forall (k :: N') x
(c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N').
(Attestable k, Sliced (Free k) x) =>
Free k x -> c s p d t n m x -> ConicFreeTip c s p d t n m x
ConicFreeTip Free k AbHom
k Cone
Dst
'Projective
SomeFreeSliceDiagram
('Parallel 'LeftToRight)
N2
N1
AbHom
cn where
cn :: Cone
Dst
'Projective
SomeFreeSliceDiagram
('Parallel 'LeftToRight)
N2
N1
AbHom
cn = KernelDiagrammatic SomeFreeSliceDiagram N1 AbHom
-> AbHom
-> Cone
Dst
'Projective
SomeFreeSliceDiagram
('Parallel 'LeftToRight)
N2
N1
AbHom
forall a (d :: DiagramType -> N' -> N' -> * -> *) (m :: N').
Distributive a =>
d ('Parallel 'LeftToRight) N2 m a
-> a -> Cone Dst 'Projective d ('Parallel 'LeftToRight) N2 m a
ConeKernel KernelDiagrammatic SomeFreeSliceDiagram N1 AbHom
d (Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
(d :: DiagramType -> N' -> N' -> * -> *) (n :: N') x.
Conic c =>
KernelConic c d n x -> x
kernelFactor Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
cn')
univFrT :: Cone
Dst
'Projective
SomeFreeSliceDiagram
('Parallel 'LeftToRight)
N2
N1
AbHom
-> AbHom
univFrT (ConeKernel KernelDiagrammatic SomeFreeSliceDiagram N1 AbHom
_ AbHom
x) = Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> AbHom
univFrT' (SliceDiagram (Free k) ('Parallel 'LeftToRight) N2 N1 AbHom
-> AbHom
-> Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
forall a (d :: DiagramType -> N' -> N' -> * -> *) (m :: N').
Distributive a =>
d ('Parallel 'LeftToRight) N2 m a
-> a -> Cone Dst 'Projective d ('Parallel 'LeftToRight) N2 m a
ConeKernel SliceDiagram (Free k) ('Parallel 'LeftToRight) N2 N1 AbHom
d' AbHom
x)
abhKernelsSomeFreeFreeTip :: KernelsSomeFreeFreeTip AbHom
abhKernelsSomeFreeFreeTip :: KernelsSomeFreeFreeTip AbHom
abhKernelsSomeFreeFreeTip = (KernelDiagrammatic SomeFreeSliceDiagram N1 AbHom
-> KernelSomeFreeFreeTip AbHom)
-> KernelsSomeFreeFreeTip AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
(d t n m x -> LimesG c s p d t n m x) -> LimitsG c s p d t n m x
LimitsG KernelDiagrammatic SomeFreeSliceDiagram N1 AbHom
-> KernelSomeFreeFreeTip AbHom
abhKernelSomeFreeFreeTip
abhKernel :: KernelDiagram N1 AbHom -> Kernel N1 AbHom
abhKernel :: Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
-> LimesG
Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
abhKernel Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
d = Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
-> FinitePresentation 'To Free AbHom
-> LimesG
Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
hKer Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
d (FinitelyPresentable 'To Free AbHom
-> Point AbHom -> FinitePresentation 'To Free AbHom
forall (s :: Site) (i :: N' -> * -> *) a.
FinitelyPresentable s i a -> Point a -> FinitePresentation s i a
finitePresentation FinitelyPresentable 'To Free AbHom
abgFinPres (AbGroup -> FinitePresentation 'To Free AbHom)
-> AbGroup -> FinitePresentation 'To Free AbHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ AbHom -> Point AbHom
forall q. Oriented q => q -> Point q
start AbHom
h) where
DiagramParallelLR Point AbHom
_ Point AbHom
_ (AbHom
h:|FinList n1 AbHom
Nil) = Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
d
hKer :: KernelDiagram N1 AbHom -> FinitePresentation To Free AbHom -> Kernel N1 AbHom
hKer :: Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
-> FinitePresentation 'To Free AbHom
-> LimesG
Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
hKer
d :: Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
d@(DiagramParallelLR Point AbHom
_ Point AbHom
_ (AbHom
h:|FinList n1 AbHom
Nil))
g :: FinitePresentation 'To Free AbHom
g@(GeneratorTo (DiagramChainTo Point AbHom
_ (AbHom
p:|AbHom
_:|FinList n1 AbHom
Nil)) Free k' AbHom
ns' Free k'' AbHom
_ Cokernel N1 AbHom
_ LimesG
Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
_ forall (k :: N').
Slice 'From (Free k) AbHom -> Slice 'From (Free k) AbHom
_)
= Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
-> FinitePresentation 'To Free AbHom
-> KernelG (ConicFreeTip Cone) (SliceDiagram (Free k')) N1 AbHom
-> LimesG
Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
forall (k :: N').
Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
-> FinitePresentation 'To Free AbHom
-> KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
-> LimesG
Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
hKer' Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
d FinitePresentation 'To Free AbHom
g (LimitsG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free k'))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> SliceDiagram (Free k') ('Parallel 'LeftToRight) N2 N1 AbHom
-> KernelG (ConicFreeTip Cone) (SliceDiagram (Free k')) N1 AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
LimitsG c s p d t n m x -> d t n m x -> LimesG c s p d t n m x
limes LimitsG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free k'))
('Parallel 'LeftToRight)
N2
N1
AbHom
forall (k :: N').
Attestable k =>
KernelsG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
abhKernelsFreeFromG (Slice 'From (Free k') AbHom
-> SliceDiagram (Free k') ('Parallel 'LeftToRight) N2 N1 AbHom
forall (i :: * -> *) x.
Sliced i x =>
Slice 'From i x -> SliceDiagram i ('Parallel 'LeftToRight) N2 N1 x
SliceDiagramKernel (Free k' AbHom -> AbHom -> Slice 'From (Free k') AbHom
forall (i :: * -> *) x. i x -> x -> Slice 'From i x
SliceFrom Free k' AbHom
ns' (AbHom
hAbHom -> AbHom -> AbHom
forall c. Multiplicative c => c -> c -> c
*AbHom
p))))
hKer'
:: KernelDiagram N1 AbHom
-> FinitePresentation To Free AbHom
-> KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
-> Kernel N1 AbHom
hKer' :: forall (k :: N').
Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
-> FinitePresentation 'To Free AbHom
-> KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
-> LimesG
Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
hKer'
Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
d
g :: FinitePresentation 'To Free AbHom
g@(GeneratorTo (DiagramChainTo Point AbHom
_ (AbHom
_:|AbHom
p':|FinList n1 AbHom
Nil)) Free k' AbHom
ns' Free k'' AbHom
ns'' Cokernel N1 AbHom
_ LimesG
Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
_ forall (k :: N').
Slice 'From (Free k) AbHom -> Slice 'From (Free k) AbHom
_)
hpKerFree :: KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
hpKerFree@(LimesProjective (ConicFreeTip Free k AbHom
nr' Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
_) Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> AbHom
_)
= Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
-> FinitePresentation 'To Free AbHom
-> KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
-> PullbackG (ConicFreeTip Cone) DiagramFree N2 AbHom
-> LimesG
Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
forall (k :: N').
Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
-> FinitePresentation 'To Free AbHom
-> KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
-> PullbackG (ConicFreeTip Cone) DiagramFree N2 AbHom
-> LimesG
Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
hKer'' Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
d FinitePresentation 'To Free AbHom
g KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
hpKerFree PullbackG (ConicFreeTip Cone) DiagramFree N2 AbHom
LimesG
(ConicFreeTip Cone)
Mlt
'Projective
DiagramFree
('Star 'To)
N3
N2
AbHom
k'p'Plb where
k'p'Plb :: LimesG
(ConicFreeTip Cone)
Mlt
'Projective
DiagramFree
('Star 'To)
N3
N2
AbHom
k'p'Plb = LimitsG
(ConicFreeTip Cone)
Mlt
'Projective
DiagramFree
('Star 'To)
N3
N2
AbHom
-> DiagramFree ('Star 'To) N3 N2 AbHom
-> LimesG
(ConicFreeTip Cone)
Mlt
'Projective
DiagramFree
('Star 'To)
N3
N2
AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
LimitsG c s p d t n m x -> d t n m x -> LimesG c s p d t n m x
limes PullbacksG (ConicFreeTip Cone) DiagramFree N2 AbHom
LimitsG
(ConicFreeTip Cone)
Mlt
'Projective
DiagramFree
('Star 'To)
N3
N2
AbHom
forall (n :: N').
PullbacksG (ConicFreeTip Cone) DiagramFree n AbHom
abhPullbacksFreeG
(FinList N3 (SomeFree AbHom)
-> Diagram ('Star 'To) N3 N2 AbHom
-> DiagramFree ('Star 'To) N3 N2 AbHom
forall (t :: DiagramType) (n :: N') (m :: N') a.
FinList n (SomeFree a) -> Diagram t n m a -> DiagramFree t n m a
DiagramFree (Free k' AbHom -> SomeFree AbHom
forall (k :: N') c.
(Attestable k, Sliced (Free k) c) =>
Free k c -> SomeFree c
SomeFree Free k' AbHom
ns'SomeFree AbHom
-> FinList N2 (SomeFree AbHom) -> FinList (N2 + 1) (SomeFree AbHom)
forall a (n1 :: N'). a -> FinList n1 a -> FinList (n1 + 1) a
:|Free k AbHom -> SomeFree AbHom
forall (k :: N') c.
(Attestable k, Sliced (Free k) c) =>
Free k c -> SomeFree c
SomeFree Free k AbHom
nr'SomeFree AbHom
-> FinList N1 (SomeFree AbHom) -> FinList (N1 + 1) (SomeFree AbHom)
forall a (n1 :: N'). a -> FinList n1 a -> FinList (n1 + 1) a
:|Free k'' AbHom -> SomeFree AbHom
forall (k :: N') c.
(Attestable k, Sliced (Free k) c) =>
Free k c -> SomeFree c
SomeFree Free k'' AbHom
ns''SomeFree AbHom
-> FinList N0 (SomeFree AbHom) -> FinList (N0 + 1) (SomeFree AbHom)
forall a (n1 :: N'). a -> FinList n1 a -> FinList (n1 + 1) a
:|FinList N0 (SomeFree AbHom)
forall a. FinList N0 a
Nil) Diagram ('Star 'To) (N2 + 1) N2 AbHom
Diagram ('Star 'To) N3 N2 AbHom
k'p'PlbDgm)
k'p'PlbDgm :: Diagram ('Star 'To) (N2 + 1) N2 AbHom
k'p'PlbDgm = Point AbHom
-> FinList N2 AbHom -> Diagram ('Star 'To) (N2 + 1) N2 AbHom
forall a (m :: N').
Point a -> FinList m a -> Diagram ('Star 'To) (m + 1) m a
DiagramSink (AbHom -> Point AbHom
forall q. Oriented q => q -> Point q
end AbHom
k') (AbHom
k'AbHom -> FinList N1 AbHom -> FinList (N1 + 1) AbHom
forall a (n1 :: N'). a -> FinList n1 a -> FinList (n1 + 1) a
:|AbHom
p'AbHom -> FinList N0 AbHom -> FinList (N0 + 1) AbHom
forall a (n1 :: N'). a -> FinList n1 a -> FinList (n1 + 1) a
:|FinList N0 AbHom
forall a. FinList N0 a
Nil)
k' :: AbHom
k' = ConicFreeTip
Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
(d :: DiagramType -> N' -> N' -> * -> *) (n :: N') x.
Conic c =>
KernelConic c d n x -> x
kernelFactor (ConicFreeTip
Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> AbHom)
-> ConicFreeTip
Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> AbHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
-> ConicFreeTip
Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
LimesG c s p d t n m x -> c s p d t n m x
universalCone KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
hpKerFree
hKer''
:: KernelDiagram N1 AbHom
-> FinitePresentation To Free AbHom
-> KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
-> PullbackG (ConicFreeTip Cone) DiagramFree N2 AbHom
-> Kernel N1 AbHom
hKer'' :: forall (k :: N').
Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
-> FinitePresentation 'To Free AbHom
-> KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
-> PullbackG (ConicFreeTip Cone) DiagramFree N2 AbHom
-> LimesG
Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
hKer''
Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
d
(GeneratorTo (DiagramChainTo Point AbHom
_ (AbHom
p:|AbHom
_:|FinList n1 AbHom
Nil)) Free k' AbHom
_ Free k'' AbHom
_ Cokernel N1 AbHom
_ LimesG
Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
_ forall (k :: N').
Slice 'From (Free k) AbHom -> Slice 'From (Free k) AbHom
lp)
hpKer :: KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
hpKer@(LimesProjective (ConicFreeTip Free k AbHom
nr' Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
_) Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> AbHom
_)
k'p'Plb :: PullbackG (ConicFreeTip Cone) DiagramFree N2 AbHom
k'p'Plb@(LimesProjective (ConicFreeTip Free k AbHom
nr'' Cone Mlt 'Projective DiagramFree ('Star 'To) (N2 + 1) N2 AbHom
_) Cone Mlt 'Projective DiagramFree ('Star 'To) (N2 + 1) N2 AbHom
-> AbHom
_)
= Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
-> (Cone
Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
-> AbHom)
-> LimesG
Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (d :: DiagramType -> N' -> N' -> * -> *) (t :: DiagramType)
(n :: N') (m :: N') x.
c s 'Projective d t n m x
-> (Cone s 'Projective d t n m x -> x)
-> LimesG c s 'Projective d t n m x
LimesProjective Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
hKer Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
-> AbHom
hUniv where
AbHom
_:|AbHom
q':|FinList n1 AbHom
_ = Cone Mlt 'Projective DiagramFree ('Star 'To) N3 N2 AbHom
-> FinList N3 AbHom
forall (d :: DiagramType -> N' -> N' -> * -> *) s
(p :: Perspective) (t :: DiagramType) (n :: N') (m :: N') a.
Diagrammatic d =>
Cone s p d t n m a -> FinList n a
shell (Cone Mlt 'Projective DiagramFree ('Star 'To) N3 N2 AbHom
-> FinList N3 AbHom)
-> Cone Mlt 'Projective DiagramFree ('Star 'To) N3 N2 AbHom
-> FinList N3 AbHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ ConicFreeTip
Cone Mlt 'Projective DiagramFree ('Star 'To) N3 N2 AbHom
-> Cone Mlt 'Projective DiagramFree ('Star 'To) N3 N2 AbHom
forall s (p :: Perspective)
(d :: DiagramType -> N' -> N' -> * -> *) (t :: DiagramType)
(n :: N') (m :: N') x.
ConicFreeTip Cone s p d t n m x -> Cone s p d t n m x
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
Conic c =>
c s p d t n m x -> Cone s p d t n m x
cone (ConicFreeTip
Cone Mlt 'Projective DiagramFree ('Star 'To) N3 N2 AbHom
-> Cone Mlt 'Projective DiagramFree ('Star 'To) N3 N2 AbHom)
-> ConicFreeTip
Cone Mlt 'Projective DiagramFree ('Star 'To) N3 N2 AbHom
-> Cone Mlt 'Projective DiagramFree ('Star 'To) N3 N2 AbHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ LimesG
(ConicFreeTip Cone)
Mlt
'Projective
DiagramFree
('Star 'To)
N3
N2
AbHom
-> ConicFreeTip
Cone Mlt 'Projective DiagramFree ('Star 'To) N3 N2 AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
LimesG c s p d t n m x -> c s p d t n m x
universalCone PullbackG (ConicFreeTip Cone) DiagramFree N2 AbHom
LimesG
(ConicFreeTip Cone)
Mlt
'Projective
DiagramFree
('Star 'To)
N3
N2
AbHom
k'p'Plb
q'CokerDgm :: Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
q'CokerDgm = AbHom -> Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
forall x. Oriented x => x -> CokernelDiagram N1 x
cokernelDiagram AbHom
q'
q'Coker :: CokernelG ConeLiftable DiagramFree N1 AbHom
q'Coker = CokernelsG ConeLiftable DiagramFree N1 AbHom
-> DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
-> CokernelG ConeLiftable DiagramFree N1 AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
LimitsG c s p d t n m x -> d t n m x -> LimesG c s p d t n m x
limes CokernelsG ConeLiftable DiagramFree N1 AbHom
abhCokernelsFreeDgmLftFreeG
( FinList N2 (SomeFree AbHom)
-> Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
-> DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
forall (t :: DiagramType) (n :: N') (m :: N') a.
FinList n (SomeFree a) -> Diagram t n m a -> DiagramFree t n m a
DiagramFree
(Free k AbHom -> SomeFree AbHom
forall (k :: N') c.
(Attestable k, Sliced (Free k) c) =>
Free k c -> SomeFree c
SomeFree Free k AbHom
nr'SomeFree AbHom
-> FinList N1 (SomeFree AbHom) -> FinList (N1 + 1) (SomeFree AbHom)
forall a (n1 :: N'). a -> FinList n1 a -> FinList (n1 + 1) a
:|Free k AbHom -> SomeFree AbHom
forall (k :: N') c.
(Attestable k, Sliced (Free k) c) =>
Free k c -> SomeFree c
SomeFree Free k AbHom
nr''SomeFree AbHom
-> FinList N0 (SomeFree AbHom) -> FinList (N0 + 1) (SomeFree AbHom)
forall a (n1 :: N'). a -> FinList n1 a -> FinList (n1 + 1) a
:|FinList N0 (SomeFree AbHom)
forall a. FinList N0 a
Nil)
Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
q'CokerDgm
)
hKer :: Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
hKer = Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
-> AbHom
-> Cone
Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
forall a (d :: DiagramType -> N' -> N' -> * -> *) (m :: N').
Distributive a =>
d ('Parallel 'LeftToRight) N2 m a
-> a -> Cone Dst 'Projective d ('Parallel 'LeftToRight) N2 m a
ConeKernel Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
d AbHom
hKerFactor where
hKerFactor :: AbHom
hKerFactor = CokernelG ConeLiftable DiagramFree N1 AbHom
-> Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
-> AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
LimesG c s p d t n m x -> Cone s p d t n m x -> x
universalFactor CokernelG ConeLiftable DiagramFree N1 AbHom
q'Coker (DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
-> AbHom
-> Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
forall a (d :: DiagramType -> N' -> N' -> * -> *) (m :: N').
Distributive a =>
d ('Parallel 'RightToLeft) N2 m a
-> a -> Cone Dst 'Injective d ('Parallel 'RightToLeft) N2 m a
ConeCokernel DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
q'CokerDgmFree (AbHom
pAbHom -> AbHom -> AbHom
forall c. Multiplicative c => c -> c -> c
*AbHom
k'))
k' :: AbHom
k' = ConicFreeTip
Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
(d :: DiagramType -> N' -> N' -> * -> *) (n :: N') x.
Conic c =>
KernelConic c d n x -> x
kernelFactor (ConicFreeTip
Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> AbHom)
-> ConicFreeTip
Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> AbHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
-> ConicFreeTip
Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
LimesG c s p d t n m x -> c s p d t n m x
universalCone KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
hpKer
q'CokerDgmFree :: DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
q'CokerDgmFree = Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
-> DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
forall s (p :: Perspective)
(d :: DiagramType -> N' -> N' -> * -> *) (t :: DiagramType)
(n :: N') (m :: N') a.
Cone s p d t n m a -> d t n m a
diagrammaticObject (Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
-> DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom)
-> Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
-> DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ ConeLiftable
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
-> Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
forall s (p :: Perspective)
(d :: DiagramType -> N' -> N' -> * -> *) (t :: DiagramType)
(n :: N') (m :: N') x.
ConeLiftable s p d t n m x -> Cone s p d t n m x
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
Conic c =>
c s p d t n m x -> Cone s p d t n m x
cone (ConeLiftable
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
-> Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom)
-> ConeLiftable
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
-> Cone
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ CokernelG ConeLiftable DiagramFree N1 AbHom
-> ConeLiftable
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
LimesG c s p d t n m x -> c s p d t n m x
universalCone CokernelG ConeLiftable DiagramFree N1 AbHom
q'Coker
hUniv :: Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
-> AbHom
hUniv (ConeKernel Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
d' AbHom
x) = case FinitelyPresentable 'To Free AbHom
-> Point AbHom -> FinitePresentation 'To Free AbHom
forall (s :: Site) (i :: N' -> * -> *) a.
FinitelyPresentable s i a -> Point a -> FinitePresentation s i a
finitePresentation FinitelyPresentable 'To Free AbHom
abgFinPres (AbGroup -> FinitePresentation 'To Free AbHom)
-> AbGroup -> FinitePresentation 'To Free AbHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ AbHom -> Point AbHom
forall q. Oriented q => q -> Point q
start AbHom
x of
GeneratorTo (DiagramChainTo Point AbHom
_ (AbHom
t:|FinList n1 AbHom
_)) Free k' AbHom
nv' Free k'' AbHom
_ Cokernel N1 AbHom
t'Coker LimesG
Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
_ forall (k :: N').
Slice 'From (Free k) AbHom -> Slice 'From (Free k) AbHom
_
| Bool -> Bool
forall b. Boolean b => b -> b
not (Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
d Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
-> Diagram ('Parallel 'LeftToRight) N2 N1 AbHom -> Bool
forall a. Eq a => a -> a -> Bool
== Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
d') -> String -> AbHom
forall a. HasCallStack => String -> a
error String
"cone not eligible"
| Bool
otherwise -> Cokernel N1 AbHom
-> Cone Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
-> AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
LimesG c s p d t n m x -> Cone s p d t n m x -> x
universalFactor Cokernel N1 AbHom
t'Coker Cone Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
t'Cone where
t'Cone :: Cone Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
t'Cone = Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
-> AbHom
-> Cone Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
forall a (d :: DiagramType -> N' -> N' -> * -> *) (m :: N').
Distributive a =>
d ('Parallel 'RightToLeft) N2 m a
-> a -> Cone Dst 'Injective d ('Parallel 'RightToLeft) N2 m a
ConeCokernel (Cone Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
-> Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
forall s (p :: Perspective)
(d :: DiagramType -> N' -> N' -> * -> *) (t :: DiagramType)
(n :: N') (m :: N') a.
Cone s p d t n m a -> d t n m a
diagrammaticObject (Cone Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
-> Diagram ('Parallel 'RightToLeft) N2 N1 AbHom)
-> Cone Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
-> Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ Cone Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
-> Cone Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
forall s (p :: Perspective)
(d :: DiagramType -> N' -> N' -> * -> *) (t :: DiagramType)
(n :: N') (m :: N') x.
Cone s p d t n m x -> Cone s p d t n m x
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
Conic c =>
c s p d t n m x -> Cone s p d t n m x
cone (Cone Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
-> Cone
Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom)
-> Cone Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
-> Cone Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ Cokernel N1 AbHom
-> Cone Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
LimesG c s p d t n m x -> c s p d t n m x
universalCone Cokernel N1 AbHom
t'Coker) (AbHom
qAbHom -> AbHom -> AbHom
forall c. Multiplicative c => c -> c -> c
*AbHom
u')
q :: AbHom
q = ConeLiftable
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
-> AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
(d :: DiagramType -> N' -> N' -> * -> *) (n :: N') x.
Conic c =>
CokernelConic c d n x -> x
cokernelFactor (ConeLiftable
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
-> AbHom)
-> ConeLiftable
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
-> AbHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ CokernelG ConeLiftable DiagramFree N1 AbHom
-> ConeLiftable
Dst 'Injective DiagramFree ('Parallel 'RightToLeft) N2 N1 AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
LimesG c s p d t n m x -> c s p d t n m x
universalCone CokernelG ConeLiftable DiagramFree N1 AbHom
q'Coker
u' :: AbHom
u' = KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
-> Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
LimesG c s p d t n m x -> Cone s p d t n m x -> x
universalFactor KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
hpKer Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
x'Cone
x'Cone :: Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
x'Cone = SliceDiagram (Free k) ('Parallel 'LeftToRight) N2 N1 AbHom
-> AbHom
-> Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
forall a (d :: DiagramType -> N' -> N' -> * -> *) (m :: N').
Distributive a =>
d ('Parallel 'LeftToRight) N2 m a
-> a -> Cone Dst 'Projective d ('Parallel 'LeftToRight) N2 m a
ConeKernel (Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> SliceDiagram (Free k) ('Parallel 'LeftToRight) N2 N1 AbHom
forall s (p :: Perspective)
(d :: DiagramType -> N' -> N' -> * -> *) (t :: DiagramType)
(n :: N') (m :: N') a.
Cone s p d t n m a -> d t n m a
diagrammaticObject (Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> SliceDiagram (Free k) ('Parallel 'LeftToRight) N2 N1 AbHom)
-> Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> SliceDiagram (Free k) ('Parallel 'LeftToRight) N2 N1 AbHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ ConicFreeTip
Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
forall s (p :: Perspective)
(d :: DiagramType -> N' -> N' -> * -> *) (t :: DiagramType)
(n :: N') (m :: N') x.
ConicFreeTip Cone s p d t n m x -> Cone s p d t n m x
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
Conic c =>
c s p d t n m x -> Cone s p d t n m x
cone (ConicFreeTip
Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom)
-> ConicFreeTip
Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
-> ConicFreeTip
Cone
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
LimesG c s p d t n m x -> c s p d t n m x
universalCone KernelG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
hpKer) AbHom
x'
SliceFrom Free k' AbHom
_ AbHom
x' = Slice 'From (Free k') AbHom -> Slice 'From (Free k') AbHom
forall (k :: N').
Slice 'From (Free k) AbHom -> Slice 'From (Free k) AbHom
lp (Free k' AbHom -> AbHom -> Slice 'From (Free k') AbHom
forall (i :: * -> *) x. i x -> x -> Slice 'From i x
SliceFrom Free k' AbHom
nv' (AbHom
xAbHom -> AbHom -> AbHom
forall c. Multiplicative c => c -> c -> c
*AbHom
t))
abhKernels :: Kernels N1 AbHom
abhKernels :: Kernels N1 AbHom
abhKernels = (Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
-> LimesG
Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom)
-> Kernels N1 AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
(d t n m x -> LimesG c s p d t n m x) -> LimitsG c s p d t n m x
LimitsG Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
-> LimesG
Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
abhKernel
prpAbhKernels :: Statement
prpAbhKernels :: Statement
prpAbhKernels = String -> Label
Prp String
"AbhKernels" Label -> Statement -> Statement
:<=>: Kernels N1 AbHom -> Statement
forall a. Validable a => a -> Statement
valid Kernels N1 AbHom
abhKernels
abhSliceFreeAdjunction :: Attestable k
=> Any k
-> Adjunction (SliceAdjunction (Free k) Cone AbHom)
(SliceFactor From (Free k) AbHom)
(SliceFactor To (Free k) AbHom)
abhSliceFreeAdjunction :: forall (k :: N').
Attestable k =>
Any k
-> Adjunction
(SliceAdjunction (Free k) Cone AbHom)
(SliceFactor 'From (Free k) AbHom)
(SliceFactor 'To (Free k) AbHom)
abhSliceFreeAdjunction Any k
k = SliceCokernels (Free k) Cone AbHom
-> SliceKernels (Free k) Cone AbHom
-> Free k AbHom
-> Adjunction
(SliceAdjunction (Free k) Cone AbHom)
(SliceFactor 'From (Free k) AbHom)
(SliceFactor 'To (Free k) AbHom)
forall d (i :: * -> *)
(c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *).
(Distributive d, Sliced i d, Conic c) =>
SliceCokernels i c d
-> SliceKernels i c d
-> i d
-> Adjunction
(SliceAdjunction i c d)
(SliceFactor 'From i d)
(SliceFactor 'To i d)
slcAdjunction SliceCokernels (Free k) Cone AbHom
slcCoker SliceKernels (Free k) Cone AbHom
slcKer (Any k -> Free k AbHom
forall (k :: N') c. Any k -> Free k c
Free Any k
k) where
slcCoker :: SliceCokernels (Free k) Cone AbHom
slcCoker = LimitsG
ConeLiftable
Dst
'Injective
(SliceDiagram (Free k))
('Parallel 'RightToLeft)
N2
N1
AbHom
-> SliceCokernels (Free k) Cone AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
Conic c =>
LimitsG c s p d t n m x -> LimitsG Cone s p d t n m x
limitsCone (LimitsG
ConeLiftable
Dst
'Injective
(SliceDiagram (Free k))
('Parallel 'RightToLeft)
N2
N1
AbHom
-> SliceCokernels (Free k) Cone AbHom)
-> LimitsG
ConeLiftable
Dst
'Injective
(SliceDiagram (Free k))
('Parallel 'RightToLeft)
N2
N1
AbHom
-> SliceCokernels (Free k) Cone AbHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ Any k
-> LimitsG
ConeLiftable
Dst
'Injective
(SliceDiagram (Free k))
('Parallel 'RightToLeft)
N2
N1
AbHom
forall (k :: N') (q :: N' -> *).
Attestable k =>
q k -> CokernelsG ConeLiftable (SliceDiagram (Free k)) N1 AbHom
abhCokernelsFreeTo'G' Any k
k
slcKer :: SliceKernels (Free k) Cone AbHom
slcKer = LimitsG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> SliceKernels (Free k) Cone AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
Conic c =>
LimitsG c s p d t n m x -> LimitsG Cone s p d t n m x
limitsCone (LimitsG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> SliceKernels (Free k) Cone AbHom)
-> LimitsG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
-> SliceKernels (Free k) Cone AbHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ Any k
-> LimitsG
(ConicFreeTip Cone)
Dst
'Projective
(SliceDiagram (Free k))
('Parallel 'LeftToRight)
N2
N1
AbHom
forall (k :: N') (q :: N' -> *).
Attestable k =>
q k
-> KernelsG (ConicFreeTip Cone) (SliceDiagram (Free k)) N1 AbHom
abhKernelsFreeFromG' Any k
k
abhCokernelLftFreeG :: CokernelDiagram N1 AbHom
-> CokernelG ConeLiftable Diagram N1 AbHom
abhCokernelLftFreeG :: Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
-> CokernelG ConeLiftable Diagram N1 AbHom
abhCokernelLftFreeG d :: Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
d@(DiagramParallelRL Point AbHom
_ Point AbHom
_ (AbHom
h:|FinList n1 AbHom
Nil))
= let fp :: Point AbHom -> FinitePresentation 'To Free AbHom
fp = FinitelyPresentable 'To Free AbHom
-> Point AbHom -> FinitePresentation 'To Free AbHom
forall (s :: Site) (i :: N' -> * -> *) a.
FinitelyPresentable s i a -> Point a -> FinitePresentation s i a
finitePresentation FinitelyPresentable 'To Free AbHom
abgFinPres in case (AbGroup -> FinitePresentation 'To Free AbHom
fp (AbGroup -> FinitePresentation 'To Free AbHom)
-> AbGroup -> FinitePresentation 'To Free AbHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ AbHom -> Point AbHom
forall q. Oriented q => q -> Point q
start AbHom
h,AbGroup -> FinitePresentation 'To Free AbHom
fp (AbGroup -> FinitePresentation 'To Free AbHom)
-> AbGroup -> FinitePresentation 'To Free AbHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ AbHom -> Point AbHom
forall q. Oriented q => q -> Point q
end AbHom
h) of
( GeneratorTo (DiagramChainTo Point AbHom
_ (AbHom
p:|FinList n1 AbHom
_)) Free k' AbHom
ns' Free k'' AbHom
_ Cokernel N1 AbHom
_ LimesG
Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
_ forall (k :: N').
Slice 'From (Free k) AbHom -> Slice 'From (Free k) AbHom
_
, GeneratorTo (DiagramChainTo Point AbHom
_ (AbHom
q:|AbHom
q':|FinList n1 AbHom
Nil)) Free k' AbHom
ne' Free k'' AbHom
_ Cokernel N1 AbHom
q'Coker LimesG
Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom
_ forall (k :: N').
Slice 'From (Free k) AbHom -> Slice 'From (Free k) AbHom
lq
) -> ConeLiftable
Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
-> (Cone
Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
-> AbHom)
-> CokernelG ConeLiftable Diagram N1 AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (d :: DiagramType -> N' -> N' -> * -> *) (t :: DiagramType)
(n :: N') (m :: N') x.
c s 'Injective d t n m x
-> (Cone s 'Injective d t n m x -> x)
-> LimesG c s 'Injective d t n m x
LimesInjective ConeLiftable
Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
w'CnLft Cone Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
-> AbHom
w'Univ where
w'CnLft :: ConeLiftable
Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
w'CnLft = Cone Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
-> LiftableFree 'Injective AbHom
-> ConeLiftable
Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
forall (d :: DiagramType -> N' -> N' -> * -> *) x.
CokernelConic Cone d N1 x
-> LiftableFree 'Injective x
-> ConeLiftable Dst 'Injective d ('Parallel 'RightToLeft) N2 N1 x
ConeCokernelLiftable Cone Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
w'Cn ((forall (k :: N'). Any k -> Liftable 'Injective (Free k) AbHom)
-> LiftableFree 'Injective AbHom
forall (p :: Perspective) x.
(forall (k :: N'). Any k -> Liftable p (Free k) x)
-> LiftableFree p x
LiftableFree Any k -> Liftable 'Injective (Free k) AbHom
forall (k :: N'). Any k -> Liftable 'Injective (Free k) AbHom
w'Lft)
SliceFrom Free k' AbHom
_ AbHom
h' = Slice 'From (Free k') AbHom -> Slice 'From (Free k') AbHom
forall (k :: N').
Slice 'From (Free k) AbHom -> Slice 'From (Free k) AbHom
lq (Free k' AbHom -> AbHom -> Slice 'From (Free k') AbHom
forall (i :: * -> *) x. i x -> x -> Slice 'From i x
SliceFrom Free k' AbHom
ns' (AbHom
hAbHom -> AbHom -> AbHom
forall c. Multiplicative c => c -> c -> c
*AbHom
p))
h'SliceTo :: Slice 'To (Free k') AbHom
h'SliceTo = Free k' AbHom -> AbHom -> Slice 'To (Free k') AbHom
forall (i :: * -> *) x. i x -> x -> Slice 'To i x
SliceTo Free k' AbHom
ne' AbHom
h'
q'SliceTo :: Slice 'To (Free k') AbHom
q'SliceTo = Free k' AbHom -> AbHom -> Slice 'To (Free k') AbHom
forall (i :: * -> *) x. i x -> x -> Slice 'To i x
SliceTo Free k' AbHom
ne' AbHom
q'
cSum :: LimesG
Cone
Mlt
'Injective
Diagram
'Discrete
N2
N0
(SliceFactor 'To (Free k') AbHom)
cSum = LimitsG
Cone
Mlt
'Injective
Diagram
'Discrete
N2
N0
(SliceFactor 'To (Free k') AbHom)
-> Diagram 'Discrete N2 N0 (SliceFactor 'To (Free k') AbHom)
-> LimesG
Cone
Mlt
'Injective
Diagram
'Discrete
N2
N0
(SliceFactor 'To (Free k') AbHom)
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
LimitsG c s p d t n m x -> d t n m x -> LimesG c s p d t n m x
limes (Limits Mlt 'Injective 'Discrete N2 N0 AbHom
-> LimitsG
Cone
Mlt
'Injective
Diagram
'Discrete
N2
N0
(SliceFactor 'To (Free k') AbHom)
forall x (i :: * -> *) (t :: DiagramType) (n :: N') (m :: N').
(Multiplicative x, Sliced i x) =>
Limits Mlt 'Injective t n m x
-> Limits Mlt 'Injective t n m (SliceFactor 'To i x)
slfLimitsInjective Limits Mlt 'Injective 'Discrete N2 N0 AbHom
forall (n :: N'). Sums n AbHom
abhSums)
(FinList N2 (Point (SliceFactor 'To (Free k') AbHom))
-> Diagram 'Discrete N2 N0 (SliceFactor 'To (Free k') AbHom)
forall (n :: N') a. FinList n (Point a) -> Diagram 'Discrete n N0 a
DiagramDiscrete (Slice 'To (Free k') AbHom
h'SliceToSlice 'To (Free k') AbHom
-> FinList N1 (Slice 'To (Free k') AbHom)
-> FinList (N1 + 1) (Slice 'To (Free k') AbHom)
forall a (n1 :: N'). a -> FinList n1 a -> FinList (n1 + 1) a
:|Slice 'To (Free k') AbHom
q'SliceToSlice 'To (Free k') AbHom
-> FinList N0 (Slice 'To (Free k') AbHom)
-> FinList (N0 + 1) (Slice 'To (Free k') AbHom)
forall a (n1 :: N'). a -> FinList n1 a -> FinList (n1 + 1) a
:|FinList N0 (Slice 'To (Free k') AbHom)
forall a. FinList N0 a
Nil))
cSliceTo :: Slice 'To (Free k') AbHom
cSliceTo = Cone
Mlt
'Injective
Diagram
'Discrete
N2
N0
(SliceFactor 'To (Free k') AbHom)
-> Point (SliceFactor 'To (Free k') AbHom)
Cone
Mlt
'Injective
Diagram
'Discrete
N2
N0
(SliceFactor 'To (Free k') AbHom)
-> Slice 'To (Free k') AbHom
forall s (p :: Perspective)
(d :: DiagramType -> N' -> N' -> * -> *) (t :: DiagramType)
(n :: N') (m :: N') a.
Cone s p d t n m a -> Point a
tip (Cone
Mlt
'Injective
Diagram
'Discrete
N2
N0
(SliceFactor 'To (Free k') AbHom)
-> Slice 'To (Free k') AbHom)
-> Cone
Mlt
'Injective
Diagram
'Discrete
N2
N0
(SliceFactor 'To (Free k') AbHom)
-> Slice 'To (Free k') AbHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ Cone
Mlt
'Injective
Diagram
'Discrete
N2
N0
(SliceFactor 'To (Free k') AbHom)
-> Cone
Mlt
'Injective
Diagram
'Discrete
N2
N0
(SliceFactor 'To (Free k') AbHom)
forall s (p :: Perspective)
(d :: DiagramType -> N' -> N' -> * -> *) (t :: DiagramType)
(n :: N') (m :: N') x.
Cone s p d t n m x -> Cone s p d t n m x
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
Conic c =>
c s p d t n m x -> Cone s p d t n m x
cone (Cone
Mlt
'Injective
Diagram
'Discrete
N2
N0
(SliceFactor 'To (Free k') AbHom)
-> Cone
Mlt
'Injective
Diagram
'Discrete
N2
N0
(SliceFactor 'To (Free k') AbHom))
-> Cone
Mlt
'Injective
Diagram
'Discrete
N2
N0
(SliceFactor 'To (Free k') AbHom)
-> Cone
Mlt
'Injective
Diagram
'Discrete
N2
N0
(SliceFactor 'To (Free k') AbHom)
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ LimesG
Cone
Mlt
'Injective
Diagram
'Discrete
N2
N0
(SliceFactor 'To (Free k') AbHom)
-> Cone
Mlt
'Injective
Diagram
'Discrete
N2
N0
(SliceFactor 'To (Free k') AbHom)
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
LimesG c s p d t n m x -> c s p d t n m x
universalCone LimesG
Cone
Mlt
'Injective
Diagram
'Discrete
N2
N0
(SliceFactor 'To (Free k') AbHom)
cSum
cCokerLft :: LimesG
ConeLiftable
Dst
'Injective
(SliceDiagram (Free k'))
('Parallel 'RightToLeft)
N2
N1
AbHom
cCokerLft = LimitsG
ConeLiftable
Dst
'Injective
(SliceDiagram (Free k'))
('Parallel 'RightToLeft)
N2
N1
AbHom
-> SliceDiagram (Free k') ('Parallel 'RightToLeft) N2 N1 AbHom
-> LimesG
ConeLiftable
Dst
'Injective
(SliceDiagram (Free k'))
('Parallel 'RightToLeft)
N2
N1
AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
LimitsG c s p d t n m x -> d t n m x -> LimesG c s p d t n m x
limes LimitsG
ConeLiftable
Dst
'Injective
(SliceDiagram (Free k'))
('Parallel 'RightToLeft)
N2
N1
AbHom
forall (k :: N').
Attestable k =>
CokernelsG ConeLiftable (SliceDiagram (Free k)) N1 AbHom
abhCokernelsFreeTo'G (Slice 'To (Free k') AbHom
-> SliceDiagram (Free k') ('Parallel 'RightToLeft) N2 N1 AbHom
forall (i :: * -> *) x.
Sliced i x =>
Slice 'To i x -> SliceDiagram i ('Parallel 'RightToLeft) N2 N1 x
SliceDiagramCokernel Slice 'To (Free k') AbHom
cSliceTo)
c' :: AbHom
c' = CokernelConic ConeLiftable (SliceDiagram (Free k')) N1 AbHom
-> AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
(d :: DiagramType -> N' -> N' -> * -> *) (n :: N') x.
Conic c =>
CokernelConic c d n x -> x
cokernelFactor (CokernelConic ConeLiftable (SliceDiagram (Free k')) N1 AbHom
-> AbHom)
-> CokernelConic ConeLiftable (SliceDiagram (Free k')) N1 AbHom
-> AbHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ LimesG
ConeLiftable
Dst
'Injective
(SliceDiagram (Free k'))
('Parallel 'RightToLeft)
N2
N1
AbHom
-> CokernelConic ConeLiftable (SliceDiagram (Free k')) N1 AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
LimesG c s p d t n m x -> c s p d t n m x
universalCone LimesG
ConeLiftable
Dst
'Injective
(SliceDiagram (Free k'))
('Parallel 'RightToLeft)
N2
N1
AbHom
cCokerLft
w' :: AbHom
w' = Cokernel N1 AbHom
-> Cone Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
-> AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
LimesG c s p d t n m x -> Cone s p d t n m x -> x
universalFactor Cokernel N1 AbHom
q'Coker (Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
-> AbHom
-> Cone Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
forall a (d :: DiagramType -> N' -> N' -> * -> *) (m :: N').
Distributive a =>
d ('Parallel 'RightToLeft) N2 m a
-> a -> Cone Dst 'Injective d ('Parallel 'RightToLeft) N2 m a
ConeCokernel (Cone Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
-> Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
forall s (p :: Perspective)
(d :: DiagramType -> N' -> N' -> * -> *) (t :: DiagramType)
(n :: N') (m :: N') a.
Cone s p d t n m a -> d t n m a
diagrammaticObject (Cone Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
-> Diagram ('Parallel 'RightToLeft) N2 N1 AbHom)
-> Cone Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
-> Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ Cone Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
-> Cone Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
forall s (p :: Perspective)
(d :: DiagramType -> N' -> N' -> * -> *) (t :: DiagramType)
(n :: N') (m :: N') x.
Cone s p d t n m x -> Cone s p d t n m x
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
Conic c =>
c s p d t n m x -> Cone s p d t n m x
cone (Cone Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
-> Cone
Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom)
-> Cone Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
-> Cone Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ Cokernel N1 AbHom
-> Cone Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
LimesG c s p d t n m x -> c s p d t n m x
universalCone Cokernel N1 AbHom
q'Coker) AbHom
c')
w'Cn :: Cone Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
w'Cn = Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
-> AbHom
-> Cone Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
forall a (d :: DiagramType -> N' -> N' -> * -> *) (m :: N').
Distributive a =>
d ('Parallel 'RightToLeft) N2 m a
-> a -> Cone Dst 'Injective d ('Parallel 'RightToLeft) N2 m a
ConeCokernel Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
d AbHom
w'
w'Lft :: Any k -> Liftable Injective (Free k) AbHom
w'Lft :: forall (k :: N'). Any k -> Liftable 'Injective (Free k) AbHom
w'Lft Any k
k = case Any k -> Ats k
forall (n :: N'). Any n -> Ats n
ats Any k
k of
Ats k
Ats -> AbHom
-> (Slice 'From (Free k) AbHom -> Slice 'From (Free k) AbHom)
-> Liftable 'Injective (Free k) AbHom
forall (i :: * -> *) x.
Sliced i x =>
x
-> (Slice 'From i x -> Slice 'From i x) -> Liftable 'Injective i x
LiftableInjective AbHom
w' Slice 'From (Free k) AbHom -> Slice 'From (Free k) AbHom
w'SlcFromLft where
w'SlcFromLft :: Slice 'From (Free k) AbHom -> Slice 'From (Free k) AbHom
w'SlcFromLft Slice 'From (Free k) AbHom
f = Free k AbHom -> AbHom -> Slice 'From (Free k) AbHom
forall (i :: * -> *) x. i x -> x -> Slice 'From i x
SliceFrom Free k AbHom
nk (AbHom
qAbHom -> AbHom -> AbHom
forall c. Multiplicative c => c -> c -> c
*AbHom
f') where
SliceFrom Free k AbHom
nk AbHom
f' = Liftable 'Injective (Free k) AbHom
-> Slice (ToSite 'Injective) (Free k) AbHom
-> Slice (ToSite 'Injective) (Free k) AbHom
forall (p :: Perspective) (i :: * -> *) x.
Liftable p i x -> Slice (ToSite p) i x -> Slice (ToSite p) i x
lift (LiftableFree 'Injective AbHom
-> Any k -> Liftable 'Injective (Free k) AbHom
forall (p :: Perspective) x (k :: N').
LiftableFree p x -> Any k -> Liftable p (Free k) x
liftFree (CokernelConic ConeLiftable (SliceDiagram (Free k')) N1 AbHom
-> LiftableFree 'Injective AbHom
forall s (p :: Perspective)
(d :: DiagramType -> N' -> N' -> * -> *) (t :: DiagramType)
(n :: N') (m :: N') x.
ConeLiftable s p d t n m x -> LiftableFree p x
cnLiftable (CokernelConic ConeLiftable (SliceDiagram (Free k')) N1 AbHom
-> LiftableFree 'Injective AbHom)
-> CokernelConic ConeLiftable (SliceDiagram (Free k')) N1 AbHom
-> LiftableFree 'Injective AbHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ LimesG
ConeLiftable
Dst
'Injective
(SliceDiagram (Free k'))
('Parallel 'RightToLeft)
N2
N1
AbHom
-> CokernelConic ConeLiftable (SliceDiagram (Free k')) N1 AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
LimesG c s p d t n m x -> c s p d t n m x
universalCone LimesG
ConeLiftable
Dst
'Injective
(SliceDiagram (Free k'))
('Parallel 'RightToLeft)
N2
N1
AbHom
cCokerLft) Any k
k) Slice (ToSite 'Injective) (Free k) AbHom
Slice 'From (Free k) AbHom
f
w'Univ :: Cone Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
-> AbHom
w'Univ (ConeCokernel Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
_ AbHom
x) = LimesG
ConeLiftable
Dst
'Injective
(SliceDiagram (Free k'))
('Parallel 'RightToLeft)
N2
N1
AbHom
-> Cone
Dst
'Injective
(SliceDiagram (Free k'))
('Parallel 'RightToLeft)
N2
N1
AbHom
-> AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
LimesG c s p d t n m x -> Cone s p d t n m x -> x
universalFactor LimesG
ConeLiftable
Dst
'Injective
(SliceDiagram (Free k'))
('Parallel 'RightToLeft)
N2
N1
AbHom
cCokerLft Cone
Dst
'Injective
(SliceDiagram (Free k'))
('Parallel 'RightToLeft)
N2
N1
AbHom
cCone where
cCone :: Cone
Dst
'Injective
(SliceDiagram (Free k'))
('Parallel 'RightToLeft)
N2
N1
AbHom
cCone = SliceDiagram (Free k') ('Parallel 'RightToLeft) N2 N1 AbHom
-> AbHom
-> Cone
Dst
'Injective
(SliceDiagram (Free k'))
('Parallel 'RightToLeft)
N2
N1
AbHom
forall a (d :: DiagramType -> N' -> N' -> * -> *) (m :: N').
Distributive a =>
d ('Parallel 'RightToLeft) N2 m a
-> a -> Cone Dst 'Injective d ('Parallel 'RightToLeft) N2 m a
ConeCokernel (Cone
Dst
'Injective
(SliceDiagram (Free k'))
('Parallel 'RightToLeft)
N2
N1
AbHom
-> SliceDiagram (Free k') ('Parallel 'RightToLeft) N2 N1 AbHom
forall s (p :: Perspective)
(d :: DiagramType -> N' -> N' -> * -> *) (t :: DiagramType)
(n :: N') (m :: N') a.
Cone s p d t n m a -> d t n m a
diagrammaticObject (Cone
Dst
'Injective
(SliceDiagram (Free k'))
('Parallel 'RightToLeft)
N2
N1
AbHom
-> SliceDiagram (Free k') ('Parallel 'RightToLeft) N2 N1 AbHom)
-> Cone
Dst
'Injective
(SliceDiagram (Free k'))
('Parallel 'RightToLeft)
N2
N1
AbHom
-> SliceDiagram (Free k') ('Parallel 'RightToLeft) N2 N1 AbHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ CokernelConic ConeLiftable (SliceDiagram (Free k')) N1 AbHom
-> Cone
Dst
'Injective
(SliceDiagram (Free k'))
('Parallel 'RightToLeft)
N2
N1
AbHom
forall s (p :: Perspective)
(d :: DiagramType -> N' -> N' -> * -> *) (t :: DiagramType)
(n :: N') (m :: N') x.
ConeLiftable s p d t n m x -> Cone s p d t n m x
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
Conic c =>
c s p d t n m x -> Cone s p d t n m x
cone (CokernelConic ConeLiftable (SliceDiagram (Free k')) N1 AbHom
-> Cone
Dst
'Injective
(SliceDiagram (Free k'))
('Parallel 'RightToLeft)
N2
N1
AbHom)
-> CokernelConic ConeLiftable (SliceDiagram (Free k')) N1 AbHom
-> Cone
Dst
'Injective
(SliceDiagram (Free k'))
('Parallel 'RightToLeft)
N2
N1
AbHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ LimesG
ConeLiftable
Dst
'Injective
(SliceDiagram (Free k'))
('Parallel 'RightToLeft)
N2
N1
AbHom
-> CokernelConic ConeLiftable (SliceDiagram (Free k')) N1 AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
LimesG c s p d t n m x -> c s p d t n m x
universalCone LimesG
ConeLiftable
Dst
'Injective
(SliceDiagram (Free k'))
('Parallel 'RightToLeft)
N2
N1
AbHom
cCokerLft) (AbHom
xAbHom -> AbHom -> AbHom
forall c. Multiplicative c => c -> c -> c
*AbHom
q)
abhCokernelsLftFreeG :: CokernelsG ConeLiftable Diagram N1 AbHom
abhCokernelsLftFreeG :: CokernelsG ConeLiftable Diagram N1 AbHom
abhCokernelsLftFreeG = (Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
-> CokernelG ConeLiftable Diagram N1 AbHom)
-> CokernelsG ConeLiftable Diagram N1 AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
(d t n m x -> LimesG c s p d t n m x) -> LimitsG c s p d t n m x
LimitsG Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
-> CokernelG ConeLiftable Diagram N1 AbHom
abhCokernelLftFreeG
prpAbhCokernelsLftFreeG :: Statement
prpAbhCokernelsLftFreeG :: Statement
prpAbhCokernelsLftFreeG = String -> Label
Prp String
"AbhCokernelsLftFreeG" Label -> Statement -> Statement
:<=>: CokernelsG ConeLiftable Diagram N1 AbHom -> Statement
forall a. Validable a => a -> Statement
valid CokernelsG ConeLiftable Diagram N1 AbHom
abhCokernelsLftFreeG
abhCokernel :: CokernelDiagram N1 AbHom -> Cokernel N1 AbHom
abhCokernel :: Diagram ('Parallel 'RightToLeft) N2 N1 AbHom -> Cokernel N1 AbHom
abhCokernel = CokernelsG ConeLiftable Diagram N1 AbHom
-> Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
-> Cokernel N1 AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
Conic c =>
LimitsG c s p d t n m x -> d t n m x -> LimesG Cone s p d t n m x
limesCone CokernelsG ConeLiftable Diagram N1 AbHom
abhCokernelsLftFreeG
abhCokernels :: Cokernels N1 AbHom
abhCokernels :: Cokernels N1 AbHom
abhCokernels = CokernelsG ConeLiftable Diagram N1 AbHom -> Cokernels N1 AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
Conic c =>
LimitsG c s p d t n m x -> LimitsG Cone s p d t n m x
limitsCone CokernelsG ConeLiftable Diagram N1 AbHom
abhCokernelsLftFreeG
isoSmithNormal :: AbGroup -> Inv AbHom
isoSmithNormal :: AbGroup -> Inv AbHom
isoSmithNormal AbGroup
g = AbHom -> AbHom -> Inv AbHom
forall c. c -> c -> Inv c
Inv AbHom
h AbHom
h' where
c :: Cokernel N1 AbHom
c = Cokernels N1 AbHom
-> Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
-> Cokernel N1 AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
LimitsG c s p d t n m x -> d t n m x -> LimesG c s p d t n m x
limes Cokernels N1 AbHom
abhCokernels (AbHom -> Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
forall x. Oriented x => x -> CokernelDiagram N1 x
cokernelDiagram (Root AbHom -> AbHom
forall a. Additive a => Root a -> a
zero (Point AbGroup -> AbGroup
forall c. Multiplicative c => Point c -> c
one ()AbGroup -> AbGroup -> Orientation AbGroup
forall p. p -> p -> Orientation p
:>AbGroup
g)))
h :: AbHom
h = Cone Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
-> AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
(d :: DiagramType -> N' -> N' -> * -> *) (n :: N') x.
Conic c =>
CokernelConic c d n x -> x
cokernelFactor (Cone Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
-> AbHom)
-> Cone Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
-> AbHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ Cokernel N1 AbHom
-> Cone Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
LimesG c s p d t n m x -> c s p d t n m x
universalCone Cokernel N1 AbHom
c
h' :: AbHom
h' = Cokernel N1 AbHom
-> Cone Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
-> AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
LimesG c s p d t n m x -> Cone s p d t n m x -> x
universalFactor Cokernel N1 AbHom
c (Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
-> AbHom
-> Cone Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
forall a (d :: DiagramType -> N' -> N' -> * -> *) (m :: N').
Distributive a =>
d ('Parallel 'RightToLeft) N2 m a
-> a -> Cone Dst 'Injective d ('Parallel 'RightToLeft) N2 m a
ConeCokernel (Cone Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
-> Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
forall s (p :: Perspective)
(d :: DiagramType -> N' -> N' -> * -> *) (t :: DiagramType)
(n :: N') (m :: N') a.
Cone s p d t n m a -> d t n m a
diagrammaticObject (Cone Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
-> Diagram ('Parallel 'RightToLeft) N2 N1 AbHom)
-> Cone Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
-> Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ Cone Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
-> Cone Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
forall s (p :: Perspective)
(d :: DiagramType -> N' -> N' -> * -> *) (t :: DiagramType)
(n :: N') (m :: N') x.
Cone s p d t n m x -> Cone s p d t n m x
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
Conic c =>
c s p d t n m x -> Cone s p d t n m x
cone (Cone Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
-> Cone
Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom)
-> Cone Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
-> Cone Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
forall (h :: * -> * -> *) x y. Applicative h => h x y -> x -> y
$ Cokernel N1 AbHom
-> Cone Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom
forall (c :: *
-> Perspective
-> (DiagramType -> N' -> N' -> * -> *)
-> DiagramType
-> N'
-> N'
-> *
-> *)
s (p :: Perspective) (d :: DiagramType -> N' -> N' -> * -> *)
(t :: DiagramType) (n :: N') (m :: N') x.
LimesG c s p d t n m x -> c s p d t n m x
universalCone Cokernel N1 AbHom
c) (Point AbHom -> AbHom
forall c. Multiplicative c => Point c -> c
one Point AbHom
AbGroup
g))