:Begin:
:Function: arroverlapq
:Pattern: lapQ[a_, b_]
:Arguments: {a,b}
:ArgumentTypes: {Manual}
:ReturnType: Integer
:End:
:Evaluate: lapQ::usage="check overlap of a in b, as array-graphs"

:Begin:
:Function: nonconrepl
:Pattern: tryreplace[f_List,g_List,h_List,e_List]
:Arguments: {f,g,h,e}
:ArgumentTypes: {Manual}
:ReturnType: Manual
:End:
:Evaluate: tryreplace::usage="tryreplace[f,g,h,ftg] replaces the background graph h with the replacement graph f in the place of the matching pattern graph g, where the hairs have been aligned from ftg.  The graphs are given as a sorted list, in low-connected format, with consecutive node labels starting at 0.  The hair alignments are of the form {node in f, node in g}."

:Begin:
:Function: nonconcount
:Pattern: trycount[g_List,h_List]
:Arguments: {g,h}
:ArgumentTypes: {Manual}
:ReturnType: Manual
:End:
:Evaluate: trycount::usage="trycount[g,h] counts the occurences of g in h."

:Begin:
:Function: nonconlaps
:Pattern: trylaps[g_List,h_List]
:Arguments: {g,h}
:ArgumentTypes: {Manual}
:ReturnType: Manual
:End:
:Evaluate: trylaps::usage="trylaps[g,h] yields {count, nodelist} counts the occurences of g in h, and gives the list of nodes in h which are in a pattern match with g."

:Begin:
:Function: allmultievo
:Pattern: netevolvelist[a:{___List},b_List,c_Integer]
:Arguments: {a,b,c}
:ArgumentTypes: {Manual}
:ReturnType: Manual
:End:
:Evaluate: netevolvelist::usage="netevolvelist[{{f,g,hair relations}...},h,k] replaces the background graph h using the list of rules g->f, after k steps, giving the list of the evolution."


:Begin:
:Function: multievo
:Pattern: netevolve[a:{___List},b_List,c_Integer]
:Arguments: {a,b,c}
:ArgumentTypes: {Manual}
:ReturnType: Manual
:End:
:Evaluate: netevolve::usage="netevolve[{{f,g,hair relations}...},h,k] replaces the background graph h using the list of rules g->f, after k steps."

:Begin:
:Function: multievoendq
:Pattern: netevolvendq[a:{___List},b_List,c_Integer]
:Arguments: {a,b,c}
:ArgumentTypes: {Manual}
:ReturnType: Integer
:End:
:Evaluate: netevolvendq::usage="netevolvendq[{{f,g,hair relations}...},h,k] replaces the background graph h using the list of rules g->f, after k steps, returning 1 if the evolution ends within k steps, and returning 0 otherwise."

:Begin:
:Function: causalevo
:Pattern: causalnet[a:{___List},b_List,c_Integer]
:Arguments: {a,b,c}
:ArgumentTypes: {Manual}
:ReturnType: Manual
:End:
:Evaluate: causalnet::usage="causalnet[{{f,g,hair relations}...},h,k] gives the causal network, derived from replacing the background graph h using the list of rules g->f, in k steps."

:Begin:
:Function: isomorphq
:Pattern: isomorphq[g_List,h_List]
:Arguments: {g,h}
:ArgumentTypes: {Manual}
:ReturnType: Integer
:End:
:Evaluate: isomorphq::usage="isomorphq[g,h] returns 1 if g is isomorphic to h, and returns 0 otherwise.  g is assumed to be low-connected, and h must be connected."

:Begin:
:Function: strongisoq
:Pattern: strongisoq[g_List,h_List,n_Integer]
:Arguments: {g,h,n}
:ArgumentTypes: {Manual}
:ReturnType: Integer
:End:
:Evaluate: strongisoq::usage="strongisoq[g,h] returns 1 if g is isomorphic to h, under the assumption that the first n nodes of each graph are identified, and returns 0 otherwise.  This is a stronger condition than isomorphism.  g is assumed to be low-connected, and h must be connected."