   Go backward to `desing/dlocsep`Go up to ProceduresGo forward to `desing/dumpTree`

## `desing/dualgraph`

It is also an interface procedure under the short name dualgraph. It computes the dual hypergraph of the normal crossing total transform obtained by the resolution algorithm. In this hypergraph a node is an exceptional divisor, and there is a hyper-edge between a given subset of nodes if the corresponding exceptional divisors have a common point. The procedure takes the resolution information from the global variables chartHistory and globalChartCounter.

Input:
-
Output:
A pair (A, M) where A is the list of vertices and M is the list of hyperbonds. A vertex in A is a pair where the first element is a list of pairs (ID, EQ) where ID is the identifier of the chart in which the exceptional divisor of the vertex appears given by the equation EQ and the second element of the vertex is the stratifying function value.
There is the question of what is to be considered as 'one blowing up' (or respectively 'one exceptional divisor'). We use the following conventions:
• Decomposing the (complete, normal crossing) exceptional divisor into irreducible components would be too costly; therefore we do not do it.
• Because the blowing up centers are computed according to Villamayor's stratifying function it seems to be the most reasonable decision to take those blowing ups (exceptional divisors) as one which are defined by blowing up centers along which the stratifying function attains the same value.
• The indices of exceptional divisors in the stratifying function value for a monomial blowing up depend on the chart. Thus we replace local indices by global ones to make the references clean.
If the dumpHTML configuration variable is true the data of the hypergraph is exported into the dualgraph.html file in the same directory as the other files.

To compute the dual graph for the output of a `desing/dlocpdh` or `desing/pdlocpdh` call over the ith principal open subset of P3 (i=1,2,3,4), set

```  chartHistory := eval(chartHistorypdh[i]):
globalChartCounter := chartHistorypdh[i]:
```
before calling `desing/dualgraph`().   