Describe abstract congruence closure and the differences to Fontaine and BarceLogic algorithms