ASPL User Guide v 1.00
© 2025 Bassem W. Jamaleddine
19. 1Differential Group Operators and Differential Group Variables
The following are the differential set operators
f@ d@ g@
display the group difference in the differential variable x
g@ x where x is a set variable with historical
display the elements difference in the differential variable x
f@ x where x is a set variable with historical
display the subgroups difference in the differential variable x
d@ x
toggle differentialallarc to 1 to get the difference between the variable and all its instances
differentialallarc 1
toggle differentialallarc to 0 to get the difference between the variable and its last instance
differentialallarc 0
list the differential variable x and its historical archived instances
@ x
display symbol table in sorted order
v sorted
labinated group difference where ks is different
,g@`ks~ x
labinated group difference where ks is different and push result on the stack
g@,`ks~ x
labinated elements difference where ks is different and push result on the stack
f@,`ks~ x
labinated subgroups difference where ks is different and push result on the stack
d@,`ks~ x
display group difference for two differential variables
g@ x y where x and y are set variables with historical
Differential Group Operators and Differential Group Variables
If a set variable has historical data saved in its corresponding archived names, then you can use the differential operators: f@, g@, and d@, to display the difference between the set variable and its archived data. The g@, f@, and d@, denote the group differential operator, the element differential operator, and the subgroups differential operator respectively.
The differential operator is really a pure symmetric difference.In ASPL, the symmetric difference operation between two or many groupsA differential group variable is a variable that has a differential operator applied to it. We may refer to a differential group variable simply as the differential variable. Any ASPL set variable that have been archived is a differential variable. Often the differential operators are followed by a single differential variable, but it is possible to follow them with multiple differential variables.
excludes any intersecting element in the groups, and is termed:
pure symmetric difference.
The pure symmetric difference between groups includes any subgroup or element
that appears exactly in one and only one group.
■ Ticking the Differential Operators with a Predicate
The differential operators: g@, f@, and g@, can be catenated with the tick operator (saying such that) followed by the predicate. The predicate is an additional condition to filter subgroups or elements based on their attributes.
The set operators can be ticked with a conditional predicate, hence adding a conditional match based on the attributes of the element or the subgroup. Ticking a set operator is done by catenating the grave symbol followed by a symbol, and this is read as "such that" the predicate is satisfied.
You can list the predicates that a set operator can be ticked (or catenated) with, by either typing at the ASPL prompt tickfor followed by the set operator, or by running the asplsymbols command at the shell prompt. For example, to list the possible predicates that the g& can takes, at the ASPL prompt we type:aspl> tickfor g@
or at the shell prompt:# asplsymbols -ticksymbol 'g@'
the following is displayed on your terminal:setop |suchthat |phrase =======|============|========================================================================================== 1 g@ |g@`_ |gets the subgroups and the elements differential 2 g@ |g@`c= |gets the subgroups and the elements differential such that they have the same checksum 3 g@ |g@`c~ |gets the subgroups and the elements differential such that they have different checksums 4 g@ |g@`ks= |gets the subgroups and the elements differential such that they have the same ksum 5 g@ |g@`ks~ |gets the subgroups and the elements differential such that they have different ksums# asplsymbols -ticksymbol 'f@'
the following are the possible ticked predicate for f@setop |suchthat |phrase =======|============|========================================================================= 1 f@ |f@`_ |gets the elements differential 2 f@ |f@`c= |gets the elements differential such that they have the same checksum 3 f@ |f@`c~ |gets the elements differential such that they have different checksums 4 f@ |f@`ks= |gets the elements differential such that they have the same ksum 5 f@ |f@`ks~ |gets the elements differential such that they have different ksums# asplsymbols -ticksymbol 'd@'
the following are the possible ticked predicate for d@setop |suchthat |phrase =======|============|========================================================================= 1 d@ |d@`_ |gets the subgroups differential 2 d@ |d@`c= |gets the subgroups differential such that they have the same checksum 3 d@ |d@`c~ |gets the subgroups differential such that they have different checksums 4 d@ |d@`ks= |gets the subgroups differential such that they have the same ksum 5 d@ |d@`ks~ |gets the subgroups differential such that they have different ksumsThe program asplsymbols provides many options to look into ASPL symbols. For instance, the following command display all setops along their tick phrases:aspl> asplsymbols -tickphrase setops
When ticking the differential operator it is advised to labinate the operation
with the comma operator, either by preceding the operator directly with the
comma, or by following it directly with the comma.
For example, to labinate g@`ks~ on the left ,g@`ks~, and to labinate it on
the right g@,`ks~
By labinating the operator on the right, the resulting anonymous group of the
operation is pushed on the answer stack.
Sometimes we do not labinate the set operator on purpose. For example,
consider the case when we want to find the common element following an
operation (a ticked conditional symmetric difference, or a group union).
Even though information is lost (by not labinating) as the name of subgroups
and elements may collide, however this will report to us the least common
denominator of names being subject to the operation. Consider the case
when we monitor the changes in a directory using the script monitordir.aspl
An example is shown in the following terminal.