anchor.diff:  
     DLTerm subst(Substitution subst);
   
  -  Substitution unify(DLTerm b);
  -
  -  Iterable<DLAtom> get atoms;
  -
     bool get isGround;
   }
  +
   abstract class DLConstVar {
   
     Substitution unify(DLConstVar b);
  
positive.code: 
  class DLRule {
    DLAtom left;
    DLTerm right;
  
    DLRule(this.left, this.right);
  
  
negative.code:     else return new PSet.from([new Substitution.empty()]);
    }
  
    DLTerm unifiable(DLAtom a, DLAtom b) {
      Substitution s = a.unify(b);
      DLTerm sa = a.subst(s);
      DLTerm sb = b.subst(s);
  