#ifndef _SPASS_FOL_
#define _SPASS_FOL_ 
#include "term.h"
typedef intptr_t *FOLSTATE, FOLSTATENODE;
FOLSTATE fol_Init(TERMSTATE);
void fol_Free(FOLSTATE);
TYPE fol_TypeAlpha(FOLSTATE);
TYPE fol_TypeBool(FOLSTATE);
TYPE fol_TypeTop(FOLSTATE);
SYMBOL fol_True(FOLSTATE);
SYMBOL fol_False(FOLSTATE);
SYMBOL fol_Forall(FOLSTATE);
SYMBOL fol_And(FOLSTATE);
SYMBOL fol_Exist(FOLSTATE);
SYMBOL fol_Or(FOLSTATE);
SYMBOL fol_Not(FOLSTATE);
SYMBOL fol_Implies(FOLSTATE);
SYMBOL fol_Equiv(FOLSTATE);
SYMBOL fol_EqualBool(FOLSTATE);
SYMBOL fol_Equal(FOLSTATE);
SYMBOL fol_Xor(FOLSTATE);
SYMBOL fol_Ite(FOLSTATE);
SYMBOL fol_QuantVars(FOLSTATE);
BOOL fol_IsTrue(FOLSTATE, TERM);
BOOL fol_IsFalse(FOLSTATE, TERM);
BOOL fol_IsForall(FOLSTATE, TERM);
BOOL fol_IsAnd(FOLSTATE, TERM);
BOOL fol_IsExist(FOLSTATE, TERM);
BOOL fol_IsOr(FOLSTATE, TERM);
BOOL fol_IsNot(FOLSTATE, TERM);
BOOL fol_IsImplies(FOLSTATE, TERM);
BOOL fol_IsEquiv(FOLSTATE, TERM);
BOOL fol_IsEqualBool(FOLSTATE, TERM);
BOOL fol_IsEqual(FOLSTATE, TERM);
BOOL fol_IsXor(FOLSTATE, TERM);
BOOL fol_IsIte(FOLSTATE, TERM);
BOOL fol_IsQuantVars(FOLSTATE, TERM);
TERM fol_Negate(FOLSTATE, TERM);
TERM fol_NegateToggle(FOLSTATE, TERM);
TERMSTATE fol_GetStateTermstate(FOLSTATE);
MEMORY fol_GetStateMemory(FOLSTATE);
SYMBSTATE fol_GetStateSymbolState(FOLSTATE);
TERMSTATE fol_GetTermstate(FOLSTATE);
MEMORY fol_GetMemory(FOLSTATE);
SYMBSTATE fol_GetSymbstate(FOLSTATE);
BOOL fol_IsQuantifierSymbol(FOLSTATE, SYMBOL);
BOOL fol_IsQuantifier(FOLSTATE, TERM);
BOOL fol_IsAtom(FOLSTATE, TERM);
BOOL fol_IsLiteral(FOLSTATE, TERM);
BOOL fol_IsPropAtom(FOLSTATE, TERM);
BOOL fol_IsPropLiteral(FOLSTATE, TERM);
TERM fol_GetAtom(FOLSTATE, TERM);
NAT fol_GetQuantifiedVariable(FOLSTATE, TERM);
short fol_GetLiteralPolarity(FOLSTATE, TERM);
int fol_ComparePropLiteral(FOLSTATE,TERM, TERM);
int fol_ComparePropLiteral_func(const void *, const void *, void *);
TERM fol_CreateQuantifiedFormula(FOLSTATE, SYMBOL, ARRAY);
#endif
