General transitivity support

function GT-ALL-ACCESSIBLE : (predicate fort &optional mt)
Returns all superiors and all inferiors of FORT via PREDICATE
PREDICATE must satisfy FORT-P.
FORT must satisfy FORT-P.
Single value returned is a list of elements satisfying FORT-P. 

function GT-ALL-DEPENDENT-INFERIORS : (predicate fort &optional mt)
Returns all inferiors i of FORT s.t. every path connecting i to 
any superior of FORT must pass through FORT
PREDICATE must satisfy FORT-P.
FORT must satisfy FORT-P.
Single value returned is a list of elements satisfying FORT-P. 

function GT-ALL-INFERIORS : (predicate fort &optional mt)
Returns all inferiors of FORT via PREDICATE
PREDICATE must satisfy FORT-P.
FORT must satisfy FORT-P.
Single value returned is a list of elements satisfying FORT-P. 

function GT-ALL-SUPERIORS : (predicate fort &optional mt)
Returns all superiors of FORT via PREDICATE
PREDICATE must satisfy FORT-P.
FORT must satisfy FORT-P.
Single value returned is a list of elements satisfying FORT-P. 

function GT-ANY-SUPERIOR-PATH : (predicate inferior superior &optional mt)
Returns list of nodes connecting INFERIOR with SUPERIOR
PREDICATE must satisfy FORT-P.
INFERIOR must satisfy FORT-P.
SUPERIOR must satisfy FORT-P.
Single value returned is a list of elements satisfying FORT-P. 

function GT-CO-INFERIORS : (predicate fort &optional mt)
Returns sibling direct-inferiors of direct-superiors of FORT via PREDICATE, excluding FORT itself
PREDICATE must satisfy FORT-P.
FORT must satisfy FORT-P.
Single value returned is a list of elements satisfying FORT-P. 

function GT-CO-SUPERIORS : (predicate fort &optional mt)
Returns sibling direct-superiors of direct-inferiors of FORT via PREDICATE, excluding FORT itself
PREDICATE must satisfy FORT-P.
FORT must satisfy FORT-P.
Single value returned is a list of elements satisfying FORT-P. 

function GT-COMPLETES-CYCLE? : (predicate fort1 fort2 &optional mt)
Returns whether a transitive path connect FORT2 to FORT1, 
or whether a transitive inverse path connect FORT1 to FORT2?
PREDICATE must satisfy FORT-P.
FORT1 must satisfy FORT-P.
FORT2 must satisfy FORT-P.
Single value returned satisfies BOOLEANP. 

function GT-COMPOSE-FN-ALL-INFERIORS : (predicate fort fn &optional combine-fn mt)
Apply fn to each inferior of FORT; 
fn takes a fort as its only arg, and 
it must not effect the search status of each fort it visits
PREDICATE must satisfy FORT-P.
FORT must satisfy FORT-P.
FN must satisfy FUNCTION-SPEC-P. 

function GT-COMPOSE-FN-ALL-SUPERIORS : (predicate fort fn &optional combine-fn mt)
Apply fn to each superior of FORT;
fn takes a fort as its only arg, and must not effect the search status of each
fort it visits
PREDICATE must satisfy FORT-P.
FORT must satisfy FORT-P.
FN must satisfy FUNCTION-SPEC-P. 

function GT-COMPOSE-PRED-ALL-INFERIORS : (predicate fort compose-pred &optional compose-index-arg compose-gather-arg mt)
Returns all nodes accessible by COMPOSE-PRED from each inferior of FORT along 
transitive PREDICATE
PREDICATE must satisfy FORT-P.
FORT must satisfy FORT-P.
COMPOSE-PRED must satisfy PREDICATE-IN-ANY-MT?.
Single value returned is a list of elements satisfying FORT-P. 

function GT-COMPOSE-PRED-ALL-SUPERIORS : (predicate fort compose-pred &optional compose-index-arg compose-gather-arg mt)
Returns all nodes accessible by COMPOSE-PRED from each superior of FORT along 
transitive PREDICATE
PREDICATE must satisfy FORT-P.
FORT must satisfy FORT-P.
COMPOSE-PRED must satisfy PREDICATE-IN-ANY-MT?.
Single value returned is a list of elements satisfying FORT-P. 

function GT-CYCLES? : (predicate fort &optional mt)
Returns whether FORT is accessible from itself by one or more PREDICATE gafs?
PREDICATE must satisfy FORT-P.
FORT must satisfy FORT-P.
Single value returned satisfies BOOLEANP. 

function GT-HAS-INFERIOR? : (predicate superior inferior &optional mt)
Returns whether fort SUPERIOR is hierarchically higher 
(wrt transitive PREDICATE) to fort INFERIOR?
PREDICATE must satisfy FORT-P.
SUPERIOR must satisfy FORT-P.
INFERIOR must satisfy FORT-P.
Single value returned satisfies BOOLEANP. 

function GT-HAS-SUPERIOR? : (predicate inferior superior &optional mt)
Returns whetherfort INFERIOR is hierarchically lower (wrt transitive PREDICATE) 
to fort SUPERIOR?
PREDICATE must satisfy FORT-P.
INFERIOR must satisfy FORT-P.
SUPERIOR must satisfy FORT-P.
Single value returned satisfies BOOLEANP. 

