abstract sclass AbstractThoughtSpace { AbstractThoughtSpace parent; *() {} *(AbstractThoughtSpace *parent) {} // takes unshortened query abstract L> get(S query); // existence of triple has already been checked abstract GlobalID postTriple(T3 t); abstract int size(); public bool hasTriple(S a, S b, S c) { for (TripleRef ref : shortestList3(get(a), get(b), get(c))) if (tripleEqic(ref.triple, a, b, c)) true; false; } }