@Override public void apply(KVariable v) { if (isLHS() && !v.equals(ResolveAnonVar.ANON_VAR)) vars.add(v); super.apply(v); }
@Override public void apply(K k) { if (isRHS() && !isLHS() && cache.containsKey(k)) { usedOnRhs.add(k); return; } super.apply(k); } }.apply(term);
@Override public void apply(InjectedKLabel k) { if (k.klabel() instanceof KVariable) { apply((KVariable) k.klabel()); } super.apply(k); }
@Override public void apply(KApply k) { String hook = module.attributesFor().get(k.klabel()).getOrElse(() -> Att.empty()).getOptional("hook").orElse(""); if (hook.equals("SET.element") || hook.equals("LIST.element") || hook.equals("LIST.concat") || hook.equals("MAP.concat") || hook.equals("SET.concat")) { return; } if (hook.equals("MAP.element")) { apply(k.items().get(1)); return; } super.apply(k); } }.apply(term);
@Override public void apply(InjectedKLabel k) { if (k.klabel() instanceof KVariable) { apply((KVariable) k.klabel()); } super.apply(k); } }
@Override public void apply(KApply k) { if (k.klabel() instanceof KVariable) { apply((KVariable) k.klabel()); } super.apply(k); }
@Override public void apply(K k) { if (isLHS() && !isRHS() && !(k instanceof KVariable)) { cache.put(k, newDotVariable(sorts.sort(k, Sorts.K()))); } super.apply(k); }
@Override public void apply(KApply k) { if (k.klabel().name().startsWith("#SemanticCastTo")) { Sort savedContext = context; context = k.att().get(Production.class).sort(); apply(k.items().get(0)); context = savedContext; return; } if (k.klabel() instanceof KVariable) { apply((KVariable) k.klabel()); } super.apply(k); } }