# HG changeset patch
# User Michael Orlitzky <michael@orlitzky.com>
# Date 1327366369 18000
# Node ID 7031a3fb43466167cff3a26cb92b4d3b1160fabc
# Parent af53aa8200bce9d7c88fa98349dc10bb1550aae6
Trac #12334: Fix #optional syntax in sage/interfaces/lie.py.
diff --git a/sage/interfaces/lie.py b/sage/interfaces/lie.py
a
|
b
|
|
19 | 19 | |
20 | 20 | |
21 | 21 | EXAMPLES: |
22 | | sage: a4 = lie('A4') # optional -- requires lie package |
23 | | sage: lie.diagram('A4') # optional |
| 22 | sage: a4 = lie('A4') # optional - lie |
| 23 | sage: lie.diagram('A4') # optional - lie |
24 | 24 | O---O---O---O |
25 | 25 | 1 2 3 4 |
26 | 26 | A4 |
27 | 27 | |
28 | | sage: lie.diagram(a4) # optional |
| 28 | sage: lie.diagram(a4) # optional - lie |
29 | 29 | O---O---O---O |
30 | 30 | 1 2 3 4 |
31 | 31 | A4 |
32 | 32 | |
33 | | sage: a4.diagram() # optional |
| 33 | sage: a4.diagram() # optional - lie |
34 | 34 | O---O---O---O |
35 | 35 | 1 2 3 4 |
36 | 36 | A4 |
37 | 37 | |
38 | | sage: a4.Cartan() # optional |
| 38 | sage: a4.Cartan() # optional - lie |
39 | 39 | [[ 2,-1, 0, 0] |
40 | 40 | ,[-1, 2,-1, 0] |
41 | 41 | ,[ 0,-1, 2,-1] |
42 | 42 | ,[ 0, 0,-1, 2] |
43 | 43 | ] |
44 | | sage: lie.LR_tensor([3,1],[2,2]) # optional |
| 44 | sage: lie.LR_tensor([3,1],[2,2]) # optional - lie |
45 | 45 | 1X[5,3] |
46 | 46 | |
47 | 47 | |
… |
… |
|
51 | 51 | |
52 | 52 | You can perform basic arithmetic operations in LiE. |
53 | 53 | |
54 | | sage: lie.eval('19+68') # optional |
| 54 | sage: lie.eval('19+68') # optional - lie |
55 | 55 | '87' |
56 | | sage: a = lie('1111111111*1111111111') # optional |
57 | | sage: a # optional |
| 56 | sage: a = lie('1111111111*1111111111') # optional - lie |
| 57 | sage: a # optional - lie |
58 | 58 | 1234567900987654321 |
59 | | sage: a/1111111111 # optional |
| 59 | sage: a/1111111111 # optional - lie |
60 | 60 | 1111111111 |
61 | | sage: a = lie('345') # optional |
62 | | sage: a^2+3*a-5 # optional |
| 61 | sage: a = lie('345') # optional - lie |
| 62 | sage: a^2+3*a-5 # optional - lie |
63 | 63 | 120055 |
64 | | sage: _ / 7*a # optional |
| 64 | sage: _ / 7*a # optional - lie |
65 | 65 | 5916750 |
66 | 66 | |
67 | 67 | Vectors in LiE are created using square brackets. Notice that |
68 | 68 | the indexing in LiE is 1-based, unlike Python/Sage which is |
69 | 69 | 0-based. |
70 | 70 | |
71 | | sage: v = lie('[3,2,6873,-38]') # optional |
72 | | sage: v # optional |
| 71 | sage: v = lie('[3,2,6873,-38]') # optional - lie |
| 72 | sage: v # optional - lie |
73 | 73 | [3,2,6873,-38] |
74 | | sage: v[3] # optional |
| 74 | sage: v[3] # optional - lie |
75 | 75 | 6873 |
76 | | sage: v+v # optional |
| 76 | sage: v+v # optional - lie |
77 | 77 | [6,4,13746,-76] |
78 | | sage: v*v # optional |
| 78 | sage: v*v # optional - lie |
79 | 79 | 47239586 |
80 | | sage: v+234786 # optional |
| 80 | sage: v+234786 # optional - lie |
81 | 81 | [3,2,6873,-38,234786] |
82 | | sage: v-3 # optional |
| 82 | sage: v-3 # optional - lie |
83 | 83 | [3,2,-38] |
84 | | sage: v^v # optional |
| 84 | sage: v^v # optional - lie |
85 | 85 | [3,2,6873,-38,3,2,6873,-38] |
86 | 86 | |
87 | 87 | You can also work with matrices in LiE. |
88 | 88 | |
89 | | sage: m = lie('[[1,0,3,3],[12,4,-4,7],[-1,9,8,0],[3,-5,-2,9]]') # optional |
90 | | sage: m # optional |
| 89 | sage: m = lie('[[1,0,3,3],[12,4,-4,7],[-1,9,8,0],[3,-5,-2,9]]') # optional - lie |
| 90 | sage: m # optional - lie |
91 | 91 | [[ 1, 0, 3,3] |
92 | 92 | ,[12, 4,-4,7] |
93 | 93 | ,[-1, 9, 8,0] |
94 | 94 | ,[ 3,-5,-2,9] |
95 | 95 | ] |
96 | | sage: print lie.eval('*'+m._name) # optional |
| 96 | sage: print lie.eval('*'+m._name) # optional - lie |
97 | 97 | [[1,12,-1, 3] |
98 | 98 | ,[0, 4, 9,-5] |
99 | 99 | ,[3,-4, 8,-2] |
100 | 100 | ,[3, 7, 0, 9] |
101 | 101 | ] |
102 | 102 | |
103 | | sage: m^3 # optional |
| 103 | sage: m^3 # optional - lie |
104 | 104 | [[ 220, 87, 81, 375] |
105 | 105 | ,[-168,-1089, 13,1013] |
106 | 106 | ,[1550, 357,-55,1593] |
107 | 107 | ,[-854, -652, 98,-170] |
108 | 108 | ] |
109 | | sage: v*m # optional |
| 109 | sage: v*m # optional - lie |
110 | 110 | [-6960,62055,55061,-319] |
111 | | sage: m*v # optional |
| 111 | sage: m*v # optional - lie |
112 | 112 | [20508,-27714,54999,-14089] |
113 | | sage: v*m*v # optional |
| 113 | sage: v*m*v # optional - lie |
114 | 114 | 378549605 |
115 | | sage: m+v # optional |
| 115 | sage: m+v # optional - lie |
116 | 116 | [[ 1, 0, 3, 3] |
117 | 117 | ,[12, 4, -4, 7] |
118 | 118 | ,[-1, 9, 8, 0] |
… |
… |
|
120 | 120 | ,[ 3, 2,6873,-38] |
121 | 121 | ] |
122 | 122 | |
123 | | sage: m-2 # optional |
| 123 | sage: m-2 # optional - lie |
124 | 124 | [[ 1, 0, 3,3] |
125 | 125 | ,[-1, 9, 8,0] |
126 | 126 | ,[ 3,-5,-2,9] |
… |
… |
|
129 | 129 | |
130 | 130 | LiE handles multivariate (Laurent) polynomials. |
131 | 131 | |
132 | | sage: lie('X[1,2]') # optional |
| 132 | sage: lie('X[1,2]') # optional - lie |
133 | 133 | 1X[1,2] |
134 | | sage: -3*_ # optional |
| 134 | sage: -3*_ # optional - lie |
135 | 135 | -3X[1,2] |
136 | | sage: _ + lie('4X[-1,4]') # optional |
| 136 | sage: _ + lie('4X[-1,4]') # optional - lie |
137 | 137 | 4X[-1,4] - 3X[ 1,2] |
138 | | sage: _^2 # optional |
| 138 | sage: _^2 # optional - lie |
139 | 139 | 16X[-2,8] - 24X[ 0,6] + 9X[ 2,4] |
140 | | sage: lie('(4X[-1,4]-3X[1,2])*(X[2,0]-X[0,-4])') # optional |
| 140 | sage: lie('(4X[-1,4]-3X[1,2])*(X[2,0]-X[0,-4])') # optional - lie |
141 | 141 | -4X[-1, 0] + 3X[ 1,-2] + 4X[ 1, 4] - 3X[ 3, 2] |
142 | | sage: _ - _ # optional |
| 142 | sage: _ - _ # optional - lie |
143 | 143 | 0X[0,0] |
144 | 144 | |
145 | 145 | |
146 | 146 | You can call LiE's built-in functions using lie.functionname . |
147 | 147 | |
148 | | sage: lie.partitions(6) # optional |
| 148 | sage: lie.partitions(6) # optional - lie |
149 | 149 | [[6,0,0,0,0,0] |
150 | 150 | ,[5,1,0,0,0,0] |
151 | 151 | ,[4,2,0,0,0,0] |
… |
… |
|
158 | 158 | ,[2,1,1,1,1,0] |
159 | 159 | ,[1,1,1,1,1,1] |
160 | 160 | ] |
161 | | sage: lie.diagram('E8') # optional |
| 161 | sage: lie.diagram('E8') # optional - lie |
162 | 162 | O 2 |
163 | 163 | | |
164 | 164 | | |
… |
… |
|
171 | 171 | a function (say f), you can call it using lie.f ; however, user-defined functions |
172 | 172 | do not show up when using tab-completion. |
173 | 173 | |
174 | | sage: lie.eval('f(int x) = 2*x') # optional |
| 174 | sage: lie.eval('f(int x) = 2*x') # optional - lie |
175 | 175 | '' |
176 | | sage: lie.f(984) # optional |
| 176 | sage: lie.f(984) # optional - lie |
177 | 177 | 1968 |
178 | | sage: lie.eval('f(int n) = a=3*n-7; if a < 0 then a = -a fi; 7^a+a^3-4*a-57') # optional |
| 178 | sage: lie.eval('f(int n) = a=3*n-7; if a < 0 then a = -a fi; 7^a+a^3-4*a-57') # optional - lie |
179 | 179 | '' |
180 | | sage: lie.f(2) # optional |
| 180 | sage: lie.f(2) # optional - lie |
181 | 181 | -53 |
182 | | sage: lie.f(5) # optional |
| 182 | sage: lie.f(5) # optional - lie |
183 | 183 | 5765224 |
184 | 184 | |
185 | 185 | |
… |
… |
|
187 | 187 | LiE's help can be accessed through lie.help('functionname') where |
188 | 188 | functionname is the function you want to receive help for. |
189 | 189 | |
190 | | sage: print lie.help('diagram') # optional |
| 190 | sage: print lie.help('diagram') # optional - lie |
191 | 191 | diagram(g). Prints the Dynkin diagram of g, also indicating |
192 | 192 | the type of each simple component printed, and labeling the nodes as |
193 | 193 | done by Bourbaki (for the second and further simple components the |
… |
… |
|
204 | 204 | |
205 | 205 | Integers: |
206 | 206 | |
207 | | sage: a = lie('1234') # optional |
208 | | sage: b = a.sage(); b # optional |
| 207 | sage: a = lie('1234') # optional - lie |
| 208 | sage: b = a.sage(); b # optional - lie |
209 | 209 | 1234 |
210 | | sage: type(b) # optional |
| 210 | sage: type(b) # optional - lie |
211 | 211 | <type 'sage.rings.integer.Integer'> |
212 | 212 | |
213 | 213 | Vectors: |
214 | 214 | |
215 | | sage: a = lie('[1,2,3]')# optional |
216 | | sage: b = a.sage(); b # optional |
| 215 | sage: a = lie('[1,2,3]') # optional - lie |
| 216 | sage: b = a.sage(); b # optional - lie |
217 | 217 | [1, 2, 3] |
218 | | sage: type(b) # optional |
| 218 | sage: type(b) # optional - lie |
219 | 219 | <type 'list'> |
220 | 220 | |
221 | 221 | Matrices: |
222 | 222 | |
223 | | sage: a = lie('[[1,2],[3,4]]') # optional |
224 | | sage: b = a.sage(); b # optional |
| 223 | sage: a = lie('[[1,2],[3,4]]') # optional - lie |
| 224 | sage: b = a.sage(); b # optional - lie |
225 | 225 | [1 2] |
226 | 226 | [3 4] |
227 | | sage: type(b) # optional |
| 227 | sage: type(b) # optional - lie |
228 | 228 | <type 'sage.matrix.matrix_integer_dense.Matrix_integer_dense'> |
229 | 229 | |
230 | 230 | |
231 | 231 | Polynomials: |
232 | 232 | |
233 | | sage: a = lie('X[1,2] - 2*X[2,1]') # optional |
234 | | sage: b = a.sage(); b # optional |
| 233 | sage: a = lie('X[1,2] - 2*X[2,1]') # optional - lie |
| 234 | sage: b = a.sage(); b # optional - lie |
235 | 235 | -2*x0^2*x1 + x0*x1^2 |
236 | | sage: type(b) # optional |
| 236 | sage: type(b) # optional - lie |
237 | 237 | <type 'sage.rings.polynomial.multi_polynomial_libsingular.MPolynomial_libsingular'> |
238 | 238 | |
239 | 239 | Text: |
240 | 240 | |
241 | | sage: a = lie('"text"') # optional |
242 | | sage: b = a.sage(); b # optional |
| 241 | sage: a = lie('"text"') # optional - lie |
| 242 | sage: b = a.sage(); b # optional - lie |
243 | 243 | 'text' |
244 | | sage: type(b) # optional |
| 244 | sage: type(b) # optional - lie |
245 | 245 | <type 'str'> |
246 | 246 | |
247 | 247 | |
… |
… |
|
250 | 250 | which evaluates a polynomial at a point. Below is a (roughly) direct |
251 | 251 | translation of that program into Python / Sage. |
252 | 252 | |
253 | | sage: def eval_pol(p, pt): # optional |
| 253 | sage: def eval_pol(p, pt): # optional - lie |
254 | 254 | ... s = 0 |
255 | 255 | ... for i in range(1,p.length().sage()+1): |
256 | 256 | ... m = 1 |
… |
… |
|
258 | 258 | ... m *= pt[j]^p.expon(i)[j] |
259 | 259 | ... s += p.coef(i)*m |
260 | 260 | ... return s |
261 | | sage: a = lie('X[1,2]') # optional |
262 | | sage: b1 = lie('[1,2]') # optional |
263 | | sage: b2 = lie('[2,3]') # optional |
264 | | sage: eval_pol(a, b1) # optional |
| 261 | sage: a = lie('X[1,2]') # optional - lie |
| 262 | sage: b1 = lie('[1,2]') # optional - lie |
| 263 | sage: b2 = lie('[2,3]') # optional - lie |
| 264 | sage: eval_pol(a, b1) # optional - lie |
265 | 265 | 4 |
266 | | sage: eval_pol(a, b2) # optional |
| 266 | sage: eval_pol(a, b2) # optional - lie |
267 | 267 | 18 |
268 | 268 | |
269 | 269 | |
… |
… |
|
356 | 356 | sage: lie = LiE() |
357 | 357 | sage: lie._trait_names_list is None |
358 | 358 | True |
359 | | sage: lie._read_info_files(use_disk_cache=False) #optional -- requires LiE |
360 | | sage: lie._trait_names_list #optional |
| 359 | sage: lie._read_info_files(use_disk_cache=False) #optional - lie |
| 360 | sage: lie._trait_names_list # optional - lie |
361 | 361 | ['history', |
362 | 362 | 'version', |
363 | 363 | ... |
… |
… |
|
501 | 501 | def trait_names(self, type=None, verbose=False, use_disk_cache=True): |
502 | 502 | """ |
503 | 503 | EXAMPLES: |
504 | | sage: lie.trait_names() #optional -- requires LiE |
| 504 | sage: lie.trait_names() # optional - lie |
505 | 505 | ['Cartan_type', |
506 | 506 | 'cent_roots', |
507 | 507 | ... |
… |
… |
|
518 | 518 | def _an_element_impl(self): |
519 | 519 | """ |
520 | 520 | EXAMPLES: |
521 | | sage: lie._an_element_impl() #optional -- requires LiE |
| 521 | sage: lie._an_element_impl() # optional - lie |
522 | 522 | 0 |
523 | 523 | """ |
524 | 524 | return self(0) |
… |
… |
|
530 | 530 | sage: f = open(filename, 'w') |
531 | 531 | sage: f.write('x = 2\n') |
532 | 532 | sage: f.close() |
533 | | sage: lie.read(filename) #optional -- requires LiE |
534 | | sage: lie.get('x') #optional |
| 533 | sage: lie.read(filename) # optional - lie |
| 534 | sage: lie.get('x') # optional - lie |
535 | 535 | '2' |
536 | 536 | sage: import os |
537 | 537 | sage: os.unlink(filename) |
… |
… |
|
555 | 555 | def version(self): |
556 | 556 | """ |
557 | 557 | EXAMPLES: |
558 | | sage: lie.version() #optional -- requires LiE |
| 558 | sage: lie.version() # optional - lie |
559 | 559 | '2.1' |
560 | 560 | """ |
561 | 561 | return lie_version() |
… |
… |
|
598 | 598 | Returns a string of the LiE help for command. |
599 | 599 | |
600 | 600 | EXAMPLES: |
601 | | sage: lie.help('diagram') # optional -- requires LiE |
| 601 | sage: lie.help('diagram') # optional - lie |
602 | 602 | 'diagram(g)...' |
603 | 603 | """ |
604 | 604 | # return help on a given command. |
… |
… |
|
612 | 612 | def _eval_line(self, line, allow_use_file=True, wait_for_prompt=True, restart_if_needed=False): |
613 | 613 | """ |
614 | 614 | EXAMPLES: |
615 | | sage: lie._eval_line('2+2') #optional -- requires LiE |
| 615 | sage: lie._eval_line('2+2') # optional - lie |
616 | 616 | ' 4' |
617 | | sage: lie._eval_line('diagram(2)') #optional |
| 617 | sage: lie._eval_line('diagram(2)') # optional - lie |
618 | 618 | Traceback (most recent call last): |
619 | 619 | ... |
620 | 620 | RuntimeError: An error occurred running a LiE command: |
… |
… |
|
633 | 633 | def eval(self, code, strip=True, **kwds): |
634 | 634 | """ |
635 | 635 | EXAMPLES: |
636 | | sage: lie.eval('2+2') #optional -- requires LiE |
| 636 | sage: lie.eval('2+2') # optional - lie |
637 | 637 | '4' |
638 | 638 | """ |
639 | 639 | s = Expect.eval(self,code, strip=True, **kwds) |
… |
… |
|
648 | 648 | Set the variable var to the given value. |
649 | 649 | |
650 | 650 | EXAMPLES: |
651 | | sage: lie.set('x', '2') #optional -- requires LiE |
652 | | sage: lie.get('x') #optional |
| 651 | sage: lie.set('x', '2') # optional - lie |
| 652 | sage: lie.get('x') # optional - lie |
653 | 653 | '2' |
654 | 654 | """ |
655 | 655 | cmd = '%s=%s'%(var,value) |
… |
… |
|
663 | 663 | Get the value of the variable var. |
664 | 664 | |
665 | 665 | EXAMPLES: |
666 | | sage: lie.set('x', '2') #optional -- requires LiE |
667 | | sage: lie.get('x') #optional |
| 666 | sage: lie.set('x', '2') # optional - lie |
| 667 | sage: lie.get('x') # optional - lie |
668 | 668 | '2' |
669 | 669 | |
670 | 670 | """ |
… |
… |
|
684 | 684 | def function_call(self, function, args=None, kwds=None): |
685 | 685 | """ |
686 | 686 | EXAMPLES: |
687 | | sage: lie.function_call("diagram", args=['A4']) #optional -- requires LiE |
| 687 | sage: lie.function_call("diagram", args=['A4']) # optional - lie |
688 | 688 | O---O---O---O |
689 | 689 | 1 2 3 4 |
690 | 690 | A4 |
… |
… |
|
713 | 713 | Returns the possible tab completions for self. |
714 | 714 | |
715 | 715 | EXAMPLES: |
716 | | sage: a4 = lie('A4') #optional -- requires LiE |
717 | | sage: a4.trait_names() #optional |
| 716 | sage: a4 = lie('A4') # optional - lie |
| 717 | sage: a4.trait_names() # optional - lie |
718 | 718 | ['center', |
719 | 719 | 'diagram', |
720 | 720 | ... |
… |
… |
|
726 | 726 | def type(self): |
727 | 727 | """ |
728 | 728 | EXAMPLES: |
729 | | sage: m = lie('[[1,0,3,3],[12,4,-4,7],[-1,9,8,0],[3,-5,-2,9]]') # optional |
730 | | sage: m.type() #optional |
| 729 | sage: m = lie('[[1,0,3,3],[12,4,-4,7],[-1,9,8,0],[3,-5,-2,9]]') # optional - lie |
| 730 | sage: m.type() # optional - lie |
731 | 731 | 'mat' |
732 | 732 | """ |
733 | 733 | t = self.parent().eval('type(%s)'%self._name) |
… |
… |
|
737 | 737 | def _matrix_(self, R=None): |
738 | 738 | """ |
739 | 739 | EXAMPLES: |
740 | | sage: m = lie('[[1,0,3,3],[12,4,-4,7],[-1,9,8,0],[3,-5,-2,9]]') # optional |
741 | | sage: matrix(m) #optional |
| 740 | sage: m = lie('[[1,0,3,3],[12,4,-4,7],[-1,9,8,0],[3,-5,-2,9]]') # optional - lie |
| 741 | sage: matrix(m) # optional - lie |
742 | 742 | [ 1 0 3 3] |
743 | 743 | [12 4 -4 7] |
744 | 744 | [-1 9 8 0] |
745 | 745 | [ 3 -5 -2 9] |
746 | | sage: matrix(RDF, m) #optional |
| 746 | sage: matrix(RDF, m) # optional - lie |
747 | 747 | [ 1.0 0.0 3.0 3.0] |
748 | 748 | [12.0 4.0 -4.0 7.0] |
749 | 749 | [-1.0 9.0 8.0 0.0] |
… |
… |
|
762 | 762 | def _sage_(self): |
763 | 763 | """ |
764 | 764 | EXAMPLES: |
765 | | sage: m = lie('[[1,0,3,3],[12,4,-4,7],[-1,9,8,0],[3,-5,-2,9]]') # optional |
766 | | sage: m.sage() #optional |
| 765 | sage: m = lie('[[1,0,3,3],[12,4,-4,7],[-1,9,8,0],[3,-5,-2,9]]') # optional - lie |
| 766 | sage: m.sage() # optional - lie |
767 | 767 | [ 1 0 3 3] |
768 | 768 | [12 4 -4 7] |
769 | 769 | [-1 9 8 0] |
… |
… |
|
824 | 824 | def _sage_doc_(self): |
825 | 825 | """ |
826 | 826 | EXAMPLES: |
827 | | sage: a4 = lie('A4') # optional -- requires lie package |
828 | | sage: a4.diagram._sage_doc_() #optional |
| 827 | sage: a4 = lie('A4') # optional - lie |
| 828 | sage: a4.diagram._sage_doc_() # optional - lie |
829 | 829 | 'diagram(g)...' |
830 | 830 | """ |
831 | 831 | M = self._obj.parent() |
… |
… |
|
838 | 838 | Returns the help for self. |
839 | 839 | |
840 | 840 | EXAMPLES: |
841 | | sage: lie.diagram._sage_doc_() #optional -- requires LiE |
| 841 | sage: lie.diagram._sage_doc_() # optional - lie |
842 | 842 | 'diagram(g)...' |
843 | 843 | """ |
844 | 844 | M = self._parent |
… |
… |
|
850 | 850 | """ |
851 | 851 | EXAMPLES: |
852 | 852 | sage: from sage.interfaces.lie import is_LiEElement |
853 | | sage: l = lie(2) #optional -- requires LiE |
854 | | sage: is_LiEElement(l) #optional -- requires LiE |
| 853 | sage: l = lie(2) # optional - lie |
| 854 | sage: is_LiEElement(l) # optional - lie |
855 | 855 | True |
856 | 856 | sage: is_LiEElement(2) |
857 | 857 | False |
… |
… |
|
891 | 891 | """ |
892 | 892 | EXAMPLES: |
893 | 893 | sage: from sage.interfaces.lie import lie_version |
894 | | sage: lie_version() #optional -- requires LiE |
| 894 | sage: lie_version() # optional - lie |
895 | 895 | '2.1' |
896 | 896 | """ |
897 | 897 | f = open(SAGE_LOCAL + 'lib/lie/INFO.0') |