next | previous | forward | backward | up | top | index | toc | Macaulay2 website
Macaulay2Doc :: Ext^ZZ(Module,Module)

Ext^ZZ(Module,Module) -- Ext module

Synopsis

Description

If M or N is an ideal or ring, it is regarded as a module in the evident way.
i1 : R = ZZ/32003[a..d];
i2 : I = monomialCurveIdeal(R,{1,3,4})

                        3      2     2    2    3    2
o2 = ideal (b*c - a*d, c  - b*d , a*c  - b d, b  - a c)

o2 : Ideal of R
i3 : M = R^1/I

o3 = cokernel | bc-ad c3-bd2 ac2-b2d b3-a2c |

                            1
o3 : R-module, quotient of R
i4 : Ext^1(M,R)
-- ker (10) called with OptionTable: OptionTable{SubringLimit => infinity}
-- ker (10) returned CacheFunction: -*a cache function*-
-- ker (10) called with Matrix: 0
--                            4
-- ker (10) returned Module: R
assert( ker(map(R^0,R^{{4}, {4}, {4}, {4}},0)) === (R^{{4}, {4}, {4}, {4}}))
-- ker (11) called with OptionTable: OptionTable{SubringLimit => infinity}
-- ker (11) returned CacheFunction: -*a cache function*-
-- ker (11) called with Matrix: 0
--                            4
-- ker (11) returned Module: R
assert( ker(map(R^0,R^{{2}, {3}, {3}, {3}},0)) === (R^{{2}, {3}, {3}, {3}}))
-- ker (12) called with OptionTable: OptionTable{SubringLimit => infinity}
-- ker (12) returned CacheFunction: -*a cache function*-
-- ker (12) called with Matrix: 0
--                            1
-- ker (12) returned Module: R
assert( ker(map(R^0,R^1,0)) === (R^1))

o4 = 0

o4 : R-module
i5 : Ext^2(M,R)
-- ker (13) called with OptionTable: OptionTable{SubringLimit => infinity}
-- ker (13) returned CacheFunction: -*a cache function*-
-- ker (13) called with Matrix: 0
--                            1
-- ker (13) returned Module: R
assert( ker(map(R^0,R^{{5}},0)) === (R^{{5}}))
-- ker (14) called with OptionTable: OptionTable{SubringLimit => infinity}
-- ker (14) returned CacheFunction: -*a cache function*-
-- ker (14) called with Matrix: 0
--                            4
-- ker (14) returned Module: R
assert( ker(map(R^0,R^{{4}, {4}, {4}, {4}},0)) === (R^{{4}, {4}, {4}, {4}}))
-- ker (15) called with OptionTable: OptionTable{SubringLimit => infinity}
-- ker (15) returned CacheFunction: -*a cache function*-
-- ker (15) called with Matrix: 0
--                            4
-- ker (15) returned Module: R
assert( ker(map(R^0,R^{{2}, {3}, {3}, {3}},0)) === (R^{{2}, {3}, {3}, {3}}))

o5 = cokernel {-3} | c  a  0 b 0 |
              {-3} | -d -b c 0 a |
              {-3} | 0  0  d c b |

                            3
o5 : R-module, quotient of R
i6 : Ext^3(M,R)
-- ker (16) called with OptionTable: OptionTable{SubringLimit => infinity}
-- ker (16) returned CacheFunction: -*a cache function*-
-- ker (16) called with Matrix: 0
--                            1
-- ker (16) returned Module: R
assert( ker(map(R^0,R^{{5}},0)) === (R^{{5}}))
-- ker (17) called with OptionTable: OptionTable{SubringLimit => infinity}
-- ker (17) returned CacheFunction: -*a cache function*-
-- ker (17) called with Matrix: 0
--                            4
-- ker (17) returned Module: R
assert( ker(map(R^0,R^{{4}, {4}, {4}, {4}},0)) === (R^{{4}, {4}, {4}, {4}}))

o6 = cokernel {-5} | d c b a |

                            1
o6 : R-module, quotient of R
i7 : Ext^1(I,R)
-- ker (18) called with OptionTable: OptionTable{SubringLimit => infinity}
-- ker (18) returned CacheFunction: -*a cache function*-
-- ker (18) called with Matrix: 0
--                            1
-- ker (18) returned Module: R
assert( ker(map(R^0,R^{{5}},0)) === (R^{{5}}))
-- ker (19) called with OptionTable: OptionTable{SubringLimit => infinity}
-- ker (19) returned CacheFunction: -*a cache function*-
-- ker (19) called with Matrix: 0
--                            4
-- ker (19) returned Module: R
assert( ker(map(R^0,R^{{4}, {4}, {4}, {4}},0)) === (R^{{4}, {4}, {4}, {4}}))
-- ker (20) called with OptionTable: OptionTable{SubringLimit => infinity}
-- ker (20) returned CacheFunction: -*a cache function*-
-- ker (20) called with Matrix: 0
--                            4
-- ker (20) returned Module: R
assert( ker(map(R^0,R^{{2}, {3}, {3}, {3}},0)) === (R^{{2}, {3}, {3}, {3}}))

o7 = cokernel {-3} | c 0 -d 0 -b |
              {-3} | b c 0  a 0  |
              {-3} | 0 d c  b a  |

                            3
o7 : R-module, quotient of R
As an efficiency consideration, it is generally much more efficient to compute Ext^i(R^1/I,N) rather than Ext^(i-1)(I,N). The latter first computes a presentation of the ideal I, and then a free resolution of that. For many examples, the difference in time and space required can be very large.

See also