Group complete
This page describes the organizational forces that limit change.  It explains how to overcome them when necessary. 

Power& tradition holding back progress
This page uses an example to illustrate how:
  • A business can gain focus from targeting key customers,
  • Business planning activities performed by the whole organization can build awareness, empowerment and coherence. 
  • A program approach can ensure strategic alignment. 
Be responsive to market dynamics
This page uses the example of HP's printer organization freeing itself from its organizational constraints to sell a printer targeted at the IBM pc user. 
The constraints are described. 
The techniques to overcome them are implied. 
Overcome reactionaries
Primary Navigation

Groups and initiation of operon binding

Summary
This page describes the adaptive web framework (AWF)
This page describes the Adaptive Web framework (AWF) test system and the agent programming framework (Smiley) that supports its operation. 
Example test system statements are included.  To begin a test a test statement is loaded into Smiley while Smiley executes on the Perl interpreter. 
Part of Smiley's Perl code focused on setting up the infrastructure is included bellow. 
The setup includes:
  • Loading the 'Meta file' specification,
  • Initializing the Slipnet, and Workspaces and loading them
  • So that the Coderack can be called. 
The Coderack, which is the focus of a separate page of the Perl frame then schedules and runs the codelets that are invoked by the test statement structures. 
Smiley
agent progamming infrastructure's codelet based
This page discusses the interdependence of perception and representation in a complex adaptive system (CAS).  Hofstadter and Mitchell's research with Copycat is reviewed. 
Copycat
grouping, in Copycat grouping codelets can group two or more bonded Workspace objects (WSO) together.  In effect grouping adjusts the system to reflect the presence of a chemically active molecule in the molecules local environment. 
operation. 
The requirements needed for a group to complete are described
The association of group completion with a
This page describes the Copycat Slipnet. 
The goal of the Slipnet is reviewed. 
Smiley's specialized use of the Slipnet is introduced. 
The initial Slipnet network used by the 'Merge Streams' and 'Virtual Robot' agent-based applications is setup in initchemistry and is included. 
The Slipnet infrastructure and initialization functions are included. 
Slipnet
defined operon is an addressable control structure which is used in biological cells to control access to other regions of the DNA. 
is described.  Either actions or signals result from the association. 
How a generated signal is transported to the nucleus, a membrane bounded module in a eukaryotic cell where the DNA is encapsulated and operated on. 
of the cell and matched with an operon is an addressable control structure which is used in biological cells to control access to other regions of the DNA. 
is described
A match with an operon can result in deployment of a
Plans emerge in complex adaptive systems (CAS) to provide the instructions that agents use to perform actions.  The component architecture and structure of the plans is reviewed. 
schematic string
to the original
This page describes the Copycat Workspace. 
The specialized use of the Workspace by the adaptive web framework's (AWF) Smiley is discussed. 
How text and XML are imported into the Smiley Workspace is described. 
Telomeric aging of schematic structures is introduced. 
The internal data structure used to represent the state of each workspace object is included. 
The Workspace infrastructure functions are included. 
Workspace
.  But eventually the deployed string will be destroyed. 
Smiley infrastructure amplification of the group completion operation is introduced.  This includes facilities to inhibit crowding out of offspring
A test file awfart04 is included
The group codelet and supporting functions are included
Introduction
The Copycat architecture (
This page describes the Copycat Coderack. 
The details of the codelet architecture are described. 
The specialized use of the Coderack by the adaptive web framework's (AWF) Smiley is discussed. 
The codelet scheduling mechanism is discussed. 
A variety of Smiley extensions to the Coderack are reviewed. 
The Coderack infrastructure functions are included. 
Coderack
,
This page describes the Copycat Slipnet. 
The goal of the Slipnet is reviewed. 
Smiley's specialized use of the Slipnet is introduced. 
The initial Slipnet network used by the 'Merge Streams' and 'Virtual Robot' agent-based applications is setup in initchemistry and is included. 
The Slipnet infrastructure and initialization functions are included. 
Slipnet
&
This page describes the Copycat Workspace. 
The specialized use of the Workspace by the adaptive web framework's (AWF) Smiley is discussed. 
How text and XML are imported into the Smiley Workspace is described. 
Telomeric aging of schematic structures is introduced. 
The internal data structure used to represent the state of each workspace object is included. 
The Workspace infrastructure functions are included. 
Workspace
) builds on a representation of molecular, multiple atoms bonded together.  The physical and chemical phenomena associated with the molecule such as charge, size, shape, and potential energy reflect the constituent atoms, the types of bonds between them and the topology of the bonding.  Charged molecules dissolve in aqueous solutions (water).  Uncharged molecules dissolve in lipid bilayers.   bonding, there are different types of chemical bonds.  Ionic bonds stabilize two oppositely charged ionized atoms when the negative atom gives up an electron to the positively charged atom.  Covalent bonds stabilize the two reactants when they adopt a more stable structure with electrons shared between them.  Hydrogen bonds stabilize charged groups when they are surrounded by water molecules.  In Copycat codelets can bond two Workspace objects together.  In the Smiley implementation a bondbuilder adds a bonding descriptor to one of the objects bonding it to the other. 
architected by Douglas Hofstadter, Marsha Meredith & Gray Clossman during Seek-Whence.  In Copycat the bonded sequences may form groups, in Copycat grouping codelets can group two or more bonded Workspace objects (WSO) together.  In effect grouping adjusts the system to reflect the presence of a chemically active molecule in the molecules local environment. 
based on their situation, chance and the rules defined in the Slipnet. 

The adaptive web framework test infrastructure (Smiley) implements Copycat and augments it with
This page describes the Smiley infrastructure and codelets that instantiate the epiphenomena defined in the Meta file and Slipnet. 
Infrastructure sensors are introduced. 
The role of phenomena in shaping the environment is discussed. 
The focusing of forces by phenomena in Smiley is discussed. 
The Meta file association of case keywords with phenomena is included. 
The codelets and supporting functions are included. 
phenomena
,
This page discusses how Smiley provides signalling to its agent-based applications. 
Alternative strategies for initiating the signalling are reviewed. 
The codelets and supporting functions are included.
signalling
and an
This page describes the Smiley infrastructure that supports the associative binding of schematic strings to codelets defined in the Meta file and Slipnet. 
The infrastructure supporting the associations is introduced. 
The role of Jeff Hawkins neocortical attributes is discussed. 
Relevant Slipnet configurations are included. 
The codelets and supporting functions are included. 
association framework
.  It initially operates on a Workspace loaded with keyword objects from a file such as the test file awfart04
Group sponsor Workspace objects
In Smiley, Workspace
Plans emerge in complex adaptive systems (CAS) to provide the instructions that agents use to perform actions.  The component architecture and structure of the plans is reviewed. 
schematic strings
group complete when all the Workspace objects within them are 'covalently' bonded together, i.e. the Slipnet has a grouping rule for bonded Workspace objects, each intra-group object has the group descriptor and the edge objects can't bond further with any other local Workspace objects.  The group's first Workspace object (WSO) becomes the 'group sponsor' WSO and group oriented descriptors will be written to this WSO.  The group start and group end descriptors will be written to the group sponsor as part of the group completion process and are used to check that the group has completed.  The group start and end descriptors can be removed by Smiley infrastructure function notgcompleted
Operon association framework
The Slipnet supports the
Agents use sensors to detect events in their environment.  This page reviews how these events become signals associated with beneficial responses in a complex adaptive system (CAS).  CAS signals emerge from the Darwinian information model.  Signals can indicate decision summaries and level of uncertainty. 
association of Workspace object 'schematic' sequences with the operator property
(for example the test model operon is an addressable control structure which is used in biological cells to control access to other regions of the DNA. 
This page looks at how Smiley processes the statement, such as a test request, to ensure that each part of the statement is valid. 
Smiley does this through the operation of a part codelet which indirectly sponsors the modeling of the parts of the statement. 
The modeling itself is performed by model codelets. 
The part codelet synchronizes with the completion of the modeling. 
The part evaluator's signal along with the associated operons and subgroup schematic sequences are included. 
The group models' Slipnet associations are included. 
The codelets and supporting functions are included. 
validity
).  When a group completes any contained sequences that are
This page describes the Smiley infrastructure that supports the associative binding of schematic strings to codelets defined in the Meta file and Slipnet. 
The infrastructure supporting the associations is introduced. 
The role of Jeff Hawkins neocortical attributes is discussed. 
Relevant Slipnet configurations are included. 
The codelets and supporting functions are included. 
associated
with an operator will result, possibly after a delay, in generation of a goal/model codelet (tgoal/model scout, goal/model evaluator/builder) associated schematically to a action codelet and potentially its
This page describes the inhibitor framework provided by the adaptive web framework's (AWF) Smiley agent programming infrastructure. 
Two mechanisms are provided:
  1. Uncompetitive inhibition of group completion. 
  2. Uncompetitive inhibition of transcription factors.  
In both cases the inhibitors provide a restriction process. 
The Slipnet inhibitor descriptions are included. 
The codelets and supporting infrastructure are included. 
inhibitors
.  The goal codelet uses the operator's Slipnet properties to complete the association to some local action codelet or
This page discusses how Smiley provides signalling to its agent-based applications. 
Alternative strategies for initiating the signalling are reviewed. 
The codelets and supporting functions are included.
signal
the nucleus, a membrane bounded module in a eukaryotic cell where the DNA is encapsulated and operated on. 
, via nuclear transport codelet (tnuclabmscout, evaluator, builder) where the signalled operon will be activated upon matching.  Activation equates to a salient, Douglas Hofstadter controlled the amount of attention a Workspace object in Copycat would receive from codelets via its salience.  The more descriptions, analogous to geons, an object has and the more highly activated the nodes involved therin, the more important the object is.  Modulating this tendency is any relative lack of connections from the object to the rest of the objects in the Workspace.  Salience is a dynamic number that takes into account both these factors.  In Smiley the instantaneous salience of a Workspace's objects is calculated by itsalience.  
Plans emerge in complex adaptive systems (CAS) to provide the instructions that agents use to perform actions.  The component architecture and structure of the plans is reviewed. 
schematic
sub-group being deployed into the originating Workspace. 

Matching of nuclear operons
The nuclear transport codelet supports the matching of the initial group completed schema with the operons is an addressable control structure which is used in biological cells to control access to other regions of the DNA. 
contained in the nuclear Workspace.  Matching has two aspects.  The group completed schema must be a subsequence of an operon in the nucleus.  The subgroup that is then deployed is selected saliently from the available choices
The deployment process
The subgroup operon that is selected for deployment is copied and transported to the original Workspace by tnsdepscout, nsdepevaluator & builder where upon group completing it will re-initiate the association with local and nuclear Workspace action codelets. 

The subgroup schematic string that is selected for deployment is created with a limited span of existence.  Once it has group completed the work space objects may be reclaimed by the Coderack's destruction codelets (scout, evaluator, builder).  More significantly they may also be reclaimed if they have existed for what a destruction codelet judges to be too long a time.

Independence and equivalence amplifies the group completion process
As long as codelets are independent and equivalent they can be grabbed by an
This page discusses how the adaptive web framework (AWF) Smiley supports agent-based application's leverage of infrastucture amplification. 
A number of Smiley's amplification strategies are reviewed:
  • Locality
  • Enzyme like catalysis
  • Efficient routing through the Slipnet 
  • Independence and equivalence of transactional codelets 
  • Structurally enhanced state based amplification
The architecture of Smiley's grab amplification is discussed.  This includes:
  • Sub program grab amplification
  • Deployment infrastructure cooperation in grab amplification
  • Generalizing the grab architecture 
The mechanisms Smiley uses to limit the impact of amplification, such as crowding out and processor starvation, on other codelets operations are discussed. 
The codelets and infrastructure are included. 
infrastructure amplifier
(
This page reviews the catalytic impact of infrastructure on the expression of phenotypic effects by an agent.  The infrastructure reduces the cost the agent must pay to perform the selected action.  The catalysis is enhanced by positive returns. 
1
) and deployed repeatedly at a much reduced cost, relative to a full deployment. 

Delaying the selection of a groupcompleted codelet
The selection of a codelet by the Coderack may be delayed by the codelet being queued to a wait queue rather than the Coderack's active queue.  Selcodelet ensures that the codelet will eventually run.  The delay ensures that
This page discusses how Smiley provides deployment guarantees to its agent-based applications. 
Smiley's transaction services are reviewed. 
The complex interactions of codelets participating in a deployment cascade are discussed including: 
  • The implementation of schematic switches. 
  • The cooperative use of goal suppression.  
  • Evaluator codelets promotion of other siblings. 
Challenges of initiation of a cascade are discussed. 
Tools to associate transaction protection to an operon deployed codelet are described. 
Special support for sub-program codelets is described.  Completion of transactional sub-programs presents special challenges. 
Priority and synchronization support includes:
  • Delaying the operaton of the cascade sponsor. 
  • Delaying the notgcompleting cascade participant. 
  • Waiting for completion of parallel operations with the wait and relay service.  
The need to sustain resource pools is reviewed. 
The use of signals to coordinate siblings is described. 
The structural binding operon for the wait and relay service is included. 
The codelets and supporting functions are included.
cascade sponsoring codelets
that have just notgcompleted are not crowding out their offspring.

#<!-- start tag tfw -->


AWF test art4
The art4 test statement shown following this description includes multiple parts:
The test framework should respond to this statement, decoding it's
This page introduces the many ways a complex modeling and coordination activity can be implemented using agent-based programming (see presentation). 

It describes how salient schematic alternative strings can be used to model a situation and make a decision under evolved control. 

It also introduces bottom up model codelets and complex techniques that are covered more fully on other pages. 

Constraints on the modeling process including requirements for timeliness, parallelism, synchronization and emergence of new models are discussed. 

Once a schematic sequence is selected by a group codelet or any additional type of modeling codelet the codelet will initiate an iterative cycle of detect, signal, match, deploy.  This allows the actions of a schematically selected sequence of model codelets to aggregate into a focused agent. 

A series of example signals sent by complex modeling codelets along with their associated operons and subgroup schematic sequences are included.  The signals are sent by the:
  • merge streams spdca builder - The initiator of merge streams's pdca cycle (see schematic pdca).
  • merge streams dcycip builder - The initiator of the planning phase of the merge streams's pdca cycle. 
  • merge streams cassert builder - The initiator of the mergestreams's case resolved assert true conditional cascade.  It is a structurally enhanced codelet which activates at the end of the 'do' phase and signals the nucleus. 
  • merge streams indsloc builder - The start locator codelet finds the application schemata's start operon
  • merge streams shsloc builder - A start locator codelet that finds an alternative start operon in the application schematic operon
  • merge streams rchpair builder - A receptor that detects and relays an application signal
  • pdca ecycdop builder - A cyclin simulation codelet which signals entry to the 'do' phase of the pdca. 
  • pdca acycchp builder - A cyclin simulation codelet which signals entry to the 'check' phase of the pdca. 
  • pdca bcycacp builder - A cyclin simulation codelet which signals entry to the 'act' phase of the pdca. 
