chordal graphs without isolated vertices, n -> [all, non-joins]: {2: [1, 0], 3: [2, 0], 4: [6, 2], 5: [17, 7], 6: [67, 40], 7: [299, 205]}
graphs     392
nonjoin    254
orders     31946
sets       1124056
S2         0
S3         0
S4         0
S5         0
noorder    0
(orders: all admissible orderings for n<=6, the first 60 for n=7; S5 checked for n<=6)

== P_3 = a-b-c (a star, hence a join) ==
  Gamma edges: [('a', 'b'), ('b', 'c')]
  Lambda (complement) edges: [('a', 'c')]
  join?  True | chordal: True | complement chordal: True
  order v_1..v_n: ['b', 'c', 'a']
   step 1: X_b in R = S - int(nothing); (G): dX_b at distance >= 10 in C(R) from pi_R(dX_j), j in {}
   step 2: X_c in R = S - int(X_b); (G): dX_c at distance >= 10 in C(R) from pi_R(dX_j), j in {}
   step 3: X_a in R = S - int(X_b); (G): dX_a at distance >= 10 in C(R) from pi_R(dX_j), j in ['c']
  vertex sets not contained in a join: 0 ; minimal ones: []
  maximal joins-containment check (literal definition vs Lemma 4.2): OK
== P_4 = a-b-c-d ==
  Gamma edges: [('a', 'b'), ('b', 'c'), ('c', 'd')]
  Lambda (complement) edges: [('a', 'c'), ('a', 'd'), ('b', 'd')]
  join?  False | chordal: True | complement chordal: True
  order v_1..v_n: ['c', 'b', 'd', 'a']
   step 1: X_c in R = S - int(nothing); (G): dX_c at distance >= 10 in C(R) from pi_R(dX_j), j in {}
   step 2: X_b in R = S - int(X_c); (G): dX_b at distance >= 10 in C(R) from pi_R(dX_j), j in {}
   step 3: X_d in R = S - int(X_c); (G): dX_d at distance >= 10 in C(R) from pi_R(dX_j), j in ['b']
   step 4: X_a in R = S - int(X_b); (G): dX_a at distance >= 10 in C(R) from pi_R(dX_j), j in ['c', 'd']
  vertex sets not contained in a join: 4 ; minimal ones: [['a', 'd']]
  maximal joins-containment check (literal definition vs Lemma 4.2): OK
== paw = triangle t1t2t3 with pendant edge t1-p (a join) ==
  Gamma edges: [('p', 't1'), ('t1', 't2'), ('t1', 't3'), ('t2', 't3')]
  Lambda (complement) edges: [('p', 't2'), ('p', 't3')]
  join?  True | chordal: True | complement chordal: True
  order v_1..v_n: ['t1', 't3', 't2', 'p']
   step 1: X_t1 in R = S - int(nothing); (G): dX_t1 at distance >= 10 in C(R) from pi_R(dX_j), j in {}
   step 2: X_t3 in R = S - int(X_t1); (G): dX_t3 at distance >= 10 in C(R) from pi_R(dX_j), j in {}
   step 3: X_t2 in R = S - int(X_t1 u X_t3); (G): dX_t2 at distance >= 10 in C(R) from pi_R(dX_j), j in {}
   step 4: X_p in R = S - int(X_t1); (G): dX_p at distance >= 10 in C(R) from pi_R(dX_j), j in ['t3', 't2']
  vertex sets not contained in a join: 0 ; minimal ones: []
  maximal joins-containment check (literal definition vs Lemma 4.2): OK
== star K_{1,3} (a join) ==
  Gamma edges: [('x1', 'z'), ('x2', 'z'), ('x3', 'z')]
  Lambda (complement) edges: [('x1', 'x2'), ('x1', 'x3'), ('x2', 'x3')]
  join?  True | chordal: True | complement chordal: True
  order v_1..v_n: ['z', 'x1', 'x2', 'x3']
   step 1: X_z in R = S - int(nothing); (G): dX_z at distance >= 10 in C(R) from pi_R(dX_j), j in {}
   step 2: X_x1 in R = S - int(X_z); (G): dX_x1 at distance >= 10 in C(R) from pi_R(dX_j), j in {}
   step 3: X_x2 in R = S - int(X_z); (G): dX_x2 at distance >= 10 in C(R) from pi_R(dX_j), j in ['x1']
   step 4: X_x3 in R = S - int(X_z); (G): dX_x3 at distance >= 10 in C(R) from pi_R(dX_j), j in ['x1', 'x2']
  vertex sets not contained in a join: 0 ; minimal ones: []
  maximal joins-containment check (literal definition vs Lemma 4.2): OK
== 2K_2 = a-b + c-d (disconnected, not a join) ==
  Gamma edges: [('a', 'b'), ('c', 'd')]
  Lambda (complement) edges: [('a', 'c'), ('a', 'd'), ('b', 'c'), ('b', 'd')]
  join?  False | chordal: True | complement chordal: False
  order v_1..v_n: ['a', 'b', 'c', 'd']
   step 1: X_a in R = S - int(nothing); (G): dX_a at distance >= 10 in C(R) from pi_R(dX_j), j in {}
   step 2: X_b in R = S - int(X_a); (G): dX_b at distance >= 10 in C(R) from pi_R(dX_j), j in {}
   step 3: X_c in R = S - int(nothing); (G): dX_c at distance >= 10 in C(R) from pi_R(dX_j), j in ['a', 'b']
   step 4: X_d in R = S - int(X_c); (G): dX_d at distance >= 10 in C(R) from pi_R(dX_j), j in ['a', 'b']
  vertex sets not contained in a join: 9 ; minimal ones: [['a', 'c'], ['a', 'd'], ['b', 'c'], ['b', 'd']]
  maximal joins-containment check (literal definition vs Lemma 4.2): OK
