Does it Lead or Follow? In this challenge you are to write a program or function, that takes a string as input and outputs one of two possible values. We will call one of these values truthy and one falsy.  They do not need to actually be truthy or falsy.  For an answer to be valid it must meet four additional criteria


When you pass your program to itself it outputs the truthy value.
If you pass your program as input to any older answer it should output the truthy output (of the program you are passing to).
If you pass any older answer to your answer as input it should output the falsy output (of your program).
There must be an infinite number of strings that evaluate to truthy output in all answers on the challenge (including your new answer).


What this will do is it will slowly build up a chain of answers each of which can determine if other programs in the chain come before or after it.

The goal of this challenge is to build up a list of source restrictions that are applied to the successive answers making each one more challenging than the last.

Example

A chain (written in Haskell) could start:

f _ = True


Since there are no older programs, the criteria do not apply to this answer it need only output one of two possible values, in this case it always outputs True.

Following this could be the answer:

f x=or$zipWith(==)x$tail x


Try it online!

Which asserts that there is a character twice in a row somewhere in the string.  The first answer doesn't have this property while the second does (==). Thus this is a valid next answer.    

Special rules


You may use any language you wish (that has a freely available implementation) as many times as you wish.
If you were the last person to answer you must wait at least 7 days before posting a new answer.
Your program may not read its own source.
Since the 4th rule is exceedingly difficult to verify if cryptographic functions are involved, such functions are disallowed.


Scoring criterion

Each time you add an answer you will get as many points as its place in the chain.  For example the 5th answer would gain it's writer 5 points.  The goal is to get as many points as you can.  The last answer will score its answerer -∞ points.  This will probably be more fun if you try to maximize your own score rather than "win" the challenge.  I will not be accepting an answer.


  Since this is answer-chaining you may want to sort by oldest
14. X86 Assembly (gcc 6.3), 324 bytes

.TITLE "a"#"a" ELTIT.
.data
i:.fill 25,1,0
s:.string "%25[^\n]"
t:.string "-&gt;Hi, Retina!"
f:.string "Bye Retina!"
.global main
main:           
pushl $i
pushl $s
call scanf
addl $8, %esp
pushl $i
call strlen
addl $4, %esp
sub $21, %eax
jz y
pushl $f
call printf
addl $4, %esp
jmp en
y:
pushl $t
call printf
addl $4, %esp
en:
ret


Try it on ideone!

Note: this will return a runtime error because the exit code is not zero. Running this in the ideone editor will display all stdout output regardless of how the program concludes.


Truthy output: "-&gt;Hi, Retina!"
Falsy output: "Bye Retina!" 


Satisfies:


The first character is a ..
It contains an e.
Its length is even.
Its length is a perfect square.
It contains an a.
It contains a &gt; character.
Contains the exact string -&gt;.
Contains the exact string Hi, Retina!.
The sum of the first two Unicode code points is a multiple of 5.
The 10-th character is a ".
The last non-empty line does not have any duplicate characters.
The first line is a palindrome of length > 5.
The first line is exactly 21 characters long (not including newline).


For future answers:


The first character is a ..
Its length is an even perfect square.
Contains the exact sequence -&gt;.
Contains the exact string Hi, Retina!.
The second character's Unicode code point, mod 5, is 4.
The 10-th character is a ".
The last non-empty line does not have any duplicate characters.
The first line is a palindrome of length = 21