DIRECTORY
	ThreeC4FlowGraphAbGramDef,
	ThreeC4BasicAbTypesDef;

ThreeC4FlowGraphAbGramImpl: CEDAR PROGRAM IMPORTS ThreeC4FlowGraphAbGramDef EXPORTS ThreeC4FlowGraphAbGramDef= 
BEGIN
OPEN ThreeC4FlowGraphAbGramDef, ThreeC4BasicAbTypesDef;

-- DamageShareAssertionsemptyProd

DamageShareAssertionsemptyProdProcs: PUBLIC DamageShareAssertionsNodeProcs ←
	NEW[DamageShareAssertionsNodeProcsBody ← [DamageShareAssertionsemptyProdFormRecordOfDamageShareAssertion]];

BuildDamageShareAssertionsemptyProdNode: PUBLIC PROC[position: INT, length: INT]
	RETURNS[DamageShareAssertionsNode] =
		BEGIN
		RETURN[NEW[DamageShareAssertionsNodeBody←[position, length, DamageShareAssertionsemptyProdProcs, NIL]]];
		END;


-- DamageShareAssertionsmanyProd

DamageShareAssertionsmanyProdProcs: PUBLIC DamageShareAssertionsNodeProcs ←
	NEW[DamageShareAssertionsNodeProcsBody ← [DamageShareAssertionsmanyProdFormRecordOfDamageShareAssertion]];

BuildDamageShareAssertionsmanyProdNode: PUBLIC PROC[position: INT, length: INT, DamageShareAssertions: DamageShareAssertionsNode, DamageShareAssertion: DamageShareAssertionNode]
	RETURNS[DamageShareAssertionsNode] =
		BEGIN
		data: DamageShareAssertionsmanyProdData ←
			NEW[DamageShareAssertionsmanyProdDataBody←[
			DamageShareAssertions, DamageShareAssertion]];
		RETURN[NEW[DamageShareAssertionsNodeBody←[position, length, DamageShareAssertionsmanyProdProcs, data]]];
		END;


-- DamageShareAssertiondamagedRepsProd

DamageShareAssertiondamagedRepsProdProcs: PUBLIC DamageShareAssertionNodeProcs ←
	NEW[DamageShareAssertionNodeProcsBody ← [DamageShareAssertiondamagedRepsProdFormRecordOfDamageShareAssertion]];

BuildDamageShareAssertiondamagedRepsProdNode: PUBLIC PROC[position: INT, length: INT, ModIdList: ModIdListNode]
	RETURNS[DamageShareAssertionNode] =
		BEGIN
		data: DamageShareAssertiondamagedRepsProdData ←
			NEW[DamageShareAssertiondamagedRepsProdDataBody←[
			ModIdList]];
		RETURN[NEW[DamageShareAssertionNodeBody←[position, length, DamageShareAssertiondamagedRepsProdProcs, data]]];
		END;


-- DamageShareAssertionsharedRepsProd

DamageShareAssertionsharedRepsProdProcs: PUBLIC DamageShareAssertionNodeProcs ←
	NEW[DamageShareAssertionNodeProcsBody ← [DamageShareAssertionsharedRepsProdFormRecordOfDamageShareAssertion]];

BuildDamageShareAssertionsharedRepsProdNode: PUBLIC PROC[position: INT, length: INT, ModIdList: ModIdListNode]
	RETURNS[DamageShareAssertionNode] =
		BEGIN
		data: DamageShareAssertionsharedRepsProdData ←
			NEW[DamageShareAssertionsharedRepsProdDataBody←[
			ModIdList]];
		RETURN[NEW[DamageShareAssertionNodeBody←[position, length, DamageShareAssertionsharedRepsProdProcs, data]]];
		END;

END..