And the Slipnet configuration which activates the schematic subgroup sequence <mergestreams> <for> <case> <resolved> <assert> <true> is included. 
parts
and then if it conforms to the
This page looks at how Smiley processes the statement, such as a test request, to ensure that the statement contains all required parts. 
Smiley does this through the operation of a statement codelet which indirectly sponsors the modeling of the whole statement. 
The modeling itself is performed by model codelets. 
The group models' Slipnet associations are included. 
The codelets and supporting functions are included. 
expected statement structure
,
This page looks at Smiley's statement codelet. 
What the codelet's goals are. 
The three aspects of its operations are described. 
The indirect nature of its support for the applications programs and Shewhart cycles are illustrated. 
It describes how the application codelets are inhibited from action until the Statement codelet concludes the application's assertion or implementation statement is viable.  An application assertion statement is described and the schematic string included. 
The statement codelet Perl and its support infrastructure are included. 
operating the statement
and thus initiating the test application executing first a
This page discusses how Smiley can support the start of the development phase of an agent-based application. 
Startup is an artificial operation not found in living systems.  But Smiley must do it and so we discuss an example of starting the development phase. 
With the Smiley infrastructure and the application integrated the application's development phase is reviewed.
The association of structural Workspaces for state representation is discussed. 
The aggregation of schematic associations of codelets defines a development agent.  At the application level it processes the application's schematic strings. 
The schematic nature of the data processed by the test application suggests the use of an indirect integration framework.  This supports the binding of codelets to the schematic data and detecting and responding to the control operons. 
An application polymerase complex emerges. 
The codelets and supporting functions are included. 
development codelet cascade
and then a
Walter Shewhart's iterative development process is found in many complex adaptive systems (CAS).  The mechanism is reviewed and its value in coping with random events is explained. 
Shewhart cycle
This page describes the specialized codelets that provide life-cycle and checkpoint capabilities for Smiley applications. 
The codelets implement a Shewhart cycle. 
The structural schematic nature of the cycle is described. 
Transcription factor codelets operate the phase change controls. 
How inhibitory agents are integrated into the cycle is described. 
An application agent with management and operational roles emerges. 
The codelets and supporting functions are included. 
managed
analysis of the direct and indirect details of the
This page discusses how a Smiley based application the event processor test program's operational phase is structured. 
The goals of the event processor test application are described. 
The implementation strategy is outlined. 
Synchronization of Smiley setup completion and operation phase initiation is discussed. 
The association of structural Workspaces for state representation is discussed. 
An application specific codelet merge streams assert responds to the nature of the assertion.  It does not have an emergent structure.  Instead it reflects software engineering practice.  It includes:
  • Merge stream case specific
    • Modeling with sub-programs
    • Resolving of case
  • Non case assertion
The operation is setup, inhibited, initiated, and managed by iterative phase check-pointing provided by Smiley codelets. 
Schematic synchronization of parallel codelet cascades is performed structurally. 
The assert merge operon cascade is included. 
The Slipnet concept network for merge streams is included. 
The codelets and supporting functions are included. 
assertion


 


<assert> <process> <rhlmsge> <merge> <streams> <file> </rhlmsge> <subject>
<rhlmsge> <merge> <file> <name> <equals> istrings/awfprogi[16].html</rhlmsge>
<rhlmsge> <ivariable> <name> <equals> <rhlwpbanner> "images/hill.gif"</rhlwpbanner> </rhlmsge> </subject> <verb>
<rhlmsge> <replaces> <subject> <resolved> <resource> <in> <target> <file> <stream> </rhlmsge> </verb> <object>
<rhlmsge> <source> <file> <stream> </rhlmsge>
<rhlmsge> <ivariable> <name> <equals> <rhlwpbannertp> </rhlmsge> </object>
<equals> <truthassertion> true</truthassertion> <development>
<rhlmsge> <develop> <lists> </rhlmsge> </development> <assume>
<rhlmsge> <referenced> <streams> <specified> <in> <merge> <stream> </rhlmsge> <and> <rhlmsge> <case> <selector> <is> li</rhlmsge> </assume> </assert> <comment> <br>


#<!-- end tag tfw -->

Functions

#
sub gcompleted {
    my($gsoid, $transmgrid)=@_;
    my ($found, $linki, $endloop, $agsoid, $foundgs, $foundge, $gs, $ge, $sponsor, $ngcsponsor, $negcsponsor);

    if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
      print ("gcompleted gs id $gsoid ");
      if (defined ($transmgrid)) {
        print ("transmgrid $transmgrid ");
        };#if
      };
# look for a group start or end descriptors given a specific group sponsor wso
# updated for merged workspaces
    $found = '';
    $foundgs = '';
    $foundge = '';
    $agsoid = awsoadr ($gsoid);

    if (
    (($sponsor =
      $Awfif::wsol-> {l}[$agsoid][ $Awfif::memes-> {wsogcsponsor}] #*** submacrok ***#
      ) != 0)
    && (($ngcsponsor = $sponsor) != 0)#note if the wsogcsponsor is set
    && ( (
      $Awfif::wsol-> {l}[awsoadr ($sponsor)][ $Awfif::memes-> {wsosubpid}] #*** submacrok ***#
      < 0) #wsosubpid is undefined if 0, it is not a subpid if it is negative and it is just one of a range of subpids present if positive
      or (!defined ($transmgrid))
      or ($transmgrid == 0)
      or (gettmgrdesc (
        awsoadr (trwsoadr ($sponsor,-1)),
        $Awfif::memes-> {snnh} {rtran},
        $transmgrid,
        $Awfif::memes-> {snnh} {groupstart}) ) )
    ){

      $found = 't';
      }
    else {
# if this is schemata is for subprograms then search the transmgr structure

      my ($atelhwso);
      if ($sponsor == 0) {#since sponsor was not set see if gsoid works as last gasp

        $sponsor = $gsoid;
        }; #if
      if ( ($Awfif::wsol-> {l} [($atelhwso = awsoadr ( trwsoadr($sponsor,-1)))] [2] != 0)
      && ( (findtdesc ($Awfif::wsol-> {l} [ ($atelhwso)] [2], $Awfif::memes-> {snnh} {pindequiv})) != 0 )
      ){
# now search for any groupstart and groupend descriptors - if find return true

        $found = gettmgrdesc (
          $atelhwso,
          $Awfif::memes-> {snnh} {rtran},
          $transmgrid,
          $Awfif::memes-> {snnh} {groupstart});
        }#if
      else {
# if this schemata is not for subprograms then check the deployed descriptors
        $linki = $Awfif::wsol-> {l} [$agsoid][2];

# all objects should have at least one descriptor - but ....
        if ($linki != 0) {# at least one descriptor

          $endloop = "";

          while (!($endloop) && ($linki != 0)) {

# if a group has completed reduce the salience of the group
            if (($Awfif::memes-> {snnh} {groupstart} == $Awfif::workspace-> {l} [$linki][4]) # in a key relation
            or ($Awfif::memes-> {snnh} {groupend} == $Awfif::workspace-> {l} [$linki][4])) {

              my ($i);
              $found = 't';
              if ((defined ($Awfif::wsol-> {l} [$agsoid] [ $Awfif::memes-> {wsogstart} ]))
              && ($Awfif::wsol-> {l} [$agsoid] [ $Awfif::memes-> {wsogstart} ] != 0)
              && ($Awfif::wsol-> {l} [$agsoid] [ $Awfif::memes-> {wsogstart} ] != $gsoid)
              ){

                &break ();
                };#if

              if (($ngcsponsor != 0) && ($ngcsponsor != $gsoid)) {&break ()};
              $Awfif::wsol-> {l}[$agsoid][ $Awfif::memes-> {wsogcsponsor}] = $gsoid;#*** submacrok ***#
              $Awfif::wsol-> {l}[$agsoid][ $Awfif::memes-> {wsogcsponsored}] = $gsoid;#*** submacrok ***#
              if (($Awfif::memes-> {snnh} {groupstart} == $Awfif::workspace-> {l} [$linki][4])) {

                $foundgs = 't';
                $gs = $Awfif::workspace-> {l} [$linki][2] - $Awfif::memes-> {snnh} {wsi};
                }
              elsif (($Awfif::memes-> {snnh} {groupend} == $Awfif::workspace-> {l} [$linki][4])) {

                $foundge = 't';
                $ge = $Awfif::workspace-> {l} [$linki][2] - $Awfif::memes-> {snnh} {wsi};
                };
              if (($foundgs) && ($foundge)) {

                $endloop = 'T';
                for ($i = $gs; $i != $ge; $i = trwsoadr ($i,1)) {# will only work for successor based structures

                  my ($nigcsponsor);
                  if ((defined ($Awfif::wsol-> {l} [awsoadr ($i)] [ $Awfif::memes-> {wsogstart} ]))
                  && ($Awfif::wsol-> {l} [awsoadr ($i)] [ $Awfif::memes-> {wsogstart} ] != 0)
                  && ($Awfif::wsol-> {l} [awsoadr ($i)] [ $Awfif::memes-> {wsogstart} ] != $gsoid)
                  ){

                    &break ();
                    };#if
                  $nigcsponsor =
                    $Awfif::wsol-> {l}[awsoadr ($i)][ $Awfif::memes-> {wsogcsponsor}]; #*** submacrok ***#

                  if (($nigcsponsor != 0) && ($nigcsponsor != $gsoid)) {&break ()};
                  $Awfif::wsol-> {l}[ awsoadr ($i)][ $Awfif::memes-> {wsogcsponsor}] = $gsoid; #*** submacrok ***#
                  $Awfif::wsol-> {l}[ awsoadr ($i)][ $Awfif::memes-> {wsogcsponsored}] = $gsoid; #*** submacrok ***#
                  };#for

                if ((defined ($Awfif::wsol-> {l} [awsoadr ($ge)] [ $Awfif::memes-> {wsogstart} ]))
                && ($Awfif::wsol-> {l} [awsoadr ($ge)] [ $Awfif::memes-> {wsogstart} ] != 0)
                && ($Awfif::wsol-> {l} [awsoadr ($ge)] [ $Awfif::memes-> {wsogstart} ] != $gsoid)
                ){

                  &break ();
                  };#if
                $negcsponsor =
                  $Awfif::wsol-> {l}[awsoadr ($ge)][ $Awfif::memes-> {wsogcsponsor}]; #*** submacrok ***#

                if (($negcsponsor != 0) && ($negcsponsor != $gsoid)) {&break ()};
                $Awfif::wsol-> {l}[ awsoadr ($ge)][ $Awfif::memes-> {wsogcsponsor}] = $gsoid; #*** submacrok ***#
                $Awfif::wsol-> {l}[ awsoadr ($ge)][ $Awfif::memes-> {wsogcsponsored}] = $gsoid; #*** submacrok ***#
                };#if
              }; # if

            $linki = $Awfif::workspace-> {l} [$linki][0];
            }; # while
          };# if
        };#else
      };# else

    if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
      print ("gcompletedx ret ($found)\n");
      };

    return ($found)
    }# gcompleted
#
#<!-- start tag sia -->
#<!-- start tag scc -->
#
sub gclab {
    my ($myli, $as, $ae, $ael, $sponsor) = @_;
    my ($i, $i2, $label, $ltype, $aer);
# inversion of labinv1 gc code
#
# checked for merged workspaces

    if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
      print ("gclab myli $myli as $as ae $ae ");
      if ($myli > 0) {
        &itcpoutput ($myli);
        };
      };

    $label = '';
    $ltype = '';
    $i2 = 0;
    $aer = '';
#
# gclabnsu1

    $i = trwsoadr ($as, 1);
    while ((($ael && !$aer) or (!$ael && ($i != $ae))) && ( awsoadr ($i) != 0)) {
      if ($ael && ($i == $ae)) {
        $aer = 't';
        };
# sponsor is now stable can mark its position in group members wso

      if ($sponsor ne '') {# if use defined here no work gets done???
        my ($ngcsponsor);
        $ngcsponsor =
          $Awfif::wsol-> {l}[awsoadr ($i)][ $Awfif::memes-> {wsogcsponsor}]; #*** submacrok ***#

        if (($ngcsponsor != 0) && ($ngcsponsor != $sponsor)) {&break ()};
        $Awfif::wsol-> {l}[awsoadr ($i)][ $Awfif::memes-> {wsogcsponsor}] = $sponsor;#*** submacrok ***#
        $Awfif::wsol-> {l}[awsoadr ($i)][ $Awfif::memes-> {wsogcsponsored}] = $sponsor;#*** submacrok ***#
        };#update sponsor if specified
#
      $i = trwsoadr ($i, 1);
      };#while

    if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
      print ("gclabx\n");
      };
    }# gclab
