Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
100 views
1
\documentclass[11pt]{article}
2
3
\usepackage{amsmath,amssymb,amsthm,amsfonts,amscd,tikz} %usual symbols, theorems, etc
4
\usepackage{tikz-cd} %diagrams
5
\usepackage{multicol} %columns
6
\usepackage{enumerate} %lists
7
\usepackage{hyperref} %links, references
8
\usepackage{aliascnt} %copies counters but with new labels --- for autoref
9
\usepackage{graphicx} %pictures
10
\usepackage{subcaption} %subfigures - use minipage
11
\usetikzlibrary{arrows,matrix,calc,decorations.pathmorphing} %curved arrows
12
\usepackage{mathabx} %more symbols
13
\usepackage{sagetex} %for sage input
14
\usepackage{mathrsfs} %super curly letters
15
\usepackage{bbm} %quaternions
16
\usepackage{microtype} %supposedly makes things nicer, ask Peter
17
\usepackage[margin=1in]{geometry} %margins
18
\usepackage{wrapfig} %wraps figures/tables in text
19
\usepackage{cite} %citations
20
\usepackage{listings} %code blocks
21
22
%code setup
23
\definecolor{dblackcolor}{rgb}{0.0,0.0,0.0}
24
\definecolor{dbluecolor}{rgb}{.01,.02,0.7}
25
\definecolor{dredcolor}{rgb}{0.6,0,0}
26
\definecolor{dgraycolor}{rgb}{0.30,0.3,0.30}
27
\definecolor{lightyellow}{rgb}{1,1,.86}
28
\definecolor{gray}{rgb}{0.6,0.6,0.6}
29
\newcommand{\dblue}{\color{dbluecolor}}
30
\newcommand{\dred}{\color{dredcolor}}
31
\newcommand{\dblack}{\color{dblackcolor}}
32
\newcommand{\dr}{\dred\bf}
33
\lstdefinelanguage{Sage}[]{Python}
34
{morekeywords={True,False,sage,singular},
35
sensitive=true}
36
\lstset{frame=single,
37
showtabs=False,
38
showspaces=False,
39
showstringspaces=False,
40
backgroundcolor=\color{lightyellow},
41
commentstyle={\ttfamily\color{dredcolor}},
42
keywordstyle={\ttfamily\color{dbluecolor}\bfseries},
43
stringstyle ={\ttfamily\color{dgraycolor}\bfseries},
44
language = Sage,
45
basicstyle={\scriptsize \ttfamily},
46
%aboveskip=.3em,
47
%belowskip=.1em
48
}
49
50
51
%GENERAL SYMBOLS
52
\newcommand{\BB}[1]{\mathbb{#1}} %bold face
53
\newcommand{\script}[1]{\mathcal{#1}} %curvy
54
\newcommand{\curly}[1]{\mathscr{#1}} %extra curvy
55
\newcommand{\cat}[1]{\textbf{\emph{#1}}} %bold
56
\renewcommand{\frak}[1]{\mathfrak{#1}} %gothic
57
\newcommand{\del}[1]{\frac{\partial}{\partial{#1}}} %single derivative vector d/dx
58
\newcommand{\ddel}[2]{\frac{\partial{#1}}{\partial{#2}}} %dy/dx
59
\newcommand{\floor}[1]{{\lfloor #1 \rfloor}} %flooor
60
\newcommand{\free}[1]{\left\langle#1\right\rangle} %nice brackets
61
62
%SPECIFIC SYMBOLS
63
\newcommand{\CC}{\BB{C}}
64
\newcommand{\RR}{\BB{R}}
65
\newcommand{\NN}{\BB{N}}
66
\newcommand{\QQ}{\BB{Q}}
67
\newcommand{\ZZ}{\BB{Z}}
68
\newcommand{\PP}{\BB{P}}
69
\renewcommand{\AA}{\BB{A}} %\AA is a non-ascii acented A, weird
70
\newcommand{\HH}{\BB{H}}
71
\newcommand{\DD}{\BB{D}}
72
\newcommand{\TT}{\BB{T}}
73
\newcommand{\FF}{\BB{F}}
74
\newcommand{\RP}{\RR\PP}
75
\newcommand{\CP}{\CC\PP}
76
\renewcommand{\SS}{\BB{S}} %\SS is a silly non-ascii letter "SS".
77
\newcommand{\sF}{\script{F}}
78
\newcommand{\sG}{\script{G}}
79
\renewcommand{\O}{\script{O}}
80
\newcommand{\cF}{\curly{F}}
81
\newcommand{\cG}{\curly{G}}
82
\newcommand{\cH}{\curly{H}}
83
\newcommand{\cO}{\curly{O}}
84
\newcommand{\cL}{\curly{L}}
85
\newcommand{\st}{\colon}
86
\newcommand{\VF}{\frak{X}}
87
\newcommand{\ld}{\curly{L}}
88
\newcommand{\im}{\operatorname{im}}
89
\newcommand{\re}{\operatorname{Re}}
90
\newcommand{\Int}{\operatorname{Int}}
91
\newcommand{\diam}{\operatorname{diam}}
92
\newcommand{\spec}{\operatorname{spec}}
93
\newcommand{\proj}{\operatorname{proj}}
94
\newcommand{\rank}{\operatorname{rank}}
95
\newcommand{\codim}{\operatorname{codim}}
96
\newcommand{\colim}{\operatornamewithlimits{colim}}
97
\newcommand{\nullity}{\operatorname{nullity}}
98
\newcommand{\diag}{\operatorname{diag}}
99
\newcommand{\supp}{\operatorname{Supp}}
100
\newcommand{\Aut}{\operatorname{Aut}}
101
\newcommand{\grad}{\operatorname{grad}}
102
\newcommand{\curl}{\operatorname{curl}}
103
\newcommand{\sgn}{\operatorname{sign}}
104
\newcommand{\sing}{\operatorname{sing}}
105
\newcommand{\coker}{\operatorname{coker}}
106
\newcommand{\tr}{\operatorname{tr}}
107
\newcommand{\GL}{\operatorname{GL}}
108
\newcommand{\SL}{\operatorname{SL}}
109
\newcommand{\lie}{\operatorname{Lie}}
110
\newcommand{\Div}{\operatorname{Div}}
111
\renewcommand{\div}{\operatorname{div}} %renews over % symbol
112
\newcommand{\gal}{\operatorname{Gal}}
113
\newcommand{\ord}{\operatorname{ord}}
114
\newcommand{\res}{\operatorname{res}}
115
\newcommand{\Hom}{\operatorname{Hom}}
116
\newcommand{\op}{\operatorname{op}}
117
\newcommand{\nil}{\operatorname{nil}}
118
\newcommand{\Frac}{\operatorname{Frac}}
119
\renewcommand{\sp}{\operatorname{sp}} %weird upper parenths?
120
\newcommand{\D}{\,d}
121
%into command like interior multiplication in jacks book
122
\newcommand{\into}{\scalebox{0.8}{$\mathrel{
123
\raisebox{-.25em}{\reflectbox{\rotatebox[origin=c]{0}{$-$}}}
124
\hspace*{-0.435em}
125
\raisebox{.05em}{\reflectbox{\rotatebox[origin=c]{90}{$-$}}}
126
}$}}
127
128
%first theorem style
129
\newtheorem{thmc}{pleasedontusethistheoremenvironment}[section]
130
131
%builds a theorem environment with
132
%theoremstyle as first arg
133
%theorem reference as second
134
%printed name of theorem as 3rd
135
\makeatletter
136
\newcommand{\newlabeledtheoremenv}[3][plain]{
137
\theoremstyle{#1}
138
\newaliascnt{#2}{thmc} %theorem has it's own counter
139
\newtheorem{#2}[#2]{#3}
140
\aliascntresetthe{#2}
141
\@namedef{#2autorefname}{#3}%
142
}
143
\makeatother
144
145
\newlabeledtheoremenv[plain]{thm}{Theorem}
146
\newlabeledtheoremenv[plain]{lem}{Lemma}
147
\newlabeledtheoremenv[definition]{rem}{Remark}
148
\newlabeledtheoremenv[plain]{prop}{Proposition}
149
\newlabeledtheoremenv[plain]{cor}{Corollary}
150
\newlabeledtheoremenv[definition]{defn}{Definition}
151
\newlabeledtheoremenv[definition]{ex}{Example}
152
\newlabeledtheoremenv[plain]{conj}{Conjecture}
153
\newlabeledtheoremenv[definition]{quest}{Question}
154
\newlabeledtheoremenv[definition]{note}{Note}
155
\newlabeledtheoremenv[definition]{fact}{Fact}
156
157
\newtheorem*{prob}{Problem}
158
159
160
\theoremstyle{plain}
161
\newtheorem*{claim}{Claim}
162
\theoremstyle{remark}
163
\newtheorem*{reason}{Reason}
164
165
%page style, title page, custom variables
166
\newcommand{\mytitle}{GSoC 2015 Application}
167
\newcommand{\mycontact}{\small {Department of Mathematics, University of Washington, Seattle WA 98195}}
168
\newcommand{\myauthor}{\sc {Travis Scholl}}
169
\newcommand{\myemail}{\small {\href{mailto:tscholl2@uw.edu}{tscholl2@uw.edu}}}
170
171
172
\begin{document}
173
\title{\bfseries\sffamily \mytitle \\ \vspace*{-0.3cm}}
174
\author{\sc \myauthor \\ \myemail \\ \mycontact}
175
\maketitle
176
177
178
\section{Background}
179
180
181
\subsection{Math}
182
183
\indent
184
185
I am a second year graduate student in mathematics at the University of Washington in Seattle. I am working towards a PhD. Academically, I am primarily interested in algebraic number theory, cryptography, and arithmetic of elliptic curves. I have taken several courses and independent studies in these fields as well as algebraic and arithmetic geometry.
186
187
\subsection{Sage}
188
189
\indent
190
191
I enjoy using Sage in my work where applicable. For example, computing primes of good reduction for a given variety or finding torsion points on an elliptic curve. While sometimes I believe in working through an explicit computation by hand, I often feel it's much better to verify the solution with Sage. The Python syntax and built in Sage packages make this very straightforward.
192
193
I am also constantly recommending Sage to my colleagues for their computations. I believe Sage is a great tool for a wide variety of mathematicians because many problems have computational aspects which can be efficiently solved using some package in Sage. Because of this, I would love to help contribute to Sage. Not only would it give me the opportunity to give back to the software that has helped me, but also add and refine functionality in order to help other researchers in similar situations.
194
195
\subsection{Programming}
196
197
\indent
198
199
Coding is a fun hobby of mine that I have enjoyed since college. I graduated from University of Oregon with a minor in computer science where I took standard courses on data structures and algorithms. I am regularly working on some type of pet project in my spare time. I am most interested in web based applications and database design. I have also worked with others on their projects including an indoor positioning system, a reddit bot, and educational websites for math courses.
200
201
My main platform is Windows but I regularly use linux based virtual machines and remote servers to work on various projects. My most comfortable programming languages currently are Python, Go, and CoffeeScript/Javascript. I have been using Sage since I came to University of Washington and would love to learn more about the contribution system and the organizational structure of the code.
202
203
\vspace*{-0.2cm}
204
\begin{center}
205
{\noindent\rule{8cm}{.5pt}}
206
\end{center}
207
\vspace*{-0.2cm}
208
209
\section{Project Outline}
210
211
\subsection{Title}
212
213
\indent
214
215
Adding and Optimizing Functionality in Algebraic Number Theory
216
217
\subsection{Description}
218
219
\indent
220
221
The point of this project will be to improve the Algebraic Number Theory (ANT) package in Sage. Specifically, Sage does not implement the Chinese Remainder Theorem (CRT) with ideals, only with specific elements. However, Magma's implementation allows for the use of ideals.\footnote{See \url{http://magma.maths.usyd.edu.au/magma/handbook/text/174\#1378}.} Also Sage's current Hermite Normal Form (HNF) algorithm only works over PIDs but PARI's algorithm works over orders in number fields.\footnote{See \url{http://pari.math.u-bordeaux.fr/pub/pari/manuals/2.7.0/users.pdf}, page 176.}
222
223
\subsection{Details}
224
225
\begin{enumerate}
226
\item Implement CRT for ideals as general as possible.
227
228
\item Compare implementations between PARI's and Magma's HNF algorithm in order to decide whether to wrap one or write a basic implementation into Sage directly.
229
230
\item Implement all necessary prerequisites for the HNF algorithm such as module theory over rings of integers for arbitrary number fields.
231
232
\item Write (or wrap) an implementation of the HNF algorithm and submit to Sage.
233
\end{enumerate}
234
235
\subsection{Schedule}
236
237
\begin{enumerate}[$\bullet$]
238
\item May 25th - June 5th
239
240
I will be in school which will take take most of my time. However, I plan on using part of this period to review Sage’s internal organization and to get used to its established development process by meeting with my mentor and reading through the documentation.
241
242
\item June 6th - June 10th
243
244
Find sources which describe a CRT algorithm for use with general ideals. Also figure out if all available tools needed are already in Sage. Open a ticket for generalizing the current CRT.
245
246
\item June 11th - June 25th
247
248
Work on writing a working example of CRT with ideals. Try to generalize as much as possible. This will probably require working through a few sections of Cohen's book "Advanced topics in computational number theory".
249
250
\item June 26th - July 3rd
251
252
Review the basic CRT implementation with a mentor.
253
254
\item July 5th - July 11th
255
256
Start reading about HNF in Cohen's book and any other good resources to get an overview of the algorithm.
257
258
\item July 12th - July 19th
259
260
Begin researching into HNF algorithm implementations in PARI and Magma. The goal will be to compare speed/quality between the two and decide whether to try and wrap existing function or writing a new one.
261
262
A few days will be spent learning enough PARI/Magma to run and evaluate the algorithms. At least one day will be compiling all the data and reviewing it with a mentor to decide on the best course of action.
263
264
\item July 20th - July 27th
265
266
Map out any foundational requirements required for using HNF in Sage. For example, there may be missing parts of module theory over rings of integers of number fields that are necessary before writing the HNF algorithm.
267
268
\item July 28th - August 16th
269
270
Most likely this time will be devoted to wrapping the HNF from another library into Sage. Other options include possibly writing a basic, but likely slower, algorithm directly in Sage.
271
272
The reason for the expanded time for wrapping is due to the age and unfamiliarity of PARI code.
273
274
\item August 17th - August 24th
275
276
Adjustment time for when previous steps take longer than expected.
277
278
\end{enumerate}
279
280
\subsection{Risk Management}
281
282
The most likely problem will be time management. Implementing and optimizing CRT or HNF could take more time than expected. Also there is the worry that I could spend time implementing basic CRT or HNF algorithms for Sage only to find it will be too slow to use. In which case I could switch to wrapping the existing functions in PARI or Magma.
283
284
\vspace*{-0.2cm}
285
\begin{center}
286
{\noindent\rule{8cm}{.5pt}}
287
\end{center}
288
\vspace*{-0.2cm}
289
290
\end{document}
291