Schematic signals
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

Mechanisms for schematic signalling

Summary
This page discusses how
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
provides
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. 
signalling
to its
Plans are interpreted and implemented by agents.  This page discusses the properties of agents in a complex adaptive system (CAS). 
It then presents examples of agents in different CAS.  The examples include a computer program where modeling and actions are performed by software agents.  These software agents are aggregates. 
The participation of agents in flows is introduced and some implications of this are outlined. 
agent-based
applications. 
Alternative strategies for initiating the signalling are reviewed
The codelets and supporting functions are included.
Introduction
The use of
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. 
signals
in
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
simulates the action of signalling, is an emergent capability which is used by cooperating agents to support coordination & rival agents to support control and dominance.  In eukaryotic cells signalling is used extensively.  A signal interacts with the exposed region of a receptor molecule inducing it to change shape to an activated form.  Chains of enzymes interact with the activated receptor relaying, amplifying and responding to the signal to change the state of the cell.  Many of the signalling pathways pass through the nuclear membrane and interact with the DNA to change its state.  Enzymes sensitive to the changes induced in the DNA then start to operate generating actions including sending further signals.  Cell signalling is reviewed by Helmreich.  Signalling is a fundamental aspect of CAS theory and is discussed from the abstract CAS perspective in signals and sensors.  In AWF the eukaryotic signalling architecture has been abstracted in a codelet based implementation.  To be credible signals must be hard to fake.  To be effective they must be easily detected by the target recipient.  To be efficient they are low cost to produce and destroy. 
molecules, 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.   in a eukaryotic, a relatively large multi-component cell type from which yeast and multi-celled plants and animals, including humans, is constructed.  It contains modules including a nucleus and production functions such as mitochondria.   cell.  The signal is initially composed 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
provided during the submission of a model, or analogous goal, codelet.  After  the matching of the input string from the signal sender to a set of
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 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. 
jh label ids
by msublabel, and subsequent filtering, if the schematic string's label is associated in the Slipnet with a signal attribute multi-path signal (MPS) or single-path signal (SPS), and a codelet evaluator, the 'signal' label will be processed by the model/goal evaluator as follows:

Strategies for initiating a Smiley signal
The input string can be specified by the sender in a number of ways:
  • A reference to a Workspace, start and end object indexes, and a filtering strategy can be passed to labinv1.   Labinv1 expects this format of string reference.  Group completion within the groupbuilder is an example of this use model. 
  • A sequence of parameters ($Awfif::memes-> {snnh} {concept}, $Awfif::memes-> {snnh} {concept2}, $Awfif::memes-> {snnh} {concept3}) can be passed to imscjhls.   The configuration of Slipnet inhibitors is an example of this use model.
  • An array of concept ids can be passed to labinv2 to perform the match, filtering and submitcodelet of the model codelet.  Many codelets use ilaunchnc to match mps signals via labinv2.  Obtaining the jhlsid of a configured operon from its matching concept id sequence is another example of this use model.   A jhlsid is a Jeff Hawkins label space identifier. 
  • Model managers can signal model codelets with ilaunchmodel.  
  • F1 generation codelets can be signalled with resstoff and signaltrans.
Filtering ensures that only signals are included in the set of jhlsids that are forwarded to the signal codelet cascade.  ilaunchnc filters out schematic operons, and structural
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
associations.  

In ilaunchnc submitcodelet is used to queue a model codelet for each matching signal. The model codelet will begin the relay of each signal. 
The matched jhlsid of each signal is deployed as the $Awfif::clp-> {action}-> {jhlabeli} provided to submitcodelet.  
The signaltype of a matching jhlsid is associated with a model codelet as the value of the structure component $Awfif::clp-> {action}-> {signal} provided to submitcodelet. In ilaunchnc the signaltype is obtained with 'findsignal (based on a sponsoring concept, such as the $pconc passed to addjhlst in the Slipnet configuration, from the msublabel match which is also assigned to the $Awfif::clp-> {schema})'.  mps type signals are directly mapped by nuclabm codelets to subgroup operons, which are forwarded on by the cascade to become deployed operons. 

In each case the underlying mechanism is the forward transmission of the signal's jhlsid by the cascade of cooperating codelets.

Functions

#
sub findsignal {
    my($schemac)=@_;
    my ($sigtype, $found, $linki, $slinki);
# searches for signals associated with $schemac
#
# checked for merged workspaces

    if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
      my ($pr);
      $pr = $Awfif::memes->{snnih}{$schemac};
      print ("findsignal for schema concept $pr ");
      };
#
    $sigtype = 0;
    $found = '';
    $linki = $Awfif::memes-> {snw} [$Awfif::memes-> {currentwsbi}]-> {snnl} [$Awfif::memes->{snnh}{signalcategory}]; #head
    if ($linki != 0) {# at least one signal type tuple

      while (($linki != 0) && (!$found)) {
# find the match for schemac

        if (($Awfif::slipnet-> {l} [$linki][3] == $Awfif::memes-> {snnh} {cibp})) {

          $sigtype = $Awfif::slipnet-> {l} [$linki][2];
# now see if get match to schema ltype attribute
          $slinki = $Awfif::memes-> {snw} [$Awfif::memes-> {currentwsbi}]-> {snnl} [$schemac]; #head
          if ($slinki != 0) {# at least one signal tuple

            while (($slinki != 0) && (!$found)) {

              if (($Awfif::slipnet-> {l} [$slinki][3] == $Awfif::memes-> {snnh} {attrib})
              && ($Awfif::jhls-> {l}[$Awfif::slipnet-> {l} [$slinki][2]][3] == $sigtype)
              && ($Awfif::jhls-> {l}[$Awfif::slipnet-> {l} [$slinki][2]][4] == $schemac)) {

                $found = 't';
                };#if

              $slinki = $Awfif::slipnet-> {l} [$slinki][0]; #walk back from head
              };#while
            };#if
          };#if

        $linki = $Awfif::slipnet-> {l} [$linki][0]; #walk back from head
        };#while
      };#if

    if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
      my ($pr);
      if ($found) {
        $pr = $Awfif::memes->{snnih}{$sigtype};
        }
      else {
        $pr = 'not found (0)';
        };
      print ("findsignal ret $pr\n");
      };
    return ($sigtype)
    }# findsignal