#
#<!-- end tag scc -->
#<!-- end tag sia -->
#
sub groupbuilder1 {
    my ($myli, $kwp, $kwpr, $sactset) = @_;#codelet launch architecture requires the ignored parameters for its general interface
    my ($grouppresent, $from, $to, $target, $sponsor, $gtype, $model, $as, $ae,
      $wsoindisle, $wsoindisue, $hle, $hue, $dontactivate, $dontdeploy, $iedesc, $jhlsi, $transmgrid, $bcindex, $patelhwso,
      $signal, $schema, $swstype,#dummies for inverted proc get context
      $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdat, $gbiest, $gbieet, $gbost, $gboet,
      $grkwp, $grkwpr, $cdn, $cdnx);
#
# create a group if the situation allows - and action appropriate schematic phenomena

    if (getcontext ($myli, \$sponsor, \$signal, \$schema, \$swstype, \$grkwp, \$grkwpr, 't', \$cdn, \$cdnx, 3)) {#proceed
    if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
      if (greaterwso ($Awfif::codelet-> {l}[$myli][7], $Awfif::codelet-> {l}[$myli][4])) {
        &itwsoutput ( trwsoadr ($Awfif::codelet-> {l}[$myli][7], 1), $Awfif::codelet-> {l}[$myli][4]);
        }
      else {
        &itwsoutput ( trwsoadr ($Awfif::codelet-> {l}[$myli][4], 1), $Awfif::codelet-> {l}[$myli][7]);
        };
      };
    if ($Awfif::memes-> {trace} == $Awfif::memes-> {tracehrtime}) {
      use Time::HiRes 'time';
      ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdat) = localtime(time);
      };
    if (($model == $Awfif::memes-> {snnh} {indequiv})
    && (gcompleted ($from, $Awfif::codelet-> {l} [$myli] [37]))
    ) { # no point to do anything
      }
    else {
# groupbuilderwgcu1
# use the wontgroup cache

    $Awfif::wontgroupc-> {caller} = $Awfif::memes-> {snnh}{stop};
    if ( (defined ($Awfif::memes-> {grpbsp21break}))
    && ($Awfif::memes-> {grpbsp21break} == $Awfif::codelet-> {l} [$myli] [21])
    ){

      &break();
      };#if
    $hue = '';
    $grouppresent = "";
    $dontactivate = '';
    $dontdeploy = '';
    &csetuplog ($myli, 'gb', $Awfif::codelet-> {l} [$myli][4], $Awfif::codelet-> {l} [$myli][7]);
    &updatelog ($myli,'gb',1, $Awfif::codelet-> {l} [$myli][13]);
# it will fight any incompatible structures. And
# if it wins, it will
# destroy all incompatible structures,
# build the new group descriptor and

    $from = $Awfif::codelet-> {l} [$myli][4];
    $to = $Awfif::codelet-> {l} [$myli][7];
    $model = $Awfif::codelet-> {l} [$myli][16];
# update codelets sponsor info
    if ($model == $Awfif::memes->{groupsponsor}) { # this should be got from the slipnet

      $gtype = bndsgroup ($Awfif::workspace-> {l} [$Awfif::codelet-> {l}[$myli][5]][3]);
      }# group sponsor
    elsif (($model == $Awfif::memes-> {snnh} {indequiv})
    && (!gcompleted ($from, $Awfif::codelet-> {l} [$myli] [37]))
    ) { # this should be got from the slipnet

      $gtype = bndsgroup ($Awfif::workspace-> {l} [$Awfif::codelet-> {l}[$myli][5]][3]);
      }# ie telomere
    else {

      my ($sgdi, $sbind);
      $gtype = $Awfif::workspace-> {l} [$Awfif::codelet-> {l}[$myli][5]][3];
      &fsgrpd ($myli, $sponsor, \$sgdi, $Awfif::memes-> {snnh} {groupcategory}, $gtype, \$sbind );# has the sponsor moved?
      if ($sponsor != ($Awfif::workspace-> {l}[$sgdi][2] - $Awfif::memes-> {snnh}{wsi})) {#migrate the sponsor
        $sponsor = ($Awfif::workspace-> {l}[$sgdi][2] - $Awfif::memes-> {snnh}{wsi});
        $Awfif::codelet-> {l}[$myli][17] = $sponsor;
        };
      };
# groupbuilderiecu1
# see if can use indequiv cache

    if ( ( ($iedesc = findtdesc ($Awfif::wsol-> {l} [ awsoadr ($sponsor)] [2], $Awfif::memes-> {snnh} {indequiv})) != 0 )
    && ( ($jhlsi = ($Awfif::workspace-> {l} [$iedesc] [2] - $Awfif::memes-> {snnh} {wsi})) != 0 )
    && ($Awfif::jhls-> {l} [$jhlsi] [15][1])
    ){
# groupbuildersgju3
      my ($miedesc);
      $miedesc = findtdesc ($Awfif::wsol-> {l} [ awsoadr (trwsoadr ($sponsor, -1))] [2], $Awfif::memes-> {snnh} {mindequiv});
# groupbuildertrau3
# check for transid

      $gbiest = time ();
      $Awfif::memes-> {gbiec}++;# groupbuilder ie entry counter
      my ($i, $sigcount, $a17, $ai, $transid, $atelhwso, $subpid, $ltransmgrid);
      my (@lomatchs, @lola, @loconcs, @lostrts, @loends, @logb, @loge);

      if ($Awfif::codelet-> {l} [$myli] [35] > 0) {

        $transid = $Awfif::codelet-> {l} [$myli] [35];
        };#if
# groupbuildertramgru1
# see if get a transid and subpid from the transmgr

      if ($Awfif::codelet-> {l} [$myli] [37] > 0) {

        $transmgrid = $Awfif::codelet-> {l} [$myli] [37];
        };#if
      if ($Awfif::codelet-> {l} [$myli] [36] > 0) {

        $subpid = $Awfif::codelet-> {l} [$myli] [36];
        };#if
      $atelhwso = awsoadr ( trwsoadr($sponsor,-1));
      if ((defined($atelhwso)) && (($bcindex = matchbreakthawso ($atelhwso, $subpid)) > 0)
      ){

        &break ();
        };#if
# initiate group complete action
      $Awfif::memes-> {fatp}++;
# send activation to all the groups descriptor's Slipnet nodes

      $as = $Awfif::jhls-> {l}[$jhlsi][16][0];
      $ae = $Awfif::jhls-> {l}[$jhlsi][16][1];
      $i = $as;
      while (($i != trwsoadr ($ae, 1)) && ( ($ai = awsoadr ($i)) != 0)) {
        &actobj ($i, ($Awfif::memes-> {strbool}[$Awfif::memes-> {streh} {bugroup}] | $Awfif::memes-> {strbool}[$Awfif::memes-> {streh} {tdgroup}] | $Awfif::memes-> {strbool}[$Awfif::memes-> {streh} {delta}]), ampdesc ($myli, $sponsor));
        &setusalcwsocache ($ai, undef(), (($Awfif::memes-> {strbool}[$Awfif::memes-> {streh} {bugroup}] | $Awfif::memes-> {strbool}[$Awfif::memes-> {streh} {tdgroup}]| $Awfif::memes-> {strbool}[$Awfif::memes-> {streh} {delta}])), undef());
        $i = trwsoadr ($i, 1);
        };#activate group's new object descriptors
      $hle = '';
      $hue = '';
# mark group as complete
# groupcgsicu1

      $a17 = awsoadr ($Awfif::codelet-> {l}[$myli][17]);#group sponsor
      $patelhwso = awsoadr (trwsoadr ($Awfif::codelet-> {l}[$myli][17],-1));
      if ((defined ($transmgrid)) && ($transmgrid != 0) && (defined ($subpid)) && ($subpid > 0)) {

        $ltransmgrid = $transmgrid;#should pass in undef unless the transmgr is associated with a subprogram
        };#if
      $Awfif::wsol-> {l} [$a17][2]
        = inccounter ( $gtype,
          ($Awfif::memes-> {snnh} {wsi} + trwsoadr ($as, 1)), #must point to start
          $Awfif::memes-> {snnh} {groupstart},
          $Awfif::wsol-> {l} [$a17][2],
          $a17,
          undef (),
          undef (),
          undef (),
          $ltransmgrid,
          $patelhwso,
          -1);#indicate if setting a transaction managed counter
# groupcgeicu1

      $Awfif::wsol-> {l} [$a17][2]
        = inccounter ( $gtype,
          ($Awfif::memes-> {snnh} {wsi} + trwsoadr ($ae, -1)), #must point to end
          $Awfif::memes-> {snnh} {groupend},
          $Awfif::wsol-> {l} [$a17][2],
          $a17,
          undef (),
          undef (),
          undef (),
          $ltransmgrid,
          $patelhwso,
          -1);#indicate if setting a transaction managed counter
# group completion invalidates group salience caches

      $i = trwsoadr ($as, 1);
      while (($i != $ae) && ( awsoadr ($i) != 0)) {
        &wsclinv (wsbasetype ($i), $Awfif::memes-> {currentwsbi}, ($Awfif::memes-> {strbool} [$Awfif::memes-> {streh} {tdgroup}] | $Awfif::memes-> {strbool} [$Awfif::memes-> {streh} {delta}]));
        &itwscachecor ('tdgroup', wsbasetype ($i), 'seq', 'groupbuilder1');
        $i = trwsoadr ($i, 1);
        };

      &setcache ('bugroup', 0, $Awfif::memes-> {currentwsbi}, undef(), $Awfif::memes-> {cvalid}, (1 + $Awfif::memes-> {backoffactive} {'tdgroup'})) ;
# group completion increases energy
      $Awfif::memes-> {fatp} = $Awfif::memes-> {fatp} + $Awfif::memes-> {gatp};
# dname is activated in case it can now be deployed in the group
      &actnodes ($Awfif::memes-> {snnh} {dname}, $Awfif::memes-> {groupatype}, ($Awfif::memes-> {strbool}[$Awfif::memes-> {streh} {bugroup}] | $Awfif::memes-> {strbool}[$Awfif::memes-> {streh} {tdgroup}] | $Awfif::memes-> {strbool}[$Awfif::memes-> {streh} {delta}]));
# apply the linking function of group completion
# groupbnsu1
      if (defined ($ltransmgrid)) {#indicate this is a subprogram

        $Awfif::wsol-> {l}[awsoadr ($sponsor)][ $Awfif::memes-> {wsosubpid}] = $subpid;#*** submacrok ***#
        }#if
      &gclab ($myli, $as, $ae, '', $sponsor);
      $sigcount = usebice ($Awfif::jhls-> {l} [$jhlsi] [16][2], \@lomatchs, \@lola, \@loconcs, \@lostrts, \@loends, \@logb, \@loge);
# if the groups labels result in a match with a signal then raise the signal
#

      if ($sigcount > 0) {
        my ($i2);
        for ($i = 0; $i < $sigcount; $i++) {
          if ($lomatchs[$i]) {#there is a link launch the action scout
# unless this is an operon
            if (($Awfif::jhls-> {l} [$lola[$i]][4] != $Awfif::memes-> {snnh}{operon}) && ($Awfif::jhls-> {l} [$lola[$i]][4] != $Awfif::memes-> {snnh}{stbinding}) && ($Awfif::jhls-> {l} [$lola[$i]][4] != $Awfif::memes-> {snnh}{subpstbinding})) {
              my ($asponsor, $counteri);
# groupbuildersubpu3

              if ($Awfif::memes-> {gcnfcsuse}) {&itcsuse ();};
              $Awfif::clp = ();
              $Awfif::clp-> {log} = $Awfif::codelet-> {l} [$myli][13];
              $Awfif::clp-> {urgency} = ($Awfif::codelet-> {l} [$myli][3] * $Awfif::memes-> {evlaunchm});
# see if can reflect the amplification in the urgency

              if ( ((defined ($Awfif::memes-> {gburgampbreak})) )
              && ($Awfif::memes-> {gburgampbreak})
              && (ampdesc ($myli, $sponsor) > 1)
              ){

                &break();
                };#if
              $Awfif::clp-> {urgency} = ($Awfif::clp-> {urgency} * ampdesc ($myli, $sponsor));
              if ($Awfif::codelet-> {l}[$myli][19] != 0) {
                $Awfif::clp-> {wsi} = $Awfif::codelet-> {l}[$myli][19];
                }#wsi set
              else {
                $Awfif::clp-> {wsi} = $Awfif::memes-> {currentwsbi};
                };
# groupbuildertfu1
# apply cascadesponsorship

              $Awfif::clp-> {action}-> {tfree} = cascadesponsor ($myli, $sponsor, $Awfif::memes-> {snnh}{getcassponsor});
              $Awfif::clp-> {strategy} = "tgoalscout";
# groupbuilderdsu2
# apply delayselect

              if ( (findcounter ($Awfif::wsol-> {l} [$a17][2], $Awfif::memes-> {snnh} {delayselect}, \$counteri))
              && ($Awfif::workspace-> {l} [$counteri] [9] > ($Awfif::memes-> {snnh} {wsi} + 0))
              ){

                $Awfif::clp-> {delayselect} = ($Awfif::workspace-> {l} [$counteri] [9] - $Awfif::memes-> {snnh} {wsi}) * $Awfif::memes-> {waitamp};
                &resetcounter ($Awfif::memes-> {snnh}{delayselect}, $a17);
                &maskcounter ($Awfif::memes-> {snnh}{delayselect}, $a17);
                };#if
              $Awfif::clp-> {action}-> {sponsor} = $sponsor;
              $Awfif::clp-> {action}-> {signal} = findsignal ($loconcs[$i]);
              $Awfif::clp-> {action}-> {schema} = $loconcs[$i];
              $Awfif::clp-> {action}-> {sws} = $Awfif::memes->{currentwsbi};
              $Awfif::clp-> {action}-> {wss} = $lostrts[$i];
              $Awfif::clp-> {action}-> {wsoname} = getwsoname ($lostrts[$i]);
              $Awfif::clp-> {action}-> {wse} = $loends[$i];
              $Awfif::clp-> {action}-> {jhlabeli} = $lola[$i];
              $Awfif::clp-> {action}-> {jhlabeloi} = gettjhlsoi (($asponsor = awsoadr($sponsor)), $Awfif::wsol-> {l}[$asponsor][ $Awfif::memes-> {wsogcjhlsi}]);#*** submacrok ***#
# groupbuildersgju1
              if ($miedesc > 0){

                my ($sgjhlsi);
                $sgjhlsi = ($Awfif::workspace-> {l} [$miedesc][2] - $Awfif::memes-> {snnh} {wsi});
                $Awfif::clp-> {action}-> {sgjhlsi} = $sgjhlsi;
                };#if
# groupbuildertrau4
              if (defined ($transid)) {

                $Awfif::clp-> {action}-> {transid} = $transid;
                };#if
# groupbuildersubpu4
              if (defined ($subpid)) {

                $Awfif::clp-> {action}-> {subpi} = $subpid;
                $Awfif::clp-> {urgency} *= $Awfif::memes-> {submult};
                };#if
              if (defined ($transmgrid)) {

                $Awfif::clp-> {action}-> {transmgrid} = $transmgrid;
                };#if
              &icdsubmitcodelet ($myli, \$Awfif::clp, $Awfif::jhls-> {l} [$lola[$i]] [10], $grkwp, $grkwpr, \@$sactset);
              if (($bcindex = matchbreakthawso (awsoadr( trwsoadr($sponsor, -1)), $subpid)) > 0) {

                &remarrent ($bcindex, \@{$Awfif::memes-> {breakthwso}});
                &remarrent ($bcindex, \@{$Awfif::memes-> {breakthsubp}});
                $Awfif::memes-> {breakcodelet} [ ++$Awfif::memes-> {breakcodelet} [0]] = $Awfif::memes-> {submitted};
                $Awfif::memes-> {breaksubp} [ ++$Awfif::memes-> {breaksubp} [0]] = $subpid;
                };#if
              &trackcodelet ($myli, $Awfif::memes-> {codeletdef}, $Awfif::memes-> {snnh} {group}, undef(), awsoadr( $sponsor), $Awfif::codelet-> {l} [$myli] [36]);
              &actnodes ( $Awfif::jhls-> {l} [$lola[$i2]][6], $Awfif::memes-> {openatype},($Awfif::memes-> {strbool}[$Awfif::memes-> {streh} {bugroup}] | $Awfif::memes-> {strbool}[$Awfif::memes-> {streh} {tdgroup}] | $Awfif::memes-> {strbool}[$Awfif::memes-> {streh} {delta}]));
              &invcaches ($Awfif::jhls-> {l} [$lola[$i2]][6], $Awfif::memes-> {strbool} [$Awfif::memes-> {streh} {'tdgroup'}]);
              }; #if its not an operon
            };#launch the action scout
          };#for
        };
# groupcompletemau2

      $gbieet = time ();
      $Awfif::memes-> {time} [$Awfif::memes-> {spctime}] [$Awfif::memes-> {ch}{$Awfif::codelet-> {l} [$myli] [2]}] [$Awfif::memes-> {gbiesum}] = $Awfif::memes-> {time} [$Awfif::memes-> {spctime}] [$Awfif::memes-> {ch}{$Awfif::codelet-> {l} [$myli] [2]}] [$Awfif::memes-> {gbiesum}] + $gbieet - $gbiest;
      }# use indequiv cache
    else {#proceed with groupbuilder
# groupbtimeu2

    $gbost = time ();
    $Awfif::memes-> {gboc}++;# groupbuilder other entry counter
# allocate target
    if (($Awfif::codelet-> {l} [$myli][16] == $Awfif::memes->{groupsponsor})
    or ($Awfif::codelet-> {l} [$myli][16] == $Awfif::memes-> {snnh} {indequiv})
    or ($Awfif::codelet-> {l} [$myli][16] < 0)
# this fix works for successor but probably not for pred or adj
# have to work out what really happens
    ) {#gs and add update ni

      $target = $from;
      }
    else {# member updates pi

      $target = $to;
      };
# also target the activation
    $as = $target;
    $ae = $target;
# first check whether the proposed group hasn't been built in the mean time.
# - check the descriptor list at ni to see if their is a descriptor
# for a group category of the required type and to the target
# may look odd but all group descriptors have the group sponsor in [2] which traces as pi in findbond
#

    $grouppresent = findbond ($Awfif::wsol-> {l} [ awsoadr ($target)] [2], $sponsor, $gtype, $Awfif::memes-> {snnh} {groupcategory});
    &updatelog ($myli,'gb',2, $grouppresent);
#
# groupbgcu1

    my ($astelhwso, $rtransmgrid, $stransmgrid, $ssubpid, $susetrans);

    if ($Awfif::codelet-> {l} [$myli] [37] > 0) {

      $rtransmgrid = $Awfif::codelet-> {l} [$myli] [37];
      };#if
    if ( ($Awfif::wsol-> {l} [($astelhwso = awsoadr ( trwsoadr($target,-1)))] [2] != 0)
    && ( (findtdesc ($Awfif::wsol-> {l} [ ($astelhwso)] [2], $Awfif::memes-> {snnh} {telomere})) != 0 )
    && ( (findtdesc ($Awfif::wsol-> {l} [ ($astelhwso)] [2], $Awfif::memes-> {snnh} {mindequiv})) != 0 )
    ){

      $susetrans = 0;
      $ssubpid = $Awfif::codelet-> {l} [$myli] [36];
      $stransmgrid = gettmgr ($myli, $astelhwso, $Awfif::memes-> {snnh} {stran}, \$susetrans, \$ssubpid);
      };#if
    if ((!($grouppresent)
      && (!gcompleted ($target, $stransmgrid)) #at this point still guessing where the atelhwso might be
      && (
        (!(wontgroup ($myli, $target, $gtype, \$wsoindisle, \$wsoindisue, \$hle, \$hue, $grkwp, $grkwpr, \@$sactset))
        or ((!($hue)) && (!$hle) && ($Awfif::memes-> {snw} [$Awfif::memes-> {currentwsbi}]-> {snnl} [wsbasetype ($target)] != 0))
      ))
      )
    or ((!gcompleted ($sponsor, $rtransmgrid))
    ) {

      my ($sgdi, $dgdi, $sbind, $i, $pr);
# If not,
      $pr = $Awfif::memes-> {currentwsbi};
      print ("gc from=$pr:$from, to=$to, ptarget=$target ");
      &updatelog ($myli,'gb',3, $target);
# if will be deploying into an adjoining group then change that groups descriptors to this sponsor
      if ((($target == $to)
      && (fsgrpd ($myli, $target, \$sgdi, $Awfif::memes-> {snnh} {groupcategory}, $gtype, \$sbind ))
      && (fsgrpd ($myli, $from, \$dgdi, $Awfif::memes-> {snnh} {bondcategory}, grpsbond ($Awfif::workspace-> {l} [$Awfif::codelet-> {l}[$myli][5]][3]), \$sbind )))

      or (($target == $from)
      && (fsgrpd ($myli, trwsoadr ($target,-1), \$sgdi, $Awfif::memes-> {snnh} {groupcategory}, $gtype, \$sbind ))
      && (fsgrpd ($myli, $target, \$dgdi, $Awfif::memes-> {snnh} {bondcategory}, grpsbond ($Awfif::workspace-> {l} [$Awfif::codelet-> {l}[$myli][5]][3]), \$sbind ))
      && (fsgrpd ($myli, trwsoadr ($target,-1), \$dgdi, $Awfif::memes-> {snnh} {bondcategory}, grpsbond ($Awfif::workspace-> {l} [$Awfif::codelet-> {l}[$myli][5]][3]), \$sbind )))
        ) {# convert the sponsors to match this one

        &updatelog ($myli,'gb',4, $target);
        if (greatergwso ($target, $from)) {#look ascending
          $as = $target;
          do {

            $ae = $target;
            $Awfif::workspace->{l}[$sgdi][2] = ($Awfif::memes-> {snnh} {wsi} + $Awfif::codelet-> {l}[$myli][17]);
            $target = trwsoadr ($target,1);
            }

          while ((fsgrpd ($myli, $target, \$sgdi, $Awfif::memes-> {snnh} {groupcategory}, $gtype, \$sbind ))
          && (fsgrpd ($myli, trwsoadr ($target,-1), \$dgdi, $Awfif::memes-> {snnh} {bondcategory}, grpsbond ($Awfif::workspace-> {l} [$Awfif::codelet-> {l}[$myli][5]][3]), \$sbind ))
          &&(!(wontgroup ($myli, $target, $gtype, \$wsoindisle, \$wsoindisue, \$hle, \$hue, $grkwp, $grkwpr, \@$sactset)) or (!($hue))));

          if ($hue) {
            $dontdeploy = 't';
# groupbuilderwgcu2
            if (($Awfif::wontgroupc-> {caller} == $Awfif::memes-> {snnh}{stop}) or ($Awfif::wontgroupc-> {caller} == 0)) {
              $Awfif::wontgroupc-> {caller} = $Awfif::memes-> {snnh}{start};
              };
            };
          if (((fsgrpd ($myli, $target, \$sgdi, $Awfif::memes-> {snnh} {groupcategory}, $gtype, \$sbind )) && ($hue))
          && (fsgrpd ($myli, trwsoadr ($target,-1), \$dgdi, $Awfif::memes-> {snnh} {bondcategory}, grpsbond ($Awfif::workspace-> {l} [$Awfif::codelet-> {l}[$myli][5]][3]), \$sbind ))){

            $ae = $target;
            $Awfif::workspace->{l}[$sgdi][2] = ($Awfif::memes-> {snnh} {wsi} + $Awfif::codelet-> {l}[$myli][17]);
            $target = trwsoadr ($target,1);
            }
          elsif ((!fsgrpd ($myli, $target, \$sgdi, $Awfif::memes-> {snnh} {groupcategory}, $gtype, \$sbind )) #want to add a group so make sure target pointing correctly when -- aplied

            && (fsgrpd ($myli, trwsoadr ($target,-1), \$dgdi, $Awfif::memes-> {snnh} {bondcategory}, grpsbond ($Awfif::workspace-> {l} [$Awfif::codelet-> {l}[$myli][5]][3]), \$sbind ))) {
            $target = trwsoadr ($target,1);
            }
          elsif ((!fsgrpd ($myli, $target, \$sgdi, $Awfif::memes-> {snnh} {groupcategory}, $gtype, \$sbind )) #this should have been stopped in the ge but .... lets ensure we don't deploy

            && (!fsgrpd ($myli, trwsoadr ($target,-1), \$dgdi, $Awfif::memes-> {snnh} {bondcategory}, grpsbond ($Awfif::workspace-> {l} [$Awfif::codelet-> {l}[$myli][5]][3]), \$sbind ))) {
            $dontdeploy = 't';
# groupbuilderwgcu3
            if (($Awfif::wontgroupc-> {caller} == $Awfif::memes-> {snnh}{stop}) or ($Awfif::wontgroupc-> {caller} == 0)) {
              $Awfif::wontgroupc-> {caller} = $Awfif::memes-> {snnh}{start};
              };
            };

          $target = trwsoadr ($target,-1);
          }
        else {# potentially both ways
          $ae = $target;
          $as = trwsoadr ($target,-1);

          if (
            (fsgrpd ($myli, trwsoadr ($target,1), \$sgdi, $Awfif::memes-> {snnh} {groupcategory}, $gtype, \$sbind ))
          && (wontgroup ($myli, trwsoadr ($target,1), $gtype, \$wsoindisle, \$wsoindisue, \$hle, \$hue, $grkwp, $grkwpr, \@$sactset))
          && ($hle)
            ) {

            $dontdeploy = 't';
# groupbuilderwgcu4
            if (($Awfif::wontgroupc-> {caller} == $Awfif::memes-> {snnh}{stop}) or ($Awfif::wontgroupc-> {caller} == 0)) {
              $Awfif::wontgroupc-> {caller} = $Awfif::memes-> {snnh}{start};
              };
            }
          elsif (
            !fsgrpd ($myli, $target, \$dgdi, $Awfif::memes-> {snnh} {bondcategory}, grpsbond ($Awfif::workspace-> {l} [$Awfif::codelet-> {l}[$myli][5]][3]), \$sbind )
            ) {# target does not have a bond

            $dontdeploy = 't';
# groupbuilderwgcu5
            if (($Awfif::wontgroupc-> {caller} == $Awfif::memes-> {snnh}{stop}) or ($Awfif::wontgroupc-> {caller} == 0)) {
              $Awfif::wontgroupc-> {caller} = $Awfif::memes-> {snnh}{start};
              };
            }
          elsif (
            (fsgrpd ($myli, $target, \$sgdi, $Awfif::memes-> {snnh} {groupcategory}, $gtype, \$sbind )) #if a group has appeared then don't want another one
            ) {# ni has been filled in so try and find a new target at the edge of the group
            do {

              $Awfif::workspace->{l}[$sgdi][2] = ($Awfif::memes-> {snnh} {wsi} + $Awfif::codelet-> {l}[$myli][17]);
              $as = trwsoadr ($as,-1);
              }
            while ( (fsgrpd ($myli, $as, \$sgdi, $Awfif::memes-> {snnh} {groupcategory}, $gtype, \$sbind ))
            && (fsgrpd ($myli, $as, \$dgdi, $Awfif::memes-> {snnh} {bondcategory}, grpsbond ($Awfif::workspace-> {l} [$Awfif::codelet-> {l}[$myli][5]][3]), \$sbind ))
            && (!(wontgroup ($myli, $as, $gtype, \$wsoindisle, \$wsoindisue, \$hle, \$hue, $grkwp, $grkwpr, \@$sactset)) or (!($hle))) );

            if (((fsgrpd ($myli, $as, \$sgdi, $Awfif::memes-> {snnh} {groupcategory}, $gtype, \$sbind )) && ($hle))
            && (fsgrpd ($myli, $as, \$dgdi, $Awfif::memes-> {snnh} {bondcategory}, grpsbond ($Awfif::workspace-> {l} [$Awfif::codelet-> {l}[$myli][5]][3]), \$sbind ))) {

              $as = trwsoadr ($as,-1);
              $Awfif::workspace->{l}[$sgdi][2] = ($Awfif::memes-> {snnh} {wsi} + $Awfif::codelet-> {l}[$myli][17]);
              };

            $as = trwsoadr ($as, 1);
            $ae = trwsoadr ($target, 1);
            $target = $as;
            if ( (
              (fsgrpd ($myli, trwsoadr ($target, 1), \$sgdi, $Awfif::memes-> {snnh} {groupcategory}, $gtype, \$sbind ))
            && (wontgroup ($myli, trwsoadr ($target, 1), $gtype, \$wsoindisle, \$wsoindisue, \$hle, \$hue, $grkwp, $grkwpr, \@$sactset))
            && ($hle)
            )
            or (
              (fsgrpd ($myli, $target, \$sgdi, $Awfif::memes-> {snnh} {groupcategory}, $gtype, \$sbind )) #if a group has appeared then don't want another one
              )
              ) {
              $dontdeploy = 't';
# groupbuilderwgcu6
              if (($Awfif::wontgroupc-> {caller} == $Awfif::memes-> {snnh}{stop}) or ($Awfif::wontgroupc-> {caller} == 0)) {
                $Awfif::wontgroupc-> {caller} = $Awfif::memes-> {snnh}{start};
                };
              };
            fsgrpd ($myli, $ae, \$sgdi, $Awfif::memes-> {snnh} {groupcategory}, $gtype, \$sbind );
            do {

              $Awfif::workspace->{l}[$sgdi][2] = ($Awfif::memes-> {snnh} {wsi} + $Awfif::codelet-> {l}[$myli][17]);
              $ae = trwsoadr ($ae, 1);
              }
            while ((fsgrpd ($myli, $ae, \$sgdi, $Awfif::memes-> {snnh} {groupcategory}, $gtype, \$sbind ))
            && (fsgrpd ($myli, trwsoadr ($ae, -1), \$dgdi, $Awfif::memes-> {snnh} {bondcategory}, grpsbond ($Awfif::workspace-> {l} [$Awfif::codelet-> {l}[$myli][5]][3]), \$sbind ))
            &&(!(wontgroup ($myli, $ae, $gtype, \$wsoindisle, \$wsoindisue, \$hle, \$hue, $grkwp, $grkwpr, \@$sactset)) or (!($hue))));

            if (((fsgrpd ($myli, $ae, \$sgdi, $Awfif::memes-> {snnh} {groupcategory}, $gtype, \$sbind )) && ($hue))
            && (fsgrpd ($myli, trwsoadr ($ae, -1), \$dgdi, $Awfif::memes-> {snnh} {bondcategory}, grpsbond ($Awfif::workspace-> {l} [$Awfif::codelet-> {l}[$myli][5]][3]), \$sbind ))){

              $Awfif::workspace->{l}[$sgdi][2] = ($Awfif::memes-> {snnh} {wsi} + $Awfif::codelet-> {l}[$myli][17]);
              $ae++;
              };

            $ae = trwsoadr ($ae, -1);
            print ("5.4.3 target=$target\n");
            }
          else {
            do {

              $Awfif::workspace->{l}[$sgdi][2] = ($Awfif::memes-> {snnh} {wsi} + $Awfif::codelet-> {l}[$myli][17]);
              $as--;
              }
            while ( (fsgrpd ($myli, $as, \$sgdi, $Awfif::memes-> {snnh} {groupcategory}, $gtype, \$sbind ))
            && (fsgrpd ($myli, $as, \$dgdi, $Awfif::memes-> {snnh} {bondcategory}, grpsbond ($Awfif::workspace-> {l} [$Awfif::codelet-> {l}[$myli][5]][3]), \$sbind ))
            && (!(wontgroup ($myli, $as, $gtype, \$wsoindisle, \$wsoindisue, \$hle, \$hue, $grkwp, $grkwpr, \@$sactset)) or (!($hle))) );

            if (((fsgrpd ($myli, $as, \$sgdi, $Awfif::memes-> {snnh} {groupcategory}, $gtype, \$sbind )) && ($hle))
            && (fsgrpd ($myli, $as, \$dgdi, $Awfif::memes-> {snnh} {bondcategory}, grpsbond ($Awfif::workspace-> {l} [$Awfif::codelet-> {l}[$myli][5]][3]), \$sbind ))) {

              $as = trwsoadr ($as,-1);
              $Awfif::workspace->{l}[$sgdi][2] = ($Awfif::memes-> {snnh} {wsi} + $Awfif::codelet-> {l}[$myli][17]);
              };

            $as = trwsoadr ($as, 1);
            $ae = trwsoadr ($target, 1);
            fsgrpd ($myli, $ae, \$sgdi, $Awfif::memes-> {snnh} {groupcategory}, $gtype, \$sbind );
            do {

              $Awfif::workspace->{l}[$sgdi][2] = ($Awfif::memes-> {snnh} {wsi} + $Awfif::codelet-> {l}[$myli][17]);
              $ae++;
              }
            while ((fsgrpd ($myli, $ae, \$sgdi, $Awfif::memes-> {snnh} {groupcategory}, $gtype, \$sbind ))
            && (fsgrpd ($myli, $ae-1, \$dgdi, $Awfif::memes-> {snnh} {bondcategory}, grpsbond ($Awfif::workspace-> {l} [$Awfif::codelet-> {l}[$myli][5]][3]), \$sbind ))
            &&(!(wontgroup ($myli, $ae, $gtype, \$wsoindisle, \$wsoindisue, \$hle, \$hue, $grkwp, $grkwpr, \@$sactset)) or (!($hue))));

            if (((fsgrpd ($myli, $ae, \$sgdi, $Awfif::memes-> {snnh} {groupcategory}, $gtype, \$sbind )) && ($hue))
            && (fsgrpd ($myli, $ae-1, \$dgdi, $Awfif::memes-> {snnh} {bondcategory}, grpsbond ($Awfif::workspace-> {l} [$Awfif::codelet-> {l}[$myli][5]][3]), \$sbind ))){

              $Awfif::workspace->{l}[$sgdi][2] = ($Awfif::memes-> {snnh} {wsi} + $Awfif::codelet-> {l}[$myli][17]);
              $ae = trwsoadr ($ae, 1);
              };

            $ae = trwsoadr ($ae, -1);
            print ("8.4.3 target=$target\n");
            };
          };#ok to deploy upwards
        }#target is from
      elsif (($target == $to) && (wontgroup ($myli, $from, $gtype, \$wsoindisle, \$wsoindisue, \$hle, \$hue, $grkwp, $grkwpr, \@$sactset)&& ($wsoindisue) && ($hue))) {#do no deployment but later check if reached both ends

        print ("no target\n");
        $dontactivate = 't';
        $dontdeploy = 't';
        if (($Awfif::wontgroupc-> {caller} == $Awfif::memes-> {snnh}{stop}) or ($Awfif::wontgroupc-> {caller} == 0)) {
          $Awfif::wontgroupc-> {caller} = $Awfif::memes-> {snnh}{start};
          };
        &actnodes ($Awfif::memes->{snnh}{groupd}, $Awfif::memes-> {ntact},($Awfif::memes-> {strbool}[$Awfif::memes-> {streh} {bugroup}] | $Awfif::memes-> {strbool}[$Awfif::memes-> {streh} {tdgroup}] | $Awfif::memes-> {strbool}[$Awfif::memes-> {streh} {delta}]));
        if (($Awfif::memes-> {snw} [$Awfif::memes-> {currentwsbi}]-> {snna} {groupu} < $Awfif::memes-> {actth}) && ($Awfif::memes->{snw} [$Awfif::memes-> {currentwsbi}]-> {snna}{groupd} > $Awfif::memes-> {actth})) {
          &setinhib ($Awfif::memes-> {snnh} {groupd}, 0);#limit flip-flop
          $Awfif::memes-> {snw} [$Awfif::memes-> {currentwsbi}]-> {snnafm} {groupu} = $Awfif::memes-> {fatigue};
          &setinhib ($Awfif::memes-> {snnh} {groupu}, $Awfif::memes-> {fatigue});#limit flip-flop
          };
        }
      elsif (($target == $from) && (wontgroup ($myli, $to, $gtype, \$wsoindisle, \$wsoindisue, \$hle, \$hue, $grkwp, $grkwpr, \@$sactset)&& ($wsoindisle) && ($hle))) {#do no deployment but later check if reached both ends

        $dontactivate = 't';
        &actnodes ($Awfif::memes->{snnh}{groupu}, $Awfif::memes-> {ntact},($Awfif::memes-> {strbool}[$Awfif::memes-> {streh} {bugroup}] | $Awfif::memes-> {strbool}[$Awfif::memes-> {streh} {tdgroup}] | $Awfif::memes-> {strbool}[$Awfif::memes-> {streh} {delta}]));
        $dontdeploy = 't';
        $Awfif::wontgroupc-> {caller} = $Awfif::memes-> {snnh}{start};
        if (($Awfif::memes->{snw} [$Awfif::memes-> {currentwsbi}]-> {snna}{groupd} < $Awfif::memes-> {actth}) && ($Awfif::memes-> {snw} [$Awfif::memes-> {currentwsbi}]-> {snna} {groupu} > $Awfif::memes-> {actth})) {
          &setinhib ($Awfif::memes-> {snnh} {groupu}, 0);#limit flip-flop
          $Awfif::memes-> {snw} [$Awfif::memes-> {currentwsbi}]-> {snnafm} {groupd} = $Awfif::memes-> {fatigue};
          &setinhib ($Awfif::memes-> {snnh} {groupd}, $Awfif::memes-> {fatigue});#limit flip-flop
          };
        print ("no target\n");
        }
      elsif (($target == $from)
        && (fsgrpd ($myli, $from, \$sgdi, $Awfif::memes-> {snnh} {groupcategory}, $gtype, \$sbind ))
        ) {#do no deployment but later check if reached both ends

        $dontactivate = 't';
        $dontdeploy = 't';
        print ("no target\n");
        $Awfif::wontgroupc-> {caller} = $Awfif::memes-> {snnh}{start};
        }

      if (!($dontdeploy)) {
        my ($atarget);
        $atarget = awsoadr ($target);
        print ("9 target=$target\n");
        &setusalcwsocache ($atarget, undef(), (($Awfif::memes-> {strbool}[$Awfif::memes-> {streh} {bugroup}] | $Awfif::memes-> {strbool}[$Awfif::memes-> {streh} {tdgroup}])), undef());
        $Awfif::wsol-> {l} [ $atarget][2]
        = setupdesc ( $gtype,
            ($Awfif::memes-> {snnh} {wsi} + $Awfif::codelet-> {l}[$myli][17]), #must point to sponsor
            $Awfif::memes-> {snnh} {groupcategory},
            $Awfif::wsol-> {l} [$atarget][2],
            $atarget);
        &updatelog ($myli,'gb',7, $Awfif::wsol-> {l} [$atarget][2]);
        };

      &invcaches (wsbasetype ($target), ($Awfif::memes-> {strbool} [$Awfif::memes-> {streh} {'tdgroup'}] | $Awfif::memes-> {strbool} [$Awfif::memes-> {streh} {'delta'}] ));
      &invcaches (wsbasetype ($from), ($Awfif::memes-> {strbool} [$Awfif::memes-> {streh} {'tdgroup'}] | $Awfif::memes-> {strbool} [$Awfif::memes-> {streh} {'delta'}] ));
      &invcaches (wsbasetype ($to), ($Awfif::memes-> {strbool} [$Awfif::memes-> {streh} {'tdgroup'}] | $Awfif::memes-> {strbool} [$Awfif::memes-> {streh} {'delta'}] ));
      if (!($dontactivate)) {
        $Awfif::memes-> {fatp}++;
# send activation to all the groups descriptor's Slipnet nodes

        $i = $as;
        while (($i != trwsoadr ($ae, 1)) && ( awsoadr ($i) != 0)) {
          &actobj ($i, ($Awfif::memes-> {strbool}[$Awfif::memes-> {streh} {bugroup}] | $Awfif::memes-> {strbool}[$Awfif::memes-> {streh} {tdgroup}] | $Awfif::memes-> {strbool}[$Awfif::memes-> {streh} {delta}]), (ampdesc ($myli, $sponsor)));
          $i = trwsoadr ($i, 1);
          };#activate group's new object descriptors
        };

      $hle = '';
      $hue = '';
      $as = $Awfif::codelet-> {l}[$myli][17];
      $ae = $Awfif::codelet-> {l}[$myli][17];
      while ( (fsgrpd ($myli, $as, \$sgdi, $Awfif::memes-> {snnh} {groupcategory}, $gtype, \$sbind ))
      && (!(wontgroup ($myli, $as, $gtype, \$wsoindisle, \$wsoindisue, \$hle, \$hue, $grkwp, $grkwpr, \@$sactset)) or (!($hle))) ) {

        $as = trwsoadr ($as, -1);
        };
      if ($hle) {#as is expected to be beyond the group by 1
        $as = trwsoadr ($as, -1);
        }

      while ((fsgrpd ($myli, $ae, \$sgdi, $Awfif::memes-> {snnh} {groupcategory}, $gtype, \$sbind ))
      &&(!(wontgroup ($myli, $ae, $gtype, \$wsoindisle, \$wsoindisue, \$hle, \$hue, $grkwp, $grkwpr, \@$sactset)) or (!($hue)))) {
        $ae = trwsoadr ($ae, 1);
        };
      if ($hue) {#ae is expected to be beyond the group by 1
        $ae = trwsoadr ($ae, 1);
        }
# align all the sponsors

      $i = trwsoadr ($as, 1);
      while (($i != $ae) && ($i != 0 ) && ( awsoadr ($i) != 0)) {

        &fsgrpd ($myli, $i, \$sgdi, $Awfif::memes-> {snnh} {groupcategory}, $gtype, \$sbind );
        $Awfif::workspace->{l}[$sgdi][2] = ($Awfif::memes-> {snnh} {wsi} + $Awfif::codelet-> {l}[$myli][17]);
        $i = trwsoadr ($i, 1);
        }
# if the group is now complete - i.e.its ends can't extend any further
# groupcomplete

      if ((wontgroup ($myli, trwsoadr ($as, 1), $gtype, \$wsoindisle, \$wsoindisue, \$hle, \$hue, $grkwp, $grkwpr, \@$sactset) && ($wsoindisle) && ($hle))
      && (wontgroup ($myli, trwsoadr ($ae, -1), $gtype, \$wsoindisle, \$wsoindisue, \$hle, \$hue, $grkwp, $grkwpr, \@$sactset) && ($wsoindisue) && ($hue))) {
# initiate group complete action
        my ($i, $sigcount, @lomatchs, @lola, @loconcs, @lostrts, @loends, @logb, @loge, $a17, $use, $ai);
# see if to use delta or not
        if (findtdesc ($Awfif::wsol-> {l} [ awsoadr ($as) ][2], $Awfif::memes-> {snnh} {telomere}) != 0){#telomere so delta use

          $use = 1;
          }#if
        else {

          $use = 0;
          };
# mark group as complete

        $a17 = awsoadr ($Awfif::codelet-> {l}[$myli][17]);
        $patelhwso = awsoadr (trwsoadr ($Awfif::codelet-> {l}[$myli][17], -1));
        $Awfif::wsol-> {l} [$a17][2]
          = inccounter ( $gtype,
            ($Awfif::memes-> {snnh} {wsi} + trwsoadr ($as, 1)), #must point to start
            $Awfif::memes-> {snnh} {groupstart},
            $Awfif::wsol-> {l} [$a17][2],
            $a17);

        $Awfif::wsol-> {l} [$a17][2]
          = inccounter ( $gtype,
            ($Awfif::memes-> {snnh} {wsi} + trwsoadr ($ae, -1)), #must point to end
            $Awfif::memes-> {snnh} {groupend},
            $Awfif::wsol-> {l} [$a17][2],
            $a17);
# group completion invalidates group salience caches

        $i = trwsoadr ($as, 1);
        while (($i != $ae) && (($ai = awsoadr ($i)) != 0)) {
# gbwscup
          &setusalcwsocache ($ai, undef(), (($Awfif::memes-> {strbool}[$Awfif::memes-> {streh} {bugroup}] | $Awfif::memes-> {strbool}[$Awfif::memes-> {streh} {tdgroup}])), undef());
          &wsclinv (wsbasetype ($i), $Awfif::memes-> {currentwsbi},( $Awfif::memes-> {strbool}[$Awfif::memes-> {streh} {tdgroup}] | $Awfif::memes-> {strbool} [$Awfif::memes-> {streh} {'delta'}] ));
          &itwscachecor ('tdgroup', wsbasetype ($i), 'seq', 'groupbuilder1');
          $i = trwsoadr ($i, 1);
          };

        &setcache ('bugroup', 0, $Awfif::memes-> {currentwsbi}, undef(), $Awfif::memes-> {cvalid}, $use + $Awfif::memes-> {backoffactive} {'tdgroup'}) ;
# group completion increases energy
        $Awfif::memes-> {fatp} = $Awfif::memes-> {fatp} + $Awfif::memes-> {gatp};
# dname is activated in case it can now be deployed in the group
        &actnodes ($Awfif::memes-> {snnh} {dname}, $Awfif::memes-> {groupatype}, ($Awfif::memes-> {strbool}[$Awfif::memes-> {streh} {bugroup}] | $Awfif::memes-> {strbool}[$Awfif::memes-> {streh} {tdgroup}] | $Awfif::memes-> {strbool}[$Awfif::memes-> {streh} {delta}]));
# apply the linking function of group completion
        $sigcount = labinv1 ($myli, $as, $ae, '', $sponsor, \@lomatchs, \@lola, \@loconcs, \@lostrts, \@loends, \@logb, \@loge, 'notoporstbinding');
# if the groups labels result in a match with a signal then raise the signal
#

        if ($sigcount > 0) {
          my ($i2, $atti, $counteri);
          for ($i = 0; $i < $sigcount; $i++) {
            if ($lomatchs[$i]) {#there is a link launch the action scout
# unless this is an operon
              if (($Awfif::jhls-> {l} [$lola[$i]][4] != $Awfif::memes-> {snnh}{operon}) && ($Awfif::jhls-> {l} [$lola[$i]][4] != $Awfif::memes-> {snnh}{stbinding}) && ($Awfif::jhls-> {l} [$lola[$i]][4] != $Awfif::memes-> {snnh}{subpstbinding})) {
                my ($asponsor, $transid, $subpid, $teldesc);
# if this is the first group complete
                if ($Awfif::wsol-> {l}[($asponsor = awsoadr ($sponsor))][ $Awfif::memes-> {wsogcspjhlsi}] == 0) {#*** submacrok ***##this is a new group complete
                  my ($newjhlsi, $atelhwso);
# initialise the ws specific slipnet items

                  ©sn1 ($Awfif::memes-> {currentwsbi}, $Awfif::memes->{snnih}{$Awfif::jhls-> {l} [$lola[$i]] [6]});
# add a jhlabel for this workspace group
# groupbuilderiecu5

                  $Awfif::memes-> {snw} [$Awfif::memes-> {currentwsbi}] {snnl} [$Awfif::memes-> {snnh}{operon}] = newnlink ($Awfif::memes-> {snnh} {attrib}, ($newjhlsi = addjhlst ($Awfif::memes-> {snnh} {groupcategory}, $Awfif::memes-> {snnh} {operon}, 1, $Awfif::memes-> {snw} [$Awfif::memes-> {currentwsbi}] {snnl}[$Awfif::memes-> {snnh}{operon}], $Awfif::jhls-> {l} [$lola[$i]] [6], $Awfif::memes-> {currentwsbi}, $lostrts[$i], $loends[$i], $Awfif::jhls-> {l} [$lola[$i]] [15] [0])), $Awfif::memes-> {snnh}{operon}, $Awfif::memes-> {snw} [$Awfif::memes-> {currentwsbi}]-> {snnl}[$Awfif::memes-> {snnh}{operon}]);
# groupbuilderiecu6
# if this schemata has indequiv true check the telomeric head wso (logically sponsor - 1) for a mindeqiv descriptor
# if find one update that jhls with newly created jhls id

                  if (($Awfif::jhls-> {l} [$lola[$i]][15] [0])
                  && ($Awfif::wsol-> {l} [($atelhwso = awsoadr ( trwsoadr($sponsor,-1)))] [2] != 0)
                  && ( ($teldesc = findtdesc ($Awfif::wsol-> {l} [ ($atelhwso)] [2], $Awfif::memes-> {snnh} {mindequiv})) != 0 )
                  ){
                    $Awfif::jhls-> {l} [($Awfif::workspace-> {l} [$teldesc][2] - $Awfif::memes-> {snnh} {wsi})][15][2] = $newjhlsi;
# groupbuildertrau1
# if this schemata has indequiv true check the telomeric head wso (logically sponsor - 1) for a transid descriptor
# if find one remember to deploy a transid

                    if ($Awfif::codelet-> {l} [$myli] [35] > 0) {

                      $transid = $Awfif::codelet-> {l} [$myli] [35];
                      };#if
                    }; #if
# groupbuildertramgru2
# see if get a transid and subpid from the transmgr
                  if (defined ($atelhwso)) {


                    if ($Awfif::codelet-> {l} [$myli] [37] > 0) {

                      $transmgrid = $Awfif::codelet-> {l} [$myli] [37];
                      };#if
                    if ($Awfif::codelet-> {l} [$myli] [36] > 0) {

                      $subpid = $Awfif::codelet-> {l} [$myli] [36];
                      };#if
                    if ((defined($atelhwso)) && (($bcindex = matchbreakthawso ($atelhwso, $subpid)) > 0)
                    ){

                      &break ();
                      };#if
# groupbnsu2
                    if ((defined ($subpid)) && ($subpid > 0) ) {

                      $Awfif::wsol-> {l}[awsoadr ($sponsor)][ $Awfif::memes-> {wsosubpid}] = $subpid;#*** submacrok ***# cache a subpid for this subprogram schemata
                      };#if
# groupcgsicu2
                    if ((defined ($transmgrid)) && ($transmgrid != 0) && (defined ($subpid)) && ($subpid > 0)) {

                      $Awfif::wsol-> {l} [$a17][2]
                        = inccounter ( $gtype,
                        ($Awfif::memes-> {snnh} {wsi} + trwsoadr ($as, 1)), #must point to start
                        $Awfif::memes-> {snnh} {groupstart},
                        $Awfif::wsol-> {l} [$a17][2],
                        $a17,
                        undef (),
                        undef (),
                        undef (),
                        $transmgrid,
                        $patelhwso,
                        -1); #indicate if setting a transaction managed counter
# groupcgeicu2

                      $Awfif::wsol-> {l} [$a17][2]
                        = inccounter ( $gtype,
                        ($Awfif::memes-> {snnh} {wsi} + trwsoadr ($ae, -1)), #must point to end
                        $Awfif::memes-> {snnh} {groupend},
                        $Awfif::wsol-> {l} [$a17][2],
                        $a17,
                        undef (),
                        undef (),
                        undef (),
                        $transmgrid,
                        $patelhwso,
                        -1);#indicate if setting a transaction managed counter
                      };#if
                    };#if
# groupbuildersubpu1

# groupbuilderiecu3
# groupbuilderiecu2
                  if (writeiecok ($sponsor)
                  ){
# groupbuilderiecu4

                    $Awfif::jhls-> {l} [$newjhlsi][16][2] = addbice ($Awfif::memes-> {currentwsbi} , $as, $ae, $sigcount, \@lomatchs, \@lola, \@loconcs, \@lostrts, \@loends, \@logb, \@loge);
                    $Awfif::jhls-> {l} [$newjhlsi][15][1] = 't';
                    $Awfif::jhls-> {l} [$newjhlsi][16][0] = $as;
                    $Awfif::jhls-> {l} [$newjhlsi][16][1] = $ae;
# if the new jhls is indeqiv then write a descriptor in the sponsor

                    $Awfif::wsol-> {l} [$asponsor][2]
                    = setupdesc ( $Awfif::memes-> {snnh} {zero},
                      ($newjhlsi + $Awfif::memes-> {snnh} {wsi}),
                      $Awfif::memes-> {snnh} {indequiv},
                      $Awfif::wsol-> {l} [$asponsor] [2],
                      $asponsor);
                    };#if
# $lola[$i] is the index of the jhls when $lomatchs[$i] is true so can copy over its attributes
                  $atti = $Awfif::jhls-> {l} [$lola[$i]] [5];
                  $atti = $Awfif::attribs-> {l} [$atti][1];#move past the start attribute
                  while (($Awfif::attribs-> {l} [$atti][2]) != $Awfif::memes-> {snnh}{attribe}) {
                    &addjhlattrib ($Awfif::memes-> {snnh}{operon}, $Awfif::attribs-> {l} [$atti][3], $Awfif::attribs-> {l} [$atti][4]);
                    $atti = $Awfif::attribs-> {l} [$atti][1];#next
                    };

                  &addjhlattribs ($Awfif::memes-> {snnh}{operon});

                  $Awfif::wsol-> {l}[$asponsor][ $Awfif::memes-> {wsogcspjhlsi}] = $Awfif::slipnet-> {l} [$Awfif::memes-> {snw} [$Awfif::memes-> {currentwsbi}] {snnl} [$Awfif::memes-> {snnh}{operon}]] [2];#*** submacrok ***#
                  $Awfif::wsol-> {l}[$asponsor][ $Awfif::memes-> {wsogcjhlsi}] = $Awfif::slipnet-> {l} [$Awfif::memes-> {snw} [$Awfif::memes-> {currentwsbi}] {snnl} [$Awfif::memes-> {snnh}{operon}]] [2];#*** submacrok ***#
# now add the sponsor info to the jhls
                  $Awfif::jhls-> {l} [$Awfif::wsol-> {l}[$asponsor][ $Awfif::memes-> {wsogcjhlsi}]] [14][0] = $Awfif::memes-> {currentwsbi};#*** submacrok ***#
                  $Awfif::jhls-> {l} [$Awfif::wsol-> {l}[$asponsor][ $Awfif::memes-> {wsogcjhlsi}]] [14][1] = $sponsor;#*** submacrok ***#
# and initialise the codelet count in the jhls
                  $Awfif::jhls-> {l} [$Awfif::wsol-> {l}[$asponsor][ $Awfif::memes-> {wsogcjhlsi}]] [14][2] = 0;#*** submacrok ***#
# and initialise the codelet count in the jhls
                  };#first time associating operon
# groupcompleteclp

                &itcsuse ();
                $Awfif::clp = ();
                if ((defined ($myli)) && ((!defined ($Awfif::codelet-> {l} [$myli] [13])) or ($Awfif::codelet-> {l} [$myli] [13] == 0)) && (( $Awfif::wsol-> {l} [awsoadr ($sponsor)] [8] != 0)
                or ($Awfif::wsol-> {l}[awsoadr ($sponsor)][ $Awfif::memes-> {wsologucount}] != 0))) {&break()};#*** submacrok ***#
                $Awfif::clp-> {log} = $Awfif::codelet-> {l} [$myli][13];
                $Awfif::clp-> {urgency} = ($Awfif::codelet-> {l} [$myli][3] * $Awfif::memes-> {evlaunchm});
# see if can reflect the amplification in the urgency
                if ( ((defined ($Awfif::memes-> {gburgampbreak})) && (defined ($teldesc)))
                && ($Awfif::memes-> {gburgampbreak})
                && ($teldesc > 0)
                && (ampdesc ($myli, $sponsor) > 1)
                ){

                  &break();
                  };#if

                $Awfif::clp-> {urgency} = ($Awfif::clp-> {urgency} * ampdesc ($myli, $sponsor));
                if ($Awfif::codelet-> {l}[$myli][19] != 0) {
                  $Awfif::clp-> {wsi} = $Awfif::codelet-> {l}[$myli][19];
                  }#wsi set
                else {
                  $Awfif::clp-> {wsi} = $Awfif::memes-> {currentwsbi};
                  };
# groupbuildertfu2
# apply cascadesponsorship

                $Awfif::clp-> {action}-> {tfree} = cascadesponsor ($myli, $sponsor, $Awfif::memes-> {snnh}{getcassponsor});
                $Awfif::clp-> {strategy} = "tgoalscout";
# groupbuilderdsu1
# apply delayselect

                if ( (findcounter ($Awfif::wsol-> {l} [$a17][2], $Awfif::memes-> {snnh} {delayselect}, \$counteri))
                && ($Awfif::workspace-> {l} [$counteri] [9] > ($Awfif::memes-> {snnh} {wsi} + 0))
                ){

                  $Awfif::clp-> {delayselect} = ($Awfif::workspace-> {l} [$counteri] [9] - $Awfif::memes-> {snnh} {wsi}) * $Awfif::memes-> {waitamp};
                  &resetcounter ($Awfif::memes-> {snnh}{delayselect}, $a17);
                  &maskcounter ($Awfif::memes-> {snnh}{delayselect}, $a17);
                  };#if
                $Awfif::clp-> {action}-> {sponsor} = $sponsor;
                $Awfif::clp-> {action}-> {signal} = findsignal ($loconcs[$i]);
                $Awfif::clp-> {action}-> {schema} = $loconcs[$i];
                $Awfif::clp-> {action}-> {sws} = $Awfif::memes->{currentwsbi};
                $Awfif::clp-> {action}-> {wss} = $lostrts[$i];
                $Awfif::clp-> {action}-> {wsoname} = getwsoname ($lostrts[$i]);
                $Awfif::clp-> {action}-> {wse} = $loends[$i];
                $Awfif::clp-> {action}-> {jhlabeli} = $lola[$i];
# gbwstup
                $Awfif::clp-> {action}-> {jhlabeloi} = gettjhlsoi ($asponsor, $Awfif::wsol-> {l}[$asponsor][$asponsor]);#*** submacrok ***#
# groupbuildertrau2
                if (defined ($transid)) {

                  $Awfif::clp-> {action}-> {transid} = $transid;
                  };#if
# groupbuildersubpu2
                if (defined ($subpid)) {

                  $Awfif::clp-> {action}-> {subpi} = $subpid;
                  $Awfif::clp-> {urgency} *= $Awfif::memes-> {submult};
                  };#if
                if (defined ($transmgrid)) {

                  $Awfif::clp-> {action}-> {transmgrid} = $transmgrid;
                  };#if
# groupbuildersgju2
                if ($teldesc > 0){

                  my ($sgjhlsi);
                  $sgjhlsi = ($Awfif::workspace-> {l} [$teldesc][2] - $Awfif::memes-> {snnh} {wsi});
                  $Awfif::clp-> {action}-> {sgjhlsi} = $sgjhlsi;
                  };#if
                &icdsubmitcodelet ($myli, \$Awfif::clp, $Awfif::jhls-> {l} [$lola[$i]] [10], $grkwp, $grkwpr, \@$sactset);
                if (($bcindex = matchbreakthawso (awsoadr( trwsoadr($sponsor, -1)), $subpid)) > 0) {

                  &remarrent ($bcindex, \@{$Awfif::memes-> {breakthwso}});
                  &remarrent ($bcindex, \@{$Awfif::memes-> {breakthsubp}});
                  $Awfif::memes-> {breakcodelet} [ ++$Awfif::memes-> {breakcodelet} [0]] = $Awfif::memes-> {submitted};
                  if ($subpid > 0) {
                    $Awfif::memes-> {breaksubp} [ ++$Awfif::memes-> {breaksubp} [0]] = $subpid;
                    };#if
                  };#if
                &trackcodelet ($myli, $Awfif::memes-> {codeletdef}, $Awfif::memes-> {snnh} {group}, undef(), awsoadr( $sponsor), $Awfif::codelet-> {l} [$myli] [36]);
                &actnodes ( $Awfif::jhls-> {l} [$lola[$i2]][6], $Awfif::memes-> {openatype},($Awfif::memes-> {strbool}[$Awfif::memes-> {streh} {bugroup}] | $Awfif::memes-> {strbool}[$Awfif::memes-> {streh} {tdgroup}] | $Awfif::memes-> {strbool}[$Awfif::memes-> {streh} {delta}]));
                &invcaches ($Awfif::jhls-> {l} [$lola[$i2]][6], $Awfif::memes-> {strbool} [$Awfif::memes-> {streh} {'tdgroup'}]);
                }; #if its not an operon
              };#launch the action scout
            };#for
          };

# groupcompletemau1

        };#group complete
      };#if no group
      $gboet = time ();
      $Awfif::memes-> {time} [$Awfif::memes-> {spctime}] [$Awfif::memes-> {ch}{$Awfif::codelet-> {l} [$myli] [2]}] [$Awfif::memes-> {gbosum}] = $Awfif::memes-> {time} [$Awfif::memes-> {spctime}] [$Awfif::memes-> {ch}{$Awfif::codelet-> {l} [$myli] [2]}] [$Awfif::memes-> {gbosum}] + $gboet - $gbost;
      };#else indequiv cache
      };#proceed wrap
# groupbuilderwgcu7
# drop the wontgroup cache

    $Awfif::wontgroupc-> {caller} = $Awfif::memes-> {snnh} {stop};
    };#else

    if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
      print ("$cdnx\n");
      };
    &clogstatx ($myli);#should do role out of descriptors
    }# groupbuilder1
