changeset 408:0580b310dadb

merge
author Xavier Glorot <glorotxa@iro.umontreal.ca>
date Wed, 28 Apr 2010 14:35:30 -0400
parents fe2e2964e7a3 (current diff) a11274742088 (diff)
children f0c2e3cfb1f1
files
diffstat 3 files changed, 1567 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/baseline/mlp/mlp_nist.py	Wed Apr 28 14:35:01 2010 -0400
+++ b/baseline/mlp/mlp_nist.py	Wed Apr 28 14:35:30 2010 -0400
@@ -241,12 +241,27 @@
             predicted_class=numpy.argmax(a1_out[10:62])+10
             if((predicted_class!=wanted_class) and ((predicted_class+26)!=wanted_class) and ((predicted_class-26)!=wanted_class)):
                char_error_count = char_error_count +1
+               
+        #minuscule
+        if(wanted_class>9 and wanted_class<36):
+            maj_exemple_count=maj_exemple_count + 1
+            predicted_class=numpy.argmax(a1_out[10:35])+10
+            if(predicted_class!=wanted_class):
+                maj_error_count = maj_error_count +1
+        #majuscule
+        if(wanted_class>35):
+            min_exemple_count=min_exemple_count + 1
+            predicted_class=numpy.argmax(a1_out[36:62])+36
+            if(predicted_class!=wanted_class):
+                min_error_count = min_error_count +1
             
             
 
     print (('total error = %f') % ((total_error_count/total_exemple_count)*100.0))
     print (('number error = %f') % ((nb_error_count/nb_exemple_count)*100.0))
     print (('char error = %f') % ((char_error_count/char_exemple_count)*100.0))