#
#
sub iaddjhlinhib {
# link a reactant into the set associated with a jhlabel
#
    my ($rlist, $rjhlsi, $gsind ) = @_;# first null attribute is taken as end
    my ($labcount, $i);
    my (@parms, $sigcount, @lomatchs, @lola, @loconcs, @lostrts, @loends, @logb, @loge);
#
# checked for merged workspaces

    if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
      my ($pr);
      $pr = $Awfif::memes-> {snnih}{$gsind};
      print ("addjhlinhib gsind $pr($gsind) rjhlsi $rjhlsi");
      };
    $labcount = 0;

    $i = 0;
    while (defined ($_ [$i + 3])) {

      $parms [$i] = $_ [$i + 3];
      $i ++;
      };#while
    $sigcount = imscjhls (\@lomatchs, \@lola, \@loconcs, \@lostrts, \@loends, \@logb, \@loge, 'notoporstbinding', @parms);

    if ($sigcount > 0) {
      for ($i = 0; $i < $sigcount; $i++) {
        if ($lomatchs[$i]) {#there is a link to the inhibitor
# 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})) {

            if (!defined($Awfif::jhls-> {l} [$lola[$i]][$rjhlsi])) {
              $Awfif::jhls-> {l} [$lola[$i]][$rjhlsi] = 0;
              };
            $Awfif::jhls-> {l} [$lola[$i]][$rjhlsi] = addhli ($Awfif::jhls-> {l} [$lola[$i]][$rjhlsi], \$$rlist);
            $$rlist-> {l} [$Awfif::jhls-> {l} [$lola[$i]][$rjhlsi]][2] = $gsind;#record the reactant's pseudo concept
            };#if not operon
          };#if link
        };#for each potential signal
      };# if sigcount +ve

    if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
      print ("iaddjhlinhibx\n");
      };
    }# iaddjhlinhib
#
#
sub attlload {
# load lab with an attribute parameter set
#
    my ($lab ) = @_;# first null attribute is taken as end
    my ($labcount, $i);
#
# checked for merged workspaces

    if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
      print ("attlload ");
      };
    $labcount = 0;

    for ($i = 9; $i <= 27; $i++) {#assumes the tokens are in params 8 to 16
    if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
      my ($pr);
      $pr = $Awfif::memes-> {snnih}{$_[$i]};
      print ("attr$i $pr($_[$i]) ");
      };
      if (defined($_[$i])) {

        $labcount = labload (\@$lab, $labcount, $_[$i]);
        } # if specified
      else {
        $i = 30;# terminate the loop
        };# if not specified
      };#for
#

    if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
      print ("attlloadx ret ($labcount)\n");
      };
    return $labcount
    }# attlload
#
sub imscjhls {
# match a schematic parameter set jhlsid with an attribute parameter set
#
    my ($lomatchs, $lola, $loconcs, $lostrts, $loends, $logb, $loge, $strategy ) = @_;# first null attribute is taken as end
    my ($labcount, $sigcount);
    my (@lab);
#
# checked for merged workspaces

    if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
      print ("imscjhls ");
      };

    $labcount = attlload (\@lab, @_);
    $sigcount = labinv2 (undef(), \@lab, $labcount, \@$lomatchs, \@$lola, \@$loconcs, \@$lostrts, \@$loends, \@$logb, \@$loge, $strategy);
#

    if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
      print ("imscjhlsx ret ($sigcount)\n");
      };
    return $sigcount
    }# imscjhls
#
#
sub ilaunchmodel {#
    my($myli, $sti, $strategy, $comptype, $giveup, $kwp, $kwpr, $sactset)=@_;
    my ($i2, $whole, $cwsbi );

    if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
      my ($pr);
      $pr = $Awfif::memes-> {currentwsbi};
      print ("ilaunchmodel myli $myli ws $pr ");
      $pr = $Awfif::memes-> {snnih} {wsbasetype ($sti)};
      print (" i $pr($sti) ");
      };
# updated for merged workspaces
    $cwsbi = $Awfif::memes-> {currentwsbi};
# ilaunchmodel is inverted from partwhole

    $whole = '';
    $$giveup = '';
    $i2 = 0;
    if ($Awfif::pcache-> {p} [$Awfif::memes-> {currentwsbi}] != 0) {# there are parts
# see if the modelling still needs to agree this part is whole
      if ((!($whole = findbond ($Awfif::wsol-> {l} [ awsoadr ($sti)] [2], $comptype, wsbasetype ($sti), $Awfif::memes-> {snnh} {model})))
      && ((!($$giveup = findbond ($Awfif::wsol-> {l} [ awsoadr ($sti)] [2], $Awfif::memes-> {snnh} {stop}, wsbasetype ($sti), $Awfif::memes-> {snnh} {model}))) )
      && (!findbond ($Awfif::wsol-> {l} [ awsoadr ($sti)] [2], $Awfif::memes-> {snnh} {start}, wsbasetype ($sti), $Awfif::memes-> {snnh} {model}))
      ){
# model the part

        &setusalcwsocache (awsoadr ($sti), undef(), (($Awfif::memes-> {strbool}[$Awfif::memes-> {streh} {$strategy}]) | $Awfif::memes-> {strbool}[$Awfif::memes-> {streh} {delta}]), undef());
        $Awfif::wsol-> {l} [awsoadr ($sti)][2]
          = setupdesc ( wsbasetype ($sti),
              ($Awfif::memes-> {snnh} {wsi} + $Awfif::memes-> {snnh} {start}), #add wsi to match findbond
              $Awfif::memes-> {snnh} {model},
              $Awfif::wsol-> {l} [awsoadr ($sti)][2],
              awsoadr ($sti));
        $Awfif::memes-> {fatp} = $Awfif::memes-> {fatp} + $Awfif::memes-> {batp};
# send activation to the involved Slipnet nodes
        &actnodes ( wsbasetype ($sti), $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 (wsbasetype ($sti), $Awfif::memes-> {strbool} [$Awfif::memes-> {streh} {'tdgroup'}]);
        &itwscachecor ('tdgroup', wsbasetype ($sti), 'seq', 'ilaunchmodel');
        };# no model descriptor

      if ((!$$giveup) && (!$whole)) {#
# request modelling
        &ilaunchnc ($myli, $sti, $strategy, $comptype, \$giveup, $kwp, $kwpr, \@$sactset);
        }# if request modeller
      };# if
    $Awfif::memes-> {currentwsbi} = $cwsbi;

    if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
      print ("ilaunchmodelx ret ($whole)\n");
      };
    return $whole
    }# ilaunchmodel
#
#
sub ilaunchnc {# inversion of part of launchmodel
    my($myli, $sti, $strategy, $comptype, $giveup, $kwp, $kwpr, $sactset, $mparams, $usetrans, $transid, $transtatus, $subprogram, $jhlabeli, $jhlabeloi, $newli, $hiurg, $usepooling, $buildoffurg, $remvboosturg)=@_;
    my ($i, $linki, $cwsbi, $launched, $usedbice, $subp, $usedpooling );
    my ($labcount, $sigcount, $hchain, $bcount);
    my (@lomatchs, @lola, @loconcs, @lostrts, @loends, @logb, @loge, @lab);

    if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
      my ($pr);
      $pr = $Awfif::memes-> {currentwsbi};
      print ("ilaunchnc myli $myli ws $pr ");
      if (defined ($strategy)) {
        print ("strategy $strategy ");
        };#if
      if (defined ($comptype)) {
        print ("comptype $comptype ");
        };#if
      if (defined ($$giveup)) {
        print ("giveup $$giveup ");
        };#if
      if (defined ($mparams)) {
        print ("mparams $mparams ");
        };#if
      if (defined ($usetrans)) {
        print ("usetrans $usetrans ");
        };#if
      if (defined ($$transid)) {
        print ("transid $$transid ");
        };#if
      if (defined ($subprogram)) {
        print ("subprogram $subprogram ");
        };#if
      if (defined ($hiurg)) {
        print ("hiurg $hiurg ");
        };#if
      if (defined ($$usepooling)) {
        print ("usepooling($$usepooling) ");
        };#if
      if (defined ($buildoffurg)) {
        print ("buildoffurg($buildoffurg) ");
        };#if
      if (defined ($remvboosturg)) {
        print ("remvboosturg($remvboosturg) ");
        };#if
      };
