PrologList setVal2 = (PrologList) valIndRight.pData.data;
PrologList setVal3 = null;
if (OperCG == e_maximalJoin) { // Determiner l'union
setVal3 = env.compile.union(setVal1, setVal2);
C3.m_pdReferent = new PrologData(uSet, setVal3);
bResult = aUnifyCG.conform(C3.m_pdReferent, valIndLeft.index,
(String) C3.m_pdType.data); // et si le type est une variable qui a une valeur..?
} else if (OperCG == e_generalize) { // Determiner l'intersection
setVal3 = env.compile.intersection(setVal1, setVal2);
C3.m_pdReferent = new PrologData(uSet, setVal3);
} else if ((OperCG == e_subsume) ||
(OperCG == e_subsumeWithoutResult) ||
(OperCG == e_partialContract) ||
(OperCG == e_completeContract)) { // Determiner inclusion
if (env.compile.set1IsSubsetOfSet2(setVal1, setVal2)) {
if (OperCG == e_subsume) {
C3.m_pdReferent = valIndRight.pData.myCopy();
}
} else {
bResult = false;
}
}
} else if ((valIndLeft.pData.data instanceof String) &&
(valIndRight.pData.data instanceof PrologList)) {
// Traiter le cas ou l'un est un ref et l'autre un ensemble
String sVal1 = (String) valIndLeft.pData.data;
PrologList setVal2 = (PrologList) valIndRight.pData.data;
PrologList setVal3 = null;
if (OperCG == e_maximalJoin) {
setVal3 = env.compile.union(valIndLeft.pData, setVal2);
C3.m_pdReferent = new PrologData(uSet, setVal3);
bResult = aUnifyCG.conform(C3.m_pdReferent, valIndLeft.index,
(String) C3.m_pdType.data); // et si le type est une variable qui a une valeur..?
} else if (OperCG == e_generalize) { // Determiner l'intersection
if (env.compile.hasString(sVal1, setVal2)) {
C3.m_pdReferent = valIndLeft.pData.myCopy();
} else {
C3.m_pdReferent = null;
}
} else if ((OperCG == e_subsume) ||
(OperCG == e_subsumeWithoutResult) ||
(OperCG == e_partialContract) ||
(OperCG == e_completeContract)) { // Determiner inclusion
if (env.compile.hasString(sVal1, setVal2)) {
if (OperCG == e_subsume) {
C3.m_pdReferent = valIndRight.pData.myCopy();
}
} else {
bResult = false;
}
}
} else if ((valIndLeft.pData.data instanceof PrologList) &&
(valIndRight.pData.data instanceof String)) {
// Traiter le cas ou l'un est un ref et l'autre un ensemble
PrologList setVal1 = (PrologList) valIndLeft.pData.data;
String sVal2 = (String) valIndRight.pData.data;
PrologList setVal3 = null;
if (OperCG == e_maximalJoin) {
setVal3 = env.compile.union(valIndRight.pData, setVal1);
C3.m_pdReferent = new PrologData(uSet, setVal3);
bResult = aUnifyCG.conform(C3.m_pdReferent, valIndLeft.index,
(String) C3.m_pdType.data); // et si le type est une variable qui a une valeur..?
} else if (OperCG == e_generalize) { // Determiner l'intersection
if (env.compile.hasString(sVal2, setVal1)) {