1. A tetraaromatic diamine compound having the general formula:
wherein a is 0-3;
b, c and d independently are integers from 0-5,
R1 and R2 together with the carbon atoms to which they are bonded are joined together to form a saturated or partially saturated C3 to about C30 ring,
R3, R4, R5 and R6 are independently hydrogen, a straight or branched C1-C30 alkyl or alkylene group optionally substituted with one or more substituents, a substituted or unsubstituted C3-C12 cycloalkyl, a substituted or unsubstituted C5-C25 aryl, a substituted or unsubstituted C6-C25 arylalkyl, a straight or branched C1-C30 alkoxy group optionally substituted with one or more substituents.
2. The tetraaromatic diamine compound of claim 1, wherein R1 and R2 are joined together to form a saturated 5-, 6-, or 7-membered ring.
3. The tetraaromatic diamine compound of claim 1, wherein R1 and R2 are joined together to form a partially unsaturated 5-, 6-, or 7-membered ring.
4. The tetraaromatic diamine compound of claim 1, wherein two R4 substituents and two R5 substituents and two R6 substituents on adjacent carbon atoms of the aromatic ring associated therewith are joined together to form a saturated or partially unsaturated C3 to about C30 ring.
5. The tetraaromatic diamine compound of claim 1, wherein two substituents and two R5 substituents and two R6 substituents on adjacent carbon atoms of the aromatic ring associated therewith are joined together to form a saturated 5-, 6-, or 7-membered ring.
6. The tetraaromatic diamine compound of claim 1, wherein two R4 substituents and two R5 substituents and two R6 substituents on adjacent carbon atoms of the aromatic ring associated therewith are joined together to form a partially unsaturated 5-, 6-, or 7-membered ring.
7. The tetraaromatic diamine compound of claim 1, wherein R1 and R2 are joined together to form a saturated or partially unsaturated 5-, 6-, or 7-membered ring and two R4 substituents and two R5 substituents and two R6 substituents on adjacent carbon atoms of the aromatic ring associated therewith are joined together to form a substituted or unsubstituted and saturated or partially unsaturated 5-, 6-, or 7-membered ring.
8. A lubricating oil composition comprising
(a) at least one oil of lubricating viscosity and
(b) an antioxidant improving effective amount of at least one tetraaromatic diamine compound having the general formula:
wherein a is 0-3;
b, c and d independently are integers from 0-5,
R1 and R2 together with the carbon atoms to which they are bonded are joined together to form a saturated or partially saturated C3 to about C30 ring
R3, R4, R5 and R6 are independently hydrogen, a straight or branched C1-C30 alkyl or alkylene group optionally substituted with one or more substituents, a substituted or unsubstituted C3-C12 cycloalkyl, a substituted or unsubstituted C5-C25 aryl, a substituted or unsubstituted C6-C25 arylalkyl, a straight or branched C1-C30 alkoxy group optionally substituted with one or more substituents.
9. The lubricating oil composition of claim 8, wherein in the tetraaromatic diamine compound R1 and R2 are joined together to form a saturated 5-, 6-, or 7-membered ring.
10. The lubricating oil composition of claim 8, wherein in the tetraaromatic diamine compound R1 and R2 are joined together to form a partially unsaturated 5-, 6-, or 7-membered ring.
11. The lubricating oil composition of claim 1, wherein two R4 substituents and two R5 substituents and two R6 substituents on adjacent carbon atoms of the aromatic ring associated therewith are joined together to form a saturated or partially unsaturated C3 to about C30 ring.
12. The lubricating oil composition of claim 8, wherein in the tetraaromatic diamine compound R1 and R2 are joined together to form a saturated or partially unsaturated 5-, 6-, or 7-membered ring and two R4 substituents and two R5 substituents and two R6 substituents on adjacent carbon atoms of the aromatic ring associated therewith are joined together to form a saturated or partially unsaturated 5-, 6-, or 7-membered ring.
13. The lubricating oil composition of claim 8, wherein the at least one oil of lubricating viscosity is selected from the group consisting of engine oils, transmission fluids, hydraulic fluids, gear oils, marine cylinder oils, compressor oils, refrigeration lubricants and mixtures thereof.
14. The lubricating oil composition of claim 8, further comprising at least one lubricating oil additive selected from the group consisting of antioxidants, anti-wear agents, detergents, rust inhibitors, dehazing agents, demulsifying agents, metal deactivating agents, friction modifiers, pour point depressants, antifoaming agents, co-solvents, package compatibilisers, corrosion-inhibitors, ashless dispersants, dyes, extreme pressure agents and mixtures thereof.
15. The lubricating oil composition of claim 8, further comprising at least one lubricating oil additive selected from the group consisting of an alkylated diphenylamine, alkylated hindered phenolic, alkylated substituted or unsubstituted phenylenediamine, alkylated oil soluble copper compound, alkylated sulfur containing compound known to impart oxidation stability and mixtures thereof.
16. The lubricating oil composition of claim 15, wherein the alkylated sulfur containing compound known to impart oxidation stability is selected from the group consisting of phenothiazines, sulfurized olefins, thiocarbamates, sulfur bearing hindered phenolics, zinc dialkyldithiophosphates and mixtures thereof.
17. The lubricating oil composition of claim 8, having a phosphorous content of less than about 0.1 weight percent.
18. An additive package comprising about 1 to about 75 weight of at least one tetraaromatic diamine compound of claim 1.
19. A stabilizer-containing composition comprising (a) an organic material subject to oxidative, thermal, andor light-induced degradation and in need of stabilization to prevent or inhibit such degradation; and (b) a stabilization effective amount of at least one tetraaromatic diamine compound of claim 1.
20. A method for stabilizing an organic material subject to oxidative, thermal, andor light-induced degradation and in need of stabilization to prevent or inhibit such degradation, the method comprising adding to the organic material a stabilizing amount of at least one tetraaromatic diamine compound of claim 1.
21. The tetraaromatic diamine compound of claim 1, wherein two R4 substituents andor two R5 substituents andor two R6 substituents on adjacent carbon atoms of the aromatic ring associated therewith are joined together to form a saturated or partially saturated C3 to about C30 ring.
22. The lubricating oil composition of claim 8, wherein two R4 substituents andor two R5 substituents andor two R6 substituents on adjacent carbon atoms of the aromatic ring associated therewith are joined together to form a saturated or partially saturated C3 to about C30 ring.
The claims below are in addition to those above.
All refrences to claim(s) which appear below refer to the numbering after this setence.
1. A generator compilation system, the system that includes a processor and a computer-readable-storage-medium storing the following components that are executable by the processor:
a receiver component that receives a stream, wherein the stream includes a sequence of one or more elements;
a type component that determines whether the stream is nested or non-nested by identifying a type of the stream, wherein the stream is non-nested when the type is enumerable, and the stream is nested when the type is stream;
an adapter component that enables iteration across the non-nested stream when the stream is determined to be a non-nested stream to produce a state output in accordance with nested stream states, the iteration across the non-nested stream comprising:
retrieving an element from the non-nested stream,
returning a state value indicating the element is available,
producing the element,
moving an index to a next element, and
terminating the iteration when a return state indicating that all elements in the non-nested stream have been seen and produced;
an enumeration component that enables iteration across the nested stream when the stream is determined to be a nested stream by recursively using a stack to produce a flattened stream that enumerates one or more elements, the iteration across the nested stream comprising:
pushing the nested stream onto the stack, and making the nested stream as an active stream in the stack;
retrieving all the elements in the active stream from the stack, the retrieving all the elements in the active stream comprising:
determining whether the retrieved element is a base element or a stream,
pushing the received element onto the top of the stack when the retrieved element is a stream, and
producing the retrieved element in the flattened stream when the retrieved element is a base element,
popping the active stream from the stack when all elements in the active stream are consumed; and
a state component that generates a state machine to facilitate efficient iteration through the nested stream by optimizing one or more tail-calls, the optimizing comprising popping a parent stream from the stack when the one or more tail-calls occur, wherein the one or more tail-calls indicating last element of the active stream is a nested stream.
2. The system of claim 1, wherein the adapter component returns a stream state.
3. The system of claim 2, wherein the stream state is set to value to indicate that the adapter component has successfully moved to the next element or value in the collection.
4. The system of claim 3, wherein the stream state is set to done to indicate that the adapter component has successfully iterated through all the elements in the collection.
5. The system of claim 1, wherein the state machine includes at least four states including value, stream, enumerable, and done.
6. The system of claim 5, wherein the state machine is implemented via a programmatic switch statement.
7. A method of efficient stream enumeration comprising:
receiving a stream, wherein the stream includes a sequence of one or more elements;
determining whether the stream is nested or non-nested, the determination comprising retrieving a stream type, wherein the stream is non-nested when the type is enumerable, and the stream is nested when the type is stream;
when the stream is determined to be a non-nested stream, iterating across the non-nested stream utilizing an adapter that produces a state output in accordance with nested stream states, the iteration across the non-nested stream comprising:
retrieving an element from the non-nested stream,
returning a state value indicating that the element is available,
producing the element,
moving an index to a next element, and
terminating the iteration when a return state indicating that all elements in the non-nested stream have been seen and produced;
when the stream is determined to be a nested stream, iterating across the nested stream recursively using a stack to produce a flattened stream that enumerates one or more elements, the iteration across the nested stream comprising:
pushing the nested stream onto the stack, and making the nested stream as an active stream in the stack;
retrieving all the elements in the active stream from the stack, the retrieving all the elements in the active stream comprising:
determining whether the retrieved element is a base element or a stream,
pushing the received element onto the top of the stack when the retrieved element is a stream, and
producing the retrieved element in the flattened stream when the retrieved element is a base element,
popping the active stream from the stack when all elements in the active stream are consumed; and
optimizing one or more tail-calls, the optimizing comprising popping a parent stream from the stack when the one or more tail-calls occurs, wherein the one or more tail-calls indicating last element of the active stream is a nested stream;
wherein instructions associated with one or more of the above steps are executed on a processor operatively coupled to memory.
8. The method of claim 7, further comprising retrieving the next element from the stream after pushing the stream to the stack or producing an element.
9. A computer readable medium having stored thereon computer executable instructions for carrying out the method of claim 7.
10. A storage medium storing instructions that, when executed implement a method comprising:
receiving a stream, wherein the stream includes a sequence of one or more elements;
determining whether the stream is nested or non-nested, the determination of whether the stream is nested or non-nested comprising retrieving a type of stream which indicating the stream is non-nested when the type is enumerable, and the stream is nested when the type is stream;
when the stream is determined to be a non-nested stream, iterating across the non-nested stream utilizing an adapter that produces a state output in accordance with nested stream states, the iteration across the non-nested stream comprising:
retrieving an element from the non-nested stream,
returning a state value indicating that the element is available,
producing the element,
moving an index to a next element, and
terminating the iteration when a return state indicating that all elements in the non-nested stream have been seen and produced;
when the stream is determined to be a nested stream, executing a state machine including iterating across the nested stream recursively using a stack to produce a flattened stream that enumerates one or more elements, the iteration across the nested stream comprising:
pushing the nested stream onto the stack, and making the nested stream as an active stream in the stack;
retrieving all the elements in the active stream from the stack, the retrieving all the elements in the active stream comprising:
determining whether the retrieved element is a base element or a stream,
pushing the received element onto the top of the stack when the retrieved element is a stream, and
producing the retrieved element in the flattened stream when the retrieved element is a base element,
popping the active stream from the stack when all elements in the active stream are consumed; and
optimizing one or more tail-calls, the optimizing comprising popping a parent stream from the stack when the one or more tail-calls occur, wherein the one or more tail-calls indicating last element of the active stream is a nested stream;
wherein instructions associated with one or more of the above steps are executed on a processor operatively coupled to memory.
11. The method of claim 10, executing the state machine further comprising popping nested streams from the stack upon reviewing all elements and continuing iterating until the stack is empty.
12. The method of claim 10, wherein retrieving all elements consecutively comprises executing a MoveNext method that moves to the next element and produces the current element until all elements are produced.