|  <rule>  |  ::=  |   <atom> [ <=  <literals> ] .   | 
|  <rules>  |  ::=  |  <rule>  [ <rules> ]   | 
|  <query>  |  ::=  |  ? <literals> .  | 
|  <literal>  |  ::=  |  <atom> | not <atom>  | 
|  <literals>  |  ::=  |  <literal>  [ and <literals> ]   | 
|  <atom>  |  ::=  |  <predicate_ident>  [ ( <terms> ) ]   | 
|  <term>  |  ::=  |  <ident> [ ( <terms> ) ]  | <constant>   | <Variable>   | 
|  <terms>  |  ::=  |  <term> [ , <terms> ]  | 
|  <Variable>  |  ::=  |  X | Child | P  | GP | ...   | 
|  <constant>  |  ::=  |  <ident> | 0 | 1  | ...   | 
|  <predicate_ident>  |  ::=  |  <ident>  | 
|  <ident>  |  ::=  |  f | even | successor  | charles   | ...   | 
|  <Program>  |  ::=  |  <rules> <query>  | 
|  — Small Prolog Syntax —  |