function GT-INFERIORS : (predicate fort &optional mt)
Returns direct inferiors of FORT via transitive PREDICATE
PREDICATE must satisfy FORT-P.
FORT must satisfy FORT-P.
Single value returned is a list of elements satisfying FORT-P. 

function GT-LEAVES : (predicate fort &optional mt)
Returns minimal inferiors (i.e., leaves) of FORT via PREDICATE
PREDICATE must satisfy FORT-P.
FORT must satisfy FORT-P.
Single value returned is a list of elements satisfying FORT-P. 

function GT-MAX-FLOORS : (predicate forts &optional candidates mt)
Returns the least-subordinate elements or common inferiors of FORTS
(when CANDIDATES is non-nil, the result must subset it)
PREDICATE must satisfy FORT-P.
FORTS must satisfy LISTP.
Single value returned is a list of elements satisfying FORT-P. 

function GT-MAX-INFERIORS : (predicate fort &optional mt)
Returns maximal inferiors of FORT via transitive PREDICATE
PREDICATE must satisfy FORT-P.
FORT must satisfy FORT-P.
Single value returned is a list of elements satisfying FORT-P. 

function GT-MAX-INFERIORS-EXCLUDING : (predicate inferior superior &optional mt)
Returns most-general inferiors of SUPERIOR ignoring INFERIOR (expensive)
(useful for splicing-out INFERIOR from hierarchy)
PREDICATE must satisfy FORT-P.
INFERIOR must satisfy FORT-P.
SUPERIOR must satisfy FORT-P.
Single value returned is a list of elements satisfying FORT-P. 

function GT-MAX-NODES : (predicate forts &optional mt direction)
Returns returns the least-subordinate elements of FORTS
(<direction> should be :up unless all nodes are low in the hierarchy)
PREDICATE must satisfy FORT-P.
FORTS must satisfy LISTP.
Single value returned is a list of elements satisfying FORT-P. 

function GT-MIN-CEILINGS : (predicate forts &optional candidates mt)
Returns the most-subordinate common superiors of FORTS
(when CANDIDATES is non-nil, the result must subset it)
PREDICATE must satisfy FORT-P.
FORTS must satisfy LISTP.
Single value returned is a list of elements satisfying FORT-P. 

function GT-MIN-NODES : (predicate forts &optional mt)
Returns returns the most-subordinate elements of FORTS
(one member only of a cycle will be a min-node candidate)
PREDICATE must satisfy FORT-P.
FORTS must satisfy LISTP.
Single value returned is a list of elements satisfying FORT-P. 

function GT-MIN-SUPERIORS : (predicate fort &optional mt)
Returns minimal superiors of FORT via transitive PREDICATE
PREDICATE must satisfy FORT-P.
FORT must satisfy FORT-P.
Single value returned is a list of elements satisfying FORT-P. 

function GT-MIN-SUPERIORS-EXCLUDING : (predicate inferior superior &optional mt)
Returns least-general superiors of INFERIOR ignoring SUPERIOR
(useful for splicing-out SUPERIOR from hierarchy)
PREDICATE must satisfy FORT-P.
INFERIOR must satisfy FORT-P.
SUPERIOR must satisfy FORT-P.
Single value returned is a list of elements satisfying FORT-P. 

function GT-REDUNDANT-INFERIORS : (predicate fort &optional mt)
Returns direct-inferiors of FORT via PREDICATE that subsumed other inferiors
PREDICATE must satisfy FORT-P.
FORT must satisfy FORT-P.
Single value returned is a list of elements satisfying FORT-P. 

function GT-REDUNDANT-SUPERIORS : (predicate fort &optional mt)
Returns direct-superiors of FORT via PREDICATE that are subsumed by other superiors
PREDICATE must satisfy FORT-P.
FORT must satisfy FORT-P.
Single value returned is a list of elements satisfying FORT-P. 

function GT-ROOTS : (predicate fort &optional mt)
Returns maximal superiors (i.e., roots) of FORT via PREDICATE
PREDICATE must satisfy FORT-P.
FORT must satisfy FORT-P.
Single value returned is a list of elements satisfying FORT-P. 

function GT-SUPERIORS : (predicate fort &optional mt)
Returns direct superiors of FORT via transitive PREDICATE
PREDICATE must satisfy FORT-P.
FORT must satisfy FORT-P.
Single value returned is a list of elements satisfying FORT-P. 

function GT-WHY-COMPLETES-CYCLE? : (predicate fort1 fort2 &optional mt)
Returns justification that a transitive path connects FORT2 to FORT1, 
or that a transitive inverse path connects FORT1 to FORT2?
PREDICATE must satisfy FORT-P.
FORT1 must satisfy FORT-P.
FORT2 must satisfy FORT-P. 

function GT-WHY-SUPERIOR? : (predicate superior inferior &optional mt)
Returns justification of why SUPERIOR is superior to (i.e., hierarchically higher than) 
INFERIOR
PREDICATE must satisfy FORT-P.
SUPERIOR must satisfy FORT-P.
INFERIOR must satisfy FORT-P.
Single value returned is a list of elements satisfying ASSERTION-P.