|
|
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 (quasi-orders, 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 quasi-orders).
|
|
KEYWORD
|
nonn,hard,more
|
|
AUTHOR
|
|
|
EXTENSIONS
|
|
|
STATUS
|
approved
|
|
|
|