#
#
sub tgoalscout1 {
    my ($myli, $kwp, $kwpr, $sactset) = @_;#The ignored parameters are required by the codelet calling architecture
    my ($cdn, $cdnx);
#
# updated for merged workspaces

    $cdn = clogstat (\$cdnx);
    if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
      print ("$cdn myli $myli ");
      };
    &tigmscout1 ($myli, $kwp, $kwpr, \@$sactset, 'goalevaluator', 'tas');

    if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
      print ("$cdnx\n");
      };
    &clogstatx ();
    }# tgoalscout1
#
#<!-- start tag sss -->
#
sub tmodelscout1 {
    my ($myli, $kwp, $kwpr, $sactset) = @_;#The ignored parameters are required by the codelet calling architecture
    my ($cdn, $cdnx);
#
# updated for merged workspaces

    $cdn = clogstat (\$cdnx);
    if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
      print ("$cdn myli $myli ");
      };
    &tigmscout1 ($myli, $kwp, $kwpr, \@$sactset, 'modelevaluator', 'tms', 't');

    if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
      print ("$cdnx\n");
      };
    &clogstatx ();
    }# tmodelscout1
#
sub tigmscout1 {
    my ($myli, $kwp, $kwpr, $sactset, $strategy, $log, $ignore0wsoname) = @_;
    my ($sponsor, $signal, $schema, $proceed, $swstype, $noswstype, $ni,
      $grkwp, $grkwpr, $cdn, $cdnx);
#
# updated for merged workspaces

# goals must use the full workspace

    $noswstype = 't';
    $proceed = getcontext ($myli, \$sponsor, \$signal, \$schema, \$swstype, \$grkwp, \$grkwpr, $noswstype, \$cdn, \$cdnx, 3, 't');
# handle rework

    if (($proceed) && ($Awfif::codelet-> {l} [$myli][14] != 0)) {#rework so use previous parameters
      &reuselog ($myli);

      if ((($signal == $Awfif::memes->{snnh}{spsignal}) && (defined ($Awfif::memes->{snw} [$Awfif::memes-> {currentwsbi}]-> {snnl}[$schema])))
      or (($signal == $Awfif::memes->{snnh}{mpsignal}) && (defined ($Awfif::memes->{snw} [$Awfif::memes-> {currentwsbi}]-> {snnl}[$schema])))) {
        my ($pr);
        &updatelog ($myli, $log, 1, $signal);#
        &updatelog ($myli, $log, 2, $schema);#

        $pr = $Awfif::memes-> {currentwsbi};
# & call in an action evaluator with urgency proportional to snet obj distance
        $Awfif::clp = ();
        if ((defined ($myli)) && ((!defined ($Awfif::codelet-> {l} [$myli][13])) or ($Awfif::codelet-> {l} [$myli][13] == 0)) && (($Awfif::wsol-> {l}[awsoadr ($ni)][8] != 0)
        or ($Awfif::wsol-> {l}[awsoadr ($ni)][ $Awfif::memes-> {wsologucount}] != 0))) {&break()};#*** submacrok ***#
        $Awfif::clp-> {log} = $Awfif::codelet-> {l} [$myli][13];
        $Awfif::clp-> {urgency} = $Awfif::memes-> {acteu};
        if (defined ($Awfif::codelet-> {l}[$myli][19])) {
          $Awfif::clp-> {wsi} = $Awfif::codelet-> {l}[$myli][19];
          }#wsi set
        else {
          $Awfif::clp-> {wsi} = $Awfif::memes-> {currentwsbi};
          };
        $Awfif::clp-> {strategy} = $strategy;
        $Awfif::clp-> {action}-> {sponsor} = $sponsor;
        $Awfif::clp-> {action}-> {signal} = $Awfif::codelet-> {l} [$myli][16];
        $Awfif::clp-> {action}-> {schema} = $Awfif::codelet-> {l} [$myli][18];
        $Awfif::clp-> {action}-> {sws} = $Awfif::codelet-> {l} [$myli] [20];
        $Awfif::clp-> {action}-> {wss} = $Awfif::codelet-> {l} [$myli][21];
        $Awfif::clp-> {action}-> {wse} = $Awfif::codelet-> {l} [$myli][22];
        $Awfif::clp-> {action}-> {jhlabeli} = $Awfif::codelet-> {l} [$myli][23];
        $Awfif::clp-> {action}-> {jhlabeloi} = $Awfif::codelet-> {l} [$myli][30];

        &groupsinv1 ($myli, undef(), undef(), undef(), undef(),undef(), "$strategy", $$kwp, $kwpr, \@$sactset, undef (), $ignore0wsoname);
        }#single path

      }# rework
    elsif ($proceed) {#main line
# Top-down goal scouts are given a
# predefined workspace reference (e.g. a certain group complete,
# like succgroup), and the first action is chosen as a probabilistic function of
# its salience in its surroundings (its string).
#

      if ((($signal == $Awfif::memes->{snnh}{spsignal}) && (defined ($Awfif::memes->{snw} [$Awfif::memes-> {currentwsbi}]-> {snnl}[$schema])))
      or (($signal == $Awfif::memes->{snnh}{mpsignal}) && (defined ($Awfif::memes->{snw} [$Awfif::memes-> {currentwsbi}]-> {snnl}[$schema])))) {
        my($pr);
        $Awfif::wsol-> {l}[ awsoadr ($sponsor)][8] = setuplog ($myli, #indexing to codelet
                $log, #method
                $sponsor, #sponsor workspace object
                0); #the signal type specified
        $Awfif::codelet-> {l}[$myli][4] = $sponsor;# updatelog needs this setup
# now want to see if schema is a known concept
# if so then let the evaluator run

        $pr = $Awfif::memes-> {currentwsbi};
# & call in an action evaluator with urgency proportional to snet obj distance
        &updatelog ($myli, $log, 1, $signal);#
        &updatelog ($myli, $log, 2, $schema);#
        $Awfif::clp = ();
        if ((defined ($myli)) && ((!defined ($Awfif::codelet-> {l} [$myli][13])) or ($Awfif::codelet-> {l} [$myli][13] == 0)) && (($Awfif::wsol-> {l}[awsoadr ($sponsor)][8] != 0)
        or ($Awfif::wsol-> {l}[awsoadr ($sponsor)][ $Awfif::memes-> {wsologucount}] != 0))) {&break()};#*** submacrok ***#
        $Awfif::clp-> {log} = $Awfif::codelet-> {l} [$myli][13];
        if (defined ($Awfif::codelet-> {l}[$myli][19])) {
          $Awfif::clp-> {wsi} = $Awfif::codelet-> {l}[$myli][19];
          }#wsi set
        else {
          $Awfif::clp-> {wsi} = $Awfif::memes-> {currentwsbi};
          };
        $Awfif::clp-> {strategy} = $strategy;
        $Awfif::clp-> {action}-> {sponsor} = $sponsor;
        $Awfif::clp-> {action}-> {signal} = $Awfif::codelet-> {l} [$myli][16];
        $Awfif::clp-> {action}-> {schema} = $Awfif::codelet-> {l} [$myli][18];
        $Awfif::clp-> {action}-> {sws} = $Awfif::codelet-> {l} [$myli] [20];
        $Awfif::clp-> {action}-> {wss} = $Awfif::codelet-> {l} [$myli][21];
        $Awfif::clp-> {action}-> {wse} = $Awfif::codelet-> {l} [$myli][22];
        $Awfif::clp-> {action}-> {jhlabeli} = $Awfif::codelet-> {l} [$myli][23];
        $Awfif::clp-> {action}-> {jhlabeloi} = $Awfif::codelet-> {l} [$myli][30];

        &groupsinv1 ($myli, undef(), undef(), undef(), undef(), undef(), "$strategy", $$kwp, $kwpr, \@$sactset);
        };# sps or mps signal
      };# main line

    if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
      print ("$cdnx\n");
      };
    &clogstatx ();#role in transaction info so must role it back out
    }# tigmscout1
