anchor.diff:      else return new PSet.from([new Substitution.empty()]);
     }
   
  -  DLTerm unifiable(DLTerm a, DLTerm b) {
  +  DLTerm unifiable(DLAtom a, DLAtom b) {
       Substitution s = a.unify(b);
       DLTerm sa = a.subst(s);
       DLTerm sb = b.subst(s);
  
positive.code:     return ret;
    }
  
    Iterable<DLAtom> get atoms => new PSet().insert(this);
  
    operator ==(dynamic o) => o is DLAtom && o.fact == fact && o.args == args;
  
    int get hashCode => quiver.hash2(fact, args);
  
negative.code: 
  class DLRule {
    DLAtom left;
    DLAnd right;
  
    DLRule(this.left, this.right);
  
  