

A284276


Number of event structures with n labeled elements.


0




OFFSET

1,2


COMMENTS

Little is known about event structures enumeration. The entries were obtained by a dedicated algorithm recursively constructing all possible event structures. This algorithm has been formally verified to be correct by construction using the theorem prover Isabelle/HOL (see the Links section). The formal proof also formally certifies the correctness of other sequences already in the OEIS (quasiorders, partial orders). Note that we count what are called "event structures" in the given References. Other sources, however, refer to the same objects as "prime event structures".


LINKS



EXAMPLE

An event structure is given by a poset and a conflict relation (denoted #) on it. The conflict relation is irreflexive and symmetric, and must propagate over the order: a<=b and a#c imply b#c.
For n=2, (i.e., two elements a and b), there are three possible posets: a<=b, b<=a, and neither of the two. For the first two cases, only the empty conflict is possible. For the third case, you can have either the empty conflict relation, or a#b. Hence the total number of event structures is 4.


PROG

(Isabelle/HOL)
definition "ReducedRelation2 ReflPartialOrder == (let min = (List.find (%x. x : (snd`((set ReflPartialOrder){(x, x)}))) (map fst ReflPartialOrder)) in (min, filter (%(x, y). x ~= the min & y ~= the min) ReflPartialOrder))"
definition "generateConflicts5 Or m c ==
[c Int ({m}×Y) Int (Y×{m}). Y < map (Image {z:Or. fst z ~= m & snd z ~= m})
(map set (sublists (if (Or``{m}){m}={} then (sorted_list_of_set (Domain Or)) else
sorted_list_of_set (Inter {c``{M}M. M ? next1 Or {m}}))))]"
function conflictsFor2 where "conflictsFor2 Or=(let (M, or)=ReducedRelation2 Or in if M=None then [{}]
else let m=the M in concat [remdups (generateConflicts5 (set Or) m c). c < conflictsFor2 or])"
value "map (%n. listsum (map (size o conflictsFor2 o adj2PairList) (allReflPartialOrders n))) [1..<7]
(*Correctness theorem*)
theorem assumes "N>0" shows "card (esOver {0..<N}) =
listsum (map (size o remdups o conflictsFor2 o adj2PairList) (allReflPartialOrders N))"


CROSSREFS

Cf. A001035 (generating all the event structures entails generating all the posets), A000798 (to generate all the posets we preemptively generated all the quasiorders).


KEYWORD

nonn,hard,more


AUTHOR



EXTENSIONS



STATUS

approved



