В общих чертах как-то так.
Основная идея создать простой булевый массив из двух значений, чтобы собственно можно было с помощью его индекса "перебирать" любые величины A B и C
bool check = true;
 bool[] b = new bool[2] { true, false };
 for (int i1 = 0; i1 < 2; i1++)
 for (int i2 = 0; i2 < 2; i2++)
 for (int i3 = 0; i3 < 2; i3++)
 {
     //Подставить тут требуемые сравнения.
     bool result1 = (b[i1] || b[i2]);
     bool result2 = (b[i2] || b[i1]);
     if (result1 != result2) check = false;
 }
Где на выходе смотреть на check. Если он осталься true значит пары эквиваленты
Закодировать сравнения для result1 и result2 конечно придется самому.