#
sub goalevaluator1 {
    my ($myli, $kwp, $kwpr, $sactset) = @_;#The ignored parameters are required by the codelet calling architecture
#
# updated for merged workspaces

    &igmevaluator1 ($myli, $kwp, $kwpr, \@$sactset, 'goalbuilder', 'ae');

    &clogstatx ();
    }# goalevaluator1
#
sub modelevaluator1 {
    my ($myli, $kwp, $kwpr, $sactset) = @_;#The ignored parameters are required by the codelet calling architecture
#
# updated for merged workspaces

    &igmevaluator1 ($myli, $kwp, $kwpr, \@$sactset, 'modelbuilder', 'me', 't');

    &clogstatx ();
    }# modelevaluator1
#
sub igmevaluator1 {
    my ($myli, $kwp, $kwpr, $sactset, $strategy, $log, $ignore0wsoname) = @_;
    my ($sponsor, $signal, $schema, $found, $linkp, $proceed, $swstype, $noswstype,
      $grkwp, $grkwpr, $cdn, $cdnx);
#
# updated for merged workspaces

# goals must use the full workspace

    $noswstype = 't';
    $proceed = getcontext ($myli, \$sponsor, \$signal, \$schema, \$swstype, \$grkwp, \$grkwpr, $noswstype, \$cdn, \$cdnx, 4, 't');
# rework will be processed in real evaluator

    if (($proceed) && ($signal == $Awfif::memes->{snnh}{spsignal}) && (defined ($Awfif::memes->{snw} [$Awfif::memes-> {currentwsbi}]-> {snnl}[$schema]))) {

      my ($pr);
      $Awfif::wsol-> {l}[ awsoadr ($sponsor)][8] = setuplog ($myli, #indexing to codelet
              $log, #method
              $sponsor, #sponsor workspace object
              0); #the signal type specified
      $Awfif::codelet-> {l}[$myli][4] = $sponsor;# updatelog needs this setup
# now want to see if schema is a known concept
# if so then let the evaluator run

      $pr = $Awfif::memes-> {currentwsbi};
# & call in a goal evaluator with urgency proportional to snet obj distance
      &updatelog ($myli, $log, 1, $signal);#
      &updatelog ($myli, $log, 2, $schema);#
      $linkp = $Awfif::memes-> {snw} [$Awfif::memes-> {currentwsbi}]-> {snnl}[$schema];

      while (($linkp != 0) && (!$found)) {
        if (($Awfif::slipnet-> {l}[$linkp][3] == $Awfif::memes-> {snnh}{evaluator})
        && (defined($Awfif::memes-> {binds}-> {$Awfif::memes->{snnih}{$Awfif::slipnet-> {l} [$linkp][2]}}))) {#can launch the real routine

          my ($amped, $ampi);
          $found = 't';
          if ( ($strategy =~ /goal/i)
          ){

            for ($ampi = $Awfif::codelet-> {l} [$myli][21]; (($ampi != 0) && ($ampi != $Awfif::codelet-> {l} [$myli][22])); $ampi = trwsoadr ($ampi,1)) {
# gevalumau2

              $amped = ampdesc ($myli, $ampi);
              if ($amped > 1) {

                &maskamp ($myli, $ampi, 1);
                };#if
              };#for
            $amped = ampdesc ($myli, $Awfif::codelet-> {l} [$myli][22]);
            if ($amped > 1) {

              &maskamp ($myli, $Awfif::codelet-> {l} [$myli][22], 1);
              };#if
            };#if goal codelet
# gevalubo1
# note the new user of the codelet for deletion collected statistics

          $Awfif::codelet-> {l} [$myli][27] = $Awfif::memes->{snnih}{$Awfif::slipnet-> {l} [$linkp][2]};
          &ucsehist ($Awfif::memes->{snnih}{$Awfif::slipnet-> {l} [$linkp][2]});
          no strict 'refs';

          $Awfif::memes-> {binds}-> {$Awfif::memes->{snnih}{$Awfif::slipnet-> {l} [$linkp][2]}}-> ($myli, \$$kwp, $kwpr, \@$sactset);
          }
        $linkp = $Awfif::slipnet-> {l}[$linkp][0];
        }#while
      }# sps signal
    elsif (($proceed) && ($signal == $Awfif::memes->{snnh}{mpsignal})) {

      my ($pr);
      &updatelog ($myli, $log, 1, $signal);#did signal match multi-path and linked to ni descriptors
# need to check that a workspace exists above the current one. if so can call in a goalbuilder
      $linkp = $Awfif::wsbl->{h};
      $found = '';
      while (($linkp != $Awfif::wsbl->{t}) && (!$found)) {#see if there is an active workspace above the current workspace

        if ($linkp == $Awfif::memes-> {currentwsbi} + 1) {

          $found = 't';
          };#if
        $linkp = $Awfif::wsbl-> {l}[$linkp][0];
        };#while
      if ($found) {#check that there is a valid multi-path request processor

        $found = '';
        $linkp = $Awfif::memes-> {snw} [$Awfif::memes-> {currentwsbi}]-> {snnl}[$schema];
        while (($linkp != 0) && (!$found)) {

          if (($Awfif::slipnet-> {l}[$linkp][3] == $Awfif::memes-> {snnh}{evaluator})
          && (defined($Awfif::memes-> {binds}-> {$Awfif::memes->{snnih}{$Awfif::slipnet-> {l} [$linkp][2]}}))) {#can launch the real routine

            $found = 't';
            }
          $linkp = $Awfif::slipnet-> {l}[$linkp][0];
          }#while
        if ($found) {# launch builder

          $Awfif::clp = ();
          $Awfif::clp-> {log} = $Awfif::codelet-> {l} [$myli][13];
          $Awfif::clp-> {urgency} = ($Awfif::codelet-> {l} [$myli][3] * $Awfif::memes-> {blaunchm});
          $Awfif::clp-> {strategy} = $strategy;
          $Awfif::clp-> {action}-> {sponsor} = $sponsor;
          $Awfif::clp-> {action}-> {signal} = $Awfif::codelet-> {l} [$myli][16];
          $Awfif::clp-> {action}-> {schema} = $Awfif::codelet-> {l} [$myli][18];
          $Awfif::clp-> {action}-> {ref} = $Awfif::codelet-> {l} [$myli][4];
          $Awfif::clp-> {wsi} = $Awfif::memes-> {currentwsbi};
          $Awfif::clp-> {action}-> {sws} = $Awfif::codelet-> {l} [$myli] [20];
          $Awfif::clp-> {action}-> {wss} = $Awfif::codelet-> {l} [$myli][21];
          $Awfif::clp-> {action}-> {wse} = $Awfif::codelet-> {l} [$myli][22];
          $Awfif::clp-> {action}-> {jhlabeli} = $Awfif::codelet-> {l} [$myli][23];
          &groupsinv1 ($myli, undef(), undef(), undef(), undef(), undef(), "$strategy", $$kwp, $kwpr, \@$sactset, undef (), $ignore0wsoname);
          };#if launch builder
        };

      $pr = $Awfif::memes-> {currentwsbi};
      };#multi-path

    if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
      print ("$cdnx\n");
      };
    }# igmevaluator1
