DIRECTORY
	ThreeC4BaseDecl1Def,
	Rope,
	ThreeC4BaseDecl2Def;

ThreeC4RecFcnDeclDef: CEDAR DEFINITIONS = 
BEGIN
OPEN ThreeC4BaseDecl1Def, Rope, ThreeC4BaseDecl2Def;
FormFileSeqProcType: TYPE = PROC[REF ANY, ContextNode] RETURNS[FileSeqNode];

MakeFileSeqProcType: TYPE = PROC[REF ANY, LookupContextNode] RETURNS[FileSeqNode];

DefFileCodeProcType: TYPE = PROC[REF ANY, LookupContextNode, UsageNode] RETURNS[MesaCodeNode, UsageNode];

ImplFileCodeProcType: TYPE = PROC[REF ANY, LookupContextNode, UsageNode] RETURNS[MesaCodeNode, UsageNode];

LinkFileCodeProcType: TYPE = PROC[REF ANY, LookupContextNode, UsageNode] RETURNS[MesaCodeNode, UsageNode];

SyntaxFileCodesProcType: TYPE = PROC[REF ANY, LookupContextNode] RETURNS[MesaCodeNode, MesaCodeNode];

SpecialSyntaxTokenFileCodeProcType: TYPE = PROC[REF ANY] RETURNS[MesaCodeNode];

SyntaxRightSideFileCodeProcType: TYPE = PROC[REF ANY] RETURNS[MesaCodeNode];

CollectValueTypesProcType: TYPE = PROC[REF ANY, ContextNode] RETURNS[ContextNode];

CollectFunctionTypesProcType: TYPE = PROC[REF ANY, ContextNode] RETURNS[ContextNode];

CollectProductionsProcType: TYPE = PROC[REF ANY, INT, ContextNode] RETURNS[INT, ContextNode];

CollectModuleValueTypesProcType: TYPE = PROC[REF ANY, ROPE, ContextNode] RETURNS[ContextNode];

CollectModuleFunctionTypesProcType: TYPE = PROC[REF ANY, ROPE, ContextNode] RETURNS[ContextNode];

RecordCedarTypesFromProcType: TYPE = PROC[REF ANY, ROPE, ContextNode] RETURNS[ContextNode];

RecordCedarTypesProcType: TYPE = PROC[REF ANY, ContextNode] RETURNS[ContextNode];

FormTypeListProcType: TYPE = PROC[REF ANY, LookupContextNode] RETURNS[TypeListNode];

FormTypeListEarlyProcType: TYPE = PROC[REF ANY, ContextNode] RETURNS[TypeListNode];

FormTypeEarlyProcType: TYPE = PROC[REF ANY, ContextNode] RETURNS[TypeNode];

FormTypesCodeProcType: TYPE = PROC[REF ANY, LookupContextNode, UsageNode] RETURNS[MesaCodeNode, UsageNode];

ProcFieldTypeCodeProcType: TYPE = PROC[REF ANY, LookupContextNode, UsageNode] RETURNS[MesaCodeNode, UsageNode];

FormNameListProcType: TYPE = PROC[REF ANY] RETURNS[NameListNode];

CollectRightSideSymbolsProcType: TYPE = PROC[REF ANY, ContextNode] RETURNS[ContextNode];

FormRightSideContextProcType: TYPE = PROC[REF ANY, LookupContextNode] RETURNS[LookupContextNode];

FormNameProcType: TYPE = PROC[REF ANY] RETURNS[NameNode];

FormFirstIdProcType: TYPE = PROC[REF ANY] RETURNS[IdentifierNode];

FormTypeProcType: TYPE = PROC[REF ANY, LookupContextNode] RETURNS[TypeNode];

FormValueInfoProcType: TYPE = PROC[REF ANY, LookupContextNode] RETURNS[TypeNode, MesaCodeNode];

FormNodeVarAssignCodeProcType: TYPE = PROC[REF ANY] RETURNS[MesaCodeNode];

FormExpCodeProcType: TYPE = PROC[REF ANY, LookupContextNode, UsageNode] RETURNS[MesaCodeNode, TypeNode, UsageNode];

FormExpListCodeProcType: TYPE = PROC[REF ANY, LookupContextNode, UsageNode] RETURNS[MesaCodeNode, TypeListNode, UsageNode];

TestFormControlFileProcType: TYPE = PROC[REF ANY] RETURNS[BOOLEAN];

FormLinkCallCodeProcType: TYPE = PROC[REF ANY, LookupContextNode, UsageNode] RETURNS[MesaCodeNode, UsageNode];

TestLinkPresentProcType: TYPE = PROC[REF ANY] RETURNS[BOOLEAN];

FormControlFileListProcType: TYPE = PROC[REF ANY, INT, MesaCodeNode, MesaCodeNode, UsageNode] RETURNS[FileSeqNode, UsageNode];

RecordMultipleBaseTypesProcType: TYPE = PROC[REF ANY, ROPE, ContextNode] RETURNS[ContextNode];

BaseDeclCodeProcType: TYPE = PROC[REF ANY, LookupContextNode] RETURNS[MesaCodeNode];

FormAbstRightSideContextProcType: TYPE = PROC[REF ANY, ContextNode] RETURNS[ContextNode];

DataBodyFieldTypeCodeProcType: TYPE = PROC[REF ANY, LookupContextNode] RETURNS[MesaCodeNode];

ProdDataTypeDefCodeProcType: TYPE = PROC[REF ANY, MesaCodeNode, LookupContextNode] RETURNS[MesaCodeNode];

FormProcsNamesCodeProcType: TYPE = PROC[REF ANY, MesaCodeNode] RETURNS[MesaCodeNode];

FormTypeUseProcType: TYPE = PROC[REF ANY, UsageNode, LookupContextNode] RETURNS[UsageNode];

ProdBuildDataRcdCodeProcType: TYPE = PROC[REF ANY, MesaCodeNode, MesaCodeNode] RETURNS[MesaCodeNode];

FormRecFcnsDeclCodeProcType: TYPE = PROC[REF ANY, MesaCodeNode, LookupContextNode, UsageNode] RETURNS[MesaCodeNode, UsageNode];

FormVarDeclCodeProcType: TYPE = PROC[REF ANY, TypeListNode] RETURNS[MesaCodeNode];

FormRecordOfDamageShareAssertionProcType: TYPE = PROC[REF ANY, FcnDefGraphNode] RETURNS[FcnDefGraphNode];

END..