KIF Form Grammar
        source: kifForm.g
        
        
            - 
                variable
                
            
- 
                indvar 
 | seqvar
- 
                term
                
            
- 
                indvar 
 | constant
 | charref
 | string
 | block
 | quoterm
 | funterm
 | listterm
 | logterm
- 
                quoterm
                
            
- ( "\\(\s*quote" listexpr
                 "\\)"  ) 
 | ( "'" listexpr
                  )
 | ( "^" listexpr
                  )
- 
                listexpr
                
            
- 
                atom
                 
 | ( "\\(" listexpr
                 * "\\)"  )
 | ( "," listexpr
                  )
- 
                atom
                
            
- 
                word 
 | charref
 | string
 | block
- 
                funterm
                
            
- ( "\\(\s*value" term
                 term
                 * [ seqvar  ] "\\)"  ) 
 | ( "\\(" constant term
                 * [ seqvar  ] "\\)"  )
- 
                listterm
                
            
- 
                "\\(\s*listof" term
                 * [ seqvar  ] "\\)" 
- 
                logterm
                
            
- ( "\\(\s*if" logpair
                 + [ term
                  ] "\\)"  ) 
 | ( "\\(\s*cond" logitem
                 * "\\)"  )
- 
                logpair
                
            
- 
                sentence
                 term
                 
- 
                logitem
                
            
- 
                "\\(" sentence
                 term
                 "\\)" 
- 
                sentence
                
            
- 
                constant 
 | equation
 | inequality
 | relsent
 | logsent
 | quantsent
- 
                equation
                
            
- 
                "\\(\s*=" term
                 term
                 "\\)" 
- 
                inequality
                
            
- 
                "\\(\s*/=" term
                 term
                 "\\)" 
- 
                relsent
                
            
- ( "\\(\s*holds" term
                 term
                 * [ seqvar  ] "\\)"  ) 
 | ( "\\(" constant term
                 * [ seqvar  ] "\\)"  )
- 
                logsent
                
            
- ( "\\(\s*not" sentence
                 "\\)"  ) 
 | ( "\\(\s*and" sentence
                 * "\\)"  )
 | ( "\\(\s*or" sentence
                 * "\\)"  )
 | ( "\\(\s*=>" sentence
                 * sentence
                 "\\)"  )
 | ( "\\(\s*<=" sentence
                 sentence
                 * "\\)"  )
 | ( "\\(\s*<=>" sentence
                 sentence
                 "\\)"  )
- 
                quantsent
                
            
- ( "\\(\s*forall" "\\(" varspec
                 + "\\)" sentence
                 "\\)"  ) 
 | ( "\\(\s*exists" "\\(" varspec
                 + "\\)" sentence
                 "\\)"  )
- 
                varspec
                
            
- 
                variable
                 
 | ( "\\(" variable
                 constant "\\)"  )
- 
                form
                
            
- 
                sentence