# updated for merged workspaces

    $cwsbi = $Awfif::memes-> {currentwsbi};
    $launched = '';
# ilncupoolu3
    if ((defined ($$usepooling)) && ($$usepooling > 0)) {

      my ($linkp, $bcindex);
      $linkp = $$usepooling;
# ilncupoolu4
      $bcindex = matchbreakcodelet ($myli);
      while ($linkp != 0) {

        $Awfif::codelet-> {l} [ $Awfif::poolcl-> {l} [$linkp] [2] ] [38]++;#add to each element of the pool
        $linkp = $Awfif::poolcl-> {l} [$linkp] [0];
        if (($bcindex > 0) #handle break codelet
        && (matchbreakcodelet ($Awfif::poolcl-> {l} [$linkp] [2]) == 0) #not already in list
        ){

          $Awfif::memes-> {breakcodelet} [++$Awfif::memes-> {breakcodelet} [0]] = $Awfif::poolcl-> {l} [$linkp] [2];
          if ($Awfif::codelet-> {l} [$myli] [36] > 0) {

            $Awfif::memes-> {breaksubp} [++$Awfif::memes-> {breaksubp} [0]] = $Awfif::codelet-> {l} [$myli] [36];
            };#if subprogram
          };#if
        };#while not at tail
      if ($bcindex > 0) {

        &remarrent ($bcindex, \@{$Awfif::memes-> {breakcodelet}});
        &remarrent ($bcindex, \@{$Awfif::memes-> {breaksubp}});
        };#if
      }#if
    else {
    $labcount = $Awfif::memes-> {binds}-> {$strategy}->
          ($myli, $sti, \@lab, $kwp, $kwpr, \@$sactset);

    $usedbice = '';
    if ($Awfif::codelet-> {l} [$myli][36] > 0) {

      $subp = $Awfif::codelet-> {l} [$myli][36];
      };# if - or if 0 subp will be undef
    if ((($linki = getilab ($myli, $strategy, $labcount, \@lab, \$hchain, $subp)) != 0)
    && ($hchain != 0)
    ) {#usebice cache setup

      $sigcount = usebice ($Awfif::ilabhcl-> {l} [$linki][4], \@lomatchs, \@lola, \@loconcs, \@lostrts, \@loends, \@logb, \@loge);
      $usedbice = 't';
      }#if
    else {

      $bcount = 0;
      $sigcount = labinv2 ($myli, \@lab, $labcount, \@lomatchs, \@lola, \@loconcs, \@lostrts, \@loends, \@logb, \@loge, 'notoporstbinding');
      };#else
# apply the linking function of group completion
# if the groups labels result in a match with a signal then raise the signal
#

    if ($sigcount > 0) {
      for ($i = 0; $i < $sigcount; $i++) {
        if ($lomatchs[$i]) {#there is a link launch the model scout
# ilncufilu1

# unless this is an operon where it should be filtered out
          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})) {

            $Awfif::clp = ();
            if ((defined($myli))
            && ((!defined($Awfif::codelet-> {l} [$myli] [13]))
              or ((defined($Awfif::codelet-> {l} [$myli] [13])) && ($Awfif::codelet-> {l} [$myli] [13] == 0)))
            && (((defined ($Awfif::wsol-> {l} [awsoadr ($sti)] [8]) )
              && ( $Awfif::wsol-> {l} [awsoadr ($sti)] [8] != 0))
                      or (
                        $Awfif::wsol-> {l}[awsoadr ($sti)][ $Awfif::memes-> {wsologucount}]#*** submacrok ***#
                          != 0))) {&break()};
            $Awfif::clp-> {log} = $Awfif::codelet-> {l} [$myli][13];
            if ( (defined ($buildoffurg)) && ($buildoffurg)
            ){#

              $Awfif::clp-> {urgency} *= $Awfif::memes-> {pappbu};
              };#if
            if ( (defined ($remvboosturg)) && ($remvboosturg) ) {

              if ( (defined ($hiurg)) && ($hiurg) ) {

                $Awfif::clp-> {urgency} = (($Awfif::codelet-> {l} [$myli][3] * $Awfif::memes-> {evlaunchhim}) / $Awfif::memes-> {vbttoamxmult});#already hiurg
                }#if
              else {

                $Awfif::clp-> {urgency} = (($Awfif::codelet-> {l} [$myli][3] * $Awfif::memes-> {evlaunchm}) / $Awfif::memes-> {vbttoamxmult});
                };#else
              }#if
            elsif ( (defined ($hiurg)) && ($hiurg) ) {

              $Awfif::clp-> {urgency} = ($Awfif::codelet-> {l} [$myli][3] * $Awfif::memes-> {evlaunchhim});
              }#elsif
            else {

              $Awfif::clp-> {urgency} = ($Awfif::codelet-> {l} [$myli][3] * $Awfif::memes-> {evlaunchm});
              };#else
            if ($Awfif::codelet-> {l}[$myli][19] ne '') {

              $Awfif::clp-> {wsi} = $Awfif::codelet-> {l}[$myli][19];
              }#wsi set
            else {

              $Awfif::clp-> {wsi} = $Awfif::memes-> {currentwsbi};
              };
# ilnctgu
            if ( (defined ($usetrans)) && ( defined ($Awfif::jhls-> {l} [$lola[$i]][18])) ){#transactional protection
# there are transactionally protected members

              if ( ($usetrans > 0) ){#transaction id already allocated

                $Awfif::clp-> {action}-> {transid} = $usetrans;
                }#if
              else {#new transaction to setup

                $$transid = transalloc ($myli, $Awfif::memes-> {snnh} {transid}, $lola[$i], undef(), \$$transtatus);
                $Awfif::clp-> {action}-> {transid} = $$transid;
                };#else
              };#if
            if ((defined ($subprogram)) && ($subprogram > 0) ){#
# ilnctsubpu

              $Awfif::clp-> {action}-> {subpi} = $subprogram;
              }#if
            $Awfif::clp-> {strategy} = "tmodelscout";
            $Awfif::clp-> {action}-> {sponsor} = $sti;

            $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}-> {wse} = $loends[$i];
# ilncupoolu
            if (defined ($$usepooling)) {

              $usedpooling = 't';
              };#if
            if (($logb[$i] != 0)
            && ($logb[$i] != $loge[$i]) ){

              $Awfif::clp-> {action}-> {wsgs} = $logb[$i];
              $Awfif::clp-> {action}-> {wsge} = $loge[$i];
              };#operon has a gap
            $Awfif::clp-> {action}-> {jhlabeli} = $lola[$i];
# ilncolu
            $Awfif::clp-> {action}-> {jhlabeloi} = $Awfif::codelet-> {l} [$myli][30];
            $Awfif::clp-> {action}-> {wsoname} = 0;#models don't use a wso
# ilncmpu
            $newli = mcdsubmitcodelet ($myli, \$Awfif::clp, $mparams);
# ilncupoolu2

            if ($usedpooling){

              my ($linkp);
              $$usepooling = addpoolc ($newli, $$usepooling);#addpoolc will ensure the [38] of each codelet is the same across the elements in the list
              $linkp = $$usepooling;

              $Awfif::codelet-> {l} [ $Awfif::poolcl-> {l} [$linkp] [2] ] [38] = 1;#add to the pool
              };#if
            &trackcodelet ($myli, $newli, $Awfif::memes-> {snnh} {add});
            $launched = 't';
            $bcount++;
            if ( (defined ($$jhlabeli)) && (defined ($$jhlabeloi)) ){

              $$jhlabeli = $lola[$i];
              $$jhlabeloi = $Awfif::codelet-> {l} [$myli][30];
              };#if
            }; #if its not an operon
          };#launch the action scout
        };#for
      };
    if (!$launched) {

      break ();
      }#if
    elsif (!$usedbice) {

      &addilab ($myli, $strategy, $labcount, \@lab, addbice ($Awfif::memes-> {currentwsbi}, $bcount, 5, $sigcount, \@lomatchs, \@lola, \@loconcs, \@lostrts, \@loends, \@logb, \@loge), $subp);
      };#elsif
      };#else
    $Awfif::memes-> {currentwsbi} = $cwsbi;

    if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
      print ("ilaunchncx\n");
      };
    }# ilaunchnc