== triangle with pendant path t1-p-q ==
  Gamma edges: [('p', 'q'), ('p', 't1'), ('t1', 't2'), ('t1', 't3'), ('t2', 't3')]
  Lambda (complement) edges: [('p', 't2'), ('p', 't3'), ('q', 't1'), ('q', 't2'), ('q', 't3')]
  join?  False | chordal: True | complement chordal: False
  order v_1..v_n: ['t1', 't2', 't3', 'p', 'q']
   step 1: X_t1 in R = S - int(nothing); (G): dX_t1 at distance >= 10 in C(R) from pi_R(dX_j), j in {}
   step 2: X_t2 in R = S - int(X_t1); (G): dX_t2 at distance >= 10 in C(R) from pi_R(dX_j), j in {}
   step 3: X_t3 in R = S - int(X_t1 u X_t2); (G): dX_t3 at distance >= 10 in C(R) from pi_R(dX_j), j in {}
   step 4: X_p in R = S - int(X_t1); (G): dX_p at distance >= 10 in C(R) from pi_R(dX_j), j in ['t2', 't3']
   step 5: X_q in R = S - int(X_p); (G): dX_q at distance >= 10 in C(R) from pi_R(dX_j), j in ['t1', 't2', 't3']
  vertex sets not contained in a join: 12 ; minimal ones: [['q', 't2'], ['q', 't3']]
  maximal joins-containment check (literal definition vs Lemma 4.2): OK
== spider/chair tree: z-x1, z-x2, z-y, y-w ==
  Gamma edges: [('w', 'y'), ('x1', 'z'), ('x2', 'z'), ('y', 'z')]
  Lambda (complement) edges: [('w', 'x1'), ('w', 'x2'), ('w', 'z'), ('x1', 'x2'), ('x1', 'y'), ('x2', 'y')]
  join?  False | chordal: True | complement chordal: True
  order v_1..v_n: ['z', 'y', 'x1', 'x2', 'w']
   step 1: X_z in R = S - int(nothing); (G): dX_z at distance >= 10 in C(R) from pi_R(dX_j), j in {}
   step 2: X_y in R = S - int(X_z); (G): dX_y at distance >= 10 in C(R) from pi_R(dX_j), j in {}
   step 3: X_x1 in R = S - int(X_z); (G): dX_x1 at distance >= 10 in C(R) from pi_R(dX_j), j in ['y']
   step 4: X_x2 in R = S - int(X_z); (G): dX_x2 at distance >= 10 in C(R) from pi_R(dX_j), j in ['y', 'x1']
   step 5: X_w in R = S - int(X_y); (G): dX_w at distance >= 10 in C(R) from pi_R(dX_j), j in ['z', 'x1', 'x2']
  vertex sets not contained in a join: 12 ; minimal ones: [['w', 'x1'], ['w', 'x2']]
  maximal joins-containment check (literal definition vs Lemma 4.2): OK
== P_5 = 1-2-3-4-5 ==
  Gamma edges: [(1, 2), (2, 3), (3, 4), (4, 5)]
  Lambda (complement) edges: [(1, 3), (1, 4), (1, 5), (2, 4), (2, 5), (3, 5)]
  join?  False | chordal: True | complement chordal: False
  order v_1..v_n: [3, 2, 4, 1, 5]
   step 1: X_3 in R = S - int(nothing); (G): dX_3 at distance >= 10 in C(R) from pi_R(dX_j), j in {}
   step 2: X_2 in R = S - int(X_3); (G): dX_2 at distance >= 10 in C(R) from pi_R(dX_j), j in {}
   step 3: X_4 in R = S - int(X_3); (G): dX_4 at distance >= 10 in C(R) from pi_R(dX_j), j in [2]
   step 4: X_1 in R = S - int(X_2); (G): dX_1 at distance >= 10 in C(R) from pi_R(dX_j), j in [3, 4]
   step 5: X_5 in R = S - int(X_4); (G): dX_5 at distance >= 10 in C(R) from pi_R(dX_j), j in [3, 2, 1]
  vertex sets not contained in a join: 16 ; minimal ones: [['1', '4'], ['1', '5'], ['2', '5']]
  maximal joins-containment check (literal definition vs Lemma 4.2): OK
== bull ==
  Gamma edges: [('a', 'b'), ('a', 'c'), ('a', 'x'), ('b', 'c'), ('b', 'y')]
  Lambda (complement) edges: [('a', 'y'), ('b', 'x'), ('c', 'x'), ('c', 'y'), ('x', 'y')]
  join?  False | chordal: True | complement chordal: True
  order v_1..v_n: ['a', 'b', 'c', 'x', 'y']
   step 1: X_a in R = S - int(nothing); (G): dX_a at distance >= 10 in C(R) from pi_R(dX_j), j in {}
   step 2: X_b in R = S - int(X_a); (G): dX_b at distance >= 10 in C(R) from pi_R(dX_j), j in {}
   step 3: X_c in R = S - int(X_a u X_b); (G): dX_c at distance >= 10 in C(R) from pi_R(dX_j), j in {}
   step 4: X_x in R = S - int(X_a); (G): dX_x at distance >= 10 in C(R) from pi_R(dX_j), j in ['b', 'c']
   step 5: X_y in R = S - int(X_b); (G): dX_y at distance >= 10 in C(R) from pi_R(dX_j), j in ['a', 'c', 'x']
  vertex sets not contained in a join: 8 ; minimal ones: [['x', 'y']]
  maximal joins-containment check (literal definition vs Lemma 4.2): OK
time 3.2s
