ASPL User's Guide v 1.00
© 2024 by SetSphere.COM


2-1

   Using The ASPL Calculator

The ASPL calculator has many features that distinguish it from any other calculator as it is capable to do different type of operations: set operations, sequence alignment operations, and similarity calculation. Furthermore it provides special instructions to partition the sets according to their elements, to their element checksums, or to their subgroups. It also has operators to do fuzzy matching and shallow matching through intermediate filters and preprocessor routines. The power of ASPL stems in its algorithmic routines that turn a group and whatever it contains as subgroups and elements into a sequence of containment pathes that are effectively compared and displayed on the screen of a data analysts.

The set operations are performed by symbolic mnemonics, called setops, that acts on dataset objects whether they are saved on the stack or assigned to variables. Likewise, the sequence operations have their own symbolic mnemonics, called seqops, that align dataset objects. The similarity command, or its abbreviation sim, calculates the similarity by breaking the datasets into their consistuent words, then analyzing them through mining routines, before being saved and displayed on your terminal.

Two main keys features distinguish the ASPL interpreter from any other software: the first is its interactive capability allowing you to view and save objects by issuing commands on the interpreter prompt, and the second is its colorful and semantical visualization capability that clearly display datasets for a comprehensive comparative analysis. Therfore ASPL is a software that covers the two main subjects for data analysts: Interactive Objects for Data Analysis, and Visualize Data for Objects Analysis.

Hence ASPL is the first interpreter to provide a setadic symbolic language to collect various datasets and to do comparative analysis on them. The datasets whether they are assigned to variables or saved locally on a stack, you can compare and contrast them to see their similarities and differences.

The previous chapter introduced the basic components of ASPL and how to start the ASPL interpreter. This chapter shows shows you how to get started using ASPL and howto to explore with some of its powerful set operations.

The ASPL interpreter is shipped with various sample workspaces, in this chapter we will demonstrate the analytical power of ASPL by using the following workspaces: TRIVIAL, RANDONEBIT, RANDONEBITMIX, CRAPTABLE, and WS1.

The first sesction introduces the TRIVIAL workspace as it is the simplest dataset that contains nothing but the least element in a group. The second section introduces the RANDONEBITMIX workspace where a group is randomly build to show the canonical representation of a mixed dataset that parallel the group shown in Figure 2.1.1 of the previous chapter.

       Note: ASPL groups image to be further explained in next Chapter using RANDONEBIT workspace
full view

Image File

 -F- Fig. 2.1.1   [THREE GROUPS, THEIR SUBGROUPS, AND THEIR ELEMENTS][This figure shows three groups labeled g1, g2, and g3. Each group may contain one or more subgroups or subsets. The elements within the groups and their subgroups are marked with black dots.]
ASPL © 2024 by Bassem W. Jamaleddine


The third sections uses the CRAPTABLE workspace where a simulation of three players tossing dice on craptable is used to show the usage of ASPL set operations, sequence operations, similarity calculation, along other basic commands.

The rest of the sections address some key nomenclature and the symbolic notation adopted in ASPL operators.

■ The TRIVIAL Workspace

When you start ASPL for the first time (* footnote: assuming you did not modify its default configuration.) the interpreter is started by loading the TRIVIAL workspace, then you will be presented with a prompt where you can issue commands to interact with the interpreter. You can also start ASPL by loading the TRIVIAL workspace explicitly:

aspl -wsname TRIVIAL -groupingclass ZEROGROUP

This workspace contains five variables that you can view in ASPL symbol table by typing v at the ASPL prompt. Figure 2.1.2 shows these variables. There are five different modes to display the symbol table, and you can change the mode to any of them by using the dm command. Figure 2.1.3 shows the symbol table after changing the display mode to 4. The default display mode is set to 2 which shows the symbol table in a tabular format. So let's take a look at this table.

       Note: Starting ASPL with the TRIVIAL Workspace trivial-v.png
full view

Image File

 -F- Fig. 2.1.2   [TRIVIAL WORKSPACE][Starting ASPL with the TRIVIAL Workspace]
ASPL © 2024 by Bassem W. Jamaleddine