#
#<!-- start tag sia -->
#
sub signaltrans {# signal subtransactions
    my($myli, $asponsor, $atelhwso, $usetrans, $stransmgrid, $transid, $transtatus, $kwp, $kwpr, $sactset, $cwsbi, $hiurg)=@_;
    my ($depsubs);

no strict 'refs';
    if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
      print ("signaltrans myli $myli usetrans $usetrans transtatus($$transtatus) cwsbi $cwsbi ");
      if (defined ($hiurg)){
        print ("hiurg($hiurg) ");
        };#if
      };#if

    my ($dummy, $giveup);
    $Awfif::memes-> {currentwsbi} = $cwsbi;
    &ilaunchnc ($myli, $dummy, 'cassuboppi', $Awfif::memes-> {snnh} {cascompsopp}, \$giveup, $kwp, $kwpr, \@$sactset,
      32, #mask out codelet-> {l} [32] i.e. {tfree}
      $usetrans,
      \$$transid,
      \$$transtatus
      ,$Awfif::codelet-> {l} [$myli] [36],
      undef (), #jhlabeli
      undef (), #jhlabelo1
      undef (), #newli
      $hiurg
      );
    $depsubs = 't';
    if (($usetrans == 0) && (defined ($transid) && ( ($transtatus == $Awfif::memes-> {snnh} {completed}) or ($transtatus == $Awfif::memes-> {snnh} {incomplete}))) ){#record the transid

      &transmgr ($myli, $myli, $Awfif::memes-> {snnh} {update}, $Awfif::memes-> {snnh} {assoctran}, $asponsor, $Awfif::memes-> {snnh} {stran}, $transid, $Awfif::codelet-> {l} [$myli] [36], $stransmgrid);
      &transmgr ($myli, $myli, $Awfif::memes-> {snnh} {add}, $Awfif::memes-> {snnh} {assocf1}, $atelhwso, $Awfif::memes-> {snnh} {stran}, undef(), $Awfif::codelet-> {l} [$myli] [36], $Awfif::codelet-> {l} [$myli] [37], $Awfif::codelet-> {l} [$myli] [36]);
      };#if

    $Awfif::memes-> {currentwsbi} = $cwsbi;
    if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
      print ("signaltransx ret ($depsubs)\n");
      };
    return $depsubs #
    }# signaltrans
#
#
sub resstoff1 {# find the transactional state of f1 signalled codelets
    my($myli, $sponsor, $kwp, $kwpr, $sactset, $strategy, $iusetrans, $f1transid, $f1trmgrid, $transtatus, $transid, $stransmgrid, $samesubpid, $reportcaspart, $jhlabeli, $jhlabeloi, $buildoffurg)=@_;
    my ($usetrans, $jhlabeliav, $mswso, $giveup, $cwsbi, $asponsor);

no strict 'refs';
    if (
    (defined ($Awfif::memes-> {resstoffd}))
    && ($Awfif::memes-> {resstoffd})
    ){#

      &break ();
      };#if
    if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
      my ($pr);
      print ("resstoff1 ");
      $pr = $Awfif::codelet-> {l} [$myli] [2];
      print ("myli $myli caller($pr) sponsor($sponsor) strategy($strategy) iusetrans($iusetrans) f1transid($$f1transid) f1trmgrid($$f1trmgrid) ");
      if ($Awfif::memes-> {snnih} {$$transtatus} > 0) {
        $pr = $Awfif::memes-> {snnih} {$$transtatus};
        };#if
      print ("transtatus($pr($$transtatus)) transid($$transid) stransmgrid($$stransmgrid) samesubpid($$samesubpid) reportcaspart($$reportcaspart) jhlabeli($$jhlabeli) jhlabeloi($$jhlabeloi) ");
      };#if

    $cwsbi = $Awfif::memes-> {currentwsbi};
    $Awfif::memes-> {currentwsbi} = $Awfif::codelet-> {l} [$myli] [20];
    $asponsor = awsoadr ($sponsor);
    $usetrans = $iusetrans;

    if (($$f1trmgrid > 0)
    && (!tralcomp ($myli, $$f1transid))
    ){

      my ($subpid, $casst);#need to support cascade with signal to nucleus
      if ($Awfif::codelet-> {l} [$myli] [36] > 0) {

        $subpid = $Awfif::codelet-> {l} [$myli] [36];
        $$jhlabeli = 0;
        $$jhlabeloi = 0;
        $casst = 'cassuboppi';
        }#if
      else {

        $casst = $strategy;
        $reportcaspart = '';#may have found the sub-transaction is complete but gaps still need the cascade sponsors support
        };#else

      $jhlabeliav = 't';
      $Awfif::memes-> {currentwsbi} = $Awfif::codelet-> {l} [$myli] [20];
      &ilaunchnc ($myli, $mswso, $casst, $Awfif::memes-> {snnh} {cascompsopp}, \$giveup, $kwp, $kwpr, \@$sactset,
        '32,37', #mask out codelet-> {l} [32] i.e. {tfree}
        $usetrans,
        \$$transid,
        \$$transtatus,
        $subpid, #signal sub-program
        \$$jhlabeli,
        \$$jhlabeloi,
        undef (), #newli
        undef (), #hiurg
        undef (), #usepooling
        $buildoffurg #buildoffurg
        );
      }#if
    else {

      &transmgr ($myli, $myli, $Awfif::memes-> {snnh} {update}, $Awfif::memes-> {snnh} {assoctran}, $asponsor, $Awfif::memes-> {snnh} {stran}, 0, 0, $$stransmgrid);
      if ($Awfif::codelet-> {l} [$myli] [36] != 0) {

        &transmgr ($myli, $myli, $Awfif::memes-> {snnh} {remove}, $Awfif::memes-> {snnh} {assocf1}, undef(), $Awfif::memes-> {snnh} {rtran}, undef(), $Awfif::codelet-> {l} [$myli] [36], $$stransmgrid);
        };#if
      };#else
    if ($reportcaspart) {#

      &transalloc ($myli, $Awfif::memes-> {snnh} {casparticipant}, undef(), $Awfif::codelet-> {l} [$myli] [35], \$$transtatus);
      };

    $Awfif::memes-> {currentwsbi} = $cwsbi;
    if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
      my ($pr);
      if ($Awfif::memes-> {snnih} {$$transtatus} > 0) {
        $pr = $Awfif::memes-> {snnih} {$$transtatus};
        };#if
      print ("resstoff1x f1transid($$f1transid) f1trmgrid($$f1trmgrid) transtatus($pr($$transtatus)) transid($$transid) stransmgrid($$stransmgrid) samesubpid($$samesubpid) reportcaspart($$reportcaspart) jhlabeli($$jhlabeli) jhlabeloi($$jhlabeloi) ret $usetrans\n");
      };
    return $usetrans
    }# resstoff1
