topos.functors.profunctors.pdg.compare

PDG Comparison — profunctor D : E × E^op restricted to the academic intra-procedural Program Dependence Graph. ==================================================================

Pairwise comparison of two ProgramDependenceGraph instances. PDG-level comparison surfaces whether a refactor preserved the def-use and predicate-executor wiring even when the AST has been rewritten.

Signals:

data_dep_jaccard : Jaccard similarity over data-dependence edges control_dep_jaccard: Jaccard similarity over control-dependence edges statement_delta : signed change in statement-node count density_delta : signed change in normalized dependence density

Edge equality is by the triple (source_id, target_id, var) for data edges and (source_id, target_id) for control edges — i.e. structural identity using the stable UAST node ids assigned during parsing.

class topos.functors.profunctors.pdg.compare.PDGComparison(data_dep_jaccard, control_dep_jaccard, statement_delta, density_delta, source_metrics, target_metrics)[source]

Bases: object

Pairwise comparison summary for two program-dependence graphs.

data_dep_jaccard
control_dep_jaccard
statement_delta
density_delta
source_metrics
target_metrics
property changed
topos.functors.profunctors.pdg.compare.data_dep_jaccard(source, target)[source]

Jaccard similarity over (def → use, var) data-dependence triples.

topos.functors.profunctors.pdg.compare.control_dep_jaccard(source, target)[source]

Jaccard similarity over (predicate → executor) control-dependence pairs.

topos.functors.profunctors.pdg.compare.statement_delta(source, target)[source]

Signed change in statement-node count (target − source).

topos.functors.profunctors.pdg.compare.density_delta(source, target)[source]

Signed change in normalized dependence density (target − source).

topos.functors.profunctors.pdg.compare.compare_pdg(source, target)[source]

Run the full PDG comparison suite for a single pair of graphs.