public abstract HashSet <Triple <T1, T2, T3> > getPullback( BetterName <T1, T2> fi, HashSet <T1> domfi, BetterName <T3, T2> gi, HashSet <T3> domgi, HashSet <T2> codomi, Func <T2, T2, bool> comp);
//public override HashSet<Triple<Product, string, Article>> getPullback( // BetterName<Product, string> fi, // HashSet<string> domfi, // BetterName<Article, string> gi, // HashSet<string> domgi, // HashSet<string> codomi, // Func<string, string, bool> comp) //{ // var results = new HashSet<Triple<Product, String, Article>>(); // if (domfi.Count > domgi.Count) // { // foreach (var x in domfi) // { // foreach (var y in domgi) // { // var rezX = fi.Compute(x); // var rezY = gi.Compute(y); // if (comp(rezY, rezX)) // { // results.Add(new Triple<Product, string, Article>() {x = x, z = rezY, y = y}); // } // } // } // } // else // { // foreach (var y in domgi) // { // foreach (var x in domfi) // { // var rezX = fi.Compute(x); // var rezY = gi.Compute(y); // if (comp(rezY, rezX)) // { // results.Add(new Triple<Product, string, Artic>() { x = x, z = rezY, y = y }); // } // } // } // } // return results; //} public override HashSet <Triple <Product, string, Article> > getPullback(BetterName <Product, string> fi, HashSet <Product> domfi, BetterName <Article, string> gi, HashSet <Article> domgi, HashSet <string> codomi, Func <string, string, bool> comp) { throw new NotImplementedException(); }