#
#<!-- start tag ws -->
#
sub labinv1 {
    my ($myli, $as, $ae, $ael, $sponsor, $lomatchs, $lola, $loconcs, $lostrts, $loends, $logb, $loge, $filstrategy) = @_;
    my ($i, $i2, $label, $type, $ltype, $sigcount, $aer);
# inversion of group builder complete's label space code
#
# checked for merged workspaces

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

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

    $i = trwsoadr ($as, 1);
    while ((($ael && !$aer) or (!$ael && ($i != $ae))) && ( awsoadr ($i) != 0)) {
      my($kwai, $akwai, $kws, $kwl, $slab);
      if ($ael && ($i == $ae)) {

        $aer = 't';
        };#if
# sponsor is now stable can mark its position in group members wso

      if ($sponsor ne '') {# if use defined here no work gets done???

        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} ] != $sponsor)
        ){

          &break ();
          };#if
        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

      $type = ' ' . wsbasetype ($i);
      $slab = getwsost4 ($i);
      if ((($type == $Awfif::memes-> {snnh} {mkeywords}) or ($type == $Awfif::memes-> {snnh} {mkeyworde})) && (mkwlabel (\$slab, \$kwai, \$akwai, \$kws, \$kwl)) && (!ismemetic ($akwai))) {
# labinv1m1
        my ($sparam, $param, $param2);
        $sparam = jhlmappl ($kws);

        if ($sparam =~ /,/) {
          while ($sparam =~ /(\d+)+(,)*/i) {

            $param = $1;
            $param2 = $2;
            $sparam =~ s/$param$param2//;
            $type = ' '.$param;
            $label = $label.$type;
            $$lostrts[$i2++] = $i;
            };#while
          };#if
        $ltype = '';#no repeats on mkeyword
        }
      else {
        if ($type eq ' '.wsbasetype ( trwsoadr ($i, 1))) {#note repeat

          $type = '_' . wsbasetype ($i);
          };#repeat
        if ($ltype ne $type) {# ignore repeats

          $label = $label.$type;
          $$lostrts[$i2++] = $i;
          };#build direct label
        $ltype = $type;
        };#else
      $i = trwsoadr ($i, 1);
      };#for
# apply the linking function of group completion
# if the groups labels result in a match with a signal then raise the signal
#

    $sigcount = msublabel1 ($myli, \$label, \@$lomatchs, \@$lola, \@$loconcs, \@$lostrts, \@$loends, \@$logb, \@$loge, $filstrategy);

    if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
      print ("labinv1x ret $sigcount\n");
      };
    return $sigcount
    }# labinv1
#<!-- end tag ws -->
#
sub labinv2 {
    my ($myli, $lab, $labcount, $lomatchs, $lola, $loconcs, $lostrts, $loends, $logb, $loge, $filstrategy, $stws, $srws, $erws) = @_;
    my ($i, $i2, $label, $type, $ltype, $sigcount);
# stws parameter is optional in msublabel1. It is a specific filter used in some filter strategies
# inversion of group builder complete's label space code
#
# checked for merged workspaces

    if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
      print ("labinv2 labcount $labcount ");
      };

    $label = '';
    $ltype = '';
    $i2 = 0;

    for ($i = 1; $i <= $labcount; $i++) {
      my ($sparam, $param, $param2);
      $sparam = $$lab [$i];
# labinv2m1
      if ($sparam =~ /,/) {

        while ($sparam =~ /(\d+)+(,)*/i) {
          $param = $1;
          $param2 = $2;
          $sparam =~ s/$param$param2//;
          $type = ' '.$param;
          $label = $label.$type;
          $$lostrts[$i2++] = $i;
          };#while
        $ltype = '';#no repeats on mkeyword
        }#if
      else {
        $type = ' ' . $$lab [$i];
        if ($type eq ' '. $$lab [$i + 1]) {#note repeat

          $type = '_' . $$lab [$i];
          };#repeat
        if ($ltype ne $type) {# ignore repeats

          $label = $label.$type;
          $$lostrts[$i2++] = $i;
          };#build direct label
        $ltype = $type;
        };#else
      };#for
# apply the linking function of group completion
# if the groups labels result in a match with a signal then raise the signal
#

    $sigcount = msublabel1 ($myli, \$label, \@$lomatchs, \@$lola, \@$loconcs, \@$lostrts, \@$loends, \@$logb, \@$loge, $filstrategy, $stws, $srws, $erws);

    if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
      print ("labinv2x ret $sigcount\n");
      };
    return $sigcount
    }# labinv2
#
#<!-- start tag ws -->
#
sub labload {
    my ($lab, $labcount, $concept) = @_;
    my ($count);

    if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
      my ($pr);
      $pr = $Awfif::memes-> {snnih}{$concept};
      print ("labload labcount $labcount concept $pr($concept) ");
      };

    $count = $labcount + 1;
    $$lab [$count] = $concept;

    if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
      print ("labloadx ret $count\n");
      };
    return $count
    }# labload
