From OpenCog

RelEx uses the hypothetical feature HYP to indicate truth assertions which are hypothetical or speculative. This typically occurs in one of several different ways: in assertive questions, in certain dependent clauses, and in statements about the future.

In general, predictions about the future are always hypothetical. Thus, in the sentence "The dog will eat it.", the verb "eat" gets marked as being hypothetical -- the dog hasn't eaten it yet, and there are no assurances that it will happen -- only that it could happen.

Speculation may be explicit or implicit: so "It might rain." is explicitly speculative, while "It will rain." seems to be very certain of itself, but is speculation none-the-less. All assertions about the future are inherently hypothetical until the future has become the past. Thus, "It might rain." generates:

_subj(rain, it)
_to-do(might, rain)
tense(rain, infinitive)
HYP(rain, T)

while "It will rain." generates:

_subj(rain, it)
tense(rain, future)
HYP(rain, T)

Assertive questions are hypothetical. For example, the question "Fred is dead?" is an assertive question, and Fred's being dead is hypothetical -- it may or may not be true. Thus, the following is generated:

_predadj(Fred, dead)
HYP(dead, T)

to indicate that "deadness" is uncertain -- if it was certain, there'd be no point in asking a question.

Seemingly factual statements can be hypothetical as well. For example, in the sentence "John says you like swimming", the words "like" and "swimming" both get marked as hypothetical. "Like" is hypothetical, because John may be lying, or John may be in error about your likes and dislikes. "Swimming" is hypothetical, because you may indeed like something, just not swimming. Therefore, the claim that "you like swimming", appearing as a clause, is speculative.

_subj(swim, you)
_to-do(like, swim)
tense(swim, progressive)
HYP(swim, T)
HYP(like, T)