Do pool servers check for duplicate shares? Assume, for the sake of argument, that I am a miner and that I am ready to cheat. The (stratum) pool server sends me a notify message and I start mining. I find a valid share. I submit it to the pool server (which, presumably, checks if it is valid). Now, what happens if I re-submit it a little while later, in order to artificially increase my number of accepted shares?

So stratum pool server keep a list of submitted shares and check for de-dups? On large pools, where miners report a share every few seconds, this means keeping about 16kbyte of data for each miner, and scanning through it every time it submits a share. So it seems feasible.

But is it actually done?
Yes, it is absolutely done. A well known exploit in early stratum mining pools was that they used string comparison when looking up duplicate submissions, where nonce aaaaaaaa and Aaaaaaaa are identical but weren’t caught by the duplicate submission check. You could submit a share up to 2**8 times if you were lucky and got an all alpha encoding nonce, and thefts from pools using this exploit did happen. 

You only need to store the work ID and the nonce, and pools can tune the client to only be submitting a share every few minutes if they choose. It’s not a particularly intensive task to keep tack of submissions.