GB2510328A - Improvements in evaluation of conditional statements with plurality of conditions - Google Patents

Improvements in evaluation of conditional statements with plurality of conditions Download PDF

Info

Publication number
GB2510328A
GB2510328A GB1221463.1A GB201221463A GB2510328A GB 2510328 A GB2510328 A GB 2510328A GB 201221463 A GB201221463 A GB 201221463A GB 2510328 A GB2510328 A GB 2510328A
Authority
GB
United Kingdom
Prior art keywords
conditional statement
evaluation
condition
outcome
conditions
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
GB1221463.1A
Other versions
GB201221463D0 (en
Inventor
Richard James Somerfield
Paul Keith Branton
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
AppSense Ltd
Original Assignee
AppSense Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by AppSense Ltd filed Critical AppSense Ltd
Priority to GB1221463.1A priority Critical patent/GB2510328A/en
Publication of GB201221463D0 publication Critical patent/GB201221463D0/en
Publication of GB2510328A publication Critical patent/GB2510328A/en
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30094Condition code generation, e.g. Carry, Zero flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30029Logical and Boolean instructions, e.g. XOR, NOT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition

Abstract

Conditional statements 200 with a plurality of conditions 211, 213, 215, 219 are evaluated by representing the statement in Reverse Polish Notation (RPN) and using a Short Circuit Evaluation (SCE) to disregard unnecessary conditions 219. This improves programs dealing with setting computer policies or configuring user environment, for example at log in. Processors 221, 223, 225, 229 are adapted to evaluate the conditions. States for the evaluation comprise True, False, and Pending. Evaluation is suspended if an overall outcome of the conditional statement is in the Pending state and resumed when an outcome of a necessary condition is evaluated to be True or False. Flags are set for necessary conditions. Evaluation triggers inform of an outcome of a condition. Outcomes can be stored as a result board in a cache, which stores flags as well. Also disclosed is a conditional statement divider to divide RPN statements in sub-RPN statements and distributing evaluation workload across a number of processors.

Description

Improvements in and relating to Condition Evaluation The present invention concerns the provision of a method for evaluating a conditional statement and performing an action dependent on outcome of the evaluation. The method also provides for a concurrent evaluation of a plurality of conditions and use of Short Circuit Evaluation, henceforth referred to as SCE, to optimise the speed with which the evaluation of the conditional statement occurs, wherein the conditional statement depends on the plurality of the conditions and the evaluation reaches an overall outcome once a necessary subset of the conditions are evaluated.
Embodiments of the invention find particular, but not exclusive, use when an application needs to evaluate a conditional statement comprising more than one condition. Further, by providing for an action to be undertaken depending on the outcome of the evaluation of the conditional statement, an embodiment of the invention enables the application to undertake the action as soon as a necessary subset of conditions have been evaluated. An embodiment of the invention further comprises a monitor adapted to monitor the evaluation of the conditions, whereby it reaches the outcome of the conditional statement as soon as the outcomes of the necessary conditions become available.
An example of such an application would be a computer program dealing with setting computer policies or configuring user environment. Such a computer program often runs at a log-in stage and requires evaluation of a plurality of conditions relating to a user and a user's local machine's current state such as user privilege level, user identification, indication of an administrator, active directory membership, current location, existence of remote servers/files and others. Evaluation of these conditions require differing amounts of time depending on a plurality of factors such as availability of the information, processor speed, network availability among others. This means the setting of the computer policy or the configuration of user environment needs to wait for all the conditions to be evaluated which can take a long time.
By providing a method for evaluating a conditional statement wherein an outcome of the conditional statement can be reached as soon as the outcomes of the necessary subset of conditions become available, an embodiment of the present invention reduces the time taken for the setting of a computer policy or configuring of a user environment when the user logs in.
It is known in the art that a SCE can be used to evaluate certain conditional statements, such as that involving "AND" or "OR", without having to evaluate all the conditions in the conditional statement. Use of ternary logic or Reverse Polish Notation (RPN) in a computer system or a calculator is also known in the art. However, use of a combination of these and other related techniques to increase performance in an evaluation of a conditional statement and execution of a dependent action thereof is not known in the art.
It is an aim of embodiments of the present invention to provide for a method and an apparatus for evaluating a conditional statement and performing an action dependent on the outcome of the evaluation.
According to the present invention there is provided a method and apparatus as set forth in the appended claims. Other features of the invention will be apparent from the dependent claims, and the description which follows.
For a better understanding of the invention, and to show how embodiments of the same may be carried into effect, reference will now be made, by way of example, to the accompanying diagrammatic drawings in which: Figure 1 shows interactions among various components used to implement a method for evaluating a conditional statement according to an embodiment of the present invention; Figure 2 shows an illustrative schematic of a method for evaluating a conditional statement according to an embodiment of the present invention; Figure 3 shows the components of the embodiment shown in Figure 1 further comprising an extended component according to an embodiment of the present invention; and Figure 4 shows an illustrative environment 1010 according to an embodiment of the invention.
Figure 1 shows an interaction among various components used to implement a method for evaluating a conditional statement according to an embodiment of the present invention wherein the components comprise a RPN evaluator 110, a cache 120 and a processor 130.
According to this embodiment, the present invention implements a ternary logic according to the logic state tables Table 1, Table 2 and Table 3 using SCE.
Table 1. "AND" table (A BAND) Condition A False True Pending False False False False Condition B True False True Pending Pending False Pending Pending Table 2. "OR" table (A B OR) Condition A False True Pending False False True Pending Condition B True True True True Pending Pending True Pending Table 3. "NOT" table (A NOT) Condition A False True Pending True False Pending It is understood that the RPN evaluator 110 can be replaced with any type of an evaluator, either hardware or software based, capable of evaluating a conditional statement in accordance with the logic state tables, Tables 1-3. The cache 120 can also be replaced with any form of a storage medium or memory whereon the conditional statement, an outcome of an evaluation or any other related information can be stored for future reference. Further, the processor 130 may be a central processing unit, a core of a central processing unit or merely a virtual processor, a thread or any unit of information capable of processing a condition and generating an outcome as a response.
According to an embodiment of the present invention, when the RPN evaluator 110 is called upon to evaluate a conditional statement, it accesses the cache 120 for outcomes of each condition evaluation.
According to an embodiment, an outcome of a condition evaluation also comprises a "Pending" state and when the conditional statement evaluation is initiated, relevant outcomes of the conditions are set to "Pending" state until either "True" or "False" state is returned as an outcome by a relevant processor assigned to evaluating the relevant outcome of the condition.
When the RFN evaluator 110 evaluates overall outcome of the conditional statement to be "Pending", the RPN evaluator 110 terminates the evaluation process. When an evaluator trigger is triggered thereafter, the RPN evaluator 110 evaluates the conditional statement again.
The evaluator trigger may be a trigger flag stored in the cache 120 or just an indication from any of the relevant processors informing the evaluator of an outcome of a condition, whereon the overall outcome of the conditional statement depends. The processor 130 may trigger the evaluator trigger when an outcome of the condition has been evaluated, whereby the RPN evaluator 110 is informed of the condition evaluation and evaluates overall outcome of the conditional statement. The RPN evaluator may also monitor a change in the trigger flag in the cache 120 periodically or whenever the processor 130 informs that a condition has been evaluated. According to an embodiment, the evaluator trigger may only be triggered if the outcome of the condition is in a certain predetermined state.
The cache 120 stores a set of data which represents outcomes from all the conditions related to the conditional statement, for example a results board. During initialisation, all the outcomes are set to "Pending" in the results board and the processor 130 processes evaluation of each condition. According to an embodiment, when an outcome of a condition on the results board was previously evaluated, and it does not require any further updating at the time of the conditional statement evaluation, the outcome of that particular condition is retained in the results board, not set to "Pending", so that previously evaluated outcome can be used without having to process the condition again. The set of data comprises a data to indicate whether a particular condition requires updating or not, for example a flag to indicate conditions whereon the conditional statement evaluation depends.
As an outcome of a condition that requires updating is received from a relevant processor, the results board is updated with the received outcome and the RPN evaluator uses the outcomes on the results board to evaluate the whole conditional statement. As long as the overall outcome of the conditional statement remains "Fending", this process is repeated until either "False" or "True" state is reached as the overall outcome.
According to an embodiment, if the outcomes of all the conditions in a subset of conditions necessary for short circuit evaluating the conditional statement, henceforth referred to as Necessary Conditions (NC5), is available, the RPN evaluator 110 evaluates the conditional statement and generates an overall outcome. When the overall outcome is "Pending", the RPN evaluator 110 terminates the conditional statement evaluation. When the evaluator trigger is triggered, the RPN evaluator 110 evaluates the conditional statement again. The overall outcome may also be saved in the cache 120 for future reference.
If any of the outcomes of the NCs are unavailable or the set of data in the cache 120 (the results board) shows at least one NC to be "Pending", the RPN evaluator 110 stops its evaluation process and waits for an evaluator trigger to be triggered. The evaluator trigger may be triggered by an application first executing the RPN evaluator 110 or when any evaluator triggering conditions are met, such as when an outcome of a NC becomes available (a trigger outcome) or when the outcome of the NC is evaluated to be any other states than "Pending".
The processor 130 may inform the RPN evaluator that the outcome of the NC is available.
The cache 120 also comprises a NC flag for indicating whether a related condition being processed by the processor 130 is a NC or not. Depending on an embodiment, the cache 120 may create and/or maintain more than one NC flags for each condition so that more than one conditional statement can make use of the outcome of the relevant NC evaluation.
According to an embodiment, when the RFN evaluator reaches an operator, is informed of a "Pending" state of a condition whereon the operator is to operate, and an intermediary outcome thereafter is in a "Pending" state, the RPN evaluator 110 is then requested to stop the evaluation process and wait for an evaluator trigger to be triggered before it resumes with the evaluation of the conditional statement. The evaluator trigger may be a trigger flag stored in the cache 120. The RPN evaluator may monitor a change in the trigger flag in the cache 120 periodically or whenever a condition has been evaluated, wherein the processor 130 may also inform the RPN evaluator the condition has been evaluated.
In this embodiment, the RFN evaluator stops the evaluation process only after a trigger outcome of a triggered condition, which has triggered the evaluator trigger, has been operated on with an operator followed by a state of a subsequent condition, and an intermediary outcome thereof is "Pending". If the intermediary outcome after evaluation of the operator on the triggered condition and the subsequent condition is still "Pending", there is no need for the RPN evaluator to continue evaluating any further conditions since the "Pending" intermediary outcome means the trigger outcome will not make any change to the overall outcome of the
conditional statement in the RPN form.
Further, the RPN evaluator may only stop the evaluation process once it has reduced the conditional statement into an intermediate conditional statement resulting from taking into account of the trigger outcome. A simple example of such an embodiment might be:
Initial conditional statement -"C D OR A B AND";
Assuming no previous outcomes are available for A, B, C, and D, initial states are set to "A=Pending", B=Pending", "C=Pending", and "D=Pending"; A, B, C, and D are set as NCs and triggered conditions; RPN evaluator initialises and evaluates the conditional statement until it encounters the operator OR" followed by "D=Pending" and "C=Pending", and evaluates a first intermediary outcome as "Fending"; RPN evaluator stops evaluation; First, second, third, and fourth processors are initialised to evaluate each condition A, B, C or D respectively; The third processor returns "CTrue"; Since C is a NC, evaluator trigger is triggered and C is set as a triggered condition (A, B and D are no longer triggered conditions); RPN evaluator evaluates "C D OR A B AND = True D OR A B AND" and reduces this conditional statement into a first intermediate conditional statement "True A B AND = A B AND"; A and B are set as NCs (C and Dare no longer a NC); RPN evaluator stops evaluation process after it has encountered the operator "AND" followed by C=True" and "A=Pending", and evaluates a second intermediary outcome as "Pending"; The fourth processor returns "DFalse" but the evaluator trigger is not triggered since the first intermediate conditional statement no longer contains D and D is nota NC; The first processor returns "A=True"; Since A is a NC, evaluator trigger is triggered and only A is set as a triggered condition; RPN evaluator evaluates "A B AND = True B AND" and reduces this first intermediate conditional statement into a second intermediate conditional statement "B"; B is set as a NC; RPN evaluator evaluates the whole condition "B" to be pending and stops; The second processor returns "B=True"; Since B is a NC, evaluator trigger is triggered and B is set as a triggered condition; RPN evaluator evaluates "BTrue"; and Overall outcome of the initial conditional statement is evaluated to be "True".
This ensures the RPN evaluator is triggered whenever a relevant trigger outcome has been evaluated from a condition, and the relevant outcome is taken into account whenever the RPN evaluator is triggered to evaluate the conditional statement whilst also ensuring the RPN evaluator does not evaluate the whole initial conditional statement every time it is triggered. In the above example, use of the first and second intermediate conditional statements have enabled the RPN evaluator to perform short-circuit evaluation with a minimum overhead involved in evaluating each of the conditions and accessing the set of data, i.e. Results board.
Further, the overall outcome would have been evaluated even if the fourth processor had not returned outcome of the condition D which means the overall outcome would have been evaluated without having to wait for the outcome of the condition D. It is understood that for any outcome of a condition that requires an update, the condition is set as a NC after every intermediate conditional statement evaluation so that the updated outcome is taken into account during the next intermediate conditional statement evaluation.
It is understood that in an alternative scheme, the outcomes may comprises a different set of states such as a "unknown" state for "Pending", "Satisfied" state for "True", and "Unsatisfied" state for "False", but an overall effect of encountering such outcomes would be the same. Further, the outcomes may also have a fourth state, such as Undefined" state to indicate an initial state representing the state of the RPN evaluator 110 when a stack used for the evaluation is empty. Additional states indicating a different state of the RPN evaluator 110 or a condition may also be added according to an embodiment of the present invention.
In an embodiment, the cache 120 creates and/or maintains a set of data comprising at least two of: a Condition Identification (CID); a Conditional Statement Identification (CSID); a NC flag; a trigger flag; a triggered condition flag; an outcome of a condition evaluation; and an overall outcome of a conditional statement evaluation. According to this embodiment, the set of data is stored in a table but it can be stored in any other format such as a list or a Results Board. It is understood that any other format for storing, accessing, updating and/or displaying a set of data can be used to implement the present invention without affecting the way the foregoing embodiments work.
The RFN evaluator 110 accesses the set of data to: obtain required information for a conditional statement evaluation; evaluate the conditional statement; and generate an overall outcome of the condition evaluation. The RPN evaluator 110 may also store the overall outcome to the set of data where appropriate.
The processor 130 also accesses the set of data to: obtain required information for a condition evaluation; evaluate the condition; generate an outcome of the condition evaluation; and store the outcome of the condition evaluation to the set of data.
According to an embodiment, the set of data further comprises at least one of: an Intermediate Conditional Statement Identification (ICSID); and an outcome of an intermediate
conditional statement.
According to an embodiment, the required information for the conditional statement or condition evaluation comprises at least two items of data from the set of data, for example at least two of: a CID; CSID; a NC flag; a trigger flag; a triggered condition flag; an outcome of a condition evaluation; an overall outcome of a conditional statement evaluation; an Intermediate Conditional Statement Identification (ICSID); and an outcome of an intermediate conditional
statement.
Figure 2 shows an illustrative schematic of a method for evaluating a conditional statement according to an embodiment of the present invention wherein the illustrative schematic comprises: a conditional statement 200 to evaluate; a plurality of conditions 211, 213, 215, 219 whereon the conditional statement depends; a plurality of processors 221, 223, 225, 229 adapted to evaluate a condition 211, 213, 215, 219; and a plurality of outcomes 291, 293, 295, 299 of the condition evaluation.
It is understood that an illustrative schematic of a method for evaluating an intermediate conditional statement will follow similar steps described hereafter with the conditional statement 200 replaced by the intermediate conditional statement. This enables an implementation of an embodiment of the present invention wherein a conditional statement is reduced to an intermediate conditional statement by the RPN evaluator 110. In such an embodiment, the NCs are the conditions necessary for evaluating an intermediate conditional statement when the RPN evaluator 110 has reduced the initial conditional statement into the
intermediate conditional statement.
When the conditional statement 200 is received, the RPN evaluator 110 attempts to evaluate the conditional statement 200 in accordance with the interaction embodiment described for Figure 1. In order to do so, the RPN evaluator 110 accesses cache 120 for the outcomes 291, 293, 295, 299 of condition evaluations. In this embodiment, the NCs for the evaluation of the conditional statement 200 are conditions 211, 213, 215. Therefore when outcomes 291, 293, 295 become available, the RPN evaluator 110 is able to evaluate the conditional statement 200 and generate an overall outcome without having to wait for an unnecessary outcome (UO) 299 to be evaluated from condition 219 by the processor 229.
As each processor 221, 223, 225, 229 processes an evaluation of the respective condition 211, 213, 215, 219 concurrently, from the time the processors 221, 223, 225, 229 start processing the condition evaluations, overall time taken to evaluate the conditional
statement 200 is:
Maximum of a time taken to evaluate a condition 211, 213 or 215 + time taken to communicate the outcomes 291, 293, 295 to the RPN evaluator + time taken for the RPN evaluator to evaluate the conditional statement 200 based on the outcomes 291, 293, 295.
If an unnecessary condition 219 takes long to evaluate, this approach can save a considerable time in evaluating the conditional statement 200. Further, this approach enables an optimal exploitation of the concurrent or parallel processing of the conditions.
According to an embodiment of the present invention, the RPN evaluator 110 is adapted to be able to recognise any NOs. Reducing of the conditional statement into an intermediate conditional statement enables such recognition to take place. However it is understood that any other techniques known for reducing a conditional statement can be used for this purpose.
In this embodiment, the RPN evaluator 110 flags the conditions 211, 213, 215 as NCs in a set of data comprising CID, a NC flag and a trigger flag stored in the cache 120. When any one of outcomes 291, 293, 295 becomes available, the respective processor 221, 223, 225 either sets a trigger flag whereby a controller is adapted to trigger the evaluator trigger or the processor 221, 223, 225 triggers the evaluator trigger so that the RPN evaluator 110 becomes active and evaluates the conditional statement 200 in light of the new outcome 291 293, 295 from the condition evaluation.
In an alternative embodiment, the controller is adapted to check the trigger flags of all NCs 211, 213, 215 and triggers the evaluator trigger when all the trigger flags are set for all conditions with set NC flags. In yet another embodiment, the set of data further comprises a triggered condition flag.
Although not required for the evaluation of the conditional statement, the UO 299 may still be saved in the cache 120 for future use, for example when a further conditional statement is to be evaluated whereon the condition 219 may be a NC or the outcome thereof renders some of the other conditions as NC or unnecessary conditions.
According to an embodiment, the cache 120 creates and/or maintains a set of data further comprising an update flag. Such an update flag is required whereon a further conditional statement comprises an update-dependent condition, a correct outcome of which requires updates, either regularly or after a specific event. When the update flag is set, a controller is adapted to ensure the update-dependent condition is evaluated and outcome produced accordingly at regular intervals, when the specific event takes place, or when the further conditional statement evaluation is requested.
An example of such an update-dependent condition may be a time dependent condition, whereon the time may be evaluated every hour, minute or a predefined time so that the outcome of the time dependent condition does not go out-of-date by more than an hour or a minute respectively. Further, the specific event for updating such time dependent condition may be either change of hour or minute, respectively, according to a local clock.
In an alternative embodiment, the NC flag is set so that it also indicates only the conditions which require an update. It is understood that, although no shown in this embodiment, various adapted arrangements of the NC flag, the trigger flag, the triggered condition flag and/or the update flag is possible according to other embodiments of the present invention.
According to an exemplary embodiment, the further conditional statement evaluation may comprise a condition whereon the condition checks whether any interaction between a user and a computer system has occurred within a specified time period or not. When this condition of no interaction is AND'ed with a user specific power management policy, a further action of entering an energy saving mode after the specified time period can be executed when the RPN evaluator evaluates the outcome of the conditional statement evaluation to be "True". By using the time dependent condition and an automatic update, this process can be automated.
According to an embodiment of the present invention, following programming code based on Objective C can be used to implement the present invention in accordance with logic state tables 1, 2 and 3 based on RPN and using SUE. In this exemplary code, Globally Unique Identifier (GUID) identifies each action or condition and therefore is an example of CID, CSID, ICSID, NC flag identification, trigger flag identification, or any identification data. "PrinterName" is a part of an action to be carried out if the overall outcome is "True", i.e. "Satisfied" or "kSatisfied". "Name" differentiate different actions and/or conditions and "Thatld" enables a first action to refer to another second action so that the first action can be dependent on the execution of the second action.
Table 1 ("AND" or "&") can be implemented using an "and With" object defined by: -(Cond itionStatus)andWith:(ConditionStatus)currentResult{ ConditionStatus result = currentResult; while (count>O) ConditionStatus status = [self pop]; if ((result == kNotSatisfied) II (status == kNotSatisfied) ){ result = kNotSatisfied; else if ( (resultkPending) (statuskPending) ){ result = kPending; } else{ result = kSatisfied; return result; This "andWith" object AND's everything in a stack with "currentResult" so that the outcome becomes: kSatisfied kSatisfied AND = kSatisifed; kNotSatisfied anything AND = kNotSatisfied; kPending kFending AND = kPending; and kPending ksatisfied AND = kPending, wherein the "ksatisfied" outcome is only reached if both variables "result" and "status" are satisfied.
Table 2 ("OR" or "I") can be implemented using an "orWith" object defined by -(Conditionstatus)orWith:(Conditionstatus)currentResult{ Conditionstatus result = currentResult; while (count>O) Conditionstatus status = [self pop]; if ((result == ksatisfied) II (status == ksatisfied) ){ result = kSatisfied; else if ( (resultkPending) (statuskPending) ){ result = kPending; 15}else{ result = kNotSatisfied; return result; 20} This "orWith" object OR's everything in a stack with "currentResult" so that the outcome be corn es: kSatisfied anything OR = kSatisifed; kPending kNotSatisfied OR = kPending; kPending kPending OR= kPending; and kNotSatisfied kNotSatisfied OR = kNotSatisfied, wherein the kNotSatisfied" outcome is only reached if both variables result' and "status" are not satisfied Table 3 ("NOT" or "!") can be implemented using an "notWith" object defined by: -(Cond itionStatus)notWith:(ConditionStatus)cu rrentResu lt{ ConditionStatus result = currentResult; while (count>0) ConditionStatus status = [self pop]; if ( result == kNotSatisfied){ result = kSatisfied; else if ( result==kSatisfied){ result = kNotSatisfied; } else{ result = kPending return result; This "notWith" object NOT's everything in a stack except the "Pending" state so that the outcome becomes: ksatisfied NOT = kNotsatisifed; kNotsatisfied NOT = ksatisfied; and kPending NOT = kPending.
A RPN evaluator may then be implemented using a "evaluateUsingCachedkesults" object defined by: -(ConditionStatus)evaluateUsingCachedResults:(NSDictionary *)cachedResults{ Conditionstatus result = kUndefined; [self empty]; NSArray *tokens = [self.rpnExpression componentsSeparatedByString:" "]; for (Nsstring *token in tokens) if ([token length]==0) continue; unichar operator = [token characterAtlndex:0]; switch (operator) case &: result = [self andWith:result]; break; case I': result = [self orWith:result]; break; case result = [self notWith:result]; break; default: [self push:[cachedResults objectForKey:token]]; break; return result; In "Conditionstatus result = kUndefined", the initial result is assumed to be in an "Undefined" state which is a state reserved for an empty stack. In this particular embodiment, the "Undefined" state is assumed to be equivalent to "True", i.e. "Satisfied" or "kSatisfied" outcome. "[self empty]" empties the stack prior to an evaluation and "unichar operator = [token characterAtlndex:0]; ... break" defines characters "&", "I" and "V as a representative operator for an operator "AND", "OR" and "NOT" respectively.
In an exemplary embodiment, above objects can be used to perform a further action dependent on a conditional statement. For example, to map or set a default printer when a calculator application is launched only if the user is using a computer identified as "Work-iDevice" or "Work-Dev Lan": <Container PrinterName="HP Home" Name="DoThat" ThatlD="ll" Action="SetDefaultPrinter" Type="Printer" Event="AppLaunched:Calculator"> <Container Name"OR"> <Item Name"12345678-1 234-1234-1234-12345678901 3"><Iltem> <Item Name"l 80BD524-4C33-4EBC-AA81-37F4F3DE3CEO"></ltem> </Container> <Container> This assigns Globally Unique Identifier (GUID)s to identify conditions on "Item Name" and a conditional statement comprising "OR" ("I") with corresponding conditions can then be generated in RPN: 12345678-1234-1234-1234-123456789013 1 80BD524-4C33-4EBC-AA81 - 37F4F3DE3CEO I Then the RPN evaluator object "evaluateUsingCachedResults" can be used to evaluate the conditional statement and when the overall outcome is "kSatisfied" the following code is used to map or set the default printer using the "GatewayMAC" address: <Container Name="Whens"> <Item Description="Home" Name="WhenThis" Type="Location" GatewayMAC="00:18:4d:1 1:cb:78" WhenlD="12345678-1234-1234-1234- 123456789012"><Iltem> <Item Description"Work-iDevice" Name="WhenThis" Type="Location" GatewayMAC"OO:OO:Se:OO:Ol:3a" WhenlD"l 2345678-1234-1234-1234- 1234567890 1 3"><Iltem> <Item Description="Work-Dev" Name="Whenlhis" Type="Location" GatewayMAc="00:00:Oc:07:ac:ca" WhenlD="12345678-1234-1234-1234- 1234567890 1 4">c/ltem> <Item Description"Work-Dev Lan" Name"WhenThis" Type="Location" GatewayMAC"0O:0O:Oc:07:ac:3e" WhenlD"180BD524-4C33-4EBC-AA81- 37F4F3DE3CEO">c/ Item> </Container> Using similar techniques more complex conditional statements such as: "If (UserGroup==Dev AND User==Bill AND Before lOam GMT) OR isAdmin" which is equivalent to: "If (UserGroup==Dev User==Bill Before lOam GMT&& ) isAdmin or "If (UserGroupDev UserBill Before lOam GMT & ) isAdmin can be evaluated, whereby a conditional statement for checking if (the time is before 10am GMT (Greenwich Mean Time), the user group is Dev and the user is Bill) or if (the user is an administrator) can be evaluated followed by a further action or application to be performed thereafter when the overall outcome is "kSatisfied".
According to an embodiment of the present invention, aforementioned conditional statement "UserGroup==Dev User==Bill Before lOam GMT & ) isAdmin " is the conditional statement 200 shown in Figure 2. In this embodiment, a first condition is "UserGroup==Dev", a second condition is "UserBill", a third condition is "Before lOam GMT", and a fourth condition is "isAdmin".
A RFN evaluator at the outset assumes all the conditions are in a "kFending" state unless informed otherwise. According to alternative embodiment, at the outset all the conditions are set to a default state which may be a "kPending" state or any other state depending on a specific implementation of the embodiment.
In an exemplary embodiment, referring to Figure 2, the first condition 219 is evaluated by a server 229 whereon a list of User Groups and its members are stored. The second condition 213 and the third condition 215 are evaluated by a local computer 223, 225 wherefrom a user connects to a system implementing the embodiment of the present invention. The fourth condition 211 is evaluated by an admin server 221 whereon a list of User IDs of all the administrators is stored. The overall conditional statement 200 is being evaluated by a RPN evaluator running on the user's local computer 223, 225.
The local computer 223, 225 evaluates the third condition 215 to be "ksatisfied" first and communicates this third outcome 295 to an application running the RPN evaluator.
Recognising that the conditional statement 200 now is "kPending kPending ksatisfied & kPending " the RPN evaluator sets all remaining first, second and fourth conditions 219, 213, 211 as NC in respective NC flags.
When the second condition 213 is then evaluated by the local computer 223, 225 to be "kNotSatisfied" and the second outcome 293 communicated to the application, the RPN evaluator recognises the conditional statement 200 as "kPending kNotSatisfied kSatisfed & kPending I = kNotsatisfied kPending I = kPending" and sets only the fourth condition 211 as a NC in its NC flags whilst ensuring a NC flag of the remaining first condition 219 is set as an unnecessary outcome 299.
If the fourth condition 211 is evaluated by the admin server 221 to be "kSatisfied" and this fourth outcome 291 communicated to the application, the RPN evaluator evaluates the overall conditional statement 200 to be "kSatisfied" and performs an appropriate further action if there is one. If the fourth outcome 291 is "kNotSatisfied", the RPN evaluator evaluates the overall conditional statement 200 to be "kNotSatisfied" and either performs an appropriate further action, which may be a warning to the user stating that the conditions have not been met, or just results in an inaction and/or termination of the whole application.
It is understood that setting of the NC flags in the foregoing embodiment is similar to identifying NCs of an intermediate conditional statement reduced from the initial conditional statement according to an alternative foregoing embodiment.
Figure 3 shows the components of the embodiment shown in Figure 1 further comprising an extended component according to an embodiment of the present invention. This embodiment comprises the RPN evaluator 110, the cache 120 and the processor/thread 130 shown in Figure 1 as well as a Conditional statement divider 300.
When a RPN conditional statement is received by the RPN evaluator, the Conditional statement divider 300 divides the RPN conditional statement into sub-RPN conditional statements so that each sub-RPN conditional statement can then be sent to the cache 120 and the processor 130. The processor 130 then processes and/or evaluates the sub-RPN conditional statement to return an outcome to the cache 120. This enables the present invention to divide any given RPN conditional statement into appropriate portions whereby workload involved in evaluating the RPN conditional statement can be distributed across a number of processors 130.
According to an embodiment, the Conditional statement divider 300 analyses the RPN conditional statement to identify any repeated condition, or set of conditions, which comprises at least one NC. The Conditional statement divider 300 then divides that portion out as a first sub-RPN conditional statement and the remaining portion as a second sub-RFN conditional statement. The first sub-RPN conditional statement is evaluated separately from the second sub-RPN condition and the outcome of the evaluation of the first sub-RPN conditional statement is then used to evaluate the second sub-RPN conditional statement. This prevents any unnecessary repetition of condition evaluation whereby access to the cache 120 is also reduced.
It is understood that the present invention can be altered to implement various other techniques involved in dividing a conditional statement into more than one portions to better exploit the concurrent/parallel processing nature of the present invention. It is also understood that the Conditional statement divider 300 may also reduce the RPN conditional statement into shorter intermediate conditional statements according to some of the foregoing embodiments.
Figure 4 shows an illustrative environment 1010 according to an embodiment of the invention. The skilled person will realise and understand that embodiments of the present invention may be implemented using any suitable computer system, and the example system shown in Figure 4 is exemplary only and provided for the purposes of completeness only. To this extent, environment 1010 includes a computer system 1020 that can perform a process described herein in order to perform an embodiment of the invention. In particular, computer system 1020 is shown including a program 1030, which makes computer system 1020 operable to implement an embodiment of the invention by performing a process described herein.
Computer system 1020 is shown including a processing component 1022 (e.g., one or more processors), a storage component 1024 (e.g., a storage hierarchy), an input/output (I/O) component 1026 (e.g., one or more I/O interfaces and/or devices), and a communications pathway 1028. In general, processing component 1022 executes program code, such as program 1030, which is at least partially fixed in storage component 1024. While executing program code, processing component 1022 can process data, which can result in reading and/or writing transformed data from/to storage component 1024 and/or I/O component 1026 for further processing. Pathway 1028 provides a communications link between each of the components in computer system 1020. I/O component 1026 can comprise one or more human I/O devices, which enable a human user 1012 to interact with computer system 1020 and/or one or more communications devices to enable a system user 1012 to communicate with computer system 1020 using any type of communications link. To this extent, program 1030 can manage a set of interfaces (e.g., graphical user interface(s), application program interface, and/or the like) that enable human and/or system users 1012 to interact with program 1030.
Further, program 1030 can manage (e.g., store, retrieve, create, manipulate: organize, present, etc.) the data, such as a plurality of data files 1040, using any solution.
In any event, computer system 1020 can comprise one or more general purpose computing articles of manufacture (e.g., computing devices) capable of executing program code, such as program 1030, installed thereon. As used herein, it is understood that "program code" means any collection of instructions, in any language, code or notation, that cause a computing device having an information processing capability to perform a particular action either directly or after any combination of the following: (a) conversion to another language, code or notation; (b) reproduction in a different material form; and/or (c) decompression. To this extent, program 1030 can be embodied as any combination of system software and/or application software.
Further, program 1030 can be implemented using a set of modules. In this case, a module can enable computer system 1020 to perform a set of tasks used by program 1030, and can be separately developed and/or implemented apart from other portions of program 1030. As used herein, the term "component" means any configuration of hardware, with or without software, which implements the functionality described in conjunction therewith using any solution, while the term "module" means program code that enables a computer system 1020 to implement the actions described in conjunction therewith using any solution. When fixed in a storage component 1024 of a computer system 1020 that includes a processing component 1022, a module is a substantial portion of a component that implements the actions. Regardless, it is understood that two or more components, modules, and/or systems may share some/all of their respective hardware and/or software. Further, it is understood that some of the functionality discussed herein may not be implemented or additional functionality may be included as part of computer system 1020.
When computer system 1020 comprises multiple computing devices, each computing device can have only a portion of program 1030 fixed thereon (e.g., one or more modules).
However, it is understood that computer system 1020 and program 1030 are only representative of various possible equivalent computer systems that may perform a process described herein. To this extent, in other embodiments, the functionality provided by computer system 1020 and program 1030 can be at least partially implemented by one or more computing devices that include any combination of general and/or specific purpose hardware with or without program code. In each embodiment, the hardware and program code, if included, can be created using standard engineering and programming techniques, respectively.
Regardless, when computer system 1020 includes multiple computing devices, the computing devices can communicate over any type of communications link. Further, while performing a process described herein, computer system 1020 can communicate with one or more other computer systems using any type of communications link. In either case, the communications link can comprise any combination of various types of optical fibre, wired, and/or wireless links; comprise any combination of one or more types of networks; and/or utilize any combination of various types of transmission techniques and protocols.
In any event, computer system 1020 can obtain data from files 1040 using any solution.
For example, computer system 1020 can generate and/or be used to generate data files 1040, retrieve data from files 1040, which may be stored in one or more data stores, receive data from files 1040 from another system, and/or the like.
It is understood that any set of data used in the foregoing embodiments of the invention may be replaced by a database or any other form of data for storing at least one item of entry.
It is also understood that an outcome stored in a set of data may comprise a condition, a conditional statement, or any other form of statement or a rule to be evaluated.
Although foregoing embodiments use a "condition" to refer to an expression to be evaluated and a "conditional statement" to refer to an expression comprising a plurality of "conditions" to be evaluated with logic operators, it is understood that each "condition" may also comprise a "conditional statement", a thread or a unit of data to be processed upon which evaluation or execution of an overall conditional statement" depends.
In such an embodiment, the "conditional statement" may refer to any expression to be evaluated or any code to be executed which depends on processing of a subset of the expression or the code. Further, it is also understood that the processing of the subset of the expression or the code may take place in separate machines, processors, cores of a central processing unit, locations or any devices capable of processing the expression or the code, wherein the outcome of the processing is communicated to a source device whereon the overall expression or code is being evaluated or executed. Such an embodiment may be present in a multi-core system, a multi-processor system, a parallel processing system, a distributed system, or any other type of system capable of dividing a workload and performing a SCE on the outcomes of each divided portion of the workload.
Any of the steps in the methods described herein may be omitted or ordered differently in an alternative embodiment of the present invention.
Attention is directed to all papers and documents which are filed concurrently with or previous to this specification in connection with this application and which are open to public inspection with this specification, and the contents of all such papers and documents are incorporated herein by reference.
All of the features disclosed in this specification (including any accompanying claims, abstract and drawings), and/or all of the steps of any method or process so disclosed, may be combined in any combination, except combinations where at least some of such features and/or steps are mutually exclusive.
Each feature disclosed in this specification (including any accompanying claims, abstract and drawings) may be replaced by alternative features serving the same, equivalent or similar purpose, unless expressly stated otherwise. Thus, unless expressly stated otherwise, each feature disclosed is one example only of a generic series of equivalent or similar features.
The invention is not restricted to the details of the foregoing embodiment(s). The invention extends to any novel one, or any novel combination, of the features disclosed in this specification (including any accompanying claims, abstract and drawings), or to any novel one, or any novel combination, of the steps of any method or process so disclosed.

Claims (22)

  1. CLAIMS1. A method of evaluating a conditional statement comprising a step of evaluating a conditional statement comprising a plurality of conditions and at least one operator to operate thereon, wherein the method implements: a Reverse Polish Notation (RPN) to represent the conditional statement; and a Short Circuit Evaluation (SCE) for a logic evaluation whereby an unnecessary condition for evaluating the conditional statement is disregarded for the conditional statement evaluation.
  2. 2. The method of claim 1 wherein a set of states for the logic evaluation comprises at least a True state, a False state and a Pending state, and the method further comprises the steps of: a pending step wherein when an overall outcome of the conditional statement evaluation is in the Pending state, the conditional statement evaluation is suspended; and an evaluation resumption step wherein when an outcome of a necessary condition wherein the conditional statement depends is evaluated to be either the True or False state, the conditional statement evaluation is resumed, wherein: if the evaluation resumption step evaluates the overall outcome to be in the Pending state, the method proceeds to the pending step; and the pending step and the evaluation resumption step is repeated until the overall outcome of the conditional statement is evaluated to be either the True or False state.
  3. 3. The method of claim 2 wherein the evaluating the conditional statement comprises: initially setting outcomes of all of the plurality of conditions to the Pending state; storing the outcomes of the plurality of conditions in a set of data; and communicating each condition to more than one processor for evaluation of the plurality of conditions, wherein: the evaluation resumption step further comprises: when an outcome of a condition from the plurality of condition is evaluated to be either the True or False state by a relevant processer, communicating the outcome to the set of data and storing the outcome therein; and resuming the conditional statement evaluation wherein the conditional statement is evaluated using the stored outcomes of the plurality of conditions in the set of data.
  4. 4. The method of claim 2 or 3, wherein the evaluating the conditional statement comprises: initially setting outcomes of all of the plurality of conditions to the Pending state; initially setting all of the plurality of conditions as triggered conditions; storing the outcomes of the plurality of conditions in a set of data; and communicating each condition to more than one processor for evaluation of the plurality of conditions, wherein: the step of evaluating the conditional statement further comprises: evaluating a RPN representation of the conditional statement or an intermediatestatement; andreducing any conditional statement into an intermediate conditional statement; and the pending step further comprises: evaluating the RPN representation until an operator has operated on a triggered condition and a subsequent condition; and if an intermediary outcome of this evaluation is in the Pending state, suspending the RPN representation evaluation thereafter; and the evaluation resumption step further comprises: when a first outcome of a first condition from the plurality of condition is evaluated to be either the True or False state by a relevant processer, communicating the first outcome to the set of data and storing the first outcome therein; setting only the first outcome as a triggered condition; reducing any conditional statement into an intermediate conditional statement using the first outcome if possible; and evaluating a RPN representation of the conditional statement or an intermediatestatement, wherein:if during the evaluation resumption step an operator has operated on a triggered condition and a subsequent condition, and the evaluation of the RPN representation up to and including this operation has an intermediary outcome in the Pending state, the method proceeds to the pending step; and the pending step and the evaluation resumption step is repeated until the overall outcome of the conditional statement is evaluated to be either the True or False state, and wherein: the intermediate conditional statement is a reduced RPN representation of the conditional statement based on any available outcome of the plurality of conditions; reducing a conditional statement into an intermediate conditional statement comprises evaluating the conditional statement with any available outcome and removing any condition no longer necessary for evaluating the conditional statement whereby the intermediate conditional statement represents the conditional statement after a SCE; and the triggered condition is a condition which has triggered the conditional statement or intermediate conditional statement evaluation in progress.
  5. 5. The method of any one of claims 2 to 4, wherein the method further comprises the steps of maintaining a set of data comprising at least two of: a Condition Identification (CID); a Conditional Statement Identification (CSID); a Necessary Condition (NC) flag; an update flag; an outcome of a condition evaluation; and an overall outcome of a conditionalstatement, wherein:the CID identifies a condition the data relates to; the CSID identifies the conditional statement the data relates to; the NC flag indicates the condition is the necessary condition for evaluating an overalloutcome of the conditional statement; andthe update flag indicates the condition requires a re-evaluation and the outcome thereof updated for it to be valid for the next evaluation process.
  6. 6. The method of claims 5, wherein the set of data further comprises at least one of: a trigger flag; a triggered condition flag; an Intermediate Conditional Statement Identification (ICSID); and an outcome of an intermediate conditional statement, wherein: the trigger flag indicates an outcome of a condition wherein when the outcome is either the True or False state, the evaluation resumption step is triggered; the triggered condition flag indicates whether the related condition is a condition which has triggered a conditional statement or intermediate conditional statement evaluation currently in progress; and the ICSID identifies the intermediate conditional statement the data relates to.
  7. 7. The method of claim 6 further comprising the steps of: accessing the set of data; setting a trigger flag to any condition wherein when the outcome thereof is either the True or False state, the evaluation resumption step should be triggered so that the evaluation process can resume; and removing a trigger flag of any condition wherein the outcome thereof is no longer required as a trigger for entering the evaluation resumption step.
  8. 8. The method of any one of claims 5 to 7 further comprising the steps of: accessing the set of data; setting an update flag to any condition that requires re-evaluation before the condition can be used for another conditional or intermediate conditional statement evaluation; and updating an outcome of any condition that requires re-evaluation when a trigger flag is set in the set of data by communicating the condition to a processor for an evaluation.
  9. 9. The method of claim 8, wherein the update flag is automatically set in the set of data after a predetermined time period.
  10. 10. The method of claim 8 or 9, wherein the update flag is set in the set of data whenever a preset action has taken place.
  11. 11. The method of any one of claims 5 to 10 further comprising the steps of: accessing the set of data; setting a NC flag to any necessary condition for evaluating an overall outcome of the conditional statement or an intermediate conditional statement; and removing a NC flag of any condition wherein the outcome thereof is no longer necessary for evaluating the overall outcome of the conditional statement or an intermediate statement.
  12. 12. The method of claim 11 wherein the evaluation resumption step is only entered when an outcome of a condition with both the trigger flag and the NC flag set has been evaluated.
  13. 13. The method of any preceding claim further comprising a step of: if the overall outcome of the conditional statement is a True state, performing a first action.
  14. 14. The method of any preceding claim further comprising a step of: If the overall outcome of the conditional statement is a False state, performing a second action.
  15. 15. The method of any preceding claim wherein the plurality of conditions are evaluated by a plurality of processors whereby an outcome of each condition is evaluated concurrently.
  16. 16. The method of any preceding claim further comprising the steps of: dividing the RPN conditional statement into a plurality of sub-RPN conditionalstatements; andcommunicating the plurality of sub-RPN conditional statements to a plurality of processors so that the evaluations thereof take place concurrently.
  17. 17. A computer apparatus comprising a processor configured to evaluate a conditional statement by performing a step of evaluating a conditional statement comprising a plurality of conditions and at least one operator to operate thereon, wherein the computer apparatus is configured to implement: a Reverse Polish Notation (RPN) to represent the conditional statement; and a Short Circuit Evaluation (SCE) for a logic evaluation whereby an unnecessary condition for evaluating the conditional statement is disregarded for the conditional statement evaluation.
  18. 18. The computer apparatus of claim 17 wherein a set of states for the logic evaluation comprises at least a True state, a False state and a Pending state, and the computer apparatus is configured to perform the steps of: a pending step wherein when an overall outcome of the conditional statement evaluation is in the Pending state, the conditional statement evaluation is suspended; and an evaluation resumption step wherein when an outcome of a necessary condition wherein the conditional statement depends is evaluated to be either the True or False state, the conditional statement evaluation is resumed, wherein: if the evaluation resumption step evaluates the overall outcome to be in the Pending state, the method proceeds to the pending step; and the pending step and the evaluation resumption step is repeated until the overall outcome of the conditional statement is evaluated to be either the True or False state.
  19. 19. The computer apparatus of claim 18 wherein the evaluating the conditionalstatement comprises:initially setting outcomes of all of the plurality of conditions to the Pending state; storing the outcomes of the plurality of conditions in a set of data; and communicating each condition to more than one processor for evaluation of the plurality of conditions, wherein: the evaluation resumption step further comprises: when an outcome of a condition from the plurality of condition is evaluated to be either the True or False state by a relevant processer, communicating the outcome to the set of data and storing the outcome therein; and resuming the conditional statement evaluation wherein the conditional statement is evaluated using the stored outcomes of the plurality of conditions in the set of data.
  20. 20. The computer apparatus of claim 18 or 19, wherein the evaluating the conditionalstatement comprises:initially setting outcomes of all of the plurality of conditions to the Pending state; initially setting all of the plurality of conditions as triggered conditions; storing the outcomes of the plurality of conditions in a set of data; and communicating each condition to more than one processor for evaluation of the plurality of conditions, wherein: the step of evaluating the conditional statement further comprises: evaluating a RPN representation of the conditional statement or an intermediatestatement; andreducing any conditional statement into an intermediate conditional statement; and the pending step further comprises: evaluating the RPN representation until an operator has operated on a triggered condition and a subsequent condition; and if an intermediary outcome of this evaluation is in the Pending state, suspending the RPN representation evaluation thereafter; and the evaluation resumption step further comprises: when a first outcome of a first condition from the plurality of condition is evaluated to be either the True or False state by a relevant processer, communicating the first outcome to the set of data and storing the first outcome therein; setting only the first outcome as a triggered condition; reducing any conditional statement into an intermediate conditional statement using the first outcome if possible; and evaluating a RPN representation of the conditional statement or an intermediatestatement, wherein:if during the evaluation resumption step an operator has operated on a triggered condition and a subsequent condition, and the evaluation of the RPN representation up to and including this operation has an intermediary outcome in the Pending state, the method proceeds to the pending step; and the pending step and the evaluation resumption step is repeated until the overall outcome of the conditional statement is evaluated to be either the True or False state, and wherein: the intermediate conditional statement is a reduced RPN representation of the conditional statement based on any available outcome of the plurality of conditions; reducing a conditional statement into an intermediate conditional statement comprises evaluating the conditional statement with any available outcome and removing any condition no longer necessary for evaluating the conditional statement whereby the intermediate conditional statement represents the conditional statement after a SCE; and the triggered condition is a condition which has triggered the conditional statement or intermediate conditional statement evaluation in progress.
  21. 21. A computer readable medium storing a computer program to operate a method according to any one of claims ito 16.
  22. 22. The method, the computer apparatus or the computer readable medium as substantially described herein with reference to the accompanying drawings.
GB1221463.1A 2012-11-29 2012-11-29 Improvements in evaluation of conditional statements with plurality of conditions Withdrawn GB2510328A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
GB1221463.1A GB2510328A (en) 2012-11-29 2012-11-29 Improvements in evaluation of conditional statements with plurality of conditions

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GB1221463.1A GB2510328A (en) 2012-11-29 2012-11-29 Improvements in evaluation of conditional statements with plurality of conditions

Publications (2)

Publication Number Publication Date
GB201221463D0 GB201221463D0 (en) 2013-01-09
GB2510328A true GB2510328A (en) 2014-08-06

Family

ID=47560869

Family Applications (1)

Application Number Title Priority Date Filing Date
GB1221463.1A Withdrawn GB2510328A (en) 2012-11-29 2012-11-29 Improvements in evaluation of conditional statements with plurality of conditions

Country Status (1)

Country Link
GB (1) GB2510328A (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116662764B (en) * 2023-07-28 2023-09-29 中国电子科技集团公司第十五研究所 Data identification method for error identification correction, model training method, device and equipment

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2342732A (en) * 1998-10-16 2000-04-19 Ibm Reevaluation of a Boolean function applicable to event driven transaction processing
US7406592B1 (en) * 2004-09-23 2008-07-29 American Megatrends, Inc. Method, system, and apparatus for efficient evaluation of boolean expressions

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2342732A (en) * 1998-10-16 2000-04-19 Ibm Reevaluation of a Boolean function applicable to event driven transaction processing
US7406592B1 (en) * 2004-09-23 2008-07-29 American Megatrends, Inc. Method, system, and apparatus for efficient evaluation of boolean expressions

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Donald Snowdy, "Evaluation Engine" *
Thad Smith, "Re: Short-circuit evaluation of Boolean expressions" *

Also Published As

Publication number Publication date
GB201221463D0 (en) 2013-01-09

Similar Documents

Publication Publication Date Title
CN108431796B (en) Distributed resource management system and method
Solaimani et al. Statistical technique for online anomaly detection using spark over heterogeneous data from multi-source vmware performance data
CN102158535A (en) Cloud computing operating system
CN108027794B (en) Computing device, method, and machine-readable storage medium for data communication
CN109840142A (en) Thread control method, device, electronic equipment and storage medium based on cloud monitoring
US20150100961A1 (en) Operating Programs on a Computer Cluster
CN111190932B (en) Privacy cluster query method and device and electronic equipment
EP3955132A1 (en) Graph computing method and device
CN115567446A (en) Message forwarding method and device, computing equipment and uninstalling card
US10241838B2 (en) Domain based resource isolation in multi-core systems
CN115113987A (en) Method, device, equipment and medium for allocating non-uniform memory access resources
CN117076096A (en) Task flow execution method and device, computer readable medium and electronic equipment
GB2510328A (en) Improvements in evaluation of conditional statements with plurality of conditions
EP4206920A1 (en) Instance creation method, device and system
CN114691781A (en) Data synchronization method, system, device, equipment and medium
Lewis et al. QmiraXT-A Multithreaded QBF Solver.
US20170220659A1 (en) System and method of key range deletions
Feng et al. Research on computer software engineering database programming technology based on virtualization cloud platform
Voinea et al. POSUM: A portfolio scheduler for mapreduce workloads
CN105302597A (en) Information processing method and electronic equipment
KR20160041615A (en) An automatic system and method for collecting log based on a cloud platform
CN112169341B (en) Game data processing method, device, equipment and storage medium
CN114462373B (en) Audit rule determination method and device, electronic equipment and storage medium
CN116185921B (en) Log output method, system, equipment and medium for heterogeneous multi-core multi-domain
Naik Fuzzy intelligent system for improving high availability of a docker-based hybrid cloud infrastructure

Legal Events

Date Code Title Description
732E Amendments to the register in respect of changes of name or changes affecting rights (sect. 32/1977)

Free format text: REGISTERED BETWEEN 20160602 AND 20160608

WAP Application withdrawn, taken to be withdrawn or refused ** after publication under section 16(1)