model ImplemOcaml {
	component ID (out tIDENT)
	component MID (out tMIDENT)
	component MODELE (in IP, in OP, in SC, out tMODELE)
	component PATTERN (in IP, in OP, in SC, out tPATTERN)
	ID.tIDENT -> MODELE.IP
	ID.tIDENT -> MODELE.OP
	MID.tMIDENT -> MODELE.SC
	MID.tMIDENT -> PATTERN.IP
	MID.tMIDENT -> PATTERN.OP
	MID.tMIDENT -> PATTERN.SC
	component UNFOLD_MAPPING (in UM, in PM, out tMODELE, out PMAP, out IMAP, out UM) {
		component UNFOLD (in PM, out o)
		component PATTERN_MAPPING (in UM, in PM, out o)
		component INSTANCE_MAPPING (in i1, in i2, out o)
		UNFOLD_MAPPING.UM -> PATTERN_MAPPING.UM
		UNFOLD_MAPPING.PM -> PATTERN_MAPPING.PM
		UNFOLD_MAPPING.PM -> UNFOLD.PM
		UNFOLD.o -> INSTANCE_MAPPING.i2
		UNFOLD_MAPPING.PM -> INSTANCE_MAPPING.i1
		PATTERN_MAPPING.o -> PMAP
		INSTANCE_MAPPING.o -> IMAP
	}
	MODELE.tMODELE -> UNFOLD_MAPPING.UM
	PATTERN.tPATTERN -> UNFOLD_MAPPING.PM
	component APPLY (in IM, in PM, in i, out tMODELE) {
		component SOMME (out o)
		component MSOMME (out o)
		component MSOMME2 (out o)
		component MODELE (in IP, in OP, in SC, out tMODELE)
		SOMME.o -> MODELE.IP
		MSOMME.o -> MODELE.OP
		MSOMME2.o -> MODELE.SC
		MODELE.tMODELE -> tMODELE
	}
	MODELE.tMODELE -> ImplemOcaml.APPLY.IM
	UNFOLD_MAPPING.tMODELE -> APPLY.PM
	UNFOLD_MAPPING.IMAP -> APPLY.i
}