#
#<!-- end tag ws -->
#
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
#
#<!-- end tag gc -->
#
sub tnuclabgscout1 {
    my ($myli, $kwp, $kwpr, $sactset) = @_;#The ignored parameters are required by the codelet calling architecture
    my ($sponsor, $signal, $schema, $i, $ai, $sgdi, $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, 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
# else {#? failed so sponsor creation of one

# &arework ($myli, $Awfif::codelet-> {l} [$myli][4], $Awfif::codelet-> {l} [$myli][10], 'tngs', $Awfif::codelet-> {l} [$myli][7], $Awfif::codelet-> {l} [$myli][10]);
      }# rework
    elsif ($proceed) {#main line
      my ($i);
# Top-down nuclear label group scouts search completed groups looking for a match with their sponsoring label
# where ever they find a completed group they will ask an evaluator to check and then if there is a match 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])))) {
# From the tail to the head of the workspace find group sponsors
        $i = $Awfif::wsbl->{wsot}[$Awfif::memes-> {currentwsbi}];
        $ai = awsoadr ($i);
        while ($i != $Awfif::wsbl->{wsoh}[$Awfif::memes-> {currentwsbi}]) {
          if (fgrpd ($myli, $i, \$sgdi, $Awfif::memes->{snnh}{groupcategory})) {

            $sponsor = fgrpsponsor ($i, $Awfif::workspace-> {l} [$sgdi] [3], $Awfif::memes-> {snnh} {groupcategory});
# now skip to the end of this group and keep processing
            $Awfif::clp = ();
            $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, 'nuclabgevaluator', $$kwp, $kwpr, \@$sactset);
            $i = fgrpend ($sponsor);
            };#in group
# get the next one
          $i = trwsoadr ($i,1);
          $ai = awsoadr ($i);
          };#while looking for groups
        };# sps or mps signal
      };# main line

    if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
      print ("$cdnx\n");
      };
    &clogstatx ();
    }# tnuclabgscout1
#
sub tnuclabgscout2 {
    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 = ();
# tnuclgubo1
        $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, 'nuclabgevaluator', $$kwp, $kwpr, \@$sactset);
        };# sps or mps signal
      };# main line

    if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
      print ("$cdnx\n");
      };
    &clogstatx ();
    }# tnuclabgscout2
#
sub nuclabgevaluator1 {
    my ($myli, $kwp, $kwpr, $sactset) = @_;#The ignored parameters are required by the codelet calling architecture
    my ($sponsor, $signal, $schema, $i, @lomatchs, @lola, @loconcs, @lostrts, @loends, @logb, @loge, $operoncount, $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, 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 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];
        $operoncount = operonmatch ($myli, $sws, $wss, $wse, \@lomatchs, \@lola, \@loconcs, \@lostrts, \@loends, \@logb, \@loge);
        if ($operoncount > 0) {

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

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

            $Awfif::clp = ();
            $Awfif::clp-> {action}-> {schema} = $schema;
            $Awfif::clp-> {action}-> {signal} = $signal;
            $Awfif::clp-> {action}-> {sws} = $Awfif::memes->{currentwsbi};
            $Awfif::clp-> {action}-> {wss} = $lostrts[$i];
            $Awfif::clp-> {action}-> {wse} = $loends[$i];
            $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 , 'nuclabgbuilder', $$kwp, $kwpr, \@$sactset);
            };#if
          };#in group
        };# sps or mps signal
      };# main line

    if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
      print ("$cdnx\n");
      };
    &clogstatx ();
    }# nuclabgevaluator1
#
sub nuclabgbuilder1 {
    my ($myli, $kwp, $kwpr, $sactset) = @_;#The ignored parameters are required by the codelet calling architecture
    my ($sponsor, $signal, $schema, $i, @lomatchs, @lola, @loconcs, @lostrts, @loends, @logb, @loge, $operoncount, $proceed, $swstype, $noswstype,
      $grkwp, $grkwpr, @operation, $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);
# 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
# 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];
        $operoncount = operonmatch ($myli, $sws, $wss, $wse, \@lomatchs, \@lola, \@loconcs, \@lostrts, \@loends, \@logb, \@loge);
        if ($operoncount > 0) {
# use selsalact to identify salient areas of the subschema

# @operation = selsalact ($myli, $sws, $wss, $wse, $operoncount, \@lomatchs, \@lola, \@loends, \@lostrts, \@loge, \@logb, \@$sactset);
          @operation = selsaliam ($myli, $sws, $wss, $wse, $operoncount, \@lomatchs, \@lola, \@loends, \@lostrts, \@loge, \@logb, \@$sactset, $Awfif::memes-> {snnh} {actioncategory});
          if ($operation[0] != 0) {
#
            $Awfif::clp = ();
            $Awfif::clp-> {urgency} = ($Awfif::codelet-> {l} [$myli][3] );
            $Awfif::clp-> {action}-> {schema} = $schema;
            $Awfif::clp-> {action}-> {signal} = $signal;
            $Awfif::clp-> {action}-> {sws} = $Awfif::memes->{currentwsbi};
            $Awfif::clp-> {action}-> {wss} = $lostrts[$i];
            $Awfif::clp-> {action}-> {wse} = $loends[$i];
            $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, $operation[0], $$kwp, $kwpr, \@$sactset);
            };#valid operation
          };#in group
        };# sps or mps signal
      };# main line

    if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
      print ("$cdnx\n");
      };
    &clogstatx ();
    }# nuclabgbuilder1
#
#<!-- start tag gc -->
#
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 -->
#<!-- end tag gc -->
#
sub tnsdepscout1 {
    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])))
      && ( findtelhd ($Awfif::codelet-> {l} [$myli] [20]) > 0)) {
# now skip to the end of this group and keep processing
        $Awfif::clp = ();
        $Awfif::clp-> {urgency} = ($Awfif::codelet-> {l} [$myli][3] );
        $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, 'nsdepevaluator', $$kwp, $kwpr, \@$sactset, undef (), 't');
        };# sps or mps signal
      };# main line

    if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
      print ("$cdnx\n");
      };
    &clogstatx ();
    }# tnsdepscout1
#
sub nsdepevaluator1 {
    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])))
      && ( findtelhd ($Awfif::codelet-> {l} [$myli] [20]) > 0)) {
# now skip to the end of this group and keep processing
        $Awfif::clp = ();
        $Awfif::clp-> {action}-> {schema} = $schema;
        $Awfif::clp-> {action}-> {signal} = $signal;
        $Awfif::clp-> {urgency} = ($Awfif::codelet-> {l} [$myli][3] * $Awfif::memes-> {blaunchm});
        $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, 'nsdepbuilder', $$kwp, $kwpr, \@$sactset, undef (), 't');
        };# sps or mps signal
      };# main line

    if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
      print ("$cdnx\n");
      };
    &clogstatx ();
    }# nsdepevaluator1