#
sub goalbuilder1 {
    my ($myli, $kwp, $kwpr, $sactset) = @_;#The ignored parameters are required by the codelet calling architecture
#
# updated for merged workspaces

    &igmbuilder1 ($myli, $kwp, $kwpr, \@$sactset, 'tnuclabgscout', $Awfif::memes-> {snnh} {actioncategory}, '', 'ab');

    &clogstatx ();
    }# goalbuilder1
#
sub modelbuilder1 {
    my ($myli, $kwp, $kwpr, $sactset) = @_;#The ignored parameters are required by the codelet calling architecture
#
# updated for merged workspaces

    &igmbuilder1 ($myli, $kwp, $kwpr, \@$sactset, 'tnuclabmscout', $Awfif::memes-> {snnh} {modelcategory}, 't', 'mb', 't');

    &clogstatx ();
    }# modelbuilder1
#
sub igmbuilder1 {
    my ($myli, $kwp, $kwpr, $sactset, $strategy, $category, $canrepeat, $log, $ignore0wsoname ) = @_;
    my ($sponsor, $asponsor, $signal, $schema, $proceed, $swstype, $noswstype,
    $grkwp, $grkwpr, $started, $end, $depstag, $depbond, $cdn, $cdnx);
#
# updated for merged workspaces

    if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
      my ($pr);
      $pr = $Awfif::memes-> {snnih} {$category};
      print ("igmbuilder1 myli $myli strategy $strategy category $pr canrepeat ($canrepeat) log ($log) ");
      };
