The tree, as facts
node(1, "var"). node(2, "var").
node(3, "or"). node(4, "not").
node(5, "var"). node(6, "and").
node(7, "var"). node(8, "or").
# pos=0: left child, pos=1: right child
node_child(3, 0, 1). node_child(3, 1, 2).
node_child(4, 0, 3).
node_child(6, 0, 4). node_child(6, 1, 5).
node_child(8, 0, 6). node_child(8, 1, 7).
# 0: p, 1: q, 2: r
node_var(1, 0). node_var(2, 1).
node_var(5, 2). node_var(7, 0).
root(8).