#
#<!-- start tag sia -->
#<!-- start tag scc -->
#<!-- start tag uts -->
#<!-- start tag ds -resweb -->
#
sub nsdepbuilder1 {
    my ($myli, $kwp, $kwpr, $sactset) = @_;#The ignored parameters are required by the codelet calling architecture
    my ($sponsor, $signal, $schema, $proceed, $swstype, $noswstype, $telhdr, $atelhdr, $telhdrp1,
    $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
      my ($i, $dontdepiedesc, $bcindex);
# 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])))) {
        $dontdepiedesc = '';
        if (($Awfif::codelet-> {l} [$myli][30] ne '') && ($Awfif::codelet-> {l} [$myli][30] != 0)) {
          my ($pr);
# nsdepbosu

          $pr = $Awfif::codelet-> {l} [$myli][30];
          };#must add original sponsor to telomeric details
# nsdepubo1
# engage suppressor
        my ($sigcount, @lomatchs, @lola, @loconcs, @lostrts, @loends, @logb, @loge, $gsws, $gswso, $agswso, $cwsbi2, $counteri);
        if ( (ifindb ($myli, 1, 'goalsupp', \$sigcount, \@lomatchs, \@lola, \@loconcs, \@lostrts, \@loends, \@logb, \@loge, $$kwp, $kwpr, \@{$Awfif::memes-> {sactset}}) == 1)
        ){#

          $gswso = getfbws ($myli, $sigcount, \@lomatchs, \@lola, \$gsws);
          if ( (ifindb ($myli, 1, 'goalscon', \$sigcount, \@lomatchs, \@lola, \@loconcs, \@lostrts, \@loends, \@logb, \@loge, $$kwp, $kwpr, \@{$Awfif::memes-> {sactset}}, $gsws) == 1)
          ){#
            $gswso = getstsbws ($myli, $sigcount, \@lomatchs, \@lola, $gsws);
            $cwsbi2 = $Awfif::memes-> {currentwsbi};
            $Awfif::memes-> {currentwsbi} = $gsws;
            $agswso = awsoadr ($gswso);
# if find a notgcompleted then deploy a backoff
            if (findcounter ($Awfif::wsol-> {l} [$agswso][2], $Awfif::memes-> {snnh} {notgcompleted}, \$counteri)) {

              $Awfif::wsol-> {l} [$agswso][2]
                = inccounter (
                  undef (),
                  undef (),
                  $Awfif::memes-> {snnh} {backoff},
                  $Awfif::wsol-> {l} [$agswso] [2],
                  $agswso);
              };#if
            $Awfif::memes-> {currentwsbi} = $cwsbi2;
            };#if goal suppressor present
          };#if
# nsdepieu2
# if there is a sgjhlsi which is marked with deployment cache jhlsi
# nsdepbsubpiu2

        if ((defined ($Awfif::codelet-> {l} [$myli] [31]))
        && ($Awfif::jhls-> {l} [$Awfif::codelet-> {l} [$myli] [31]] [15] [0])
        && (defined ($Awfif::jhls-> {l} [$Awfif::codelet-> {l} [$myli] [31]] [15] [3]))
        && ($Awfif::jhls-> {l} [$Awfif::codelet-> {l} [$myli] [31]] [15] [3] != 0)
        ){
          my ($cwsbi);

          $cwsbi = $Awfif::memes-> {currentwsbi};
          $Awfif::memes-> {currentwsbi} = $Awfif::codelet-> {l} [$myli] [20];
# nsdeptrmau2
          ($telhdr=$Awfif::jhls-> {l} [$Awfif::codelet-> {l} [$myli] [31]] [15] [3]);
          $atelhdr = awsoadr ($telhdr);
          $telhdrp1 = trwsoadr ($telhdr, 1);
          if ((defined ($Awfif::memes-> {nsdepschemabreak}))
          && ($telhdrp1 == $Awfif::memes-> {nsdepschemabreak})
          ){

            &break ();
            };#if
# now it should not be reasonable for there to be two transmgrids for the same subpid atelhwso pairing but this is the time we setup the transmgrid for a new atelhwso
          $Awfif::codelet-> {l}[$myli] [37] = assandmaptran ($myli, $myli, $Awfif::codelet-> {l}[$myli] [37], $atelhdr, $Awfif::memes-> {snnh} {rtran}, $Awfif::codelet-> {l}[$myli] [36]);
# nsdepieu3
          ¬gcompleted ($myli,
            $telhdrp1,
            teltail ($Awfif::jhls-> {l} [$Awfif::codelet-> {l} [$myli] [31]] [15] [3]),
            undef(), #esupp
            undef(), #strategy
            undef(), #dontamp
            undef(), #stws
            undef(), #issubp
            undef(), #subp
            't', #nodebug
            't', #nodelayselect
            undef (), #delayselamp
            't' #usepooling
            );# sponsor should be one after telomeric header
          if (($bcindex = matchbreakcodelet ($myli)) > 0) {

            &remarrent ($bcindex, \@{$Awfif::memes-> {breakcodelet}});
            $Awfif::memes-> {breakthwso} [ ++$Awfif::memes-> {breakthwso} [0]] = $atelhdr;
            $Awfif::memes-> {breakthsubp} [ ++$Awfif::memes-> {breakthsubp} [0]] = $Awfif::memes-> {breaksubp}[$bcindex];
            &remarrent ($bcindex, \@{$Awfif::memes-> {breaksubp}});
            };#if
          &trackcodelet ($myli, $myli, $Awfif::memes-> {snnh} {telomere}, undef(), $atelhdr, $Awfif::codelet-> {l} [$myli] [36]);
          $dontdepiedesc = 't';
          if ( ($Awfif::codelet-> {l} [$myli] [17] == 0)
          && ($telhdr != 0)
          ){#ensure that codelet sponsor is set before do any roleout

            $Awfif::codelet-> {l} [$myli] [17] = $telhdrp1;
            };#if
# switch back ws
          $Awfif::memes-> {currentwsbi} = $cwsbi;
          }#if
        else {

          &depssast ($myli, $sponsor, $Awfif::codelet-> {l} [$myli] [20], $Awfif::codelet-> {l} [$myli][21], $Awfif::codelet-> {l} [$myli][22], $Awfif::memes-> {currentwsbi});
          $Awfif::memes-> {newdep}++;#note that there are new telomeric schemata for applycodelet etc
          };
# nsdepbieu1
# if there is a sgjhlsi

        if ((defined ($Awfif::codelet-> {l} [$myli] [31]))
# && the ie cache is enabled
        && ($Awfif::jhls-> {l} [$Awfif::codelet-> {l} [$myli] [31]] [15] [0])
        && (!$dontdepiedesc)
        ){
          my ($ni, $ani, $descid, $cwsbi, @matches, @matchne, @matchni, $endmatch);
# get the telomeric header (it should have one in this situation and in the target ws it will point to the latest telomeric header wso)

          if ((($descid = findtelhd ($Awfif::codelet-> {l} [$myli] [20]))>0)
          && (($ni = ($Awfif::workspace-> {l} [$descid] [2] - $Awfif::memes-> {snnh} {wsi})) > 0)
          ) {
# so can deploy descriptor
# go to the target ws

            $cwsbi = $Awfif::memes-> {currentwsbi};
            $Awfif::memes-> {currentwsbi} = $Awfif::codelet-> {l} [$myli] [20];
            $ani = awsoadr ($ni);
            if ( ($Awfif::codelet-> {l} [$myli] [17] == 0)
            && ($ni != 0)
            ){#ensure that codelet sponsor is set before do any roleout

              $Awfif::codelet-> {l} [$myli] [17] = trwsoadr ($ni, 1);
              };#if
            if (($bcindex = matchbreakcodelet ($myli)) > 0) {

              &remarrent ($bcindex, \@{$Awfif::memes-> {breakcodelet}});
              $Awfif::memes-> {breakthwso} [ ++$Awfif::memes-> {breakthwso} [0]] = $ani;
              $Awfif::memes-> {breakthsubp} [ ++$Awfif::memes-> {breakthsubp} [0]] = $Awfif::memes-> {breaksubp}[$bcindex];
              &remarrent ($bcindex, \@{$Awfif::memes-> {breaksubp}});
              };#if
            &trackcodelet ($myli, $myli, $Awfif::memes-> {snnh} {telomere}, undef(), $ani, $Awfif::codelet-> {l} [$myli] [36]);
# write the description

            $Awfif::wsol-> {l} [$ani][2]
            = setupdesc ( $cwsbi + $Awfif::memes-> {snnh} {wsi},
                ($Awfif::codelet-> {l} [$myli][31] + $Awfif::memes-> {snnh} {wsi}),
                $Awfif::memes-> {snnh} {mindequiv},
                $Awfif::wsol-> {l} [$ani] [2],
                $ani);
# nsdepbappsu1
# a new telomeric deployment has occured. Search for matching deployments in the telomeric list and add this to the jhls

            $endmatch = '';
            $matches [0] = $Awfif::codelet-> {l} [$myli] [31];
            &gmatches ($myli, \@matches, 1, \@matchni, \@matchne, \$endmatch);
            if ((defined ($Awfif::jhls-> {l} [$Awfif::codelet-> {l} [$myli] [23]][19])) && ($Awfif::jhls-> {l} [$Awfif::codelet-> {l} [$myli] [23]][19] > 0)) {

              $Awfif::jhls-> {l} [$Awfif::codelet-> {l} [$myli] [23]][19] = addamoff ($Awfif::codelet-> {l} [$myli] [21], $ani, $Awfif::jhls-> {l} [$Awfif::codelet-> {l} [$myli] [23]][19]);
              }#if
            else {

              $Awfif::jhls-> {l} [$Awfif::codelet-> {l} [$myli] [23]][19] = addamoff ($Awfif::codelet-> {l} [$myli] [21], $ani, 0);
              };#else
# note the parent of the mindequiv so that it can be referenced when its children are identified as a match

            $Awfif::wsol-> {l} [$ani][2]
            = setupdesc ( $cwsbi + $Awfif::memes-> {snnh} {wsi},
                ($Awfif::codelet-> {l} [$myli][23] + $Awfif::memes-> {snnh} {wsi}),
                $Awfif::memes-> {snnh} {pindequiv},
                $Awfif::wsol-> {l} [$ani] [2],
                $ani);
# for each match found - get the pindequiv and add all matches, if not already present, to the match list
            for ($i = 0; defined ($matchni [$i]); $i ++) {
              my ($found, $linki, $i2, $pindesc, $p, $gotit);

              $found = '';
              if ( ( ($pindesc = findtdesc ($Awfif::wsol-> {l} [ awsoadr ($matchni [$i])] [2], $Awfif::memes-> {snnh} {pindequiv})) != 0 )
              && (($p = ($Awfif::workspace-> {l} [$pindesc] [2] - $Awfif::memes-> {snnh} {wsi})) > 0)
              ){

                $gotit = 0;
                $linki = $Awfif::jhls-> {l} [$p][19];#head of this amoff sub list
                while (($linki != 0) && ($gotit == 0)) {

                  if ($Awfif::amoffl-> {l} [$linki] [4] == awsoadr ($matchni [$i])) {

                    $gotit = $linki;
                    };#if
                  $linki = $Awfif::amoffl-> {l} [$linki] [0];
                  };#while
# complete adding matches
                if ($gotit != 0) {

                  if (!defined ($Awfif::amoffl-> {l} [$gotit] [2])) {#note that have applied match to this item

                    $Awfif::amoffl-> {l} [$gotit] [2] = 0;
                    };#if
                  for ($i2 = 0; $i2 <= $Awfif::amoffl-> {l} [$gotit] [2]; $i2++) {

                    if ($Awfif::amoffl-> {m} [$gotit] [$i2] == awsoadr ($matchni [$i])) {

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

                my ($i3);
                for ($i3 = 0; defined ($matchni[$i3]); $i3++) {
                  if( ($Awfif::amoffl-> {l} [$gotit] [4] != awsoadr ($matchni [$i3])) #try not to include self
                    ){

                    $Awfif::amoffl-> {m} [$gotit] [$Awfif::amoffl-> {l} [$gotit] [2]++] = awsoadr ($matchni [$i3]);
                    };#if
# for each match update the matches {m} with new deployment ani
                  if ($ani != awsoadr ($matchni[$i3])) {

                    &addamoffmatch ($myli, $matchni[$i3], $ani);
                    };#if
                  };#for
                };#if
              };#for
# nsdepbtrau1
# if codelet [35] indicates that the deployed schema is protected in a transaction describe this also
# nsdepbsubpiu1
# if codelet [36] indicates that the deployed schema is part of a sub-program
# record the transaction info in the transaction manager
# nsdepbassoctu1
# now it should not be reasonable for there to be two transmgrids for the same subpid atelhwso pairing but this is the time we setup the transmgrid for a new atelhwso

            my ($ltelhdr, $ltelhdrp1);
            $Awfif::memes-> {currentwsbi} = $Awfif::codelet-> {l} [$myli] [20];
            $ltelhdr = grwsoadr ($ani);
            $ltelhdrp1 = trwsoadr ($ltelhdr, 1);
            if ((defined ($Awfif::memes-> {nsdepschemabreak}))
            && ($ltelhdrp1 == $Awfif::memes-> {nsdepschemabreak})
            ){

              &break ();
              };#if
            $Awfif::codelet-> {l}[$myli] [37] = assandmaptran ($myli, $myli, $Awfif::codelet-> {l}[$myli] [37], $ani, $Awfif::memes-> {snnh} {rtran}, $Awfif::codelet-> {l}[$myli] [36]);

            $Awfif::memes-> {currentwsbi} = $cwsbi;

            $Awfif::jhls-> {l} [$Awfif::codelet-> {l} [$myli] [31]] [15][3] = $ni;
            };#if
          };#if
        };# sps or mps signal
      };# main line

    if ($Awfif::memes-> {trace} > $Awfif::memes-> {traceentry}) {
      print ("$cdnx\n");
      };
    &clogstatx ($myli);# we change codelet {l} [37] groupstart and end etc
    }# nsdepbuilder1
#
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