#ifndef _CLAUSE_
#define _CLAUSE_ 
#include "array.h"
#include "folsubst.h"
#include "term.h"
typedef uintptr_t *CLAUSE;
CLAUSE clause_ArithSimpleMalloc(MEMORY, unsigned, unsigned, unsigned, unsigned, BOOL);
CLAUSE clause_CreateFromLiterals(MEMORY, ARRAY, ARRAY, ARRAY, BOOL, unsigned);
CLAUSE clause_CreateFromArrayOfLiterals(MEMORY, FOLSTATE, ARRAY, BOOL, unsigned);
CLAUSE clause_CreateGeneric(MEMORY, unsigned, unsigned);
void clause_NormalizeVarsEstablishTypes(SUBSTSTATE, TERMSTATE, TYPE, CLAUSE, ARRAY, TYPE);
void clause_NormalizeVarsAndSubst(SUBSTSTATE, TERMSTATE, CLAUSE, SUBST *);
void clause_Delete(MEMORY, TERMSTATE, CLAUSE);
CLAUSE clause_Copy(TERMSTATE, CLAUSE, BOOL);
void clause_DeleteGeneric(MEMORY, TERMSTATE, CLAUSE);
void clause_SharedDelete(MEMORY, TERMSTATE, CLAUSE);
void clause_NullLiteral(CLAUSE, unsigned);
BOOL clause_NullIsEmpty(CLAUSE);
void clause_RemoveNullLiterals(CLAUSE);
void clause_RemoveDuplicateLiterals(TERMSTATE, CLAUSE, BOOL);
void clause_RemoveLiteral(CLAUSE, unsigned);
void clause_Print(TERMSTATE, CLAUSE);
void clause_PrintSubst(TERMSTATE, CLAUSE, SUBST);
void clause_PrintDatalog(TERMSTATE, CLAUSE, SYMBOL, BOOL, BOOL);
void clause_PrintDFG(TERMSTATE, CLAUSE);
void clause_PrintSMT(TERMSTATE, CLAUSE, const char*);
void clause_PrintSMTI(TERMSTATE, CLAUSE, const char*);
void clause_PrintSMTGC(TERMSTATE, CLAUSE);
void clause_PrintSMTIGC(TERMSTATE, CLAUSE);
void clause_PrintCHCI(TERMSTATE, CLAUSE, const char*);
void clause_PrintCHCIGC(TERMSTATE, CLAUSE);
void clause_FPrintAsTerm(FILE*, TERMSTATE, CLAUSE);
void clause_FPrintTPTP(FILE*,TERMSTATE, CLAUSE);
BOOL clause_IsClause(TERMSTATE, CLAUSE);
void clause_AddParent(MEMORY, CLAUSE, unsigned, unsigned);
uintptr_t clause_GetParents(CLAUSE);
unsigned clause_GetCapacity(CLAUSE);
unsigned clause_GetFolLiterals(CLAUSE);
void clause_SetFolLiterals(CLAUSE, unsigned);
BOOL clause_IsEmpty(CLAUSE);
unsigned clause_GetPremiseLiterals(CLAUSE);
void clause_SetPremiseLiterals(CLAUSE, unsigned);
unsigned clause_GetConclusionLiterals(CLAUSE);
void clause_SetConclusionLiterals(CLAUSE, unsigned);
void clause_RangeFolLiterals(CLAUSE, BOOL, unsigned int *, unsigned int *);
unsigned clause_GetVariables(CLAUSE);
void clause_SetVariables(CLAUSE, unsigned);
NAT clause_GetSymbolOccurrences(TERMSTATE, CLAUSE);
void clause_SetSymbolOccurrences(TERMSTATE, CLAUSE);
TYPING clause_GetTypes(CLAUSE);
void clause_SetTypes(CLAUSE, TYPING);
void clause_CopyTypes(MEMORY,CLAUSE,CLAUSE);
void clause_UpdateTypingSize(MEMORY, CLAUSE);
ARRAY clause_GetConstraintLiterals(CLAUSE);
void clause_SetConstraintLiterals(CLAUSE, ARRAY);
unsigned clause_GetId(CLAUSE);
void clause_SetId(CLAUSE, unsigned);
unsigned clause_GetPropagations(CLAUSE);
void clause_IncrementPropagations(CLAUSE);
void clause_DecrementPropagations(CLAUSE);
unsigned clause_GetResolutions(CLAUSE, unsigned);
void clause_IncrementResolutions(MEMORY, CLAUSE, unsigned);
TERM clause_GetAtom(CLAUSE, unsigned);
TERM clause_GetLiteral(FOLSTATE, CLAUSE, unsigned);
TYPE clause_GetVarType(CLAUSE, SYMBOL);
void clause_SetVarType(MEMORY, CLAUSE, SYMBOL, TYPE);
CLAUSE clause_ComposeResolvent(TERMSTATE, CLAUSE, unsigned, CLAUSE, unsigned);
void clause_NormalizeVars(SUBSTSTATE, TERMSTATE, CLAUSE);
void clause_RenameVars(SUBSTSTATE, TERMSTATE, CLAUSE, int);
BOOL clause_LiteralIsPositive(CLAUSE, unsigned);
BOOL clause_CheckForUnit(SYMBSTATE, CLAUSE);
BOOL clause_IsMarkedProblemClause(CLAUSE);
void clause_MarkProblemClause(CLAUSE, BOOL);
void clause_MarkDelete(CLAUSE, BOOL);
BOOL clause_IsMarkedDelete(CLAUSE);
void clause_MarkConjecture(CLAUSE, BOOL);
BOOL clause_IsMarkedConjecture(CLAUSE);
void clause_MarkNullAtoms(CLAUSE, BOOL);
BOOL clause_IsMarkedNullAtoms(CLAUSE);
BOOL clause_IsMarkedTautology(CLAUSE);
void clause_MarkTautology(CLAUSE, BOOL);
BOOL clause_IsMarkedPropAbstr(CLAUSE);
void clause_MarkPropAbstrTautology(CLAUSE, BOOL IsPropAbstr);
uintptr_t clause_GetMark(CLAUSE);
void clause_SetMark(CLAUSE, uintptr_t);
BOOL clause_ApplyEqualityResolution(FOLSTATE, TERMSTATE, SUBSTSTATE, CLAUSE);
BOOL clause_EqualModuloSubst(MEMORY, SYMBSTATE, CLAUSE, SUBST, SUBST);
VSUBST clause_VarsNotUsedInFol(MEMORY, SYMBSTATE, CLAUSE);
#endif
