rule ::= head '.' | head ':-' body '.' | ':-' body '.'
head ::= literal {'v' literal}
body ::= literal {',' literal}
literal ::= atom | 'not' atom
atom ::= symb ['(' term {',' term}')']
term ::= variable | symb
variable ::= ('A'-'Z' ) {'a'-'z' | 'A'-'Z' | '0'-'9'}
symb ::= ('a'-'z' | '0'-'9') {'a'-'z' | 'A'-'Z' | '0'-'9'}