# admin helpers
def concept explain as get_results() | filter("id == 0") | recurse(2)
set_isa(c:explain:, __AUTO_EVAL)

def concept explain last as get_last_results() | filter("id == 0") | recurse(2)
set_isa(c:explain last:, __AUTO_EVAL)

def concept explain x as get_results() | filter(f"id == {x}") | recurse(3) where isinstance(x, int)
set_isa(c:explain x:, __AUTO_EVAL)

def concept explain x values where isinstance(x, int) as get_results() | filter(f"id=={x}") | format_d
set_isa(c:explain x values:, __AUTO_EVAL)

def concept precedence a > precedence b as set_is_greater_than(__PRECEDENCE, a, b)
set_isa(c:precedence a > precedence b:, __AUTO_EVAL)

def concept x is a command as set_auto_eval(x, __AUTO_EVAL)
set_auto_eval(c:x is a command:)

def concept q from q ? as question(q) pre is_question()
set_is_lesser(__PRECEDENCE, q)
set_auto_eval(c:q:)

def concept "x is a concept" as isinstance(x, Concept) pre is_question()

def concept x is a y as set_isa(x, y)
set_auto_eval(c:x is a y:)
def concept x is an y as set_isa(x, y)
set_auto_eval(c:x is an y:)
def concept x is a y as isa(x,y) pre is_question()
def concept x is an y as isa(x,y) pre is_question()

def concept x has a y as set_hasa(x, y)
set_auto_eval(c:x has a y:)
def concept x has an y as set_hasa(x, y)
set_auto_eval(c:x has an y:)
def concept x has a y as hasa(x,y) pre is_question()
def concept x has an y as hasa(x,y) pre is_question()
