1:- module(stripper, [strip_graph_modules/2]).    2/* Generalised semiring to strip module qualification from switches and
    3*  goals in a graph. This renders the graph useless for computation but
    4*  can be useful for printing and visualisations where redundant module
    5*  qualifiers would only add visual clutter.
    6*/
    7:- use_module(library(listutils),   [cons//1]).    8:- use_module(library(data/pair),   [ffst/3]).    9:- use_module(graph, [graph_fold/4]).   10
   11strip_graph_modules --> graph_fold(strip, _), maplist(ffst(strip)).
   12
   13strip(_:F, F).
   14
   15ccp_graph:sr_inj(strip, _, (_:SW):=V, SW:=V).
   16ccp_graph:sr_proj(strip, _:G, Z, G, Z).
   17ccp_graph:sr_plus(strip, Expl) --> cons(Expl).
   18ccp_graph:sr_times(strip, F)   --> cons(F).
   19ccp_graph:sr_zero(strip, []).
   20ccp_graph:sr_unit(strip, [])