# groups must use the full workspace

    $noswstype = 't';
    $proceed = getcontext ($myli, \$sponsor, \$signal, \$schema, \$swstype, \$grkwp, \$grkwpr, $noswstype, \$cdn, \$cdnx, 4);
    $started = 0;
    $end = '';
    $depstag = '';
    $asponsor = awsoadr ($sponsor);

#check if the work has already been done
    if (($proceed) && (!($depbond = findbond ($Awfif::wsol-> {l} [$asponsor] [2], $sponsor, $category, $Awfif::memes-> {snnh} {associative})) or ($canrepeat))
# spi references the global temporary file buffer for use by the builder which should free it (delsp)
# && (($spi = $Awfif::codelet-> {l} [$myli][4]) != 0)
      ) {# got buffer
      my ($pr);
# deploy the bond if none found
      if (!$depbond) {
        $asponsor = awsoadr ($sponsor);
        $Awfif::wsol-> {l} [$asponsor][2]
        = setupdesc ( $category,
            ($Awfif::memes-> {snnh} {wsi} + $sponsor),
            $Awfif::memes-> {snnh} {associative},
            $Awfif::wsol-> {l} [$asponsor][2],
            $asponsor);
        };#if
# launch nuclear codelet
      $Awfif::clp = ();
      $Awfif::clp-> {log} = $Awfif::codelet-> {l} [$myli][13];
      if ($Awfif::codelet-> {l} [$myli][3] != 0) {
        $Awfif::clp-> {urgency} = $Awfif::codelet-> {l} [$myli][3];
        }
      else {
        $Awfif::clp-> {urgency} = (5 * $Awfif::memes-> {tdgsurg});
        };
      $Awfif::clp-> {strategy} = $strategy;
      $Awfif::clp-> {action}-> {sponsor} = $sponsor;
      $Awfif::clp-> {action}-> {signal} = $Awfif::codelet-> {l} [$myli][16];
      $Awfif::clp-> {action}-> {schema} = $Awfif::codelet-> {l} [$myli][18];
      $Awfif::clp-> {action}-> {ref} = $Awfif::codelet-> {l} [$myli][4];
      $Awfif::clp-> {wsi} = $Awfif::memes-> {currentwsbi}+1;
      $Awfif::clp-> {action}-> {sws} = $Awfif::codelet-> {l} [$myli] [20];
      $Awfif::clp-> {action}-> {wss} = $Awfif::codelet-> {l} [$myli][21];
      $Awfif::clp-> {action}-> {wse} = $Awfif::codelet-> {l} [$myli][22];
      $Awfif::clp-> {action}-> {jhlabeli} = $Awfif::codelet-> {l} [$myli][23];
      &groupsinv1 ($myli, undef(), undef(), undef(), undef(), undef(), "$strategy", $$kwp, $kwpr, \@$sactset, undef (), $ignore0wsoname);

      $pr = $Awfif::memes-> {currentwsbi};
      };#got buffer

    if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
      print ("$cdnx\n");
      };
    }# igmbuilder1
#
#
sub tnuclabmscout1 {
    my ($myli, $kwp, $kwpr, $sactset) = @_;#The ignored parameters are required by the codelet calling architecture
    my ($sponsor, $signal, $schema, $proceed, $swstype, $noswstype,
      $grkwp, $grkwpr, $cdn, $cdnx);
#
# updated for merged workspaces
# uses operon jhlabels

# goals must use the full workspace

    $noswstype = 't';
    $proceed = getcontext ($myli, \$sponsor, \$signal, \$schema, \$swstype, \$grkwp, \$grkwpr, $noswstype, \$cdn, \$cdnx, 3);
# handle rework

    if (($proceed) &&($Awfif::codelet-> {l} [$myli][14] != 0)) {#rework so use previous parameters
      &reuselog ($myli);

      if ((($signal == $Awfif::memes->{snnh}{mpsignal}) && (defined($Awfif::memes->{snw} [$Awfif::memes-> {currentwsbi}]-> {snnl}[$schema])))) {
        &updatelog ($myli, 'tngs', 1, $signal);#
        &updatelog ($myli,'tngs', 2, $schema);#

        print ("tngs sp=$sponsor,\n");
        }#multipath signal

      }# rework
    elsif ($proceed) {#main line
# Top-down nuclear label group scouts validate their calling information and then call in an evaluator to
# match operon jhlabels of completed groups in their workspace with their sponsoring label
# where ever they find a completed group if there is a match request a builder transcribes a salient aspect of the following wso string
# to the cytosolic workspace
# the transcription will be active for one iteration of group builder complete when the telomeric strings will become 0 and the
# string of wso will be destroyed
#

      if ((($signal == $Awfif::memes->{snnh}{mpsignal}) && (defined($Awfif::memes->{snw} [$Awfif::memes-> {currentwsbi}]-> {snnl}[$schema])))) {
# now skip to the end of this group and keep processing
        $Awfif::clp = ();
# tnuclmubo1
# engage suppressor

        $Awfif::clp-> {action}-> {schema} = $schema;
        $Awfif::clp-> {action}-> {signal} = $signal;
        $Awfif::clp-> {action}-> {sws} = $Awfif::codelet-> {l} [$myli] [20];
        $Awfif::clp-> {action}-> {wss} = $Awfif::codelet-> {l} [$myli][21];
        $Awfif::clp-> {action}-> {wse} = $Awfif::codelet-> {l} [$myli][22];
        $Awfif::clp-> {action}-> {jhlabeli} = $Awfif::codelet-> {l} [$myli][23];
        &groupsinv1 ($myli, $sponsor, trwsoadr ($sponsor,1),0, $sponsor,0, 'nuclabmevaluator', $$kwp, $kwpr, \@$sactset);
        };# sps or mps signal
      };# main line

    if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
      print ("$cdnx\n");
      };
    &clogstatx ();
    }# tnuclabmscout1
