The ten hundred most common words This question is written because "Thing Explainer" is fun to read, and gave me an idea.

Write "stuff that makes computer do things" that reads/takes a set of letters, numbers and things like this "#%|? and returns True / 1 if all words are part of this set.

If all words are not part of that set, return the words that were not a part of it.



This website can be considered correct in all cases. The rules are written to follow the specs on that site.



Examples:

Truthy:

The code should return a truthy value if the entire text above the first horizontal line is pasted as input.

The following lines should return a truthy value (input is separated by ###)

This returns "Hello, World!"
###
tHiS rEtUrNs TrUe...
###
Thing Explainer is a book written by a man.
The man writes books with simple words.
###
This set of stuff "#!^{&gt;7( must return true


Falsey:

In the following examples, input and output are separated by ***. Different test cases are separated by ###.

This code doesn't return "Hello, World!"
***
code
###
tHiS rEtUrN"s false...
***
s
false


More detailed rules:


You can use this to test your code.
Non-letters are interpreted as spaces by the code, except for words like 'wasn't'. The words with apostrophes that returns true are included in the list


For instance: foo123bar should return foo and bar, since they are not part of the list, and 123 can be interpreted as spaces

The input will only contain printable ASCII code points [10, 32-126].
Words can contain mixed case letters. See second test case.
The list of words 


should be taken as input (STDIN, function argument or equivalent)
can be modified (words can be separated by newline, comma etc., and you might sort the list)
Note that you can not use this list (it's not identical)

The output can be on any format you like
The output can be upper, lower or mixed case (optional)
There shall be no symbols in the output




For the record, Jonathan Allan found a strange corner case:  the implementation on XKCD will actually ignore any letters after an apostrophe up to the next non-[A-Z][a-z]['] - for example find's found, and find'qazxswedc found' both return nothing, whereas find'qazx.swedc found returns swedc.

You can choose if you want to return nothing for find'qazxswedc found', or return qazxswedc. Returning qazx, swedc for find'qazx.swedc is also OK.
PowerShell v3+, 105 92 bytes

param($a,$b)$x=@();-split($b-replace"[^a-zA-Z']",' ')|%{if($_-notin$a){$x+=$_}};($x,1)[!$x]


Takes simple words like $a, and words like $b. Makes helper $x. Take each word in $b and get rid of any bad not letters, then check each one |{...}. If that word is not in $a, then we add it to $x. At the end, we choose $x or 1 by not $x. That is sent out, either words or 1.

Some words to try

PS C:\Tools\Scripts\golfing&gt; ('This returns "Hello, World!"','tHiS rEtUrNs TrUe...','Thing Explainer is a book written by a man.
The man writes books with simple words.','This set of stuff "¤!^¤&gt;7\ must return true'|%{"$_";(.\ten-hundred-most-common-words.ps1 (gc .\ten-hundred-most-common-words.txt) $_)})-join"`n###`n"
This returns "Hello, World!"
###
1
###
tHiS rEtUrNs TrUe...
###
1
###
Thing Explainer is a book written by a man.
The man writes books with simple words.
###
1
###
This set of stuff "¤!^¤&gt;7\ must return true
###
1

PS C:\Tools\Scripts\golfing&gt; ("This code doesn't returns Hello, World!",'tHiS rEtUrN"s false...'|%{"$_`n***`n"+(.\ten-hundred-most-common-words.ps1 (gc .\ten-hundred-most-common-words.txt) $_)})-join"`n###`n"
This code doesn't returns Hello, World!
***
code
###
tHiS rEtUrN"s false...
***
s false