:-lib(graph_algorithms).
:-lib(viewable).
:-lib(ic).
test:-
make_graph(7,
[e(1,2,F12), e(2,3,F23), e(2,4,F24), e(3,5,F35),
e(4,5,F45), e(4,6,F46), e(5,6,F56), e(6,3,F63),
e(6,7,F67)],
Graph),
Flows = [F23,F24,F35,F45,F46,F56,F63],
Flows :: 0..5,
(for(Node, 2, 6), param(Graph) do
graph_get_incoming_edges(Graph, Node, InEdges),
graph_get_adjacent_edges(Graph, Node, OutEdges),
(foreach(e(_From, _To, Flow), InEdges),
foreach(Flow, InFlow) do true),
(foreach(e(_From, _To, Flow), OutEdges),
foreach(Flow, OutFlow) do true),
sum(InFlow) #= sum(OutFlow)
),
F12 #= 9,
viewable_create(flow_viewable, Graph, graph(fixed),
[node_property([0->[name(nodes), label]]),
edge_property([0->[name(edges), label]])
]),
labeling(Flows).