And if so, why? I'm having some trouble with this. I know that the $D_{f}$ (set of primes not containing $f$) are the open sets and form a basis for the Zariski topology; but I do not know how to go about even constructing an open cover. Thanks.
In an exercise in Atiyah-Macdonald it asks to prove that the prime spectrum $\operatorname{Spec}(A)$ of a commutative ring $A$ as a topological space $X$ (with the Zariski Topology) is compact.   Now because the basic open sets $X_f = \{\mathfrak{p} \in \operatorname{Spec} (A) : \{f\} \not\subseteq \mathfrak{p} \}$ form a basis for the Zariski Topology it suffices to consider the case when   $$X = \bigcup_{i \in I} X_{f_i}$$   where $I$ is some index set. Then taking the complement on both sides we get that   $$\emptyset = \bigcap_{i \in I} X_{f_i}^c$$  so there is no prime ideal $\mathfrak{p}$ of $A$ such that all the $f_i$'s are in $\mathfrak{p}$. Now from here I am able to show that the ideal generated by the $f_i$'s is the whole ring as follows. Since there is no prime ideal $\mathfrak{p}$ such that all the $f_i \in \mathfrak{p}$, it is clear that there is no $\mathfrak{p}$ such that $(f_i) \subseteq \mathfrak{p}$ for all $i \in I.$ Taking a sum over all the $i$ then gives $$\sum_{i \in I} (f_i) = (1).$$  Now here's the problem:          How do I show from here that there is an equation of the form $1 = \sum_{i \in J} f_ig_i,$ where $g_i \in A$ and $J$ some finite subset of $I$?       This part has been giving me a headache. I am not sure if the finiteness bit has to do with algebra, topology or the fact that we are dealing with prime ideals.  This is not a homework problem but rather for self-study.  $\textbf{Edit:}$ I have posted my answer below after the discussion with Dylan and Pierre.
Allow users to leave an anonymous comment when voting I don't know if people don't explain why they up or down vote because they don't care or because they don't want the person to know they voted on an answer (or question)... But, it might be nice to be able to leave a comment anonymously as to why it was voted.  It could give us more insight as to people's thoughts on posts.    Really, I think this would come into play a lot more dealing with down votes more than up votes, but I could see it being beneficial in both situations.   See also Chirp Transform and Convolution I was reading about the discrete fourier transform from the CLR algorithms book and I came upon an exercise whose hint confuses me. The exercise reads as follows:  The chirp transform of a vector $a=(a_0,a_1,\ldots,a_n)$ is a vector $y=(y_0,y_1,\ldots,y_n)$, where $y_k=\sum_{j=0}^{n-1}a_j (z^{k})^j$ and $z$ is any complex number. The DFT is therefore a special case of the chirp transform, obtained by taking $z=\omega_n$. Prove that the chirp transform can be evaluated in time $O(n\lg n)$ for any complex number $z$. (Hint: use the equation $$y_k = z^{k^2/2}\sum_{j=0}^{n-1}(a_j z^{j^2/2})(z^{-(k-j)^2/2})$$ to view the chirp transform as a convolution.  My question is about what is a convolution. I am familiar with taking two vectors $a=(a_0,a_1,\ldots,a_n)$ and $b=(b_0,b_1,\ldots,b_n)$ and forming the convolution $c=(c_0,c_1,\ldots,c_n)$ where $c_k = \sum_{j=0}^k a_j b_{k-j}$. Here the index of $j$ runs from $0$ to $k$ unlike in the hint given above where the index runs from $0$ to $n-1$. In what sense is the hint above a convolution? Windows 10, 'System' process taking massive amounts of RAM Since I upgraded to Windows 10, my system has been consuming RAM excessively    I've been reading a bit and determined it's likely a driver leaking memory. So I got myself the Windows Driver Kit and tracked memory usage with poolmon:    However, I don't really know how to proceed from here. Is the item tagged "smNp" the culprit in this issue? How do I go from there to actually identifying the driver?  I tried some stuff like "C:\Windows\System32\drivers>findstr /s smnp ." but it returned no results. I also took a look at the pooltag.txt file and this is the description I found for it:      So yeah, any help would be appreciated. Thanks in advance. How to correctly use the present perfect tense This  states that:  When you use the present perfect tense you have to be talking about a period of time that you still consider to be going on. For example, if it’s still morning, you can say, &quot;I’ve shaved this morning.&quot; If it is afternoon or evening, all of a sudden &quot;I’ve shaved this morning&quot; sounds really weird.  &quot;I've shaved this morning&quot; sounds more like past perfect, and indication of specific time (in the morning) makes this sentence incorrect.  Am  I spot on? Then what is the difference between the construct of past perfect, present perfect and future perfect? When mounting an NFS share manually using mount and a path of the form &lt;domain/ip&gt;:&lt;path&gt;/&lt;path&gt; or &lt;domain/ip&gt;:/&lt;path&gt;/&lt;path&gt;, umount fails to find the path in /proc/mounts, despite the fact that the path is in fact listed in /proc/mounts.  This is the same problem as in this question:   Steps to reproduce:  # mount --version mount from util-linux 2.24.1 (libmount 2.24.0: debug, assert) # mkdir mountpath # mount 192.168.2.101:/devices mountpath # umount mountpath /home/.../mountpath was not found in /proc/mounts # grep mountpath /proc/mounts 192.168.2.101://devices /home/.../mountpath nfs4 rw,[snip],addr=192.168.2.101 0 0   How can I unmount this mount? How to reverse the pagination numbers of an archive? I have archive pages that each contain titles and excerpts from 10 blog entries. Both entries and archive pages are in reverse chronological order:   when a new blog entry is written its title and excerpt go to the top of the front page; when you are on one page and you click through to "Next page", you get the titles and excerpts for the 10 previous blog entries.   This is pretty standard for blogs.  But the archive pages are numbered by default in the same order. Thus Page 1 contains excerpts from the most recent 10 entries, Page 2 contains excerpts from the next 10 most recent, etc.  To be clear: at the moment, "Next page" refers to the page with the next higher number. Thus the front page, which contains excerpts from the most recent entry and the nine next most recent entries, is labelled Page 1, and the 10 entries posted before those 10 entries are on Page 2.  I need the page-numbering the other way round, namely in direct chronological order, so that for example if there are 97 entries then   entries 28-37 would be excerpted on Page 4, and the PREVIOUS page from there, containing excerpts from entries 18-27, would be called page 3.   How can I achieve this, whether by amending functions.php in the child theme (preferably), by writing a "Snippet" (next most preferred), or by amending archive.php in the Astra parent theme directly (least preferred, because of possible update problems)?  Edit  The following isn't a solution but it may be part of one. This re-numbers pages into direct chronological order, but unfortunately it also reverses the order in which they are shown (from reverse chronological to direct chronological). So it causes the front archive paget to contain excerpts from the earliest posts rather than the latest ones!  &lt;?php  add_filter('pre_get_posts', 'posts_by_forward_date');  function posts_by_forward_date($query) {   if(is_archive() || is_home()) {     $query-&gt;set('order', 'ASC');   } } ?&gt; What's the equivalent of the "cls" command from Windows/DOS? How can I delete all files from a directory when it reports "Argument list too long" Difference Between Sequential Workflow & State machine workflow? What is the difference between Sequential Workflow and Stater machine workflow? What context should I take account to when choosing one of them? Define $S\equiv\{ x\in \mathbb{Q}\mid x^2<2\}$. Show that $\sup S=\sqrt{2} $. Are there cheap GPS or other navigator devices with downloadable maps for the whole world? I don't need a recommendation or a list but my knowledge of GPS and "navi"s and the differences between them is an utter mystery to me.  But often I'm lost in backstreets in random countries where access to something like a live Google Maps would be awesome. I absolutely cannot afford a smartphone with worldwide roaming though.  Can GPS's do what I want or am I barking up the wrong tree? If they can is it only high end ones than can? Cartoon with a young unicorn and a demon In the late 80s or early 90s I remember watching an animated series that followed a young unicorn and a demon.   In one episode the unicorn gave the demon his horn, and the unicorn almost died.   In another episode there was a man who was able to turn people into human shaped building blocks and built a huge tower from them.   Those are the two scenes I remember with any clarity.   Does anyone have any idea? I installed Ubuntu alongside Windows but I did not disable secure boot as someone told me it could cause problems with boot loader. So when installation finished and I rebooted, the system went straight into Windows. I went to Ubuntu IRC Support and they told me to turn off the secure boot and reinstall Ubuntu. I did that but my system still boot into windows.  This is a picture of partitions on my system:    This is my first Ubuntu install on my new laptop. I followed everdaylinux guide to install it and I used something else option. As Scott Myers wrote, you can take advantage of a relaxation in C++'s type-system to declare clone() to return a pointer to the actual type being declared:  class Base {     virtual Base* clone() const = 0; };  class Derived : public Base {     virtual Derived* clone() const };   The compiler detects that clone() returns an pointer to the type of the object, and allows Derived to override it to return a pointer to derived.  It would desirable to have clone() return a smart pointer that implies transfer of ownership semantics, like the following:  class Base {    virtual std::auto_ptr&lt;Base&gt; clone() const = 0; };  class Derived : public Base {     virtual std::auto_ptr&lt;Derived&gt; clone() const; };   Unfortunately, the relaxation of the conventions does not apply to templated smart pointers, and the compiler will not allow the override.  So, it seems I am left with two options:   Have clone() return a "dumb" pointer, and document that clients are responsible for disposing of it. Have clone() return a smart base pointer, and have clients use dynamic_cast to save them to a Derived pointer if they need it.   Is one of these approaches preferred?  Or is there a way for me to eat my transfer of ownership semantics and have my strong type safety too? While my code is compiling, I usually like to go through some reviewing and especially the late answers.  What I do see a lot in answers to old questions is the self-defense mechanism     ""   As if there is something fundamentally wrong with answering old questions. This leads me to two questions/thoughts:   Should we edit phrases like that out of the answer? (Given it's a good/valid answer to begin with, without any of the likely "old answer" problems. I realize the example linked to has its flaws.) Should we perhaps explicitly encourage answering old unanswered questions somewhere in the FAQ? (I'm unaware of any such recommendation, but might have read over it. Let me know if I did) Determine the SQL Server version and edition from the available set up, before actually installing it? Linear regression prediction interval Let $X\subset \mathbb{R}$ Lebesgue measurable, $|X|<|\mathbb{R}|$, is it true that $X$ is null? Call to a member function on a non-object So I'm refactoring my code to implement more OOP.  I set up a class to hold page attributes.  class PageAtrributes  {   private $db_connection;   private $page_title;      public function __construct($db_connection)      {         $this-&gt;db_connection = $db_connection;         $this-&gt;page_title = '';     }      public function get_page_title()     {         return $this-&gt;page_title;     }      public function set_page_title($page_title)     {         $this-&gt;page_title = $page_title;     } }   Later on I call the set_page_title() function like so  function page_properties($objPortal) {         $objPage-&gt;set_page_title($myrow['title']); }   When I do I receive the error message:     Call to a member function set_page_title() on a non-object   So what am I missing? How to access phpMyAdmin after installation?