File: lift-doc.m2

package info (click to toggle)
macaulay2 1.24.11%2Bds-5
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 171,648 kB
  • sloc: cpp: 107,850; ansic: 16,307; javascript: 4,188; makefile: 3,947; lisp: 682; yacc: 604; sh: 476; xml: 177; perl: 114; lex: 65; python: 33
file content (126 lines) | stat: -rw-r--r-- 3,695 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
--- status: DRAFT
--- author(s): MES, DRG
--- notes: BUG to fix

-*
-- TODO
lift(Matrix,type of CC_*,type of CC_*)
lift(Matrix,type of RR_*,type of RR_*)
lift(Module,type of InexactNumber')
lift(Module,type of InexactNumber)
lift(Module,type of Number)
lift(Module,type of RingElement)
lift(MutableMatrix,type of InexactNumber')
lift(MutableMatrix,type of InexactNumber)
lift(MutableMatrix,type of Number)
lift(MutableMatrix,type of RingElement)
*-

document { 
     Key => {lift,
	  (lift,Ideal,RingElement),[lift,Verify],
	  (lift,Matrix,RingElement),
	  (lift, CC, QQ),
	  (lift, CC, RR_*),
	  (lift, CC, ZZ),
	  (lift, Ideal, QQ),
	  (lift, Ideal, ZZ),
	  (lift,Matrix,CC_*,QQ),
	  (lift,Matrix,CC_*,RR_*),
	  (lift,Matrix,CC_*,ZZ),
	  (lift,Matrix,Number),
	  (lift,Matrix,QQ,QQ),
	  (lift,Matrix,QQ,ZZ),
	  (lift,Matrix,RR_*,QQ),
	  (lift,Matrix,RR_*,ZZ),
	  (lift,Matrix,ZZ,ZZ),
	  (lift, QQ, QQ),
	  (lift, QQ, ZZ),
	  (lift, RR, QQ),
	  (lift, RR, ZZ),
	  (lift, ZZ, ZZ),
      (lift, RRi, QQ),
      (lift, RRi, RR_*),
      (lift, RRi, ZZ),
	  (symbol ^, Number, Ring),
	  (symbol ^, Number, RingFamily),
      (lift,Matrix,RRi',QQ),
      (lift,Matrix,RRi',RR'),
      (lift,Matrix,RRi',ZZ)
	  },
     Headline => "lift to another ring",
     Usage => "lift(f,R)",
     Inputs => {
	  "f" => {"a ", TO2(RingElement,"ring element"), ", ",
	       TO2(Ideal, "ideal"), ", or ", 
	       TO2(Matrix, "matrix")},
	  "R" => Ring,
	  Verify => Boolean => {"whether to give an error message if lifting is not possible, or, alternatively, to return ", TO "null"}
	  },
     Outputs => {
	  {"a ", TO2(RingElement,"ring element"), ", ",
	       TO2(Ideal, "ideal"), ", or ", 
	       TO2(Matrix, "matrix"), ", over the ring ", TT "R"}
	  },
     PARA {
	  "(Disambiguation: for division of matrices, which is thought of as lifting
	  one homomorphism over another, see instead ", TO (symbol //,Matrix, Matrix), ".  For lifting a map between modules to a map 
	  between their free resolutions, see ", TO extend, ".)"
	  },
     PARA {
	  "The ring ", TT "R", " should be one of the base rings 
	  associated with the ring of ", TT "f",".  An error is raised if
	  ", TT "f", " cannot be lifted to ", TT "R", "."
	  },
     PARA{ "The first example is lifting from the fraction field of R to R." },
     EXAMPLE lines ///
     lift(4/2,ZZ)
     R = ZZ[x];
     f = ((x+1)^3*(x+4))/((x+4)*(x+1))
     lift(f,R)
     ///,
     PARA{
	  "Another use of lift is to take polynomials in a quotient ring
	  and lift them to the polynomial ring.",
	  },
     EXAMPLE lines ///
     A = QQ[a..d];
     B = A/(a^2-b,c^2-d-a-3);
     f = c^5
     lift(f,A)
     jf = jacobian ideal f
     lift(jf,A)
     ///,
     PARA{ "Elements may be lifted to any base ring, if such a lift exists." },
     EXAMPLE lines ///
     use B;
     g = (a^2+2*a-3)-(a+1)^2
     lift(g,A)
     lift(g,QQ)
     lift(lift(g,QQ),ZZ)
     ///,
     PARA {
	  "The functions ", TT "lift", " and ", TO "substitute", " are useful to move numbers from one kind of
	  coefficient ring to another."
	  },
     EXAMPLE lines ///
     lift(3.0,ZZ)
     lift(3.0,QQ)
     ///,
     PARA{
	  "A continued fraction method is used to lift a real number to a rational number, whereas
	  ", TO "promote", " uses the internal binary representation.",
	  },
     EXAMPLE lines ///
     lift(123/2341.,QQ)
     promote(123/2341.,QQ)
     factor oo
     ///,
     PARA { "For numbers and ring elements, an alternate syntax with ", TO "^", " is available,
	  analogous to the use of ", TO "_", " for ", TO "promote", "." },
     EXAMPLE lines ///
     .0001^QQ
     .0001_QQ
     ///,
     SeeAlso => {baseRings,liftable,promote,setupLift}
     }