Looking at Figure 2.1.2, the following lists each column and what it contains:
  • Column 1 shows the variable name.
  • Column 2 shows the cardinality of the variable as a ratio of the number of subgroups to the number of elements.
  • Column 3 shows the UNIX user who last created the variable, and the number in parentheses is for how many time the variable have been created.
  • Column 4 shows the ASPL command or function involved in creating the variable.
  • Column 5 shows the landing operator type.
  • Column 6 shows the landing variables involved in the creation of the variable. The variable has a dependency on the landing variables.
  • Column 7 shows the labeled group names, also called landing group names, that are in the variable.
  • Column 8 shows the source of the command that resulted in the creation of the variable.


  •        Note: trivial-dm4.png
    full view

    Image File

     -F- Fig. 2.1.3   [TRIVIAL DM 4][TRIVIAL Symbols with dm 4]
    ASPL © 2024 by Bassem W. Jamaleddine




    To display the structure of variable z1, we will issue the command v o z1 to view the object contents.

           Note: trivial-voz1.png
    full view

    Image File

     -F- Fig. 2.1.4   [TRIVIAL v o z1][TRIVIAL v o z1]
    ASPL © 2024 by Bassem W. Jamaleddine


           Note: trivial-voz2.png
    full view

    Image File

     -F- Fig. 2.1.5   [TRIVIAL v o z2][TRIVIAL v o z2]
    ASPL © 2024 by Bassem W. Jamaleddine


    This shows the layout of the object that represents the variable z1. If you repeat the operation to view the object that represents z2, you will notice that both objects are similar except for the mtime attribute depicting when the elements were made or modified. The mtime is a common attribute to all elements and subgroups in ASPL. The variables in the TRIVIAL workspace are created with the grouping function: ggzero(). The variables contain the basic object of the ZEROGROUP. you can view the ggzero() description by issuing the command ggls ggzero().

           Note: trivial-ggzero.png
    full view

    Image File

     -F- Fig. 2.1.6   [TRIVIAL ggls ggzero()][ggls ggzero()]
    ASPL © 2024 by Bassem W. Jamaleddine


    Let's get the union of the groups defined in the variables z1, z2, and z3:

    aspl>  gU z1 z2 z3

           Note: trivial-gU.png
    full view

    Image File

     -F- Fig. 2.1.7   [TRIVIAL gU z1 z2 z3][TRIVIAL gU z1 z2 z3]
    ASPL © 2024 by Bassem W. Jamaleddine


    The result seems deceiving because some of the object labels overlapped (that is all three variables have the same group label and this is shown in column 7 when we displayed the symbol table). ASPL introduces a new term to relabel colliding names: the term labination means relabeling, that is to relabel by affixing the variable name to a group label. We will use the verb to labinate to mean to relabel the names in a dataset represented by a set variable: each group label is therefore suffixed with the opening parenthesis '(' followed by the variable name followed by the closing parenthesis ')'.

    ASPL uses the comma operator as the labination operator, and when the comma is placed directly before or after a set operator then the group labels of the variables following it are being labinated. Labination is important in situations where a set operator is applied on set variables that have identical label name, without labination the keys of the hash objects will be overriden causing loss of information and confusion in the final result of the set operations.

    We will repeat the previous command, but now we will add the comma either before or after the set operator: ,gU z1 z2 z3 or gU, z1 z2 z3.

    Placing the comma after the set operator causes the operation result to be pushed on the answer stack, you can repeat the operations and issue the command ans after each of them. Notice that the answer stack is only updated when the labination comma is placed after the set operator.

    When we assign the result to a variable, then the position of the labination operator (comma) is not important and the following two statements are equivalent:
      i12 = ,fU z1 z2
      i12 = fU, z1 z2
    
    and in either case the operation causes the relabeling of the names and the results is always pushed on the stack.

    Some ASPL operatorrs automatically labinate the variables by suffixing their group label in various ways. The density command automatically labinates multiple set variables before resolving their density, and so does the similarity command, yet some set operators do not labinate the variables as is the case with f&. ASPL will attempt to find out if there is a name collision in the label name and try to advise you about that. Inspect the variables by looking at the Lgn column, and labinate the set operator if some label is common.

    The similarity operation sim z1 z2 z3 always labinates the datasets with the variable position number along the variable name. Figure 2.1.8 shows the similarity operation revealing that all three variables are similar. However the command sim`mtm z1 z2 z3 shows that all three variables are completely different, with zero similarity, because the mtime was introduced as a predicate saying: "get the similarity such that the mtm is the same".

           Note: trivial-sim.png
    full view

    Image File

     -F- Fig. 2.1.8   [TRIVIAL sim z1 z2 z3][TRIVIAL sim z1 z2 z3]
    ASPL © 2024 by Bassem W. Jamaleddine


    The similarity provides a compact way to compare datasets. One can also display the similarity in an extended format by using the xsim command. The command xsim`mtm z1 z2 z3 displays the extended similarity calculation table.

           Note: trivial-xsim.png
    full view

    Image File

     -F- Fig. 2.1.9   [TRIVIAL xsim z1 z2 z3][TRIVIAL xsim z1 z2 z3]
    ASPL © 2024 by Bassem W. Jamaleddine


    You can assign the similarity to a variable and ASPL will save it in the COS symbol table. The following figure 2.1.10 shows the COS table after assigning the similarities calculation to variables: simi123 and simi123mtm.

           Note: trivial-cos.png
    full view

    Image File

     -F- Fig. 2.1.10   [TRIVIAL COS][TRIVIAL COS]
    ASPL © 2024 by Bassem W. Jamaleddine




    To conclude this section, as the last command, we will ping the element grouping container for the currently loaded workspace. The commad egCwhoami pings the container as shown below:

           Note: TRIVIAL Pinging the Element Grouping Class Container with egCwhoami trivial-egCwhoami.png
    full view

    Image File

     -F- Fig. 2.1.11   [TRIVIAL Pinging the Element Grouping Class Container with egCwhoami][TRIVIAL Pinging the Element Grouping Class Container with egCwhoami]
    ASPL © 2024 by Bassem W. Jamaleddine


    Notice the reply of ping command: "I AM ZEROGROUP". This is ASPL reply from its grouping container saying that the ZEROGROUP is alive for the current ASPL session. Each workspace is loaded within the domain of its own grouping class that is because the groups, subgroups, and elements have their metadata attributes defined within that domain, hence the grouping class is also called the element grouping class container. This container is pingable using the egCwhoami command at the ASPL prompt. ASPL containment is discussed in the chapter "ASPL A DETAILED VIEW". Looking at figure 2.1.11 the two symbols Ksumatt and Enode defined as two list of elements:
    Ksumatt = mtime chksum entropy 
    Enode = mtime aelm chksum entropy ppdd ffl dosi
    


    The Enode represents the least named attributes, that is any grouping class in ASPL must contain the following attributes: mtime aelm chksum entropy ppdd ffl dosi. That is the common factors between all element-grouping-classes are these aforementioned. However additional attributes can be added to a grouping class as will be shown in the next section. In particular the element-grouping-class ZEROGROUP contain nothing more than the least attributes. When creating a plain grouping class that has no attributes, ASPL will automatically add these attributes (mtime aelm chksum entropy ppdd ffl dosi).
    Ksumatt represents the current active ks-vector, it is used within ASPL routines, eg. when processing predicates, or invoking the interrogation operations, or invoking the alignment operation. The ks-vector can be displayed or altered by using the ks command.

     

    ■ The RANDONEBIT Workspace

    The simulation for creating objects that represent random groups, subgroups, and elements along their arbitraty assigned attributes is realized in the sample workspace RANDONEBIT. Such random objects, like the groups shown in Figure 2.1.1, can be roughly created by loading ASPL with the sample workspace RANDONEBIT. You will start ASPL by loading the RANDONEBIT workspace:

    aspl -wsname RANDONEBIT -groupingclass BITGROUP

    or since this sample workspace is already available in your ASPL workspace then simply start ASPL with this quick command

    aspl RANDONEBIT



    At the ASPL prompt we will replay the four operations of the previous chapter.
    Instruction      Operation
    -----------    -------------------------
    gU v1 v2 v3    get the set union considering the subrgoups and elements
    g& v1 v2 v3    get the set intersection considering the subrgoups and elements
    g\ v1 v2 v3    get the set difference considering the subrgoups and elements
    gP v1 v2 v3    get the subgroups and the elements partitions
    


    Issue the similarity operator at the prompt to get the similarity between the three datasets represented by v1 v2 v3.

    It is possible to get their set alignment by typing f%U

    Set alignment operators or sequence operators are these mnemonics where % appears as the second symbol in their names.

    A more interesting example in creating random groups, subgroups, subsubgroups, and elements is given in the sample workspace RANDONEBITMIX. In this workspace the variable mg123 represents datasets for three mixed groups that have been created randomly. In the previous chapter, in the section "ASPL Symbolic Shemes and Colors", we used a partial view displaying the groups intersection for the variable mg123. Here you can follow a more detailed view of the sample workspace RANDONEBITMIX shown in the following terrminal.

           terminal for example: RANDONEBITMIX Sample Workspace
    viewme

     -E- Display. 2.1.1   [RANDONEBITMIX Sample Workspace][RANDONEBITMIX Sample Workspace]
    Terminal showing sample RANDONEBITMIX workspace for the creation of random groups, subgroups, and elements

    It is possible to show the alignment between two datasets. The command f%U g1 g2 displays the alignment of the elements of the group represented by g1 and g2. The following figure shows such alignment:

           Note: mix-f%Ug1g2.png
    full view

    Image File

     -F- Fig. 2.1.12   [RANDONEBITMIX f%U g1 g2][RANDONEBITMIX f%U g1 g2]
    ASPL © 2024 by Bassem W. Jamaleddine




    Set operators where the symbol % appears as a second charater in their mnemonic are called seqops and they are explained in the section "Sequence Alignment Operations".



     

    ■ The CRAPTABLE Workspace

    The CRAPTABLE workspace shows a simulation of three players tossing dice on a crap table. In this simulation we will show when the three players have the same outcome: either in the sum of both dice tossed, or in a perfect match for both faces of the dice.

    Start ASPL by loading CRAPTABLE workspace whose grouping class is DICE:

    aspl -wsname CRAPTABLE -groupingclass DICE

    or since CRAPTABLE is already saved in your workspace then you can use the quick start up command:

    aspl CRAPTABLE

    The following figure shows ASPL started with CRAPTABLE, the egCwhoami command pinging its containment class: DICE, and the "v" command displaying the symbol table.

           Note: ASPL Started with CRAPTABLE craptable-v.png
    full view

    Image File

     -F- Fig. 2.1.13   [ASPL Started with CRAPTABLE][ASPL Started with CRAPTABLE]
    ASPL © 2024 by Bassem W. Jamaleddine


    Getting the density of the p1, p2, and p3, figure 2.1.14 shows that all three players datasets have the same density, and so is their similarities because here the elements represent the throws of the players.

           Note: CRAPTABLE density p1 p2 p3 craptable-density.png
    full view

    Image File

     -F- Fig. 2.1.14   [CRAPTABLE density p1 p2 p3][CRAPTABLE density p1 p2 p3]
    ASPL © 2024 by Bassem W. Jamaleddine


    Let's include a predicate to find out when all three players get the same outcome. In other words what are the throw numbers (if any) when all three players got the same sum.

           Note: CRAPTABLE Dice have same sum for p1 p2 p3 craptable-chksum.png
    full view

    Image File

     -F- Fig. 2.1.15   [CRAPTABLE Dice have same sum for p1 p2 p3][CRAPTABLE Dice have same sum for p1 p2 p3]
    ASPL © 2024 by Bassem W. Jamaleddine




    To find the throw numbers (if any) when all three players got the same face on both dice, we will use the ks vector as a predicate. The result is shown in the figure below:

           Note: CRAPTABLE Dice have same faces for p1 p2 p3 craptable-ks.png
    full view

    Image File

     -F- Fig. 2.1.16   [CRAPTABLE Dice have same faces for p1 p2 p3][CRAPTABLE Dice have same faces for p1 p2 p3]
    ASPL © 2024 by Bassem W. Jamaleddine


    You want to see all the throws and when all three players get the same outcome (hilighted in green), then just omit the predicate from the command:

    aspl>  f& p1 p2 p3



    You want to see all the throws of players p1 and p2, and see the dice matched:

    aspl>  f%&`ks= p1 p2



    You can do your own simulation in CRAPTABLE without even saving anything in set variables. Use the following commands to run another simulation, but this time you will save the objects on the stack.
      aspl -wsname CRAPTABLE
      ans
      ggdice(player,player1,throws,900)
      ans
      ggdice(player,player2,throws,900)
      ans
      f&`ks=
      pop
      f&`c=
      pop
    


    The function ggdice() is the grouping function and its description can be viewed by typing at the ASPL prompt:

    aspl>  ggls ggdice()



           Note: CRAPTABLE ggls ggdice() craptable-ggdice.png
    full view

    Image File

     -F- Fig. 2.1.17   [CRAPTABLE ggls ggdice()][CRAPTABLE ggls ggdice()]
    ASPL © 2024 by Bassem W. Jamaleddine


    You can quit ASPL anytime without saving anything to the workspace by pressing CONTROL-C.


     

    ■ Basic Set Operations

    The following are the basic set operators: f& d& g& fU dU gU f\ d\ g\ fD dD gD fP dP gP

    The first letter depicts the subject on which the operation will take place, and the second letter depict the type of operation.

    f, d, g refer to the elements, subgroups, and group respectively. The subject denoted with 'g' is for groups and that includes both of its subgroups and its elements.

    The type of operation can be one of U, &, \, D, and P refering to union, intersection, difference, symmetric difference, and partition respectively.

     

    ■ ASPL Workspace

    ASPL stores its symbol tables in the worspace-directory. This directory is the folder where ASPL saves any of its workspaces. Since each workspace has its own name, then you can have many workspaces saved in the same worspace-directory. In addition, you can create as many directories as you want and copy workspaces into them, then let ASPL load the workspaces from any of them.

    The default workspace directory loaded by ASPL is defined in the environment variable ASPL_CLI_CONFIG. You can view this environment variable by typing on the shell prompt:
      # echo $ASPL_CLI_CONFIG
      /root/.aspl/WSP/WORKSPACES1,TRIVIAL,10,10,10,1000,30,2,0,0,0,0
    
    The worspace-directory is the first entry in the comma separated string of the variable ASPL_CLI_CONFIG. In this example, it is /root/.aspl/WSP/WORKSPACES1 directory.

    Also after starting ASPL, you can issue any of the following commands at the ASPL prompt to reveal the workspace directory:

    aspl> wls
        (list the workspace directory)

    aspl> wlls
        (long list the workspace directory)

    aspl> ll ~wsp
        (list the workspace directory)

    aspl> cd ~wsp
        (cd to the workspace directory)

    aspl> ~wsp
        (cd to the workspace directory)

    aspl> envvar
        (pretty print ASPL_CLI_CONFIG)



    This last command prints where ASPL loaded its workspace repository. It is the first entry in the environment variable ASPL_CLI_CONFIG, and in this particular example it is from /root/.aspl/WSP/WORKSPACES1.
    CURRENTLY FROM WITHIN THE APPLICATION:
    --------------------------------------
    ASPL_CLI_CONFIG=/root/.aspl/WSP/WORKSPACES1,TRIVIAL,10,10,10,1000,30,2,0,0,0,0
                                 |                 |     |  |  |   |   | | | | | +--> synchronize workspace container
                                 |                 |     |  |  |   |   | | | | +----> make variables global
                                 |                 |     |  |  |   |   | | | +------> persist data changes
                                 |                 |     |  |  |   |   | | +--------> assign once
                                 |                 |     |  |  |   |   | +----------> display mode
                                 |                 |     |  |  |   |   +------------> wksp keep, keep lessons
                                 |                 |     |  |  |   +----------------> history size
                                 |                 |     |  |  +--------------------> unswer size
                                 |                 |     |  +-----------------------> enswer size
                                 |                 |     +--------------------------> answer size
                                 |                 +--------------------------------> workspace name
                                 +--------------------------------------------------> workspace directory
    
    
    The above variable is the current ASPL_CLI_CONFIG variable that is being used by ASPL client.
    Some values may have been changed. Compare them to the initial values as set in the shell.
    
    AS BEING SET IN THE SHELL:
    --------------------------
    ASPL_CLI_CONFIG=/root/.aspl/WSP/WORKSPACES1,TRIVIAL,10,10,10,1000,30,2,0,0,0,0
                                 |                 |     |  |  |   |   | | | | | +--> synchronize workspace container
                                 |                 |     |  |  |   |   | | | | +----> make variables global
                                 |                 |     |  |  |   |   | | | +------> persist data changes
                                 |                 |     |  |  |   |   | | +--------> assign once
                                 |                 |     |  |  |   |   | +----------> display mode
                                 |                 |     |  |  |   |   +------------> wksp keep, keep lessons
                                 |                 |     |  |  |   +----------------> history size
                                 |                 |     |  |  +--------------------> unswer size
                                 |                 |     |  +-----------------------> enswer size
                                 |                 |     +--------------------------> answer size
                                 |                 +--------------------------------> workspace name
                                 +--------------------------------------------------> workspace directory
    
    
      tilde expansion  explanation                                    directory
      ---------------  ---------------------------------------------  -------------------------------------
      ~pwd             Parent process working directory               /root
      ~home            ASPL home directory                            /opt/ASPLv1.00
      ~shared          ASPL shared directory                          /opt/ASPLv1.00/shared
      ~scripts         Scripts directory (beta v2)                    NO SUCH DIRECTORY: ~scripts
      ~etc             ASPL etc directory                             /opt/ASPLv1.00/etc
      ~tmp             ASPL tmp directory                             /root/.aspl/tmp
      ~bin             ASPL bin directory                             /opt/ASPLv1.00/bin
      ~wsp             ASPL Workspace directory                       /root/.aspl/WSP/WORKSPACES1
      ~gg              ASPL Grouping Functions directory (loadable)   /opt/ASPLv1.00/BRIDGE/ASPL/GGs
      ~ggs             ASPL Grouping Functions directory (loadable)   /opt/ASPLv1.00/BRIDGE/ASPL/GGs
      ~feeder          Tied Attributes directory (loadable modules)   NO SUCH DIRECTORY: ~feeder
      ~geosubs         GEO contextual set operation modules           NO SUCH DIRECTORY: ~geosubs
     ** You can navigate to any of these directories within ASPL, just type its tilde-expansion at the ASPL prompt followed by ENTER.
     ** To list the files in any of these directories within ASPL, just precede its tilde-expansion with ll,lls,llt,lltr,lld, or llsdr. 
     **     the ll and lls are the same, llt list files by time, lltr files by reverse time, lld list w.o. extending directories 
     ** To change directory to the directory known to a tilde-expansion just type chdir followed by the tilde-expansion. 
     **     chdir to ~ggs: chdir  ~ggs
     **     chdir to ~ggs: ~ggs
     **     go back to parent directory: chdir  ~pwd
     **     go back to parent directory: ~pwd
     ** To print the directory tree known to a tilde-expansion just type tree or treed followed by the tilde-expansion. 
     **     for example display the tree (including files)  of GGs functions: tree  ~ggs
     **     for example display the tree (only directories) of GGs functions: treed ~ggs
     ** NOTE: the ~feeder directory is only available if the group attributes are tied to real time UNIX device.
     ** NOTE: the ~geosubs directory is only available with GEOmetric element grouping class.
    
      tilde expansion  explanation                                    file
      ---------------  ---------------------------------------------  -------------------------------------
      ~colorsfile      Colors configuration file                      /opt/ASPLv1.00/.aspl/etc/colors.conf
      ~emailsfile      Email groups file                              /root/.aspl/etc/emailspool
      ~ddmfile         DDM configuration file                         /opt/ASPLv1.00/etc/ddm.conf
      ~shallowed       Shallowed set operation processors module      /opt/ASPLv1.00/.aspl/etc/ShallowMatches.pm
      ~asplconf        ASPL configuration file (sessions timeout)     /opt/ASPLv1.00/etc/aspl.conf
     ** To edit any of these files within ASPL you can specify its tilde-expansion at the ASPL prompt, or just edit it in another terminal.
    
    THE FOLLOWING ARE THE EXPORTED ASPL ENVIRONMENT VARIABLES:
    ----------------------------------------------------------
    
    ASPL1_00_BRIDGE=/opt/ASPLv1.00/BRIDGE
    ASPL1_00_HOME=/opt/ASPLv1.00
    ASPL1_00_PROMPT='prompt:{tm} {u}@{h} {cwd}  aspl:{no} > ;promptcolor:bold_black;logocolor:bold_black;loadcolors:colors3'
    ASPL1_00_TMP=/root/.aspl/tmp
    ASPL_CLI_CONFIG=/root/.aspl/WSP/WORKSPACES1,TRIVIAL,10,10,10,1000,30,2,0,0,0,0
    BASH_EXECUTION_STRING='echo;set | grep ASPL'
    PATH=/tools:/tools/nailsutil:/root/.local/bin:/root/bin:/usr/local/sbin:/usr/sbin:/usr/local/bin:/usr/bin:/bin:/opt/ASPLv1.00/bin:/opt/ASPLv1.00/shared:/root/.aspl/scripts:/opt/ASPLv1.00/BRIDGE/bin:/opt/ASPLv1.00/bin:/opt/ASPLv1.00/shared:/root/.aspl/scripts:/opt/ASPLv1.00/BRIDGE/bin
    
    
    EDITOR:  "vi "
          YOU CAN CHANGE THE EDITOR. FOR EXAMPLE,
            TO USE "vim" EDITOR:  export ASPL_EDITOR=vim
            TO USE "joe" EDITOR:  export ASPL_EDITOR=joe
            TO USE "jpico" EDITOR:  export ASPL_EDITOR=jpico
            TO USE "emacs" EDITOR:  export ASPL_EDITOR=emacs
          YOU NEED TO EXIST AND EXPORT ASPL_EDITOR.
          ASPL DEFAULT EDITOR IS "vi" 
    
          THE EDITOR IS DISABLED IF PAGING IS ON.
    
    
    PAGER:
      The current pager is "more"
      The pager is disable by default, but you can toggle it with: paging 1
      and turn it off with: paging 0
    
    HISTORY:
      The history of any ASPL workspace can be recalled with the "hs" command.
      You can grep the history or the currently loaded workspace, for example:  hs grep somestring
      
      The current history of a session can be recalled with the "h" command.
      The current history of a session is not being saved unless the workspace is saved with the "save" or "bye" command.
     
      At the ASPL prompt, you can display the history of all workspaces can be displayed by typing "hsall", and 
      you can grep the history of all workspaces for somestring by typing "hsall grep somestring"
      aspl> hsall
    
      On the UNIX shell prompt you can also display the history by using any of the following commands:
      # asplcmd hsall
      # aspl -verb hsall
      # asplcmd hsall | grep somestring
    
    QUICKLY LOOKING INTO A WORKSPACE:
      On the UNIX shell prompt you can type the description of a workspace RANDONEBITMIX
      # asplcmd "load RANDONEBITMIX; description"
      you can type the history saved of a workspace RANDONEBITMIX
      # asplcmd "load RANDONEBITMIX; hs"
    
    WORKSPACE:
      To quickly list the workspace directory used by ASPL for your current configuration, type on the UNIX prompt:
      # asplcmd wls 
      # asplcmd wlls
      # asplcmd "wls sort by name" 
      # asplcmd "wls sort by grouping" 
      Start ASPL in verbose mode to view the directories used by ASPL
    
      To print the loaded workspace used by ASPL while being in session, this will also show the uptime
      aspl> wid
      Typing the following command at the shell prompt will display the workspace then exit ASPL
      # asplcmd "load RANDONEBITMIX; wid"
      The TRANSIENT workspace is a temporary memory space used by ASPL for its default command:
      # asplcmd wid
    
      Delete a workspace using the wrm command
      aspl> wrm WS1JUNK
      or on the UNIX prompt
      # asplcmd "wrm WS1JUNK"
      
      You can always duplicate a workspace using the save command
      here we start ASPL with WS1 workspace
      # aspl WS1
      we issue some command setting a123 set variable
      aspl> a123 = gU a1 a2 a3
      we save the current workspace to WS1JUNK
      aspl> save WS1JUNK
      saving the workspace does not mean ASPL will load it, wid will show that WS1 is still being used
      aspl> wid
      we quit (without saving WS1 workspace) and restart ASPL with WS1JUNK 
      aspl> quit
      # aspl WS1JUNK
    
      
    WHICH:
      ASPL has a colorful pretty print "which" command. 
        aspl> whichxX+iR *aspl*group*
      It is also available at the UNIX shell prompt as the "whichma" command:
        # whichma xX+iR "*aspl*group*"
      and even build a tree and walk its directories:
        # ALTERNATE_EXPANDEDPATH=$(pathedtrees -dir /opt/ASPLv1.00/BRIDGE/ASPL) whichma xX+iR "aspl*/Feeder*pm"
      For more about ASPL "which" command, or it shell equivalent whichma-call-it "whichma" command, type "whichma" at the shell prompt.
    
    grepls:
      The "grepls" command is used to grep somestring in the files of a directory: grepls TRIVIAL /opt/ASPLv1.00/BRIDGE/ASPL/GGs/*
    
    WORKSPACE:
      The current workspaces repository is "/root/.aspl/WSP/WORKSPACES1"
      The currently loaded workspace is "TRIVIAL"
    
    VERBOSE:
      Start ASPL with -verbose option to display its startup.
      If a workspace has been already saved, then you can quickly start ASPL by loading it, eg. to load TRIVIAL:
      # aspl TRIVIAL
      # aspl TRIVIAL -verbose
    
    The ASPL intepreter is a pure PERL implementation that is build on top of the UNIX system
    and it uses the PERL virtual machine in processing its statements.
    
    Thank you for using ASPL.
    COPYRIGHT 2024 by Bassem W. Jamaleddine