+    print (('min error = %f') % ((min_error_count/min_exemple_count)*100.0))
+    print (('maj error = %f') % ((maj_error_count/maj_exemple_count)*100.0))
     return (total_error_count/total_exemple_count)*100.0
     
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/writeup/mlapa.bst	Wed Apr 28 14:35:30 2010 -0400
@@ -0,0 +1,1344 @@
+% BibTeX `mlapa' bibliography style (20-Jan-2000 version)
+% Adapted from the `theapa' style; for BibTeX version 0.99a.
+% Copyright (C) 1988, all rights reserved.
+% Copying of this file is allowed, provided that if you make any changes 
+% at all you name it something other than `mlapa.bst'.
+% This restriction helps ensure that all copies are identical.
+% Differences between this style and `alpha' are generally heralded by a `%'.
+% The file btxbst.doc has the documentation for alpha.bst.
+%
+% This style should be used with the `mlapa' LaTeX style (mlapa.sty).
+% \cite's come out as "(Jones, 1986)" in the text but there are no labels
+% in the bibliography, and something like "(1986)" comes out immediately
+% after the author. Author (and editor) names appear as last name, comma,
+% initials.  A `year' field is required for every entry, and so is either
+% an author (or in some cases, an editor) field or a key field.
+%
+% History:
+%   15-sep-86	(SK,OP)	Original version, by Susan King and Oren Patashnik.
+%   10-nov-86	(OP)	Truncated the sort.key$ string to the correct length
+%			in bib.sort.order to eliminate error message.
+%   24-jan-88	(OP)	Updated for BibTeX version 0.99a, from alpha.bst 0.99a;
+%			apalike now sorts by author, then year, then title;
+%			THIS `apalike' VERSION DOES NOT WORK WITH BIBTEX 0.98i.
+%   1/25/91     risto   fixed the bug in (in)proceedings address field.
+%			New York: Wiley.
+%   1/20/2000   langley revised definitions to approximate APA format more
+%                       closely, including proper treatment of pages numbers
+%                       for proceedings, cases for books, and uses of "and"
+%                       versus "&" in the text. 
+
+ENTRY
+  { address
+    author
+    booktitle
+    chapter
+    edition
+    editor
+    howpublished
+    institution
+    journal
+    key
+    location
+%   month		not used in apalike
+    note
+    number
+    organization
+    pages
+    publisher
+    school
+    series
+    title
+    type
+    volume
+    year
+  }
+  {}
+  { label extra.label sort.label auname }
+
+INTEGERS { output.state before.all mid.sentence after.sentence after.block }
+
+FUNCTION {init.state.consts}
+{ #0 'before.all :=
+  #1 'mid.sentence :=
+  #2 'after.sentence :=
+  #3 'after.block :=
+}
+
+STRINGS { s t }
+
+FUNCTION {output.nonnull}
+{ 's :=
+  output.state mid.sentence =
+    { ", " * write$ }
+    { output.state after.block =
+	{ add.period$ write$
+	  newline$
+	  "\newblock " write$
+	}
+	{ output.state before.all =
+	    'write$
+	    { add.period$ " " * write$ }
+	  if$
+	}
+      if$
+      mid.sentence 'output.state :=
+    }
+  if$
+  s
+}
+
+FUNCTION {output.nonnull.colon}
+{ 's :=
+  output.state mid.sentence =
+    { ": " * write$ }
+    { output.state after.block =
+	{ add.period$ write$
+	  newline$
+	  "\newblock " write$
+	}
+	{ output.state before.all =
+	    'write$
+	    { add.period$ " " * write$ }
+	  if$
+	}
+      if$
+      mid.sentence 'output.state :=
+    }
+  if$
+  s
+}
+
+FUNCTION {output.nonnull.nothing}
+{ 's :=
+  output.state mid.sentence =
+    { "" * write$ }
+    { output.state after.block =
+	{ add.period$ write$
+	  newline$
+	  "\newblock " write$
+	}
+	{ output.state before.all =
+	    'write$
+	    { add.period$ " " * write$ }
+	  if$
+	}
+      if$
+      mid.sentence 'output.state :=
+    }
+  if$
+  s
+}
+
+FUNCTION {output}
+{ duplicate$ empty$
+    'pop$
+    'output.nonnull
+  if$
+}
+
+FUNCTION {output.check}
+{ 't :=
+  duplicate$ empty$
+    { pop$ "empty " t * " in " * cite$ * warning$ }
+    'output.nonnull
+  if$
+}
+
+FUNCTION {output.colon}
+{ duplicate$ empty$
+    'pop$
+    'output.nonnull.colon
+  if$
+}
+
+FUNCTION {output.check.colon}
+{ 't :=
+  duplicate$ empty$
+    { pop$ "empty " t * " in " * cite$ * warning$ }
+    'output.nonnull.colon
+  if$
+}
+
+%					apalike needs this function because
+%					the year has special punctuation;
+%					apalike ignores the month
+FUNCTION {output.year.check}
+{ year empty$
+    { "empty year in " cite$ * warning$ }
+    { write$
+      " (" year * extra.label * ")" *
+      mid.sentence 'output.state :=
+    }
+  if$
+}
+
+%FUNCTION {output.bibitem}
+%{ newline$
+%  "\bibitem[" write$
+%  label write$
+%  "]{" write$
+%  cite$ write$
+%  "}" write$
+%  newline$
+%  ""
+%  before.all 'output.state :=
+%}
+
+FUNCTION {output.bibitem}
+{ newline$
+  "\bibitem[" write$
+  label write$
+  "][" write$
+  auname write$
+  "][" write$
+  year write$
+  extra.label write$
+  "]{" write$
+  cite$ write$
+  "}" write$
+  newline$
+  ""
+  before.all 'output.state :=
+}
+
+FUNCTION {fin.entry}
+{ add.period$
+  write$
+  newline$
+}
+
+FUNCTION {new.block}
+{ output.state before.all =
+    'skip$
+    { after.block 'output.state := }
+  if$
+}
+
+FUNCTION {new.sentence}
+{ output.state after.block =
+    'skip$
+    { output.state before.all =
+	'skip$
+	{ after.sentence 'output.state := }
+      if$
+    }
+  if$
+}
+
+FUNCTION {not}
+{   { #0 }
+    { #1 }
+  if$
+}
+
+FUNCTION {and}
+{   'skip$
+    { pop$ #0 }
+  if$
+}
+
+FUNCTION {or}
+{   { pop$ #1 }
+    'skip$
+  if$
+}
+
+FUNCTION {new.block.checkb}
+{ empty$
+  swap$ empty$
+  and
+    'skip$
+    'new.block
+  if$
+}
+
+FUNCTION {field.or.null}
+{ duplicate$ empty$
+    { pop$ "" }
+    'skip$
+  if$
+}
+
+FUNCTION {emphasize}
+{ duplicate$ empty$
+    { pop$ "" }
+    { "{\em " swap$ * "}" * }
+  if$
+}
+
+INTEGERS { nameptr namesleft numnames }
+
+FUNCTION {format.names}
+{ 's :=
+  #1 'nameptr :=
+  s num.names$ 'numnames :=
+  numnames 'namesleft :=
+    { namesleft #0 > }
+    { s nameptr "{vv~}{ll}{, jj}{, f.}" format.name$ 't :=  % last name first
+      nameptr #1 >
+	{ namesleft #1 >
+	    { ", " * t * }
+	    { numnames #1 >
+		{ "," * }
+		'skip$
+	      if$
+	      t "others" =
+		{ " et~al.\/" * }
+		{ " \& " * t * }
+	      if$
+	    }
+	  if$
+	}
+	't
+      if$
+      nameptr #1 + 'nameptr :=
+      namesleft #1 - 'namesleft :=
+    }
+  while$
+}
+
+% We need a special function to format editor names, since their initials
+% should come before their last name, unlike those for authors. 
+
+FUNCTION {format.in.names}
+{ 's :=
+  #1 'nameptr :=
+  s num.names$ 'numnames :=
+  numnames 'namesleft :=
+    { namesleft #0 > }
+    { s nameptr "{vv~}{f.~}{ll}" format.name$ 't :=   % first name last
+      nameptr #1 >
+	{ namesleft #1 >
+	    { ", " * t * }
+	    { numnames #1 >
+		{ "" * }
+		'skip$
+	      if$
+	      t "others" =
+		{ " et~al.\/" * }
+		{ " and " * t * }
+	      if$
+	    }
+	  if$
+	}
+	't
+      if$
+      nameptr #1 + 'nameptr :=
+      namesleft #1 - 'namesleft :=
+    }
+  while$
+}
+
+FUNCTION {format.authors}
+{ author empty$
+    { "" }
+    { author format.names }
+  if$
+}
+
+FUNCTION {format.key}			% this function is just for apalike
+{ empty$
+    { key field.or.null }
+    { "" }
+  if$
+}
+
+FUNCTION {format.book.editors}
+{ editor empty$
+    { "" }
+    { editor format.names
+      editor num.names$ #1 >
+	{ " (Eds.)." * }
+	{ " (Ed.)." * }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.in.editors}
+{ editor empty$
+    { "" }
+    { editor format.in.names
+      editor num.names$ #1 >
+	{ " (Eds.)" * }
+	{ " (Ed.)" * }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.title}
+{ title empty$
+    { "" }
+    { title "t" change.case$ }
+  if$
+}
+
+FUNCTION {n.dashify}
+{ 't :=
+  ""
+    { t empty$ not }
+    { t #1 #1 substring$ "-" =
+	{ t #1 #2 substring$ "--" = not
+	    { "--" *
+	      t #2 global.max$ substring$ 't :=
+	    }
+	    {   { t #1 #1 substring$ "-" = }
+		{ "-" *
+		  t #2 global.max$ substring$ 't :=
+		}
+	      while$
+	    }
+	  if$
+	}
+	{ t #1 #1 substring$ *
+	  t #2 global.max$ substring$ 't :=
+	}
+      if$
+    }
+  while$
+}
+
+FUNCTION {format.btitle}
+{ title "t" change.case$ emphasize 
+}
+
+FUNCTION {tie.or.space.connect}
+{ duplicate$ text.length$ #3 <
+    { "~" }
+    { " " }
+  if$
+  swap$ * *
+}
+
+FUNCTION {either.or.check}
+{ empty$
+    'pop$
+    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+  if$
+}
+
+FUNCTION {format.bvolume}
+{ volume empty$
+    { "" }
+    { "vol." volume tie.or.space.connect
+      series empty$
+	'skip$
+	{ " of " * series emphasize * }
+      if$
+      "volume and number" number either.or.check
+    }
+  if$
+}
+
+FUNCTION {format.number.series}
+{ volume empty$
+    { number empty$
+	{ series field.or.null }
+	{ output.state mid.sentence =
+	    { "no." }
+	    { "No." }
+	  if$
+	  number tie.or.space.connect
+	  series empty$
+	    { "there's a number but no series in " cite$ * warning$ }
+	    { " in " * series * }
+	  if$
+	}
+      if$
+    }
+    { "" }
+  if$
+}
+
+FUNCTION {format.edition}
+{ edition empty$
+    { "" }
+    { output.state mid.sentence =
+	{ edition "l" change.case$ " edition" * }
+	{ edition "t" change.case$ " edition" * }
+      if$
+    }
+  if$
+}
+
+INTEGERS { multiresult }
+
+FUNCTION {multi.page.check}
+{ 't :=
+  #0 'multiresult :=
+    { multiresult not
+      t empty$ not
+      and
+    }
+    { t #1 #1 substring$
+      duplicate$ "-" =
+      swap$ duplicate$ "," =
+      swap$ "+" =
+      or or
+	{ #1 'multiresult := }
+	{ t #2 global.max$ substring$ 't := }
+      if$
+    }
+  while$
+  multiresult
+}
+
+FUNCTION {format.pages}
+{ pages empty$
+    { "" }
+    { pages multi.page.check
+	{ "" pages n.dashify tie.or.space.connect }
+	{ "" pages tie.or.space.connect }
+%	{ "pages" pages n.dashify tie.or.space.connect }
+%	{ "page" pages tie.or.space.connect }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.proc.pages}
+{ pages empty$
+    { "." }
+    { pages multi.page.check
+	{ " (pp.\/" pages n.dashify tie.or.space.connect * ")." }
+	{ " (p.\/" pages n.dashify tie.or.space.connect * ")." }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.vol.num.pages}
+{ volume emphasize field.or.null
+  number empty$
+    'skip$
+    { "(" number * ")" * *
+      volume empty$
+	{ "there's a number but no volume in " cite$ * warning$ }
+	'skip$
+      if$
+    }
+  if$
+  pages empty$
+    'skip$
+    { duplicate$ empty$
+	{ pop$ format.pages }
+	{ ", " * pages n.dashify * }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.vol.pages}
+{ volume emphasize field.or.null
+  pages empty$
+    'skip$
+    { duplicate$ empty$
+	{ pop$ format.pages }
+	{ ", " * pages n.dashify * }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.chapter.pages}
+{ chapter empty$
+    'format.pages
+    { type empty$
+	{ "chapter" }
+	{ type "l" change.case$ }
+      if$
+      chapter tie.or.space.connect
+      pages empty$
+	'skip$
+	{ ", " * format.pages * }
+      if$
+    }
+  if$
+}
+
+FUNCTION {address.or.location}
+{ address empty$
+    { location empty$
+	{ "" }
+	{ location }
+      if$
+    }
+    { address }
+  if$
+}
+
+FUNCTION {format.in.ed.booktitle}
+{ booktitle empty$
+    { "" }
+    { editor empty$
+	{ "In " booktitle "t" change.case$ emphasize * }
+	{ "In " format.in.editors * ", " * booktitle "t" change.case$ emphasize * }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.in.proc.booktitle}
+{ booktitle empty$
+    { "" }
+    { booktitle emphasize }
+  if$
+}
+
+FUNCTION {format.thesis.type}
+{ type empty$
+    'skip$
+    { pop$
+      type "t" change.case$
+    }
+  if$
+}
+
+FUNCTION {format.tr.number}
+{ type empty$
+    { " (Technical Report" }
+    'type
+  if$
+  number empty$
+%   { "t" change.case$ * ")." }
+    { * ")." }
+    { number tie.or.space.connect * ")." }
+  if$
+}
+
+FUNCTION {format.article.crossref}
+{ "In"							% this is for apalike
+  " \cite{" * crossref * "}" *
+}
+
+FUNCTION {format.book.crossref}
+{ volume empty$
+    { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+      "In "
+    }
+    { "Volume" volume tie.or.space.connect
+      " of " *
+    }
+  if$
+  "\cite{" * crossref * "}" *				% this is for apalike
+}
+
+FUNCTION {format.incoll.inproc.crossref}
+{ "In"							% this is for apalike
+  " \cite{" * crossref * "}" *
+}
+
+FUNCTION {article}
+{ output.bibitem
+  format.authors "author" output.check
+  author format.key output				% special for
+  output.year.check					% apalike
+  new.block
+  format.title "title" output.check
+  new.block
+  crossref missing$
+    { journal emphasize "journal" output.check
+%     format.vol.num.pages output
+      format.vol.pages output
+    }
+    { format.article.crossref output.nonnull
+      format.pages output
+    }
+  if$
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {book}
+{ output.bibitem
+  author empty$
+    { format.book.editors "author and editor" output.check
+      editor format.key output
+    }
+    { format.authors output.nonnull
+      crossref missing$
+	{ "author and editor" editor either.or.check }
+	'skip$
+      if$
+    }
+  if$
+  output.year.check				% special for apalike
+  new.block
+  format.btitle "title" output.check
+  crossref missing$
+    { format.bvolume output
+      new.block
+      format.number.series output
+      new.sentence
+      address output
+      publisher "publisher" output.check.colon
+    }
+    { new.block
+      format.book.crossref output.nonnull
+    }
+  if$
+  new.sentence
+  format.edition output
+  note output
+  fin.entry
+}
+
+FUNCTION {booklet}
+{ output.bibitem
+  format.authors output
+  author format.key output				% special for
+  output.year.check					% apalike
+  new.block
+  format.title "title" output.check
+  new.block
+  howpublished output
+  address output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {inbook}
+{ output.bibitem
+  author empty$
+    { format.in.editors "author and editor" output.check
+      editor format.key output
+    }
+    { format.authors output.nonnull
+      crossref missing$
+	{ "author and editor" editor either.or.check }
+	'skip$
+      if$
+    }
+  if$
+  output.year.check				% special for apalike
+  new.block
+  format.btitle "title" output.check
+  crossref missing$
+    { format.bvolume output
+      format.chapter.pages "chapter and pages" output.check
+      new.block
+      format.number.series output
+      new.sentence
+      address output
+      publisher "publisher" output.check.colon
+    }
+    { format.chapter.pages "chapter and pages" output.check
+      new.block
+      format.book.crossref output.nonnull
+    }
+  if$
+  new.sentence
+  format.edition output
+  note output
+  fin.entry
+}
+
+FUNCTION {incollection}
+{ output.bibitem
+  format.authors "author" output.check
+  author format.key output				% special for
+  output.year.check					% apalike
+  new.block
+  format.title "title" output.check
+  new.block
+  crossref missing$
+    { format.in.ed.booktitle "booktitle" output.check
+      format.bvolume output
+      format.number.series output
+      format.chapter.pages output
+      new.sentence
+      address output
+      publisher "publisher" output.check.colon
+    }
+    { format.incoll.inproc.crossref output.nonnull
+      format.chapter.pages output
+    }
+  if$
+  new.sentence
+  format.edition output
+  note output
+  fin.entry
+}
+
+FUNCTION {inproceedings}
+{ output.bibitem
+  format.authors "author" output.check
+  author format.key output				% special for
+  output.year.check					% apalike
+  new.block
+  format.title "title" output.check
+  new.block
+  crossref missing$
+    { format.in.proc.booktitle "booktitle" output.check
+%     format.bvolume output
+%     format.number.series output
+      format.proc.pages output.nonnull.nothing		% for apalike
+      new.block						% there's no year
+%     organization output				% here so things
+%     new.sentence					% there's no year
+%     address output
+      address.or.location output
+      publisher output.colon				% are simpler
+    }
+    { format.incoll.inproc.crossref output.nonnull
+      format.pages output
+    }
+  if$
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {conference} { inproceedings }
+
+FUNCTION {manual}
+{ output.bibitem
+  format.authors output
+  author format.key output				% special for
+  output.year.check					% apalike
+  new.block
+  format.btitle "title" output.check
+  organization address new.block.checkb
+  organization output
+  address output
+  new.sentence
+  format.edition output
+  note output
+  fin.entry
+}
+
+FUNCTION {mastersthesis}
+{ output.bibitem
+  format.authors "author" output.check
+  author format.key output				% special for
+  output.year.check					% apalike
+  new.block
+  format.title "title" output.check
+  new.block
+  "Master's thesis" format.thesis.type output.nonnull
+  school "school" output.check
+  address output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {misc}
+{ output.bibitem
+  format.authors output
+  author format.key output				% special for
+  output.year.check					% apalike
+  new.block
+  format.title output
+  new.block
+  howpublished output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {phdthesis}
+{ output.bibitem
+  format.authors "author" output.check
+  author format.key output				% special for
+  output.year.check					% apalike
+  new.block
+  format.btitle "title" output.check
+  new.block
+  "Doctoral dissertation" format.thesis.type output.nonnull
+  school "school" output.check
+  address output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {proceedings}
+{ output.bibitem
+% format.editors output
+  format.book.editors editor output.check
+  editor format.key output				% special for
+  output.year.check					% apalike
+  new.block
+  format.btitle "title" output.check
+  format.bvolume output
+  format.number.series output			% for apalike
+  new.sentence					% we always output
+  organization output				% a nonempty organization
+  new.sentence					% we always output
+  address output
+  publisher output.colon			% here
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {techreport}
+{ output.bibitem
+  author empty$
+    { format.book.editors "author and editor" output.check
+      editor format.key output
+    }
+    { format.authors "author" output.check
+      author format.key output				% special for
+    }							% apalike
+  if$
+  output.year.check					
+  new.block
+  format.btitle "title" output.check
+  format.tr.number output.nonnull.nothing
+  new.block
+  institution "institution" output.check
+  address output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {unpublished}
+{ output.bibitem
+  format.authors "author" output.check
+  author format.key output				% special for
+  output.year.check					% apalike
+  new.block
+  format.title "title" output.check
+  new.block
+  note "note" output.check
+  fin.entry
+}
+
+FUNCTION {default.type} { misc }
+
+MACRO {jan} {"January"}
+
+MACRO {feb} {"February"}
+
+MACRO {mar} {"March"}
+
+MACRO {apr} {"April"}
+
+MACRO {may} {"May"}
+
+MACRO {jun} {"June"}
+
+MACRO {jul} {"July"}
+
+MACRO {aug} {"August"}
+
+MACRO {sep} {"September"}
+
+MACRO {oct} {"October"}
+
+MACRO {nov} {"November"}
+
+MACRO {dec} {"December"}
+
+MACRO {mlj} {"Machine Learning"}
+
+MACRO {jair} {"Journal of Artificial Intelligence Research"}
+
+MACRO {aij} {"Artificial Intelligence"}
+
+MACRO {acmcs} {"ACM Computing Surveys"}
+
+MACRO {acta} {"Acta Informatica"}
+
+MACRO {cacm} {"Communications of the ACM"}
+
+MACRO {ibmjrd} {"IBM Journal of Research and Development"}
+
+MACRO {ibmsj} {"IBM Systems Journal"}
+
+MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
+
+MACRO {ieeetc} {"IEEE Transactions on Computers"}
+
+MACRO {ieeetcad}
+ {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
+
+MACRO {ipl} {"Information Processing Letters"}
+
+MACRO {jacm} {"Journal of the ACM"}
+
+MACRO {jcss} {"Journal of Computer and System Sciences"}
+
+MACRO {scp} {"Science of Computer Programming"}
+
+MACRO {sicomp} {"SIAM Journal on Computing"}
+
+MACRO {tocs} {"ACM Transactions on Computer Systems"}
+
+MACRO {tods} {"ACM Transactions on Database Systems"}
+
+MACRO {tog} {"ACM Transactions on Graphics"}
+
+MACRO {toms} {"ACM Transactions on Mathematical Software"}
+
+MACRO {toois} {"ACM Transactions on Office Information Systems"}
+
+MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
+
+MACRO {tcs} {"Theoretical Computer Science"}
+
+READ
+
+FUNCTION {sortify}
+{ purify$
+  "l" change.case$
+}
+
+INTEGERS { len }
+
+FUNCTION {chop.word}
+{ 's :=
+  'len :=
+  s #1 len substring$ =
+    { s len #1 + global.max$ substring$ }
+    's
+  if$
+}
+
+%			There are three apalike cases: one person (Jones),
+%			two (Jones and de~Bruijn), and more (Jones et~al.).
+%			This function is much like format.crossref.editors.
+%
+FUNCTION {format.lab.in.names}
+{ 's :=
+  s #1 "{vv~}{ll}" format.name$
+  s num.names$ duplicate$
+  #2 >
+    { pop$ " et~al.\/" * }
+    { #2 <
+	'skip$
+	{ s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+	    { " et~al.\/" * }
+	    { " \& " * s #2 "{vv~}{ll}" format.name$ * }
+	  if$
+	}
+      if$
+    }
+  if$
+}
+
+FUNCTION {author.key.in.label}
+{ author empty$
+    { key empty$
+	{ cite$ #1 #3 substring$ }
+	'key					% apalike uses the whole key
+      if$
+    }
+    { author format.lab.in.names }
+  if$
+}
+
+FUNCTION {author.editor.key.in.label}
+{ author empty$
+    { editor empty$
+	{ key empty$
+	    { cite$ #1 #3 substring$ }
+	    'key				% apalike uses the whole key
+	  if$
+	}
+	{ editor format.lab.in.names }
+      if$
+    }
+    { author format.lab.in.names }
+  if$
+}
+
+FUNCTION {editor.key.in.label}
+{ editor empty$
+    { key empty$
+	{ cite$ #1 #3 substring$ }
+	'key			% apalike uses the whole key, no organization
+      if$
+    }
+    { editor format.lab.in.names }
+  if$
+}
+
+FUNCTION {format.lab.names}
+{ 's :=
+  s #1 "{vv~}{ll}" format.name$
+  s num.names$ duplicate$
+  #2 >
+    { pop$ " et~al.\/" * }
+    { #2 <
+	'skip$
+	{ s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+	    { " et~al.\/" * }
+	    { " and " * s #2 "{vv~}{ll}" format.name$ * }
+	  if$
+	}
+      if$
+    }
+  if$
+}
+
+FUNCTION {author.key.label}
+{ author empty$
+    { key empty$
+	{ cite$ #1 #3 substring$ }
+	'key					% apalike uses the whole key
+      if$
+    }
+    { author format.lab.names }
+  if$
+}
+
+FUNCTION {author.editor.key.label}
+{ author empty$
+    { editor empty$
+	{ key empty$
+	    { cite$ #1 #3 substring$ }
+	    'key				% apalike uses the whole key
+	  if$
+	}
+	{ editor format.lab.names }
+      if$
+    }
+    { author format.lab.names }
+  if$
+}
+
+FUNCTION {editor.key.label}
+{ editor empty$
+    { key empty$
+	{ cite$ #1 #3 substring$ }
+	'key			% apalike uses the whole key, no organization
+      if$
+    }
+    { editor format.lab.names }
+  if$
+}
+
+FUNCTION {calc.label}
+{ type$ "book" =
+  type$ "inbook" =
+  or
+    'author.editor.key.in.label
+    { type$ "proceedings" =
+	'editor.key.in.label			% apalike ignores organization
+	'author.key.in.label			% for labeling and sorting
+      if$
+    }
+  if$
+  ", "							% these three lines are
+%  " "							% these three lines are
+  *							% for apalike, which
+  year field.or.null purify$ %#-1 #4 substring$		% uses all four digits
+  *
+  'label :=
+}
+
+FUNCTION {calc.auname}
+{ type$ "book" =
+  type$ "inbook" =
+  or
+    'author.editor.key.label
+    { type$ "proceedings" =
+	'editor.key.label			% apalike ignores organization
+	'author.key.label			% for labeling and sorting
+      if$
+    }
+  if$
+  'auname :=
+}
+
+FUNCTION {sort.format.names}
+{ 's :=
+  #1 'nameptr :=
+  ""
+  s num.names$ 'numnames :=
+  numnames 'namesleft :=
+    { namesleft #0 > }
+    { nameptr #1 >
+	{ "   " * }
+	'skip$
+      if$						% apalike uses initials
+      s nameptr "{vv{ } }{ll{ }}{  f{ }}{  jj{ }}" format.name$ 't := % <= here
+      nameptr numnames = t "others" = and
+	{ "et al" * }
+	{ t sortify * }
+      if$
+      nameptr #1 + 'nameptr :=
+      namesleft #1 - 'namesleft :=
+    }
+  while$
+}
+
+FUNCTION {sort.format.title}
+{ 't :=
+  "A " #2
+    "An " #3
+      "The " #4 t chop.word
+    chop.word
+  chop.word
+  sortify
+  #1 global.max$ substring$
+}
+
+FUNCTION {author.sort}
+{ author empty$
+    { key empty$
+	{ "to sort, need author or key in " cite$ * warning$
+	  ""
+	}
+	{ key sortify }
+      if$
+    }
+    { author sort.format.names }
+  if$
+}
+
+FUNCTION {author.editor.sort}
+{ author empty$
+    { editor empty$
+	{ key empty$
+	    { "to sort, need author, editor, or key in " cite$ * warning$
+	      ""
+	    }
+	    { key sortify }
+	  if$
+	}
+	{ editor sort.format.names }
+      if$
+    }
+    { author sort.format.names }
+  if$
+}
+
+FUNCTION {editor.sort}
+{ editor empty$
+    { key empty$
+	{ "to sort, need editor or key in " cite$ * warning$
+	  ""
+	}
+	{ key sortify }
+      if$
+    }
+    { editor sort.format.names }
+  if$
+}
+
+%			apalike uses two sorting passes; the first one sets the
+%			labels so that the `a's, `b's, etc. can be computed;
+%			the second pass puts the references in "correct" order.
+%			The presort function is for the first pass. It computes
+%			label, sort.label, and title, and then concatenates.
+FUNCTION {presort}
+{ calc.label
+  calc.auname
+  label sortify
+  "    "
+  *
+  type$ "book" =
+  type$ "inbook" =
+  or
+    'author.editor.sort
+    { type$ "proceedings" =
+	'editor.sort
+	'author.sort
+      if$
+    }
+  if$
+  #1 entry.max$ substring$	% for
+  'sort.label :=		% apalike
+  sort.label			% style
+  *
+  "    "
+  *
+  title field.or.null
+  sort.format.title
+  *
+  #1 entry.max$ substring$
+  'sort.key$ :=
+}
+
+ITERATE {presort}
+
+SORT		% by label, sort.label, title---for final label calculation
+
+STRINGS { last.label next.extra }	% apalike labels are only for the text;
+
+INTEGERS { last.extra.num }		% there are none in the bibliography
+
+FUNCTION {initialize.extra.label.stuff}	% and hence there is no `longest.label'
+{ #0 int.to.chr$ 'last.label :=
+  "" 'next.extra :=
+  #0 'last.extra.num :=
+}
+
+FUNCTION {forward.pass}
+{ last.label label =
+    { last.extra.num #1 + 'last.extra.num :=
+      last.extra.num int.to.chr$ 'extra.label :=
+    }
+    { "a" chr.to.int$ 'last.extra.num :=
+      "" 'extra.label :=
+      label 'last.label :=
+    }
+  if$
+}
+
+FUNCTION {reverse.pass}
+{ next.extra "b" =
+    { "a" 'extra.label := }
+    'skip$
+  if$
+  label extra.label * 'label :=
+  extra.label 'next.extra :=
+}
+
+EXECUTE {initialize.extra.label.stuff}
+
+ITERATE {forward.pass}
+
+REVERSE {reverse.pass}
+
+%				Now that the label is right we sort for real,
+%				on sort.label then year then title.  This is
+%				for the second sorting pass.
+FUNCTION {bib.sort.order}
+{ sort.label
+  "    "
+  *
+  year field.or.null sortify
+  *
+  "    "
+  *
+  title field.or.null
+  sort.format.title
+  *
+  #1 entry.max$ substring$
+  'sort.key$ :=
+}
+
+ITERATE {bib.sort.order}
+
+SORT		% by sort.label, year, title---giving final bibliography order
+
+FUNCTION {begin.bib}
+{ preamble$ empty$				% no \etalchar in apalike
+    'skip$
+    { preamble$ write$ newline$ }
+  if$
+  "\begin{thebibliography}{}" write$ newline$		% no labels in apalike
+}
+
+EXECUTE {begin.bib}
+
+EXECUTE {init.state.consts}
+
+ITERATE {call.type$}
+
+FUNCTION {end.bib}
+{ newline$
+  "\end{thebibliography}" write$ newline$
+}
+
+EXECUTE {end.bib}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/writeup/mlapa.sty	Wed Apr 28 14:35:30 2010 -0400
@@ -0,0 +1,208 @@
+% mlapa.sty style, used in conjunction with mlapa.bst, will produce 
+% an APA-like bibliography style. 
+%
+% 1) Bibliography entries formatted alphabetically, last name
+%    first, each entry having a hanging indentation and no label.
+% 2) References in the following formats:
+%		(Author, 1986)
+%		(Author & Author, 1986)
+%		(Author et al., 1986).
+% 3) Multiple references in the form (Author1, 1986; Author2, 1987)
+%
+% To be used as an optional argument to the \documentstyle command; for example
+%	\documentstyle[11pt,apalike]{book}
+%
+% 16-Sep-86, original version by Susan King and Oren Patashnik.
+% 13-Oct-87 changes:
+%	Fixed bug in last line by adding the {} that disappeard when
+%		the \hbox{} was removed from the pre-APALIKE definition;
+%	added club and widow penalties;
+%	patched the \newblock LaTeX bug from `-.07em' to simply `.07em';
+%	and made this work for document styles that don't define `chapter'.
+%       Use brackets for \cite, and no label in the bibliography
+%
+% 12/11/89 Use parenthesis () for \cite, (Risto Miikkulainen)
+%
+% ---------------------------------------------------------------------------
+% The following major changes by Risto Miikkulainen 4/8/92:
+% new style name: myapalike.sty
+%
+% The new commands below generate various embedded citations and multiple
+% years for one authorname and citations without the enclosing parenthesis.
+% They are enough to generate the standard apa style refs; however,
+% there is a lot of room for improvement. For example:
+% - the macros should alphabetize the entries automatically (maybe);
+% - they should generate multiple years automatically, i.e. if the
+%   current author is the same as previous one, do not repeat it.
+%   This would make \single macros unnecessary.
+% - with multiple emcites, it should add commas and the word ``and''
+%   automatically between cites.
+% - Bug: in book style sometimes all the bib entries are dumped on an
+%   extra page in the end. (Just throw that page away if it ever appears.)
+% - Another bug: for some reason, latex adds extra space after et al.
+%   with emcites and singlecites. 
+% If you have a chance to fix any of these things, let me know.
+%
+% You have to use this style with myapalike.bst; it generates bibitems
+% of the form 
+% \bibitem[Elman, 1989a][Elman][1989a]{elman:representation}
+% that this file expects to find in the bbl file.
+%
+% Examples of commands and what they generate:
+%
+%\cite{foobar:1990,doesmith:1991} -- (Foo and Bar 1990; Doe and Smith 1991)
+%\aucite -- (Foo and Bar; Doe and Smith)
+%\aunpcite -- Foo and Bar; Doe and Smith
+%\yrcite -- (1990; 1991)
+%\yrnpcite  -- 1990; 1991
+%\npcite -- Foo and Bar 1990; Doe and Smith 1991
+%\emcite -- Foo and Bar (1990); Doe and Smith (1991)
+%\singlecite -- (Foo and Bar 1990, 1991)
+%\singlenpcite -- Foo and Bar 1990, 1991
+%\singleemcite -- Foo and Bar (1990, 1991)
+
+% Additional changes made by Pat Langley (1/20/2000). 
+
+\def\@biblabel#1{}
+
+% Set length of hanging indentation for bibliography entries
+%
+\newlength{\bibhang}
+% \setlength{\bibhang}{2em}
+% Reduce the handing indent for two-column format
+\setlength{\bibhang}{10pt}
+
+% \thebibliography environment depends on whether or not `chapter's can exist
+%
+\@ifundefined{chapter}{\def\thebibliography#1{\section*{References\@mkboth
+  {REFERENCES}{REFERENCES}}\list
+  {\relax}{\setlength{\labelsep}{0em}
+	\setlength{\itemindent}{-\bibhang}
+	\setlength{\leftmargin}{\bibhang}}
+    \def\newblock{\hskip .11em plus .33em minus .07em}
+    \sloppy\clubpenalty4000\widowpenalty4000
+    \sfcode`\.=1000\relax}}%
+{\def\thebibliography#1{\chapter*{Bibliography\@mkboth
+  {BIBLIOGRAPHY}{BIBLIOGRAPHY}}\list
+  {\relax}{\setlength{\labelsep}{0em}
+	\setlength{\itemindent}{-\bibhang}
+	\setlength{\leftmargin}{\bibhang}}
+    \def\newblock{\hskip .11em plus .33em minus .07em}
+    \sloppy\clubpenalty4000\widowpenalty4000
+    \sfcode`\.=1000\relax}}
+
+% `; ' goes between cites, and there's no \hbox around individual cites
+%
+\def\@citex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi
+  \def\@citea{}\@cite{\@for\@citeb:=#2\do
+    {\@citea\def\@citea{; }\@ifundefined
+       {b@\@citeb}{{\bf ?}\@warning
+       {Citation `\@citeb' on page \thepage \space undefined}}%
+{\csname b@\@citeb\endcsname}}}{#1}}
+
+\def\aucite{\@ifnextchar [{\@tempswatrue\@aucitex}{\@tempswafalse\@aucitex[]}}
+\def\aunpcite{\@ifnextchar [{\@tempswatrue\@aunpcitex}{\@tempswafalse\@aunpcitex[]}}
+\def\yrcite{\@ifnextchar [{\@tempswatrue\@yrcitex}{\@tempswafalse\@yrcitex[]}}
+\def\yrnpcite{\@ifnextchar [{\@tempswatrue\@yrnpcitex}{\@tempswafalse\@yrnpcitex[]}}
+\def\npcite{\@ifnextchar [{\@tempswatrue\@npcitex}{\@tempswafalse\@npcitex[]}}
+\def\emcite{\@ifnextchar [{\@tempswatrue\@emcitex}{\@tempswafalse\@emcitex[]}}
+\def\singlecite{\@ifnextchar [{\@tempswatrue\@singlecitex}{\@tempswafalse\@singlecitex[]}}
+\def\singlenpcite{\@ifnextchar [{\@tempswatrue\@singlenpcitex}{\@tempswafalse\@singlenpcitex[]}}
+\def\singleemcite{\@ifnextchar [{\@tempswatrue\@singleemcitex}{\@tempswafalse\@singleemcitex[]}}
+
+% use ``,'' between author labels
+\def\@aucitex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi
+  \def\@citea{}\@aucite{\@for\@citeb:=#2\do
+    {\@citea\def\@citea{; }\@ifundefined
+       {aub@\@citeb}{{\bf ?}\@warning
+       {Citation `\@citeb' on page \thepage \space undefined}}%
+{\csname aub@\@citeb\endcsname}}}{#1}}
+
+% use ``,'' between author labels
+\def\@aunpcitex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi
+  \def\@citea{}\@aunpcite{\@for\@citeb:=#2\do
+    {\@citea\def\@citea{; }\@ifundefined
+       {aub@\@citeb}{{\bf ?}\@warning
+       {Citation `\@citeb' on page \thepage \space undefined}}%
+{\csname aub@\@citeb\endcsname}}}{#1}}
+
+% use ``,'' between year-only-labels,
+\def\@yrcitex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi
+  \def\@citea{}\@yrcite{\@for\@citeb:=#2\do
+    {\@citea\def\@citea{; }\@ifundefined
+       {yrb@\@citeb}{{\bf ?}\@warning
+       {Citation `\@citeb' on page \thepage \space undefined}}%
+{\csname yrb@\@citeb\endcsname}}}{#1}}
+
+% use ``,'' between year-only-labels,
+\def\@yrnpcitex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi
+  \def\@citea{}\@yrnpcite{\@for\@citeb:=#2\do
+    {\@citea\def\@citea{; }\@ifundefined
+       {yrb@\@citeb}{{\bf ?}\@warning
+       {Citation `\@citeb' on page \thepage \space undefined}}%
+{\csname yrb@\@citeb\endcsname}}}{#1}}
+
+% use `; ' between parenthesisless cites
+%
+\def\@npcitex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi
+  \def\@citea{}\@npcite{\@for\@citeb:=#2\do
+    {\@citea\def\@citea{; }\@ifundefined
+       {b@\@citeb}{{\bf ?}\@warning
+       {Citation `\@citeb' on page \thepage \space undefined}}%
+{\csname b@\@citeb\endcsname}}}{#1}}
+
+% 
+\newcounter{myfoo}
+\def\@singleemcitex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi
+  \setcounter{myfoo}{0}\@for\@citeb:=#2\do{\ifnum\c@myfoo=0{\csname aub@\@citeb\endcsname}\addtocounter{myfoo}{1}\fi}
+  \def\@citea{}\@yrcite{\@for\@citeb:=#2\do
+    {\@citea\def\@citea{; }\@ifundefined
+       {yrb@\@citeb}{{\bf ?}\@warning
+       {Citation `\@citeb' on page \thepage \space undefined}}%
+{\csname yrb@\@citeb\endcsname}}}{#1}}
+
+% 
+\def\@singlecitex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi
+  \def\@citea{(}\@citea\setcounter{myfoo}{0}\@for\@citeb:=#2\do{\ifnum\c@myfoo=0{\csname aub@\@citeb\endcsname}\addtocounter{myfoo}{1}\fi}
+  \def\@citea{}\@yrnpcite{\@for\@citeb:=#2\do
+    {\@citea\def\@citea{; }\@ifundefined
+       {yrb@\@citeb}{{\bf ?}\@warning
+       {Citation `\@citeb' on page \thepage \space undefined}}%
+{\csname yrb@\@citeb\endcsname}}}{#1}\def\@citea{)}\@citea}
+
+% 
+\def\@singlenpcitex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi
+  \setcounter{myfoo}{0}\@for\@citeb:=#2\do{\ifnum\c@myfoo=0{\csname aub@\@citeb\endcsname}\addtocounter{myfoo}{1}\fi}
+  \def\@citea{}\@yrnpcite{\@for\@citeb:=#2\do
+    {\@citea\def\@citea{; }\@ifundefined
+       {yrb@\@citeb}{{\bf ?}\@warning
+       {Citation `\@citeb' on page \thepage \space undefined}}%
+{\csname yrb@\@citeb\endcsname}}}{#1}}
+
+% use ``,'' between embedded cites
+\def\@emcitex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi
+  \def\@citea{}\@for\@citeb:=#2\do
+  {\@citea\def\@citea{; }\@aunpcite{\@ifundefined {aub@\@citeb}
+       {{\bf ?}\@warning{Citation `\@citeb' on page \thepage \space undefined}}
+       {\csname aub@\@citeb\endcsname}}{}
+   \@yrcite{\@ifundefined {yrb@\@citeb}
+       {{\bf ?}\@warning{Citation `\@citeb' on page \thepage \space undefined}}
+       {\csname yrb@\@citeb\endcsname}}{#1}}}
+
+% define b@CITENAME as the full label and aub@CITENAME as the
+% authors-only-label and yrb@CITENAME as the year-only-label
+\def\bibcite#1#2#3#4{\global\@namedef{b@#1}{#2}
+\global\@namedef{aub@#1}{#3}
+\global\@namedef{yrb@#1}{#4}}
+
+% parenthesis/no parenthesis around the label
+\def\@cite#1#2{(#1\if@tempswa , #2\fi)}
+\def\@aucite#1#2{(#1\if@tempswa , #2\fi)}
+\def\@yrcite#1#2{(#1\if@tempswa , #2\fi)}
+\def\@npcite#1#2{#1\if@tempswa , #2\fi}
+\def\@aunpcite#1#2{#1\if@tempswa , #2\fi}
+\def\@yrnpcite#1#2{#1\if@tempswa , #2\fi}
+
+\def\@lbibitem[#1][#2][#3]#4{\item[\@biblabel{#1}]\if@filesw 
+      { \def\protect##1{\string ##1\space}\immediate
+        \write\@auxout{\string\bibcite{#4}{#1}{#2}{#3}}}\fi\ignorespaces}