File: lift-doc.m2

package info (click to toggle)
macaulay2 1.21%2Bds-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 133,096 kB
  • sloc: cpp: 110,377; ansic: 16,306; javascript: 4,193; makefile: 3,821; sh: 3,580; lisp: 764; yacc: 590; xml: 177; python: 140; perl: 114; lex: 65; awk: 3
file content (130 lines) | stat: -rw-r--r-- 3,827 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
127
128
129
130
--- 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 ^, RingElement, Ring),
	  (symbol ^, Number, Ring),
	  (symbol ^, RingElement, RingFamily),
	  (symbol ^, Number, RingFamily),
	  (symbol ^, Constant, Ring),
	  (symbol ^, Constant, 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}
     }