Examples

This section provides example scripts demonstrating advanced use cases for graphcalc.

Example 1: Computing the Independence and Domination Numbers

import graphcalc.graphs as gc

# Create a sample graph
G = gc.cycle_graph(6)

# Compute and print the independence number
print("Independence Number:", gc.independence_number(G))

# Compute and print the domination number
print("Domination Number:", gc.domination_number(G))

Example 2: Inspecting Invariant Metadata

Many GraphCalc invariants and property functions include structured metadata, such as a display name, notation, category, aliases, and a machine-readable definition.

import graphcalc.graphs as gc
from graphcalc.metadata import describe_object, get_graphcalc_metadata

meta = get_graphcalc_metadata(gc.independence_number)

print("Display name:", meta["display_name"])
print("Notation:", meta["notation"])
print("Category:", meta["category"])
print("Definition:", meta["definition"])

print()
print(describe_object(gc.independence_number))

Example 3: Discovering Annotated Functions in a Module

You can also build a registry of annotated functions from a module.

import importlib
from graphcalc.metadata import build_module_registry

mod = importlib.import_module("graphcalc.hypergraphs.invariants.acyclicity")
registry = build_module_registry(mod)

print(sorted(registry))

for key in sorted(registry):
    print(key, "->", registry[key]["display_name"])
    print("   definition:", registry[key]["definition"])