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:
objectPairwise 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.