Define an unambiguous context free grammar that generates the language of strings containing a series of a's followed by a series of b's followed by a series of c's concluding with a series of d's. The number of a's must be exactly the sames as the number of d's and the number of b's must be exactly the same as the number of c's. The strings must contain at least of instance one each of the four letters. Examples of valid stings are:

aaabbccddd abbbcccd

To define an unambiguous context-free grammar (CFG) for the given language, we can use the following production rules:

1. S -> abcd
2. S -> aScd
3. S -> abSd
4. S -> aScd
5. S -> S1S2 (concatenation of two valid strings)

Explanation:

1. The production rule S -> abcd generates a valid string consisting of one instance each of a, b, c, and d in the correct order.

2. The production rule S -> aScd adds one set of a's, b's, c's, and d's to an existing valid string. This ensures that the number of a's is equal to the number of d's and the number of b's is equal to the number of c's.

3. The production rule S -> abSd adds one set of a's, b's, c's, and d's to an existing valid string. This ensures that the number of a's is equal to the number of d's and the number of b's is equal to the number of c's.

4. The production rule S -> aScd adds one set of a's, b's, c's, and d's to an existing valid string. This ensures that the number of a's is equal to the number of d's and the number of b's is equal to the number of c's.

5. The production rule S -> S1S2 allows for concatenation of two valid strings. This ensures that there are multiple sets of a's, b's, c's, and d's while maintaining the equality of their respective counts.

By using these production rules, we can generate all valid strings as per the given language.