#
sub nuclabmevaluator1 {
    my ($myli, $kwp, $kwpr, $sactset) = @_;#The ignored parameters are required by the codelet calling architecture
    my ($sponsor, $signal, $schema, $jhlabeli, @lomatchs, @lola, @loconcs, @lostrts, @loends, @logb, @loge, $operoncount, $proceed, $swstype,
      $grkwp, $grkwpr, $cdn, $cdnx);
#
# updated for merged workspaces

# goals must use the full workspace

    $proceed = getcontext ($myli, \$sponsor, \$signal, \$schema, \$swstype, \$grkwp, \$grkwpr, undef(), \$cdn, \$cdnx, 3);
    $jhlabeli = $Awfif::codelet-> {l} [$myli][23];
# handle rework

    if (($proceed) && ($Awfif::codelet-> {l} [$myli][14] != 0)) {#rework so use previous parameters
      &reuselog ($myli);

      if ((($signal == $Awfif::memes->{snnh}{mpsignal}) && (defined($Awfif::memes->{snw} [$Awfif::memes-> {currentwsbi}]-> {snnl}[$schema])))) {
        &updatelog ($myli, 'tngs', 1, $signal);#
        &updatelog ($myli,'tngs', 2, $schema);#

        print ("tngs sp=$sponsor,\n");
        }#multipath signal

      }# rework
    elsif ($proceed) {#main line
# Top-down nuclear label group codelets search completed groups looking for a match with their sponsoring label
# where ever the evaluator finds this it will request a builder transcribe the following wso string
# to the cytosolic workspace
# the transcription will be active for one iteration of group builder complete when the telomeric strings will become 0 and the
# string of wso will be destroyed
#

      if ((($signal == $Awfif::memes->{snnh}{mpsignal}) && (defined($Awfif::memes->{snw} [$Awfif::memes-> {currentwsbi}]-> {snnl}[$schema])))) {
# Using the mplabel check the nuclear schema for groups that match
        my ($sws, $wss, $wse);
        $sws = $Awfif::codelet-> {l} [$myli] [20];
        $wss = $Awfif::codelet-> {l} [$myli][21];
        $wse = $Awfif::codelet-> {l} [$myli][22];
# for models we pass in the jhlabel index
# nuclabebice

        if ((defined ($Awfif::jhls-> {l} [$jhlabeli] [13]))
        && ($Awfif::bicl-> {l} [$Awfif::jhls-> {l} [$jhlabeli] [13]] [3] == $Awfif::jhls-> {l} [$jhlabeli] [5])
          ){#there is a cache element setup

          $operoncount = usebice ($Awfif::jhls-> {l} [$jhlabeli] [13], \@lomatchs, \@lola, \@loconcs, \@lostrts, \@loends, \@logb, \@loge);
          }#if
        else {

          $operoncount = operonlmatch ($myli, $jhlabeli, \@lomatchs, \@lola, \@loconcs, \@lostrts, \@loends, \@logb, \@loge, 'specwsonlyopbinding', $Awfif::memes-> {currentwsbi});
          if ((!defined ($Awfif::jhls-> {l} [$jhlabeli] [13]))) {
            $Awfif::jhls-> {l} [$jhlabeli] [13] = addbice ($sws, $Awfif::jhls-> {l} [$jhlabeli] [5], $wse, $operoncount, \@lomatchs, \@lola, \@loconcs, \@lostrts, \@loends, \@logb, \@loge);
            };#if
          };#else
        if ($operoncount > 0) {

          my ($opfound, $opcount);
          $opfound = '';
          for ($opcount = 0; $opcount < $operoncount; $opcount++) {
            if ($lomatchs [$opcount]) {

              $opfound = 't';
              };#if
            };# for
          if ($opfound) {

            $Awfif::clp = ();
            $Awfif::clp-> {urgency} = $Awfif::codelet-> {l} [$myli][3]*$Awfif::memes-> {blaunchm};
            $Awfif::clp-> {action}-> {schema} = $schema;
            $Awfif::clp-> {action}-> {signal} = $signal;
            $Awfif::clp-> {action}-> {sws} = $Awfif::codelet-> {l} [$myli] [20];
            $Awfif::clp-> {action}-> {wss} = $Awfif::codelet-> {l} [$myli][21];
            $Awfif::clp-> {action}-> {wse} = $Awfif::codelet-> {l} [$myli][22];
            $Awfif::clp-> {action}-> {jhlabeli} = $Awfif::codelet-> {l} [$myli][23];
            &groupsinv1 ($myli, $sponsor, trwsoadr ($sponsor,1),0 , $sponsor,0 , 'nuclabmbuilder', $$kwp, $kwpr, \@$sactset
              );
            };#if
          };#in group
        };# sps or mps signal
      };# main line

    if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
      print ("$cdnx\n");
      };
    &clogstatx ();
    }# nuclabmevaluator1
#
#<!-- start tag sia -->
#<!-- start tag smo -->
#<!-- start tag inh -->
#
sub nuclabmbuilder1 {
    my ($myli, $kwp, $kwpr, $sactset) = @_;#The ignored parameters are required by the codelet calling architecture
    my ($sponsor, $signal, $schema, @lomatchs, @lola, @loconcs, @lostrts, @loends, @logb, @loge, $operoncount, $proceed, $swstype,
      $grkwp, $grkwpr, @operation, $cdn, $cdnx);
#
# updated for merged workspaces

# goals must use the full workspace

    $proceed = getcontext ($myli, \$sponsor, \$signal, \$schema, \$swstype, \$grkwp, \$grkwpr, undef(), \$cdn, \$cdnx, 3);
# handle rework

    if (($proceed) && ($Awfif::codelet-> {l} [$myli][14] != 0)) {#rework so use previous parameters
      &reuselog ($myli);

      if ((($signal == $Awfif::memes->{snnh}{mpsignal}) && (defined($Awfif::memes->{snw} [$Awfif::memes-> {currentwsbi}]-> {snnl}[$schema])))) {
        my ($spws);
        $spws = $Awfif::codelet-> {l} [$myli] [20];
        &updatelog ($myli, 'tngs', 1, $signal);#
        &updatelog ($myli,'tngs', 2, $schema);#

        print ("tnms sp=$spws:$sponsor,\n");
        }#multipath signal

      }# rework
    elsif ($proceed) {#main line
# Top-down nuclear label group codelets search completed groups looking for a match with their sponsoring label
# when this is true the builder will
# use selsalact to indicate which of the wso in the subschema terminated by the /memgroup are salient.
# transcribe the salient wso string
# to the cytosolic workspace
# the transcription will be active for one iteration of group builder complete when the telomeric strings will become 0 and the
# string of wso will be destroyed
#

      if ((($signal == $Awfif::memes->{snnh}{mpsignal}) && (defined($Awfif::memes->{snw} [$Awfif::memes-> {currentwsbi}]-> {snnl}[$schema])))) {
# Using the mplabel check the nuclear schema for groups that match
        my ($sws, $wss, $wse);
        $sws = $Awfif::codelet-> {l} [$myli] [20];
        $wss = $Awfif::codelet-> {l} [$myli][21];
        $wse = $Awfif::codelet-> {l} [$myli][22];

# nuclabbbice
        if ((defined ($Awfif::jhls-> {l} [$Awfif::codelet-> {l} [$myli][23]] [13]))
        && ($Awfif::bicl-> {l} [$Awfif::jhls-> {l} [$Awfif::codelet-> {l} [$myli][23]] [13]] [3] == $Awfif::jhls-> {l} [$Awfif::codelet-> {l} [$myli][23]] [5])
          ){#there is a cache element setup

          $operoncount = usebice ($Awfif::jhls-> {l} [$Awfif::codelet-> {l} [$myli][23]] [13], \@lomatchs, \@lola, \@loconcs, \@lostrts, \@loends, \@logb, \@loge);
          }#if
        else {

          $operoncount = operonlmatch ($myli, $Awfif::codelet-> {l} [$myli][23], \@lomatchs, \@lola, \@loconcs, \@lostrts, \@loends, \@logb, \@loge, 'specwsonlyopbinding', $Awfif::memes-> {currentwsbi});
          if (!defined ($Awfif::jhls-> {l} [$Awfif::codelet-> {l} [$myli][23]] [13])) {
            $Awfif::jhls-> {l} [$Awfif::codelet-> {l} [$myli][23]] [13] = addbice ($sws, $Awfif::jhls-> {l} [$Awfif::codelet-> {l} [$myli][23]] [5], $wse, $operoncount, \@lomatchs, \@lola, \@loconcs, \@lostrts, \@loends, \@logb, \@loge);
            };#if
          };#else
        if ($operoncount > 0) {

          my ($loopcount, $bcindex, $loperoncount, @llomatchs, @llola, @lloends, @llostrts, @lloge, @llogb, $opcount, $satisfied, $dontgiveup, $note35, $ctfifound);
          $llomatchs[0] = '';
          $llola [0] = 0;
          $lloends [0] = 0;
          $llostrts [0] = 0;
          $lloge [0] = 0;
          $llogb [0] = 0;
          for ($opcount = 0; $opcount < $operoncount; $opcount++) {
            if ($lomatchs [$opcount]) {

              $loopcount = 0;
# use selsalact to identify salient areas of the subschema of each matching schema

              $satisfied = '';
              $dontgiveup = 't';$ctfifound = '';
              while ((!$satisfied) && ($dontgiveup)) {
                if (($loopcount++ > $Awfif::memes-> {nuclabmblth}) && ($Awfif::memes-> {nuclabmbbreak}) ){ &break ();};
                $llomatchs[0] = $lomatchs [$opcount];
                $llola [0] = $lola [$opcount];
                $lloends [0] = $loends [$opcount];
                $llostrts [0] = $lostrts [$opcount];
                $lloge [0] = $loge [$opcount];
                $llogb [0] = $logb [$opcount];
                $loperoncount = 1;
                @operation = selsaliam ($myli, $sws, $wss, $wse, $operoncount, \@llomatchs, \@llola, \@lloends, \@llostrts, \@lloge, \@llogb, \@$sactset, $Awfif::memes-> {snnh}{model});
                if (($operation[0] ne '')
                && (( $operation [7] == 0 )
                  or (($operation [7] != 0)
                    && ( ( (!defined ($Awfif::jhls-> {l} [$operation [7]][17]))
# nuclabminhu1
                      or ( $dontgiveup = ctficomp ($myli, $operation [7], $kwp, $kwpr, \@$sactset, \$ctfifound) ) ) ) ) )
                ){
                  my ($hashname);
                  $satisfied = 't';

                  if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
                    &itjhloutput ($operation [7]);
                    };
# nuclabinwfcu1
# if find deployment operon in wfc cache ref don't signal deployment

                  if ((! $Awfif::memes-> {wfcoptdep})
                  or (! defined ($hashname = $Awfif::wfcdefl-> {operon} {wsolistaschst ($operation [3], $operation [4], $Awfif::codelet-> {l} [$myli] [19])}))
                  or (!defined ($Awfif::wfchchainl-> {hashname} {$hashname}))# the evaluator has been purged
                  ){

                    $Awfif::clp = ();
                    $Awfif::clp-> {urgency} = ($Awfif::codelet-> {l} [$myli][3] ); #* $Awfif::memes-> {evlaunchm});
                    $Awfif::clp-> {action}-> {schema} = $schema;
                    $Awfif::clp-> {action}-> {signal} = $signal;
                    $Awfif::clp-> {action}-> {sws} = $Awfif::codelet-> {l} [$myli] [20];
                    $Awfif::clp-> {action}-> {wss} = $operation [3];
                    $Awfif::clp-> {action}-> {wse} = $operation [4];
                    if (($operation [5] != 0)
                    && ($operation [5] != $operation [6]) ){
                      $Awfif::clp-> {action}-> {wsgs} = $operation [5];
                      $Awfif::clp-> {action}-> {wsge} = $operation [6];
                      };#operon has a gap
# nuclabmieu5
                    if (($operation [7] != 0) ){

                      $Awfif::clp-> {action}-> {sgjhlsi} = $operation [7];
                      };#operon has a subgroup jhlsi
# nuclabmtrau1
                    $note35 = $Awfif::codelet-> {l} [$myli] [35];
                    if ( ((defined ($Awfif::codelet-> {l} [$myli] [35])) && ($Awfif::codelet-> {l} [$myli] [35] != 0))
                    && (!schabldr ($myli, $lola [$opcount], $operation [7]))
                    ){#must not propogate the transaction id to this deployment codelet

                      $Awfif::codelet-> {l} [$myli] [35] = 0;
                      };#if
                    $Awfif::clp-> {action}-> {jhlabeli} = $Awfif::codelet-> {l} [$myli][23];
# nuclabmbpoolu1
                    $bcindex = matchbreakcodelet ($myli);#note if there is a breakpoint to conserve
                    &groupsinv1 ($myli, $sponsor, trwsoadr ($sponsor,1), 0, $sponsor, 0, $operation[0], $$kwp, $kwpr, \@$sactset,
                      undef(), #deferred
                      undef(), #ignore wso name
                      't' #attempt usepooling if codelet l 38 is > 0
                      );
                    $Awfif::codelet-> {l} [$myli] [35] = $note35;
                    }#if not a wfc operon match
# nuclabinwfcu2
                  elsif ( (defined ($hashname))
                  && (defined ($Awfif::wfchchainl-> {hashname} {$hashname}))
                  ){#complete this wfc operon matched transaction

                    &compwfctran ($myli, $hashname, $lola [$opcount]);
                    };#elsif
                  }#valid operation
                elsif (($Awfif::codelet-> {l} [$myli] [35] > 0) && ($ctfifound) && (!$dontgiveup) ){#if launch is tf inhibited then terminate the transaction

                  my ($trali);
                  for ($trali = 1; $trali <= $Awfif::tral-> {i} [$Awfif::codelet-> {l} [$myli] [35]] [0]; $trali++) {

                    $Awfif::tral-> {w} [$Awfif::codelet-> {l} [$myli] [35]][ $trali ] = $Awfif::memes-> {snnh} {terminated};
                    };#for
                  };#elsif
                };#while getting satisfied
              if ($bcindex > 0) {#setup for next child

                $Awfif::memes-> {breakcodelet}[++$Awfif::memes-> {breakcodelet}[0]] = $myli;
                $Awfif::memes-> {breaksubp}[++$Awfif::memes-> {breaksubp}[0]] = $Awfif::codelet-> {l} [$myli] [36];
                };#if
              &trackcodelet ($myli, $Awfif::memes-> {codeletdef}, $Awfif::memes-> {snnh} {assocf1}, undef(), undef(), $Awfif::codelet-> {l} [$myli] [36]);
              };#if
            };# for
          if ((defined ($bcindex)) && ($bcindex > 0)) {

            $Awfif::memes-> {breaksubp}[$Awfif::memes-> {breaksubp}[0]--] = undef();
            $Awfif::memes-> {breakcodelet}[$Awfif::memes-> {breakcodelet}[0]--] = undef();
            };#if
          &trackcodelet ($myli, $Awfif::memes-> {codeletdef}, $Awfif::memes-> {snnh} {assocf1}, undef(), undef(), $Awfif::codelet-> {l} [$myli] [36]);
          };#in group
        };# sps or mps signal
      };# main line

    if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
      print ("$cdnx\n");
      };
    &clogstatx ();
    }# nuclabmbuilder1
#
#<!-- end tag inh -->
#<!-- end tag smo -->
#<!-- end tag sia -->
Market Centric Workshops
The Physics - Politics, Economics & Evolutionary Psychology
Politics, Economics & Evolutionary Psychology

Business Physics
Nature and nurture drive the business eco-system
Human nature
Emerging structure and dynamic forces of adaptation


integrating quality appropriate for each market
 
This page looks at schematic structures and their uses.  It discusses a number of examples:
  • Schematic ideas are recombined in creativity. 
  • Similarly designers take ideas and rules about materials and components and combine them. 
  • Schematic Recipes help to standardize operations. 
  • Modular components are combined into strategies for use in business plans and business models. 

As a working example it presents part of the contents and schematic details from the Adaptive Web Framework (AWF)'s operational plan. 

Finally it includes a section presenting our formal representation of schematic goals. 
Each goal has a series of associated complex adaptive system (CAS) strategy strings. 
These goals plus strings are detailed for various chess and business examples. 
Strategy
| Design |
This page uses an example to illustrate how:
  • A business can gain focus from targeting key customers,
  • Business planning activities performed by the whole organization can build awareness, empowerment and coherence. 
  • A program approach can ensure strategic alignment. 
Program Management
| Home

Profiles | Papers | Glossary | E-mail us