# Posets O(P) Algorithm, how to?

Hi!

I an new here :). I am doing some work with Posets, and I want to create O(P) given a Poset P. The idea is to give a graphic representation. I want to use sage for this (it has the functions for it). But, The graphical representation is bad (It does not show the elements of the poset, just a number, it represents the structure though).

We (we are a team) implemented something in php (to have it online). Now we want to implement O(P) (We have how to construct P) so that we can see in each node the corresponding element. Can anyone tell me how to do this? or where I can find an algorithm or the source code in sage? What I want is (in sage):

```
P = Poset((divisors(12), attrcall("divides")), facade=True)
A = P.directed_subsets('up')
L = sorted(list(A))
PP = Poset(([Set(s) for s in L], attrcall("issubset")))
PP._hasse_diagram.plot()
```

(If there is a way to see the elements with PP._hasse_diagram.plot() will be appreciated.)

Where I can find the source code or (better I think) an algorithm to create O(P) in an efficient way? For example, how to calculate the antichains (if this helps) to create each element (each down-set) of O(P) and then how to create O(P)?