@@ -351,7 +351,7 @@ end);
351351
352352InstallGlobalFunction(DigraphCliquesReps,
353353function (arg... )
354- local D, include, exclude, limit, size;
354+ local D, include, exclude, limit, size, group ;
355355
356356 if IsEmpty(arg) then
357357 ErrorNoReturn(" there must be at least 1 argument," );
@@ -383,8 +383,14 @@ function(arg...)
383383 size := fail ;
384384 fi ;
385385
386+ if IsBound (arg[ 6 ] ) then
387+ group := arg[ 6 ] ;
388+ else
389+ group := fail ;
390+ fi ;
391+
386392 return CliquesFinder
387- (D, fail , [] , limit, include, exclude, false , size, true );
393+ (D, fail , [] , limit, include, exclude, false , size, true , group );
388394end );
389395
390396# Cliques
@@ -394,7 +400,7 @@ DigraphCliques);
394400
395401InstallGlobalFunction(DigraphCliques,
396402function (arg... )
397- local D, include, exclude, limit, size, out;
403+ local D, include, exclude, limit, size, out, group ;
398404
399405 if IsEmpty(arg) then
400406 ErrorNoReturn(" there must be at least 1 argument," );
@@ -426,10 +432,16 @@ function(arg...)
426432 size := fail ;
427433 fi ;
428434
435+ if IsBound (arg[ 6 ] ) then
436+ group := arg[ 6 ] ;
437+ else
438+ group := fail ;
439+ fi ;
440+
429441 # use cached value if it's not a special case due to exclusion / size / etc.
430442 if IsList(include) and IsEmpty(include) and IsList(exclude)
431443 and IsEmpty(exclude) and limit = infinity and size = fail
432- and HasDigraphCliquesAttr(D) then
444+ and HasDigraphCliquesAttr(D) and group = AutomorphismGroup(D) then
433445 return DigraphCliquesAttr(D);
434446 fi ;
435447
@@ -441,7 +453,7 @@ function(arg...)
441453 exclude,
442454 false ,
443455 size,
444- false );
456+ group );
445457 # Store the result if appropriate (not special case due to params)
446458 if IsEmpty(include) and IsEmpty(exclude) and limit = infinity and size = fail
447459 and IsImmutableDigraph(D) then
@@ -495,7 +507,8 @@ function(arg...)
495507 return DigraphMaximalCliquesRepsAttr(D);
496508 fi ;
497509
498- out := CliquesFinder(D, fail , [] , limit, include, exclude, true , size, true );
510+ out := CliquesFinder(D, fail , [] , limit, include, exclude, true , size, true ,
511+ fail );
499512 # Store the result if appropriate
500513 if IsEmpty(include) and IsEmpty(exclude) and limit = infinity and size = fail
501514 and IsImmutableDigraph(D) then
@@ -570,14 +583,16 @@ function(arg...)
570583 return MakeImmutable(out);
571584 fi ;
572585
573- return CliquesFinder(D, fail , [] , limit, include, exclude, true , size, false );
586+ return CliquesFinder(D, fail , [] , limit, include, exclude, true , size, false ,
587+ fail );
574588end );
575589
576590# A wrapper for DigraphsCliquesFinder
577591# This is very hacky at the moment, so we could test C code with GAP tests
578592InstallGlobalFunction(CliquesFinder,
579- function (digraph, hook, user_param, limit, include, exclude, max, size, reps )
580- local n, subgraph, group, vertices, include_variant, exclude_variant,
593+ function(digraph, hook, user_param, limit, include, exclude, max, size, reps,
594+ group)
595+ local n, subgraph, vertices, include_variant, exclude_variant,
581596 invariant_include, include_invariant, invariant_exclude,
582597 exclude_invariant, x, v, o, i, out, found_orbits, num_found,
583598 hook_wrapper;
@@ -623,7 +638,10 @@ function(digraph, hook, user_param, limit, include, exclude, max, size, reps)
623638
624639 subgraph := DigraphMutableCopyIfMutable(digraph);
625640 subgraph := MaximalSymmetricSubdigraphWithoutLoops(subgraph);
626- group := AutomorphismGroup(subgraph);
641+ # TODO check that group is a group or fail
642+ if group = fail then
643+ group := AutomorphismGroup(subgraph);
644+ fi ;
627645
628646 # Investigate whether <include> and <exclude> are invariant under <group>
629647 vertices := DigraphVertices(digraph);
@@ -683,7 +701,7 @@ function(digraph, hook, user_param, limit, include, exclude, max, size, reps)
683701 fi ;
684702 fi ;
685703
686- if DigraphNrVertices(digraph) < 512 then
704+ if DigraphNrVertices(digraph) < 2000 then # FIXME
687705 if reps then
688706
689707 if hook = fail then
@@ -702,7 +720,8 @@ function(digraph, hook, user_param, limit, include, exclude, max, size, reps)
702720 include,
703721 exclude,
704722 max,
705- size);
723+ size,
724+ group);
706725 return MakeImmutable(out);
707726 else
708727
@@ -783,7 +802,8 @@ function(digraph, hook, user_param, limit, include, exclude, max, size, reps)
783802 include_invariant,
784803 exclude_invariant,
785804 max,
786- size);
805+ size,
806+ group);
787807
788808 return MakeImmutable(user_param);
789809 fi ;
@@ -806,6 +826,8 @@ function(digraph, hook, user_param, limit, include, exclude, max, size, reps)
806826 fi ;
807827end);
808828
829+ # TODO add group as last parameter
830+
809831InstallGlobalFunction(DIGRAPHS_BronKerbosch,
810832function (D, hook, param, lim, inc, exc, max, size, reps, inc_var, exc_var )
811833 local vtx, invariant_inc, invariant_exc, invariant, adj, exc_inv, start,
0 commit comments