EP2321728A2 - Method and system for generating a supervision device from specified feared behaviours - Google Patents

Method and system for generating a supervision device from specified feared behaviours

Info

Publication number
EP2321728A2
EP2321728A2 EP09782492A EP09782492A EP2321728A2 EP 2321728 A2 EP2321728 A2 EP 2321728A2 EP 09782492 A EP09782492 A EP 09782492A EP 09782492 A EP09782492 A EP 09782492A EP 2321728 A2 EP2321728 A2 EP 2321728A2
Authority
EP
European Patent Office
Prior art keywords
cert
formula
date
true
rel
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.)
Ceased
Application number
EP09782492A
Other languages
German (de)
French (fr)
Inventor
Nicolas Rapin
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.)
Commissariat a lEnergie Atomique et aux Energies Alternatives CEA
Original Assignee
Commissariat a lEnergie Atomique CEA
Commissariat a lEnergie Atomique et aux Energies Alternatives CEA
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 Commissariat a lEnergie Atomique CEA, Commissariat a lEnergie Atomique et aux Energies Alternatives CEA filed Critical Commissariat a lEnergie Atomique CEA
Publication of EP2321728A2 publication Critical patent/EP2321728A2/en
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3608Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation

Definitions

  • the invention relates to a method and a system for generating from the specification in a formal language of a dreaded behavior, automatically generating an observer agent, called monitor, capable, online, for an arbitrary duration and without loss of performance , to report any occurrence of said dreaded behavior specified during the operation of a system likely to produce this behavior. It allows the automatic generation of specified behavior detectors in metric linear time logic, with bounded memory, capable of operating online and for an arbitrarily long time. It is used in particular for the control and monitoring of simulated systems or even physical systems. It also makes it possible to carry out on-line diagnostics of control-command systems, monitoring of environments in home automation or robotics. It is also implemented for the proof of properties on finished executions / simulation. Different industries are concerned by the invention, such as: transport, telecom, Internet service, robotics and home automation industries.
  • proof techniques based on algebraic specifications. These techniques, if they make it possible to deal with complex, algorithmic functions, are not completely automatic.
  • the dedicated tools are proof assistants and the subtle part of the evidence is entrusted to qualified experts.
  • model-checking is completely automatic, but has the disadvantage of being limited to the treatment of a class of simple models, oriented control flow (without algorithms) .
  • the models analyzed by the "model-checking" technique must be limited in size. Otherwise, the tools consume memory space resources and computing time inaccessible in practice.
  • a formal monitoring tool is therefore a tool that accepts as input an expression specifying a dreaded behavior and outputs a monitor capable of detecting the occurrence of the dreaded behavior.
  • a formal monitoring approach there are mainly two formal monitoring approaches known to the Applicant.
  • the behavior of a system model or a physical system is represented by the evolution over time of a certain number of characteristic variables.
  • the behavior of a body in solid state physics, is characterized by the evolution of its characteristic variables such as its position, its speed, its acceleration, its kinetic moment, etc. Proposal.
  • Proposal refers to any expression that refers to the characteristic variables of the system and may be true or false.
  • the speed of the body k is 10 m / s”
  • the speed of the body k is strictly positive
  • the term "proposition” designates any linguistic expression, relating to the characteristic variables of a system, which can be either true or false. Instantaneous.
  • a snapshot gives the Boolean value of the defined propositions for a certain system. More formally we will speak of a snapshot relative to a set A of propositions to designate any pair (v, t) composed of a valuation v of the propositions of A and a date t (where t is element of the set of reals R).
  • evaluation of the propositions of A we mean any application of A in ⁇ 0,1 ⁇ , that is to say say an element of ⁇ 0,1 ⁇ A.
  • a process is used relative to a set A of propositions to designate any sequence indexed by the natural numbers of snapshots relating to A.
  • a process is therefore an application of S in I A where S c N, is an initial segment of N (for all i GS, if i> 0 then i -1 e S).
  • the first snapshot will have a date that we will call Origin. In the examples we will often choose 0 as the value for T_edge.
  • a process is therefore intuitively a sort of "movie" of how the system works.
  • 2.3. 1 and u are elements of ⁇ 0,1 ⁇ . They denote the opening or closing of the interval on terminals Ib and ub. If I is 0 the interval is open on its lower bound Ib, closed if I is 1. Idem for u which specifies the opening / closing on the upper bounded ub
  • the quadruplet (0, 4.32, 6.21, 1) represents the same interval as noted] 4.32, 6.21].
  • i.l, i.lb, i.ub and i.u denote the parameters mentioned above. So, for example, if i is] 4.32, 6.21] then:
  • a validity list is a list whose elements are well-formed intervals of the set of realities R, all disjoint, arranged in ascending (chronological) order.
  • the notation (h, i 2 , ..., in) will be used to designate a validity list containing the intervals H, i 2 , ... i n -
  • the chronological order means that if i k and i k + 1 are two consecutive intervals of a validity list we still have ik ⁇ ik + i-
  • ([0, 2.43 [, [3.27, 5.04]) is a validity list that contains two intervals, [0, 2.43 [ and [3.27, 5.04]. They are arranged in ascending or chronological order.
  • a validity list is by destination attached to an expression and allows to define, over a given time range, the dates when this expression is true and the dates when it is false, by conforming to the following convention: the dates that are within the intervals of the validity list are the dates when the expression is true; outside these intervals the expression is false.
  • connection on the left The connection of a validity list
  • the left of a validity list L is the result of the connection of L to the right of L '.
  • the object of the present invention relates to a method and a system for remedying at least the imperfections of the aforementioned methods.
  • the invention particularly relates to a method for automatically generating, from the formal specification of a feared behavior written in metric linear time logic, an automatic agent, called monitor, with bounded memory, capable of analyzing "on-line" the simulating a system model or the operation of a physical system to detect the occurrence of the specified dreaded behavior.
  • the method can therefore be used in the design phases to analyze a model, or in the test phases to analyze the operation of the realized system.
  • the present invention is based on the use of a formal language for specifying dreaded behaviors and a method for transforming any expression of this language into a powerful monitor, operating online, with no time limit.
  • the object of the present invention relates to a method for generating a detector of feared behaviors specified in metric linear time logic of a system whose behavior is to be monitored, characterized in that it comprises at least the following steps: implemented by a processor (steps on which we will come back later in the description):
  • ⁇ :: p
  • Option 1 Origin - ⁇ .rel_cert - Option 2: sup (Origin, Origin - ⁇ .rel_cert)
  • the invention also relates to a system for generating a detector of dreaded behaviors specified in linear temporal logic.
  • metric with bound memory, characterized in that it comprises at least the following elements: An input receiving one or more parameter (s) characteristic (s) of the state of the system to monitor, and a clock H indicating the date acquisition of this parameter (s), A processor adapted to perform the steps of the method according to the invention using the measured parameter (s) and the associated date, A suitable memory storing the current snapshot storing the validity lists LV determined by the implementation of the method for the main formula and its sub-formulas, where one or more outputs emitting a signal S corresponding to the information contained in the validity list for the main formula and transmit said signal.
  • FIG. 1 is a block diagram of the method according to the invention and FIG. 1B is an example of a system architecture enabling it to be implemented,
  • FIG. 2 a representation of the notion of process
  • FIG. 3 an algorithm for calculating the validity list of a proposition or of a formula called a purely Boolean formula
  • FIGS. 4, 5, 6A and 6B illustrate the calculation of the validity list of a formula according to those of its sub-formulas
  • Figure 7A the illustration of the calculation of the certainty date of a formula according to that of its sub-formula (for the unary operator on the future)
  • Figure 7B illustrates the calculation of the certainty date of a formula according to that of its sub-formulas (for the binary operator on the past)
  • FIG. 8A illustration of the definition of a zone of influence taken into account for the implementation of the method according to the invention
  • Figure 9 an example of application for monitoring the behavior of a mass-spring system.
  • FIG. 1A is a block diagram of an example of the method according to the invention comprising a system 1 whose behavior is to be observed, a time clock H making it possible to determine the date on which a snapshot was acquired, a processor that will process the data coming from the system to be monitored, for example a variable observed at a given moment and which will be able to evaluate the value of the propositions where this variable appears, to then calculate the validity lists attached to these propositions then the validity lists more complex formulas up to the validity list of the main formula specifying the dreaded behavior.
  • FIG. 1 B is shown an exemplary system according to the invention which comprises the system 1 whose behavior is monitored.
  • the system includes one or more sensors 10 for determining the value of each parameter representative of the monitored behavior. For example, it is possible to have a temperature sensor and check if a temperature proposal is true. Examples are given below.
  • the sensor or sensors of the parameters equipping the system 1 are connected to a device 11 comprising an input 12 and a processor 13 which will process the different data and a memory 14 storing the current snapshot and the validity lists of each formula.
  • the device 11 also comprises an input 15 receiving a clock specifying a date associated with a measured parameter.
  • the processor 13 will deliver via one or more outputs 16i a signal Sc containing data allowing, for example:
  • the signal obtained is transmitted to a device for generating an alarm and / or to a system control or regulation system under the supervision of a monitor generated by the method according to the invention.
  • the system whose behavior is monitored may be a model executed in simulation. This model can be very complex and / or large because the monitor generated according to the invention does not depend on the internal structure of this model. In this case the method can be considered as a model debugging technique.
  • the system can also be a device or a physical system which one wishes to control the behavior in operation and in particular to check its behavior. The process can then be considered as a subset of a larger control system.
  • the system according to the invention can be applied as a device making it possible to detect errors in the operation of a system, better known as the "debugger" of simulated systems, or as a monitor of physical systems for detecting malfunctions thereof. this in any industrial field (transport, home automation, robotics).
  • a monitor according to the invention consists in particular of several elements which will be explained below.
  • the concepts of process, proposal, validity list and snapshot have been defined previously.
  • One of the elements entering the generation of the monitor is the notion of validity list which is represented for example in Figures 4, 5, 6A, 6B.
  • the way in which a validity list can be deduced from a process is illustrated as follows. For this purpose, we examine the information that is delivered by a process to an observer or a sensor or monitoring device within a process. For this observer, the information delivered by a snapshot of the process remains until the snapshot following the i + i refreshes this information.
  • the information delivered by a snapshot of date t is equal to t 'where t' is the date of the next snapshot. If the last snapshot of the process has the date z, this principle makes it possible to define the validity of a proposition on any date of the interval [0, z] and thus a validity list on this range.
  • the steps of creating a validity list for the proposition p such as would be an observer placed in front of the process of Figure 2 are carried out below.
  • the process starts at 0 where snapshot I is refreshed.
  • It adds to the list of validity of p a first interval is [0.0, 0.0].
  • the validity list of p is therefore ([0.0, 0.0]).
  • the snapshot is refreshed in 1, py is always true.
  • the date value is 1.71.
  • the process extends the previous validity interval.
  • the list becomes ([0.0, 1.71]).
  • Any proposition p is associated with a boolean variable p. val and a variable list variable p.LV ("LV" for validity list). It is p.LV which represents the validity list for p. If I is a snapshot, then l.t is the date that I and l.p give to the truth value I assigns to proposition p. The algorithm is described by the diagram shown in Figure 3.
  • the first step, step 20, is a step of initializing the values of p. val and p.LV.
  • the variable p.val is initialized to false and the variable p.LV is initialized by the empty list.
  • the next step, step 21, is a refresh standby state of snapshot I. When this refresh occurs the algorithm goes to step 22 where the value of l.p is tested. If the truth value of l.p is true (is 1) the method tests, step 23, the value of p.val. If p.val is true then, step 24, the process extends the last interval of p.LV up to and including (closed interval on the value l.t). If the value p.val is false (worth 0) then, step 25, the process adds at the end of p.LV the new interval [l.t, l.t].
  • step 22 If, on the other hand, in step 22, lp is false, then the method tests p.val. If p.val is true, step 26, then the process extends the last interval of p.LV up to and excluding lt (open on lt) (step 28). If p.val is false, then the process leaves p.LV unchanged (step 27). Following steps 24, 25, 27 and 28, the method assigns p.val the value of lp (step 29). Then the process returns to the refresh standby step 21 of I, the calculation continuing as long as the process is kept running. As such, there is no stopping condition for this computation algorithm since it is waiting for a new snapshot. It can nevertheless be easily modified if the indication that a snapshot is the last is available.
  • the return to step 21 would be subject to the condition that the submitted snapshot is not the last.
  • the stopping condition will be determined by a strategy of using the complete method, that is to say by a strategy of exploitation of the validity lists.
  • the method can generate a simple monitor, for a language restricted to the proposals.
  • a first example of implementation of the method is given without limitation, for a dreaded behavior specified by a single proposal. In this example, it is proposed to generate a monitor to observe the bank account of a customer, posing as dreaded behavior that the balance is negative in other words that the proposal (balance ⁇ 0) is true at a given moment .
  • the process is considered relative to the set ⁇ (balance ⁇ 0) ⁇ .
  • the method then consists of the following algorithm: 1 - Allocate a boolean variable denoted I. (balance ⁇ 0) to store the value of (balance ⁇ 0) and a variable lt of real type to store the refresh date
  • ⁇ :: p
  • the direct sub-formulas of a formula are those placed directly under its operator. For example, for -i ⁇ it is ⁇ . For ⁇ i U [ a , b] ⁇ 2 it is ⁇ 1 and ⁇ 2 .
  • • ⁇ .val is a Boolean variable associated with ⁇ . It is initialized to 0.
  • Figure 4 illustrates the calculation of the validity list of -i ⁇ knowing that of ⁇ .
  • the principle is as follows: two successive intervals i and i + 1 of ⁇ give rise to an interval for -i ⁇ which inserts between i and i + 1. (See Appendix 1 for a more detailed description).
  • the validity list of ⁇ i ⁇ ⁇ 2 depends on those of ⁇ i and ⁇ 2 .
  • the principle is: if h is an interval of ⁇ i and i 2 is an interval of ⁇ 2 and hni 2 ⁇ 0, then hni 2 is an interval of ⁇ ⁇ ⁇ ⁇ 2 . (See Appendix 1 for a more detailed description).
  • Figure 5 illustrates how an interval of F [a , b] ⁇ is produced as a function of an existing interval in the validity list of ⁇ . If i is an interval of ⁇ we deduce that the interval (i ⁇ [-b, -a]) contains the validity dates for F [a , b] ⁇ according to the data of i. Indeed, let us choose a date t of i ⁇ [-b, -a]. Is ⁇ actually true in [t + a, t + b]? In other words, does [t + a, t + b] cut i? Suppose this is not the case.
  • the set i 2 is itself a set of dates that validate ⁇ 1 U [a , b] ⁇ 2 -
  • the interval i 2 must therefore also be adjoint to ( ⁇ 1 U [ a , b] ⁇ 2 ) .LV.
  • the validity list of P [a,>] ⁇ depends only on the first interval of the validity list of ⁇ . If it exists and is of the form [u, v] then the validity list of P [a , > ] ⁇ is composed of the single interval [u + a, ⁇ [.
  • the calculation of the validity list uses a non-recursive algorithm based on the height of the formulas.
  • the certainty window will be, for any formula ⁇ , the interval [T_origin - Cert ( ⁇ ), lt - Cert ( ⁇ )].
  • the certainty window will be, for any formula ⁇ , interval [sup (Origin, (Origin - Cert ( ⁇ ))), lt - Cert ( ⁇ )].
  • F [a , b ] P can be determined only until r - b. Indeed consider a date t ⁇ r - b. So t + b ⁇ r. Can the validity of F [ab ] p be determined in t? According to the definition of this operator this can be determined if the validity of p is certain on any date of [t + a, t + b]. Now this is the case since having t + b ⁇ r and a ⁇ b, it follows that all the dates of p on [t + a, t + b] are lower than r and therefore the validity of p known for each.
  • each sub-formula ⁇ of the principal is assigned a real variable named ⁇ .abs_cert intended to store the absolute certainty date of ⁇ .
  • ⁇ .abs_cert intended to store the absolute certainty date of ⁇ .
  • the initialization depends on an option. For ⁇ this variable ⁇ .abs_cert will be initialized either to (option 1) T_edge -
  • FIG. 8A illustrates the zone of influence for F [a , b] ⁇ .
  • the last snapshot is I 'while the precedent is I.
  • w of F [a , b] ⁇ is therefore] lt - (F [a! b] ⁇ ) .rel_cert, the .t - (F [a , b ] ⁇ ) .rel_cert].
  • the first dates on the value of ⁇ which influence the continuation window of F [aib ] ⁇ are the dates superior to lt - (F [a! B] ⁇ ) .rel_cert + a while the last one which influences this window of continuation is the .t - (F [a ib ] ⁇ ) .rel_cert + b. In other words, it is the interval F [aib ] .w ⁇ [a, b].
  • This can be expressed and generalized as a function that accepts two formulas as arguments and returns an interval. If ⁇ is a direct subformula formula of ⁇ , ZI ( ⁇ , ⁇ ) is the time range of the validity list of ⁇ to consider in calculating the continuation of ⁇ .
  • the process will take into account the constraints that a function, which we will call Dl, must satisfy to be a function of uselessness with the idea that a function of uselessness takes as argument a formula ⁇ n supposed to be a sub-formula of a main formula ⁇ , and returns a real number DI ( ⁇ n ), so that the absolute useless date ⁇ n .abs_di of ⁇ n is: ⁇ .abs_di + DI ( ⁇ n ) .
  • DI ( ⁇ n ) is therefore a useless date relative to the date of absolute uselessness ⁇ .abs_di of the main formula.
  • DI ( ⁇ n ) is therefore a useless date relative to the date of absolute uselessness ⁇ .abs_di of the main formula.
  • FIG. 9 illustrates an example of practical application to control the behavior of a mass-spring system.
  • a mass M moving without friction on a horizontal plane is connected to a vertical support S by a spring R and a damping system A.
  • Several properties can be analyzed by the method according to the invention, during a simulation of this model.
  • an expected property could be that the force f and the displacement x always vary in the same direction. In other words, what is feared is the proposition (df.dx ⁇ 0). It is possible to release this property by asking that if it happens that (df.dx ⁇ 0) then (df.dx> 0) is restored between 0.2 and 0.5 seconds later. In other words, the expected property is (df.dx ⁇ 0) ⁇ F [0 2, 05] (df.dx> 0).
  • the formula expressing the dreaded behavior is therefore -1 (-1 ((df.dx ⁇ 0) ⁇ -1 Fp 2, 05] (df.dx> 0))) that is to say simply: (df .dx ⁇ 0) ⁇ -1 F [0 2 , 05] (-> (df.dx ⁇ O)).
  • Another expected property could be: we must have (df.dx> 0) globally but we tolerate that (df.dx ⁇ 0) when df is close to zero (at plus or minus 0.5 newtons).
  • the expected property is (df.dx> 0) v (- 0.5 ⁇ df ⁇ 0.5).
  • the dreaded property is its negation -1 ((df.dx> 0) v (-0.5 ⁇ df ⁇ 0.5)) or simply ((df.dx ⁇ 0) ⁇ (-0.5 ⁇ f v f> 0.5)).
  • X (i) means that the value X has been calculated because the formula considered is a sub-formula of the formula of the line i.
  • the notation 0.2 (3) in line 2 means that 0.2 has been calculated for -i (df.dx ⁇ 0) because this formula is a sub-formula of that found in line 3. It can be seen that (df.dx ⁇ 0) is a sub-formula of two formulas (those in line 2 and 5, which is why there are two values for this formula).
  • intervals of their respective validity lists predate strictly their respective absolute useless dates. These are [0.0.3 [for ⁇ i and [0.3.0.7 [for ⁇ 2 . These intervals can be deleted from the respective validity lists (they no longer play any role in the detection of ⁇ 5 which is the main one). As it was explained, it is this mode of suppression which makes it possible to ensure that the monitor requires a bounded memory resource.
  • the method and the system according to the invention have the following advantages in particular:
  • An automatic method the monitor is automatically calculated from the expression of the dreaded behavior and the operation of the monitor is automatic in normal operation. It is fast and inexpensive in memory.
  • the method can be applied to any model, unlike the proof or model-checking model approaches that analyze the model as defined in its internal structure.
  • the monitor is only interested in executions of a system, to its observable productions. Whether the model is, in its internal structure, very simple or very complex, small or large, this has no impact on the generated monitor, since it does not depend on the structure of the model but only on the formula given in Entrance.
  • the analysis is done online, which means that:
  • the method according to the invention does not suppose a particular regularity on the execution, the delay between two observations being any.
  • Buffer is a variable of validity list type, initialized empty from each algorithm. "Nil” does not have a specific meaning. It intervenes to denote empty or undefined objects (lists, intervals %)
  • ⁇ .LV for list of validity of ⁇ (lists of disjoint intervals steadily increased)
  • ⁇ .LV.first and ⁇ .LV.Iast denote respectively the first and the last element of ⁇ .LV (are both Nil to denote that ⁇ .LV is empty)
  • I and u are elements of ⁇ 0,1 ⁇ which denote the opening or closing of the interval on terminals Ib and ub
  • Ib lower bound
  • ub upper bound example: (0, 4.32, 6.21, 1) represents] 4.32, 6.21] if i is an interval then i.l, i.lb, i.ub and i.u denote the parameters mentioned above
  • i be an interval of a validity list LV: i.pred denotes its predecessor in LV (Nil if i is the first element) i.next denotes the following interval in LV (Nil if i is last element)
  • ⁇ .LV is not empty, then be i its unique interval. This interval is modified so that it becomes (i.l, i.lb, w.ub, w.u) and FIN.

Abstract

The invention relates to a method for automatically generating a detector of specified feared behaviours in a metrical linear time logic with delimited memory, which can operate online during an arbitrarily long period. The method uses a time window for making an online calculation of the validity intervals of the formula that specifies the feared behaviour and also removes online the behaviours that have become irrelevant for detecting said behaviour. The method can be used for debugging models or as a component of a monitoring-control system.

Description

PROCEDE ET SYSTEME PERMETTANT DE GENERER UN DISPOSITIF DE CONTROLE A PARTIR DE COMPORTEMENTS REDOUTES METHOD AND SYSTEM FOR GENERATING A CONTROL DEVICE FROM REDUCED BEHAVIOR
SPECIFIESSPECIFIED
L'invention concerne un procédé et un système permettant, à partir de la spécification en un langage formel d'un comportement redouté, de générer automatiquement un agent observateur, appelé moniteur, capable, en ligne, pendant une durée arbitraire et sans perte de performance, de signaler toute occurrence dudit comportement redouté spécifié lors du fonctionnement d'un système susceptible de produire ce comportement. Elle permet la génération automatique de détecteurs de comportements spécifiés en logique temporelle linéaire métrique, ayant une mémoire bornée, capable de fonctionner en ligne et pendant un temps arbitrairement long. Elle est notamment utilisée pour le contrôle et la surveillance de systèmes simulés ou encore de systèmes physiques. Elle permet aussi d'effectuer des diagnostiques en ligne de systèmes de contrôle-commande, des surveillances d'environnements en domotique ou robotique. Elle est aussi mise en œuvre pour la preuve de propriétés sur des exécutions/simulation finies. Différentes industries sont concernées par l'invention, comme : les industriels du transport, des télécoms, des services Internet, de la robotique ou encore de la domotique.The invention relates to a method and a system for generating from the specification in a formal language of a dreaded behavior, automatically generating an observer agent, called monitor, capable, online, for an arbitrary duration and without loss of performance , to report any occurrence of said dreaded behavior specified during the operation of a system likely to produce this behavior. It allows the automatic generation of specified behavior detectors in metric linear time logic, with bounded memory, capable of operating online and for an arbitrarily long time. It is used in particular for the control and monitoring of simulated systems or even physical systems. It also makes it possible to carry out on-line diagnostics of control-command systems, monitoring of environments in home automation or robotics. It is also implemented for the proof of properties on finished executions / simulation. Different industries are concerned by the invention, such as: transport, telecom, Internet service, robotics and home automation industries.
Sur le marché des équipements industriels et grand public, les demandes de performances et de fonctionnalités s'accroissent continuellement. Pour faire face à ces demandes, les industriels ont été conduits à concevoir et à produire des systèmes dits complexes, c'est-à-dire constitués d'entités de natures différentes (mécanique, électronique, informatique, etc.) fonctionnant en forte interaction. Cet accroissement de complexité des systèmes va de pair avec l'augmentation du risque d'erreurs commises lors des phases de conception et de réalisation. Or ces erreurs se répercutent bien souvent sous la forme d'anomalies de fonctionnement du produit final. Il est donc crucial, pour des raisons évidentes de sécurité des personnes, d'économie et de préservation de l'image de marque, de détecter des erreurs de conception et/ou de réalisation avant qu'un produit soit mis sur le marché. Les industriels qui produisent des systèmes complexes sont à la recherche de méthodes et d'outils permettant de minimiser le nombre d'erreurs commises lors du cycle de développement de leurs produits, que ce soit en amont lors des phases de conception ou bien en aval lors des phases de test de validation. Les méthodes formelles connues de l'art antérieur permettent, sur un périmètre limité, de remplir en partie au moins cet objectif. En général, elles proposent des langages de spécification et des structures de modélisation mathématiquement fondés, grâce auxquels, il est possible de prouver mathématiquement qu'un modèle proche de la réalisation d'un produit est conforme à la spécification de ce produit. Principalement, deux approches techniques se sont imposées à l'heure actuelle.In the industrial and consumer equipment market, demands for performance and functionality are continually increasing. To cope with these demands, industrialists have been led to design and produce so-called complex systems, that is to say made up of entities of different natures (mechanical, electronic, computer, etc.) operating in strong interaction . This increased complexity of systems goes hand in hand with the increased risk of errors made during the design and implementation phases. But these errors are often reflected in the form of malfunctions of the final product. It is therefore crucial, for obvious reasons of personal safety, economy and preservation of the brand image, to detect errors of design and / or realization before a product is placed on the market. Industrialists who produce complex systems are looking for methods and tools to minimize the number of errors made during the development cycle of their products, whether upstream during the design phases or downstream during the design phase. validation test phases. Formal methods known from the prior art allow, on a limited perimeter, to partially fulfill at least this objective. In general, they offer mathematically-based specification languages and modeling structures, which makes it possible to mathematically prove that a model close to the realization of a product conforms to the specification of that product. Primarily, two technical approaches have emerged at present.
Tout d'abord, les techniques de preuve, basées sur les spécifications algébriques. Ces techniques, si elles permettent de traiter des fonctions complexes, algorithmiques, ne sont pas complètement automatiques. Les outils dédiés sont des assistants de preuve et la partie subtile des preuves est confiée à des experts qualifiés.First, the proof techniques, based on algebraic specifications. These techniques, if they make it possible to deal with complex, algorithmic functions, are not completely automatic. The dedicated tools are proof assistants and the subtle part of the evidence is entrusted to qualified experts.
L'autre type de technique plus connue sous l'abréviation anglo-saxonne « model-checking » est totalement automatique, mais présente comme inconvénient d'être limitée au traitement d'une classe de modèles simples, orientés flot de contrôle (sans algorithmes). De surcroît, les modèles analysés par la technique de « model-checking » doivent être limités en taille. A défaut, les outils consomment des ressources en espace mémoire et temps de calcul inaccessibles en pratique.The other type of technique, better known under the abbreviation Anglo-Saxon "model-checking" is completely automatic, but has the disadvantage of being limited to the treatment of a class of simple models, oriented control flow (without algorithms) . In addition, the models analyzed by the "model-checking" technique must be limited in size. Otherwise, the tools consume memory space resources and computing time inaccessible in practice.
Par ailleurs, les méthodes formelles proposent également des techniques de test qui automatisent la génération de tests à partir de modèles exécutables. Mais souvent, les tests ne répondent pas nécessairement aux objectifs intuitifs de l'utilisateur. Ces tests n'aident donc pas l'utilisateur à accroître sa confiance dans la correction du système qu'il a réalisé. Face à ces difficultés les techniques dites de monitoring permettent d'apporter des réponses pertinentes. Ces techniques sont qualifiées de techniques « boîte noire » en ce sens qu'elles ignorent la structure interne d'un système, pour ne s'intéresser qu'à ses productions observables. L'avantage de telles techniques est qu'elles peuvent être mises en œuvre quel que soit le système puisque sa complexité intrinsèque n'est pas prise en compte. En revanche ce sont des techniques de falsification : elles peuvent apporter la preuve qu'un système ne satisfait pas une exigence, mais non que le système satisfera toujours une exigence. Le monitoring au sens le plus général consiste à observer un système, un processus, en vue de détecter un événement plus ou moins complexe. Le monitoring formel se présente quant à lui comme une technique permettant de générer automatiquement des moniteurs à partir de spécifications en langages formels de comportements redoutés. Schématiquement un outil de monitoring formel est donc un outil qui accepte en entrée une expression spécifiant un comportement redouté et produit en sortie un moniteur capable de détecter l'occurrence du comportement redouté. Dans l'art antérieur il existe principalement deux approches de monitoring formel connues du Demandeur.In addition, formal methods also provide test techniques that automate the generation of tests from executable models. But often, the tests do not necessarily meet the objectives intuitive user. These tests therefore do not help the user to increase his confidence in the correction of the system he has achieved. Faced with these difficulties, so-called monitoring techniques make it possible to provide relevant answers. These techniques are called "black box" techniques in that they ignore the internal structure of a system, to be interested only in its observable productions. The advantage of such techniques is that they can be implemented regardless of the system since its intrinsic complexity is not taken into account. On the other hand, they are falsification techniques: they can prove that a system does not satisfy a requirement, but not that the system will always satisfy a requirement. Monitoring in the broadest sense is to observe a system, a process, to detect a more or less complex event. The formal monitoring is presented as a technique for automatically generating monitors from specifications in formal languages of dreaded behavior. Schematically, a formal monitoring tool is therefore a tool that accepts as input an expression specifying a dreaded behavior and outputs a monitor capable of detecting the occurrence of the dreaded behavior. In the prior art there are mainly two formal monitoring approaches known to the Applicant.
Une première approche est due à Prasanna Thati et Grigore Rosu. Cette approche est décrite dans l'article intitulé « Monitoring Algorithms For Metric Temporal Logic Spécifications ». Cette approche propose de générer un moniteur pouvant fonctionner en ligne, à partir d'une logique métrique linéaire. Le procédé de Thati et Rosu est basé sur la réécriture et l'évaluation dynamique de formules et engendre de fait plusieurs limitations. Le principe de cette approche consiste à exploiter l'expression même du problème du monitoring à savoir « est-ce qu'un comportement observé satisfait Φ » où Φ est une formule qui spécifie un comportement redouté. Problème que l'on peut noter plus brièvement : C /= Φ ?A first approach is due to Prasanna Thati and Grigore Rosu. This approach is described in the article titled "Monitoring Algorithms for Metric Temporal Logic Specifications". This approach proposes to generate a monitor that can operate online, from a linear metric logic. The Thati and Rosu process is based on the rewriting and dynamic evaluation of formulas and creates several limitations. The principle of this approach is to exploit the very expression of the problem of monitoring, namely "is observed behavior satisfied?" Where Φ is a formula that specifies a dreaded behavior. Problem that can be noted more briefly: C / = Φ?
(Lire : est-ce que le comportement observé C valide Φ ?) Avant d'avoir observé le système, le problème se pose donc comme suit :(Read: Is the observed behavior C valid Φ?) Before observing the system, the problem is as follows:
0/= Φ ? où 0 dénote le comportement vide Le procédé de Thati et Rosu fonctionne ainsi : il maintient l'expression du problème de la satisfaction à mesure que les observations arrivent, en tenant compte de celles-ci. Si, à un certain stade, le problème du monitoring s'exprime sous la forme « C /= Φn ? » et qu'une nouvelle observation o est disponible, il calcule Φn+i, une nouvelle formule, telle que l'on ait : C /= Φn « C.0 /=Φn+1 où Co est le comportement défini comme le comportement C suivi de l'observation o. Par transitivité :0 / = Φ? where 0 denotes the empty behavior The process of Thati and Rosu works as follows: it maintains the expression of the problem of satisfaction as the observations arrive, taking into account these. If, at a certain stage, the monitoring problem is expressed as "C / = Φ n ? And that a new observation o is available, it calculates Φ n + i, a new formula, such that we have: C / = Φ n "C.0 / = Φ n + 1 where Co is the behavior defined as C behavior followed by observation o. By transitivity:
0\= φ <£=> ... £=> C /= Φn <=> C.O /= Φn+1 Le principe consiste donc à réécrire l'expression du comportement redouté en fonction des événements déjà observés du système, tout en maintenant la problématique initiale, à savoir « 0 I= Φ ? ». Ce que les auteurs « appellent résoudre le passé et dériver le futur ». Pour ne pas stocker la trace d'exécution (afin que le moniteur garde une mémoire bornée), il est nécessaire de maintenir en permanence une table de vérité de toutes les formules qui peuvent potentiellement apparaître lors du procédé de réécriture. De la sorte, il est possible de calculer la valeur de vérité de la formule principale en utilisant les valeurs contenues dans la table. Mais, pour que le moniteur ait une mémoire bornée, il faut que cette table soit finie et par conséquent que l'ensemble des sous-formules pouvant apparaître soit lui-même fini. Or ceci n'est possible que si les pas d'exécution permis sont en nombre finis et connus à l'avance. Ainsi ce procédé présente notamment les inconvénients suivants :0 \ = φ <£ => ... £ => C / = Φ n <=> CO / = Φ n + 1 The principle consists in rewriting the expression of the dreaded behavior according to the events already observed in the system, while maintaining the initial problematic, namely "0 I = Φ? ". What writers "call to solve the past and derive the future". In order not to store the execution trace (so that the monitor keeps a bounded memory), it is necessary to permanently maintain a truth table of all the formulas that may potentially appear during the rewriting process. In this way, it is possible to calculate the truth value of the main formula using the values contained in the table. But, for the monitor to have bounded memory, this table must be finite and therefore the set of sub-formulas that can appear to be itself finite. However, this is only possible if the execution steps allowed are finite in number and known in advance. Thus this process has the following drawbacks:
• La logique de spécification ne supporte que des intervalles dont les bornes sont des entiers naturels, • Les pas d'exécution permis pour le système doivent être en nombre finis et connus à l'avance. Dans l'article précité, les pas d'exécution permis sont des entiers naturels (ainsi que l'indiquent les définitions de F+(Φ) et F"(Φ)), • Enfin, l'algorithme est très consommateur de temps puisque la complexité estimée est de l'ordre de m323m où m est le nombre total de sous-formules obtenues à partir de la formule principale (l'ordre de grandeur de m par rapport à la formule principale n'étant quant à lui pas donné dans l'article). Une deuxième approche connue du Demandeur est décrite dans le document intitulé « Monitoring Temporal Properties of Continuous Signais » de Oded Maler et Dejan Nickovic. Le moniteur d'Oded Maler et Dejan Nickovic se base sur le calcul des intervalles de validité d'une formule. Pour une formule donnée, et un comportement donné, le procédé de Maler et Nickovic calcule un ensemble d'intervalles de temps qui dénotent les dates où la formule est vraie et en dehors desquels la formule est fausse. Le calcul est fait d'abord pour les formules de base (propositions) puis pour les formules plus complexes. Pour cela, les auteurs définissent une correspondance entre les opérateurs de la logique de spécification et les opérations classiques sur les ensembles d'intervalles (intersection, union ...). Par exemple, en connaissant les intervalles de validité de deux formules Φi et Φ2, il est possible de déduire qu'un intervalle / est dans l'ensemble des intervalles de validité de la formule Φi Λ Φ2 si et seulement s'il existe un intervalle j de Φi et un intervalle k de Φ2 tels que i = j n k. Cette technique permet le calcul des intervalles pour une logique temporelle qui supporte des intervalles dont les bornes ne sont plus limitées aux entiers et l'analyse d'exécutions dont le pas est libre. Outre le fait qu'il n'existe pas d'opérateurs sur le passé dans la logique présentée, l'approche souffre d'un défaut essentiel, indiqué par les auteurs. Le moniteur d'Oded Maler et Dejan Nickovic travaille hors ligne, sur une exécution enregistrée. Ceci représente une limitation importante car, sur un temps d'exécution long, le stockage de l'exécution peut ne pas être praticable (système autonome, embarqué ...). Ceci limite donc les temps de surveillance et de fait aussi les applications. Définitions• The specification logic only supports intervals whose bounds are natural numbers, • The execution steps allowed for the system must be in finite number and known in advance. In the aforementioned article, the allowed execution steps are natural numbers (as indicated by the definitions of F + (Φ) and F " (Φ)). • Finally, the algorithm is very time consuming since the estimated complexity is of the order of m 3 2 3m where m is the total number of sub-formulas obtained from the main formula (the order of magnitude of m with respect to the main formula being in itself not given in the article) A second known approach of the Applicant is described in Oded Maler and Dejan Nickovic's "Monitoring Temporal Properties of Continuous Signals." The monitor of Oded Maler and Dejan Nickovic is based on the calculation of Validity intervals of a formula For a given formula, and a given behavior, the Maler and Nickovic process calculates a set of time intervals that denote the dates when the formula is true and outside which the formula is false. The calculation is done first for basic formulas (propositions) then for more complex formulas. For this, the authors define a correspondence between the operators of the specification logic and the usual operations on the sets of intervals (intersection, union ...). For example, by knowing the validity intervals of two formulas Φi and Φ 2 , it is possible to deduce that an interval / is in the set of validity intervals of the formula Φi Λ Φ 2 if and only if there exists an interval j of Φi and an interval k of Φ 2 such that i = jn k. This technique allows the calculation of intervals for a temporal logic that supports intervals whose limits are no longer limited to integers and the analysis of executions whose step is free. In addition to the fact that there are no operators on the past in the logic presented, the approach suffers from an essential defect, indicated by the authors. Oded Maler and Dejan Nickovic's monitor works off-line on a recorded performance. This represents a significant limitation because, over a long execution time, the storage of the execution may not be practicable (autonomous system, embedded ...). This limits the monitoring time and also the applications. Definitions
Dans la suite de la description, certains termes seront utilisés pour mieux comprendre et définir l'objet de l'invention, certaines définitions sont données ci-dessous. Notion de processusIn the remainder of the description, certain terms will be used to better understand and define the object of the invention, certain definitions are given below. Concept of process
Le comportement d'un modèle de système ou d'un système physique est représenté par l'évolution dans le temps d'un certain nombre de variables caractéristiques. Par exemple le comportement d'un corps, en physique des solides, est caractérisé par l'évolution de ses variables caractéristiques que sont sa position, sa vitesse, son accélération, son moment cinétique, etc. Proposition. A l'égard d'un système le terme « proposition » désigne toute expression faisant référence aux variables caractéristiques du système et pouvant être vraie ou fausse. Par exemple « la vitesse du corps k vaut 10 m/s », « la vitesse du corps k est strictement positive », sont des propositions classiques en physique des solides. Mathématiquement, ces propositions seraient notées « vk == 10 », « vk > 0 ». Nous voyons que ces expressions peuvent être vraies ou fausses. Par exemple, si la vitesse observée du corps k est de 5m/s, alors la proposition « vk == 10 » est fausse puisque « 5 == 10 » est fausse. Dans la suite le terme proposition désigne toute expression langagière, portant sur les variables caractéristiques d'un système, pouvant être soit vraie, soit fausse. Instantané.The behavior of a system model or a physical system is represented by the evolution over time of a certain number of characteristic variables. For example, the behavior of a body, in solid state physics, is characterized by the evolution of its characteristic variables such as its position, its speed, its acceleration, its kinetic moment, etc. Proposal. With respect to a system the term "proposition" refers to any expression that refers to the characteristic variables of the system and may be true or false. For example "the speed of the body k is 10 m / s", "the speed of the body k is strictly positive", are classical proposals in solid physics. Mathematically, these propositions would be denoted "v k == 10", "v k >0". We see that these expressions can be true or false. For example, if the observed velocity of the body k is 5m / s, then the proposition "v k == 10" is false since "5 == 10" is false. In the following, the term "proposition" designates any linguistic expression, relating to the characteristic variables of a system, which can be either true or false. Instantaneous.
Intuitivement un instantané donne la valeur booléenne des propositions définies pour un système à une certaine. Plus formellement on parlera d'instantané relativement à un ensemble A de propositions pour désigner tout couple (v,t) composé d'une valuation v des propositions de A et d'une date t (où t est élément de l'ensemble des réels R). Par valuation des proposition de A nous entendons toute application de A dans {0,1}, c'est-à- dire un élément de {0,1 }A. Par convention, si v G {0,1 }A est une valuation et p une proposition de A, si v(p) = 0 (resp. v(p) = 1 ) on dira que p est fausse (resp. vraie) selon v. L'ensemble de tous les instantanés relativement à A, que l'on notera U, est donc {0,1 }A x R. Par commodité, si I est l'instantané (v, t) relativement à A et que p est une proposition de A, on notera l.p la valeur que I donne à p, soit v(p) et l.t la date portée par I, soit t.Intuitively a snapshot gives the Boolean value of the defined propositions for a certain system. More formally we will speak of a snapshot relative to a set A of propositions to designate any pair (v, t) composed of a valuation v of the propositions of A and a date t (where t is element of the set of reals R). By evaluation of the propositions of A we mean any application of A in {0,1}, that is to say say an element of {0,1} A. By convention, if v G {0,1} A is a valuation and p is a proposition of A, if v (p) = 0 (respectively v (p) = 1) we say that p is false (resp. according to v. The set of all the snapshots relative to A, which will be noted U, is therefore {0,1} A x R. For convenience, if I is the instantaneous (v, t) relative to A and that p is a proposition of A, we note lp the value that I gives to p, v (p) and lt the date carried by I, let t.
Par exemple ({p0 |→ 1 , pi \→ 1 , P2 \→ 0}, 1 .3465) est un instantané relativement à A = {p0, pi , p2J- Un tel instantané peut se lire : à la date 1 .3465, les propositions p0 et pi sont vraies, p2 est fausse.For example ({p 0 | → 1, pi \ → 1, P2 \ → 0}, 1 .3465) is a snapshot relative to A = {p 0 , pi, p 2 J- Such a snapshot can be read: the date 1 .3465, the propositions p 0 and pi are true, p 2 is false.
D'après les notations introduites, nous avons donc Lp0 = 1 et l.t = 1 .3465.According to the notations introduced, we have Lp 0 = 1 and lt = 1 .3465.
Processus.Process.
Dans le contexte de la présente invention le terme processus est utilisé relativement à un ensemble A de propositions pour désigner toute suite indicée par les entiers naturels d'instantanés relatifs à A. Mathématiquement un processus est donc une application de S dans IA où S c N, est un segment initial de N (pour tout i G S, si i>0 alors i -1 e S). Le premier instantané portera une date que nous appellerons T_origine. Dans les exemples nous choisirons souvent 0 comme la valeur pour T_origine. En tant que suite d'instantanés, un processus est donc intuitivement une sorte de « film » du fonctionnement du système. IntervallesIn the context of the present invention the term process is used relative to a set A of propositions to designate any sequence indexed by the natural numbers of snapshots relating to A. Mathematically a process is therefore an application of S in I A where S c N, is an initial segment of N (for all i GS, if i> 0 then i -1 e S). The first snapshot will have a date that we will call Origin. In the examples we will often choose 0 as the value for T_origine. As a result of snapshots, a process is therefore intuitively a sort of "movie" of how the system works. intervals
Dans la suite il sera question d'intervalles dans l'ensemble des nombres réels noté R. Pour noter un intervalle deux notations seront utilisées : 1 . la notation usuelle telle: ]4.32, 6.21 ]In the following it will be question of intervals in the set of real numbers noted R. To note an interval two notations will be used: 1. the usual notation such as:] 4.32, 6.21]
2. la notation sous forme de quadruplet (I, Ib, ub, u) où:2. the quadruplet notation (I, Ib, ub, u) where:
2.1 . Ib : borne inférieure2.1. Ib: lower bound
2.2. ub : borne supérieure2.2. ub: upper limit
2.3. 1 et u sont éléments de {0,1 }. Ils dénotent l'ouverture ou la fermeture de l'intervalle sur les bornes Ib et ub. Si I vaut 0 l'intervalle est ouvert sur sa borne inférieure Ib, fermé si I vaut 1. Idem pour u qui spécifie l'ouverture/fermeture sur la borné supérieure ub2.3. 1 and u are elements of {0,1}. They denote the opening or closing of the interval on terminals Ib and ub. If I is 0 the interval is open on its lower bound Ib, closed if I is 1. Idem for u which specifies the opening / closing on the upper bounded ub
Par exemple le quadruplet (0, 4.32, 6.21 , 1) représente le même intervalle que celui noté] 4.32, 6.21].For example, the quadruplet (0, 4.32, 6.21, 1) represents the same interval as noted] 4.32, 6.21].
Si i est un intervalle alors i.l, i.lb, i.ub et i.u dénotent les paramètres ci-dessus mentionnés. Donc, par exemple, si i est ] 4.32, 6.21] alors :If i is an interval then i.l, i.lb, i.ub and i.u denote the parameters mentioned above. So, for example, if i is] 4.32, 6.21] then:
• i.lb est 4.32• i.lb is 4.32
• i.ub est 6.21 • i.u est 1• i.ub is 6.21 • i.u is 1
• i.l est 0• i.l is 0
SM et j sont deux intervalles, nous dirons que i est strictement inférieur à j et nous noterons i < j si : • leur intersection est vide ( i n j = 0 ) etSM and j are two intervals, we say that i is strictly less than j and we will write i <j if: • their intersection is empty (i n j = 0) and
• i.ub ≤ j. Ib.• i.ub ≤ j. Ib.
Si i est un intervalle alors :If i is an interval then:
• L'intervalle noté i] , appelé fermé à droite de i, est (i.l, i.lb, i.ub, 1 ) ou bien encore, de façon équivalente : i u [i.ub, i.ub].• The interval noted i], called closed to the right of i, is (i.l, i.lb, i.ub, 1) or even, equivalently: i u [i.ub, i.ub].
• L'intervalle noté [i, appelé fermé à gauche de i, est (1 , i.lb, i.ub, i.u) ou bien encore, de façon équivalente : [i.lb, i.lb] u i.• The interval noted [i, called closed to the left of i, is (1, i.lb, i.ub, i.u) or even, equivalently: [i.lb, i.lb] u i.
Pour qu'un intervalle i soit bien formé il faut soit que i.lb < i.ub soit que cet intervalle soit de la forme [x,x] où x est un réel. Quand un intervalle n'est pas bien formé il est supposé être l'intervalle vide (on dira aussi « Nil »).For an interval i to be well formed it must be either that i.lb <i.ub or that this interval be of the form [x, x] where x is a real. When an interval is not well formed it is supposed to be the empty interval (it will also be called "Nil").
Si i et j sont deux intervalles nous dirons que : • i chevauche j à gauche si i n j ≠ 0 et que (i n j).lb = j.lb (autrement dit i couvre j et le dépasse dans le passé). Exemple [0,4[ chevauche [2,5] à gauche car [0,4[ n [2,5] = [2,4[ ≠ 0 et [2,4[.Ib = [2,5]. Ib = 2.If i and j are two intervals we will say that: • i overlap j to the left if inj ≠ 0 and that (inj) .lb = j.lb (in other words i covers j and exceeds it in the past). Example [0.4 [overlap [2,5] left because [0,4 [n [2,5] = [2,4 [≠ 0 and [2,4 [.Ib = [2,5]. Ib = 2.
• i chevauche j à droite si i n j ≠ 0 et que i n j.ub = j.ub (autrement dit i couvre j et le dépasse dans le futur).• i overlap to the right if i n j ≠ 0 and i n j.ub = j.ub (that is, i covers j and exceeds it in the future).
• i jouxte j à gauche si i.ub = j.lb et i.u + j.l = 1. Exemples : [0,1 [ jouxte [1 ,2] à gauche ; [0,3] jouxte ]3,8] à gauche.• i adjoins to the left if i.ub = j.lb and i.u + j.l = 1. Examples: [0,1 [left [1, 2] on the left; [0.3] adjoins] 3.8] on the left.
• i jouxte j à droite si j jouxte i à gauche. Exemple :] 8,9] jouxte [4,8] à droite car [4,8] jouxte ]8,9] à gauche.• i adjoins to the right if i adjoins i to the left. Example:] 8,9] is adjacent [4,8] to the right because [4,8] is adjacent] 8,9] to the left.
L'opérateur Θ :The operator Θ:
Soit i un intervalle et [a,b] un intervalle fermé sur chacune de ses bornes. Alors l'opération i θ [a,b] est définie et son résultat est (i.l, i.lb + a, i.ub + b, i.u). Exemples : • [5,8[ Θ [1 ,2] = [6,10[Let i be an interval and [a, b] a closed interval on each of its bounds. Then the operation i θ [a, b] is defined and its result is (i.l, i.lb + a, i.ub + b, i.u). Examples: • [5.8 [Θ [1, 2] = [6.10]
• [5,8[ Θ [-3,-2] = [2,6[• [5.8 [Θ [-3, -2] = [2.6 [
Liste de validitéValidity list
Une liste de validité est une liste dont les éléments sont des intervalles bien formés de l'ensemble des réels R, tous disjoints, rangés dans l'ordre croissant (chronologique). La notation (h, i2, ..., in) sera utilisée pour désigner une liste de validité contenant les intervalles H , i2, ... in- L'ordre chronologique signifie que si ik et ik+1 sont deux intervalles consécutifs d'une liste de validité nous avons toujours ik < ik+i- Par exemple : ([0, 2.43 [, [3.27, 5.04] ) est une liste de validité qui contient deux intervalles, [0, 2.43[ et [3.27, 5.04]. Ils sont bien rangés dans l'ordre croissant ou chronologique.A validity list is a list whose elements are well-formed intervals of the set of realities R, all disjoint, arranged in ascending (chronological) order. The notation (h, i 2 , ..., in) will be used to designate a validity list containing the intervals H, i 2 , ... i n - The chronological order means that if i k and i k + 1 are two consecutive intervals of a validity list we still have ik <ik + i- For example: ([0, 2.43 [, [3.27, 5.04]) is a validity list that contains two intervals, [0, 2.43 [ and [3.27, 5.04]. They are arranged in ascending or chronological order.
Pour mettre en évidence le premier ou le dernier élément d'une liste de validité nous utiliserons les notations : • (i I L) pour dénoter une liste dont le premier élément est i. L est aussi une liste de validité (celle des éléments qui suivent i dans (i ] L)). L peut éventuellement être vide.To highlight the first or the last element of a validity list we will use the notations: • (i IL) to denote a list whose first element is i. L is also a list of validity (that of the elements which follow i in (i] L)). L can possibly be empty.
• (L I i) pour dénoter une liste dont le dernier élément est i. L est aussi une liste de validité (celle des éléments qui précèdent i dans (L | i)). L peut éventuellement être vide.• (L I i) to denote a list whose last element is i. L is also a list of validity (that of the elements which precede i in (L | i)). L can possibly be empty.
Il sera exposé par la suite qu'une liste de validité est par destination attachée à une expression et permet de définir, sur une plage temporelle donnée, les dates où cette expression est vraie et les dates où elle est fausse, en se conformant à la convention suivante : les dates qui sont à l'intérieur des intervalles de la liste de validité sont les dates où l'expression est vraie ; en dehors de ces intervalles l'expression est fausse.It will be explained later that a validity list is by destination attached to an expression and allows to define, over a given time range, the dates when this expression is true and the dates when it is false, by conforming to the following convention: the dates that are within the intervals of the validity list are the dates when the expression is true; outside these intervals the expression is false.
Adjonction d'un intervalle dans une liste de validité. Le résultat de cette opération est une liste de validité. Nous distinguons entre adjonction à gauche et adjonction à droite. Néanmoins, pour chacune, si L est une liste de validité vide, l'adjonction dans L d'un intervalle i est la liste (i).Addition of an interval in a validity list. The result of this operation is a validity list. We distinguish between left addition and right addition. Nevertheless, for each, if L is an empty validity list, the addition in L of an interval i is the list (i).
Adjonction à gauche de l'intervalle i à la liste de validité ( j | L): • si i est vide alors le résultat est la liste vide.Add on the left of the interval i to the list of validity (j | L): • if i is empty then the result is the empty list.
• Si i < j alors le résultat est (i | (j | L)). Autrement dit on ajoute i en tête de ( j | L).• If i <j then the result is (i | (j | L)). In other words, we add i to the head of (j | L).
• si i jouxte ou chevauche j à gauche, alors le résultat est ((U, i.lb, j.ub, j.u) | L). Autrement dit on étend le premier élément j dans le passé jusqu'à la borne inférieure de i.• if i is adjacent to or overlapping to the left, then the result is ((U, i.lb, j.ub, j.u) | L). In other words, we extend the first element j in the past to the lower bound of i.
• Dans tout autre cas le résultat est L elle-même. Adjonction à droite de l'intervalle i à (L | j) est :• In any other case the result is L itself. Addition to the right of the interval i to (L | j) is:
• si i est vide alors le résultat est la liste vide.• if i is empty then the result is the empty list.
• Si j < i alors le résultat est ((L | j) | i). Autrement dit on ajoute i en fin de (L | j). • si i jouxte ou chevauche j à droite, alors le résultat est (L | (j.l, j.lb, i.ub, Lu)). Autrement dit on étend le dernier élément j dans le futur jusqu'à la borne supérieure de i.• If j <i then the result is ((L | j) | i). In other words, we add i at the end of (L | j). • if i adjoins or overlaps to the right, then the result is (L | (jl, j.lb, i.ub, Lu)). In other words, we extend the last element j in the future to the upper bound of i.
• Dans tout autre cas le résultat est L elle-même.• In any other case the result is L itself.
Raccordements de listes de validitéValidity list connections
Raccordement à droite. Soient (L1 | j) et (i | L2) deux listes de validité. Le raccordement de (i | L2) à droite de (L1 | j) a pour résultat :Connection on the right. Let (L1 | j) and (i | L2) be two validity lists. The connection of (i | L2) to the right of (L1 | j) results in:
• si j < i alors ((L1 | j) , (i | L2) ). Autrement la liste (i | L2) est placée à la fin de (L1 | j)• if j <i then ((L1 | j), (i | L 2 )). Otherwise the list (i | L2) is placed at the end of (L1 | j)
• si i jouxte ou chevauche j à droite alors (M, L2) où M est le résultat de l'adjonction à droite de i à (L1 | j)• if i adjoins or overlaps j to the right then (M, L2) where M is the result of the addition on the right of i to (L1 | j)
• (L1 | j) dans les autres cas• (L1 | j) in other cases
Exemple de raccordement à droite. Soit L= ([1 ,2[) et L' = ([2,3[, [8,12[). Le raccordement à droite de L' à L est la liste : ([1 ,3[, [8,12[). Ce résultat est du au fait que [2,3[ jouxte [1 ,2[ à droite.Connection example on the right. Let L = ([1, 2 [) and L '= ([2,3 [, [8,12 [). The right-hand connection from L 'to L is the list: ([1, 3 [, [8,12 [). This result is due to the fact that [2,3 [adjoins [1, 2 [right.
Raccordement à gauche. Le raccordement d'une liste de validité L' à gauche d'une liste de validité L est le résultat du raccordement de L à la droite de L'.Connection on the left. The connection of a validity list The left of a validity list L is the result of the connection of L to the right of L '.
Notion de langage formel, d'expression et de hauteur d'une expression formelleNotion of formal language, expression and height of a formal expression
Les méthodes formelles, comme les mathématiques dont elles sont issues, ont coutume de définir ce que l'on appelle des langages formels. Pour définir un langage formel on procède ainsi. On définit d'abord les expressions de base, qui sont insécables, autrement dit les mots. Puis on donne des règles de construction pour obtenir des expressions plus complexes, l'ensemble de ces règles formant une grammaire. Par exemple, les « mathématiques de l'écolier » reposent implicitement sur un langage formel. Les mots de base sont composés des nombres entiers comme « 3 », « 4 », « 10 » et de symboles tels que « + », « - ». Une règle de grammaire s'énonce par exemple ainsi : si « a » et « b » sont des expressions bien formées alors « a + b » est aussi une expression bien formée. Ainsi « 3 + 4 + 10» est un mot bien formé car « 3 + 4 » et « 10 » sont des expressions bien formées; en revanche « + 3 ++ 8 » n'est pas une expression licite. On peut ensuite attribuer une hauteur à une expression formelle. C'est-à-dire que nous pouvons définir une application H des expressions vers les entiers naturels de sorte que si Φ est une expression, h(Φ) soit la hauteur de Φ. Par exemple, pour reprendre l'exemple précédent, h peut être définie de la sorte :Formal methods, like the mathematics from which they come, are used to define what are called formal languages. To define a formal language, we proceed in this way. We first define the basic expressions, which are indivisible, in other words the words. Then we give construction rules to get more complex expressions, all of these rules forming a grammar. For example, "schoolchild mathematics" implicitly rely on formal language. Basic words are composed of integers such as "3", "4", "10" and symbols such as "+", "-". A grammar rule is stated by example: if "a" and "b" are well-formed expressions then "a + b" is also a well-formed expression. Thus "3 + 4 + 10" is a well-formed word because "3 + 4" and "10" are well-formed expressions; on the other hand "+ 3 ++ 8" is not a lawful expression. We can then assign a height to a formal expression. That is, we can define an application H of expressions to the natural numbers so that if Φ is an expression, h (Φ) is the height of Φ. For example, to use the previous example, h can be defined as:
• h(Φ) vaut 0 si Φ est un mot de base • h(Φ1 + Φ2) = sup( h(Φ1), h(Φ2) ) + 1• h (Φ) is 0 if Φ is a base word • h (Φ 1 + Φ 2 ) = sup (h (Φ 1 ), h (Φ 2 )) + 1
Selon cette définition il vient que h("3+4+10") = 2.According to this definition it follows that h ("3 + 4 + 10") = 2.
L'objet de la présente invention concerne un procédé et un système permettant de remédier au moins aux imperfections des méthodes précitées. L'invention concerne notamment un procédé permettant de générer automatiquement, à partir de la spécification formelle d'un comportement redouté écrite en logique temporelle linéaire métrique, un agent automatique, appelé moniteur, à mémoire bornée, capable d'analyser « en ligne » la simulation d'un modèle de système ou le fonctionnement d'un système physique afin d'y détecter l'occurrence du comportement redouté spécifié. Le procédé peut donc être utilisé dans les phases de conception pour analyser un modèle, ou dans les phases de test pour analyser le fonctionnement du système réalisé. Synthétiquement la présente invention repose sur l'utilisation d'un langage formel permettant de spécifier des comportements redoutés et d'un procédé permettant de transformer n'importe quelle expression de ce langage en un moniteur performant, fonctionnant en ligne, sans limite de durée. L'objet de la présente invention concerne un procédé permettant de générer un détecteur de comportements redoutés spécifiés en logique temporelle linéaire métrique d'un système dont le comportement est à surveiller caractérisé en ce qu'il comporte au moins les étapes suivantes mises en œuvre par un processeur (étapes sur lesquelles nous reviendrons largement dans la suite de la description) :The object of the present invention relates to a method and a system for remedying at least the imperfections of the aforementioned methods. The invention particularly relates to a method for automatically generating, from the formal specification of a feared behavior written in metric linear time logic, an automatic agent, called monitor, with bounded memory, capable of analyzing "on-line" the simulating a system model or the operation of a physical system to detect the occurrence of the specified dreaded behavior. The method can therefore be used in the design phases to analyze a model, or in the test phases to analyze the operation of the realized system. Synthetically the present invention is based on the use of a formal language for specifying dreaded behaviors and a method for transforming any expression of this language into a powerful monitor, operating online, with no time limit. The object of the present invention relates to a method for generating a detector of feared behaviors specified in metric linear time logic of a system whose behavior is to be monitored, characterized in that it comprises at least the following steps: implemented by a processor (steps on which we will come back later in the description):
• définir des variables caractéristiques du système à surveiller,• define characteristic variables of the system to be monitored,
• définir un certain nombre de propositions Jp1, ..., pn} sur ces variables, • allouer en mémoire du détecteur un espace suffisant pour mémoriser un instantané relatif à ces propositions c'est-à-dire allouer une variable réelle notée l.t et n variables booléennes pour chaque proposition de {pi, ..., pn}. Si pk est une proposition, l.pk dénote la variable booléenne associée à pk, • définir une formule principale Φ, construite sur lesdites propositions {p-i, ..., pn} traduisant un comportement redouté en utilisant un langage composé d'opérateurs logiques et d'opérateurs temporels portant sur le futur et le passé et dont la grammaire BNF est la suivante : φ ::= p | -i φ | (pi Λ φ2 | φi v φ2 | F[a,b] φ | ψi U[a,b] ψ2 I ψi S[a,bj (p2 | ψi S[a,>] φ2 | P[a,b] Φ I P[a,>] φ | ( φ )• to define a certain number of propositions Jp 1 , ..., p n } on these variables, • to allocate in memory of the detector a sufficient space to memorize a snapshot relative to these propositions that is to say to allocate a real variable noted lt and n boolean variables for each proposition of {pi, ..., p n }. If p k is a proposition, lp k denotes the boolean variable associated with p k , • define a principal formula Φ, built on the said propositions {pi, ..., p n } expressing a dreaded behavior using a language composed of logical operators and temporal operators dealing with the future and the past and whose BNF grammar is the following: φ :: = p | -i φ | ( pi Λ φ 2 | φi v φ 2 | F [a , b] φ | ψi U [a , b] ψ2 I ψi S [a , bj (p 2 | ψi S [a ,>] φ2 | P [a , b] Φ IP [a,>] φ | (φ)
OÙ p G (P1 , ... , pn}Where p G (P 1 , ..., p n )
• définir la date de début d'observation : T_origine,• set the observation start date: Origin,
• choisir une option sur la certitude initiale des formules (dont il dépend que l'on accepte ou non que la validité des formules soit définie antérieurement à T_origine),• choose an option on the initial certainty of the formulas (on which it depends whether or not one accepts that the validity of the formulas is defined earlier than the original one),
• pour chaque sous-formule Ψ de Φ (y compris Φ elle-même), créer une variable notée Ψ.LV de type liste d'intervalles, et lïnitialiser à vide,• for each sub-formula Ψ of Φ (including Φ itself), create a variable denoted Ψ.LV of type list of intervals, and initialize it empty,
• pour toute sous-formule Ψ de Φ (y compris Φ elle-même) créer une variable booléenne Ψ.val, et lïnitialiser à 0, • pour toute sous-formule Ψ de Φ (y compris Φ elle-même) créer une variable de type réel notée Ψ.rel_cert, appelée certitude relative de Ψ, et lui assigner la valeur Cert(Ψ) où Cert est la fonction caractérisée comme suit: o Cert(φ) = 0 si φ est une proposition de {pi , ... , pn} o Cert(-iφ) = Cert(φ) o Cert(φi Λ φ2) = sup (Cert(φi), Cert(φ2)) o Cert(φi v φ2) = sup (Cert(φi), Cert(φ2)) o Cert(F[a,bi φ) = Cert(φ) + b o Cert(φi U[a,b] 92) = sup (Cert(φi), Cert(φ2) ) + b o Cert(P[a,b] φ) = Cert(φ) - a o Cert (P[a,>] φ) = Cert(φ) - a o Cert(φi S[a,b] 92 ) = sup (Cert(φi), Cert(φ2) - a) o Cert(φi S[a,>] Φ2 ) = sup (Cert(φi), Cert(φ2) - a) pour chaque sous-formule Ψ de Φ (y compris Φ elle-même) définir une variable réelle notée Ψ.abs_cert destinée à stocker la certitude absolue de Ψ. Selon l'option choisie pour la certitude initiale des formules, pour chaque Ψ sous-formule de Φ, sa variable Ψ.abs_cert associée est initialisée à :• for every subformula Ψ of Φ (including Φ itself) create a Boolean variable Ψ.val, and initialize it to 0, • for any subformula Ψ of Φ (including Φ itself) create a variable of real type denoted Ψ.rel_cert, called relative certainty of Ψ, and assign it the value Cert (Ψ) where Cert is the function characterized as follows: o Cert (φ) = 0 if φ is a proposition of {pi, .. ., p n } o Cert (-iφ) = Cert (φ) o Cert (φi Λ φ 2 ) = sup (Cert (φi), Cert (φ 2 )) o Cert (φi v φ 2 ) = sup (Cert (φi), Cert (φ 2 )) o Cert (F [a , bi φ) = Cert (φ) + bo Cert (φi U [a, b] 92) = sup (Cert (φi), Cert (φ 2 )) + bo Cert (P [a, b] φ) = Cert (φ) - ao Cert (P [a , > ] φ) = Cert (φ) - ao Cert (φi S [ a , b] 92) = sup (Cert (φi), Cert (φ 2 ) - a) o Cert (φi S [a, > ] Φ 2 ) = sup (Cert (φi), Cert (φ 2 ) - a) for each sub-formula Ψ of Φ (including Φ itself) to define a real variable noted Ψ .abs_cert intended to store the absolute certainty of Ψ. According to the option chosen for the initial certainty of the formulas, for each Ψ sub-formula of Φ, its associated variable Ψ.abs_cert is initialized to:
• Option 1 : T_origine - Ψ.rel_cert - Option 2 : sup(T_origine, T_origine - Ψ.rel_cert)• Option 1: Origin - Ψ.rel_cert - Option 2: sup (Origin, Origin - Ψ.rel_cert)
• pour chaque sous-formule Ψ de Φ (y compris Φ elle-même) créer une variable notée Ψ.w de type intervalle, appelée fenêtre de continuation de Ψ.w et l'initialiser à vide,For each sub-formula Ψ of Φ (including Φ itself), create a variable denoted Ψ.w of interval type, called the continuation window of Ψ.w and initialize it empty,
• de façon régulière ou périodique faire l'acquisition de la valeur des variables caractéristiques du système observé et mémoriser la date de cette acquisition,• regularly or periodically acquire the value of the characteristic variables of the observed system and memorize the date of this acquisition,
• en fonction des valeurs des variables caractéristiques issues de l'acquisition réalisée à l'étape précédente, évaluer la valeur booléenne des propositions et rafraîchir l'instantané I c'est-à-dire assigner la valeur booléenne de p à l.p pour chaque p s {p-i , ..., pn} et assigner la date d'acquisition mémorisée à 1.1.• according to the values of the characteristic variables resulting from the acquisition carried out in the previous step, to evaluate the boolean value of the propositions and to refresh the snapshot I that is to say to assign the boolean value of p to lp for each ps {pi, ..., p n } and assign the memorized acquisition date to 1.1.
• pour chaque rafraîchissement de l'instantané I tel que réalisé à l'étape précédente, réaliser pour chaque sous-formule Ψ de Φ (y compris Φ elle-même), et selon un ordre qui soit tel que toute formule soit traitée après ses sous-formules directes, le calcul dit « de continuation » suivant : o Actualiser sa fenêtre de continuation Ψ.w :• for each refresh of snapshot I as performed in the previous step, perform for each sub-formula Ψ of Φ (including Φ itself), and in an order that is such that any formula is processed after its direct sub-formulas, the following "continuation" calculation: o Update its continuation window Ψ.w:
• Si Ψ.w est vide : « Si (l.t - Ψ.rel_cert) > Ψ.abs_cert alors Ψ.w devient : [Ψ.abs_cert, l.t - Ψ.rel_cert] puis affecter à Ψ.abs_cert la valeur (l.t - Ψ.rel_cert)• If Ψ.w is empty: «If (lt - Ψ.rel_cert)> Ψ.abs_cert then Ψ.w becomes: [Ψ.abs_cert, lt - Ψ.rel_cert] then set the value (lt - Ψ to Ψ.abs_cert) .rel_cert)
• Si (l.t - Ψ.rel_cert) < Ψ.abs_cert alors Ψ.w reste l'intervalle vide et Ψ.abs_cert reste inchangée » Si Ψ.w n'est pas vide alors :• If (l.t - Ψ.rel_cert) <Ψ.abs_cert then Ψ.w remains the empty interval and Ψ.abs_cert remains unchanged »If Ψ.w is not empty then:
• Ψ.w devient :] Ψ.abs_cert, l.t - Ψ.rel_cert]• Ψ.w becomes:] Ψ.abs_cert, l.t - Ψ.rel_cert]
• Affecter à Ψ.abs_cert la valeur (l.t - Ψ.rel_cert) o Si Ψ est purement booléenne appliquer l'algorithme de continuation dédié aux formules purement booléennes qui se caractérise ainsi :• Assign to Ψ.abs_cert the value (l.t - Ψ.rel_cert) o If Ψ is purely Boolean apply the continuation algorithm dedicated to purely Boolean formulas which is characterized as follows:
• calculer I.Ψ (valeur dans {0,1 } que l'instantané I donne à Ψ) selon la définition inductive suivante:• calculate I.Ψ (value in {0,1} that snapshot I gives to Ψ) according to the following inductive definition:
• si Ψ est une proposition p alors I.Ψ = l.p• if Ψ is a proposition p then I.Ψ = l.p
• !.(-.¥!) = l - (I.Ψi) • I .(Ψ1 Λ Ψ2) = I .ΨI * I.Ψ2 •!. (-. ¥!) = L - (I.Ψi) • I. (Ψ 1 Λ Ψ 2 ) = I .ΨI * I.Ψ 2
• 1.0P1 v Ψ2)= (1.^P1 + I.Ψ2) - (I.Ψi * I.Ψ2)• 1.0P 1 v Ψ 2 ) = (1. ^ P 1 + I.Ψ 2 ) - (I.Ψi * I.Ψ 2 )
- Si I.Ψ = 0 et Ψ.val = 1 créer l'intervalle [l.t, l.t] et l'ajouter à la fin de Ψ. LV- If I.Ψ = 0 and Ψ.val = 1 create the interval [l.t, l.t] and add it at the end of Ψ. LV
• Si I.Ψ = 1 et Ψ.val = 1 alors changer la borne supérieure du dernier intervalle de Ψ.LV de sorte qu'elle devienne l.t,• If I.Ψ = 1 and Ψ.val = 1 then change the upper bound of the last interval of Ψ.LV so that it becomes l.t,
• Si I.Ψ = 1 et Ψ.val = 0 changer la borne supérieure du dernier intervalle de Ψ.LV à l.t et ouvrir cet intervalle sur cette borne supérieur, - Si I.Ψ = 0 et Ψ.val = 0 ne pas rien faire (Ψ.LV est inchangée)• If I.Ψ = 1 and Ψ.val = 0 change the upper bound of the last interval from Ψ.LV to lt and open this interval on this upper bound, - If I.Ψ = 0 and Ψ.val = 0 do not do anything (Ψ.LV is unchanged)
• Assigner I.Ψ à Ψ.val o Si Ψ n'est pas purement booléenne : • rafraîchir sa fenêtre de continuation Ψ.w de la façon suivante :• Assign I.Ψ to Ψ.val o If Ψ is not purely Boolean: • refresh its continuation window Ψ.w as follows:
• Si Φ.w est vide : o Si (l.t - Φ.rel_cert) > Φ.abs_cert alors Φ.w devient : [Φ.abs_cert, l.t - Φ.rel_cert] puis affecter à Φ.abs_cert la valeur (l.t -• If Φ.w is empty: o If (l.t - Φ.rel_cert)> Φ.abs_cert then Φ.w becomes: [Φ.abs_cert, l.t - Φ.rel_cert] then assign to Φ.abs_cert the value (l.t -
Φ.rel_cert) o Si (l.t - Φ.rel_cert) < Φ.abs_cert alors Φ.w reste l'intervalle videSi.rel_cert) o If (l.t - Φ.rel_cert) <Φ.abs_cert then Φ.w remains the empty interval
• Si Φ.w n'est pas vide alors : o Φ.w devient :] Φ.abs_cert, l.t - Φ.rel_cert] o Affecter à Φ.abs_cert la valeur (l.t - Φ.rel_cert)• If Φ.w is not empty then: o Φ.w becomes:] Φ.abs_cert, l.t - Φ.rel_cert] o Assign to Φ.abs_cert the value (l.t - Φ.rel_cert)
• selon l'opérateur de Ψ déduire des intervalles de validité pour Ψ sur la fenêtre Ψ.w en parcourant les listes de validité des sous-formules directes de Ψ ; stocker par adjonction les intervalles produits soit directement dans Ψ.LV si le parcours est chronologique soit dans une liste intermédiaire Ll si le parcours est anti-chronologique ; puis raccorder la liste intermédiaire Ll à la droite de Ψ.LV (dans le cas du parcours anti-chronologique). o exploiter les informations contenues dans la liste de validité de la formule principale Φ et émettre un signal associé.• depending on the operator of Ψ deduce validity intervals for Ψ on the window Ψ.w by browsing the validity lists of the direct sub-formulas of Ψ; store by adding the intervals produced either directly in Ψ.LV if the course is chronological or in an intermediate list Ll if the course is anti-chronological; then connect the intermediate list Ll to the right of Ψ.LV (in the case of the anti-chronological path). o use the information contained in the validity list of the main formula Φ and issue an associated signal.
L'invention concerne aussi un système permettant de générer un détecteur de comportements redoutés spécifiés en logique temporelle linéaire métrique, à mémoire bornée, caractérisé en ce qu'il comporte au moins les éléments suivants : o Une entrée recevant un ou plusieurs paramètre(s) caractéristique(s) de l'état du système à surveiller, et une horloge H indiquant la date d'acquisition de ce(s) paramètre(s), o Un processeur adapté à exécuter les étapes du procédé selon l'invention en utilisant le(s) paramètre(s) mesuré(s) et la date associée, o Une mémoire adaptée à o mémoriser l'instantané courant o mémoriser les listes de validité LV déterminées par la mise en œuvre du procédé pour la formule principale et ses sous- formules, o une ou plusieurs sorties émettant un signal S correspondant aux informations contenues dans la liste de validité pour la formule principale et émettre ledit signal.The invention also relates to a system for generating a detector of dreaded behaviors specified in linear temporal logic. metric, with bound memory, characterized in that it comprises at least the following elements: An input receiving one or more parameter (s) characteristic (s) of the state of the system to monitor, and a clock H indicating the date acquisition of this parameter (s), A processor adapted to perform the steps of the method according to the invention using the measured parameter (s) and the associated date, A suitable memory storing the current snapshot storing the validity lists LV determined by the implementation of the method for the main formula and its sub-formulas, where one or more outputs emitting a signal S corresponding to the information contained in the validity list for the main formula and transmit said signal.
D'autres caractéristiques et avantages du dispositif selon l'invention apparaîtront mieux à la lecture de la description qui suit d'un exemple de réalisation donné à titre illustratif et nullement limitatif annexé des figures qui représentent :Other features and advantages of the device according to the invention will appear better on reading the description which follows of an example of embodiment given by way of illustration and in no way limiting attached to the figures which represent:
• La figure 1 A un synoptique du procédé selon l'invention et la figure 1 B un exemple d'architecture du système permettant sa mise en œuvre,FIG. 1 is a block diagram of the method according to the invention and FIG. 1B is an example of a system architecture enabling it to be implemented,
• La figure 2, une représentation de la notion de processus, • La figure 3, un algorithme de calcul de la liste de validité d'une proposition ou d'une formule dite purement booléenne,FIG. 2, a representation of the notion of process, FIG. 3, an algorithm for calculating the validity list of a proposition or of a formula called a purely Boolean formula,
• Les figures 4, 5, 6A et 6B illustrent le calcul de la liste de validité d'une formule en fonction de celles de ses sous-formules,FIGS. 4, 5, 6A and 6B illustrate the calculation of the validity list of a formula according to those of its sub-formulas,
• La figure 7A, l'illustration du calcul de la date de certitude d'une formule en fonction de celle de sa sous-formule (pour l'opérateur unaire portant sur le futur), • La figure 7B illustre le calcul de la date de certitude d'une formule en fonction de celle de ses sous-formules (pour l'opérateur binaire portant sur le passé),• Figure 7A, the illustration of the calculation of the certainty date of a formula according to that of its sub-formula (for the unary operator on the future), • Figure 7B illustrates the calculation of the certainty date of a formula according to that of its sub-formulas (for the binary operator on the past),
• La figure 8A, illustration de la définition d'une zone d'influence prise en compte pour la mise en œuvre du procédé selon l'invention,FIG. 8A, illustration of the definition of a zone of influence taken into account for the implementation of the method according to the invention,
• La figure 8B, illustration de l'inutilité des sous-formules directes d'une formule étant donnée la date d'inutilité fixée pour celle-ci, et• Figure 8B, illustration of the uselessness of the direct sub-formulas of a formula being given the date of uselessness fixed for this one, and
• La figure 9 un exemple d'application pour la surveillance du comportement d'un système masse- ressort.• Figure 9 an example of application for monitoring the behavior of a mass-spring system.
L'idée de la présente invention consiste notamment à générer un moniteur capable d'observer le comportement d'un système dans un environnement donné et plus particulièrement l'évolution d'un processus au sens défini précédemment au début de la description. La figure 1 A est un synoptique d'un exemple du procédé selon l'invention comprenant un système 1 dont le comportement est à observer, une horloge temporelle H permettant de déterminer la date à laquelle un instantané a été acquis, un processeur qui va traiter les données issues du système à surveiller, par exemple une variable observée à un instant donné et qui va être capable d'évaluer la valeur des propositions où cette variable apparaît, de calculer ensuite les listes de validité attachées à ces propositions puis les listes de validité des formules plus complexes jusqu'à la liste de validité de la formule principale spécifiant le comportement redouté. Sur la figure 1 B est représenté un exemple de système selon l'invention qui comporte, le système 1 dont le comportement est surveillé. Le système comprend un ou plusieurs capteurs 10 permettant de déterminer la valeur de chaque paramètre représentatif du comportement surveillé. Par exemple, il est possible d'avoir un capteur de température et de vérifier si une proposition portant sur la température est vraie. Des exemples sont donnés ci-après. Le ou les capteurs de paramètres équipant le système 1 sont reliés à un dispositif 11 comprenant une entrée 12 et un processeur 13 qui va traiter les différentes données ainsi qu'une mémoire 14 stockant l'instantané courant et les listes de validité de chaque formule. Le dispositif 11 comprend aussi une entrée 15 recevant une horloge spécifiant une date associée à un paramètre mesuré. Le processeur 13 va délivrer via une ou plusieurs sorties 16i un signal Sc contenant des données permettant, par exemple :The idea of the present invention consists in particular in generating a monitor capable of observing the behavior of a system in a given environment and more particularly the evolution of a process as defined above at the beginning of the description. FIG. 1A is a block diagram of an example of the method according to the invention comprising a system 1 whose behavior is to be observed, a time clock H making it possible to determine the date on which a snapshot was acquired, a processor that will process the data coming from the system to be monitored, for example a variable observed at a given moment and which will be able to evaluate the value of the propositions where this variable appears, to then calculate the validity lists attached to these propositions then the validity lists more complex formulas up to the validity list of the main formula specifying the dreaded behavior. In Figure 1 B is shown an exemplary system according to the invention which comprises the system 1 whose behavior is monitored. The system includes one or more sensors 10 for determining the value of each parameter representative of the monitored behavior. For example, it is possible to have a temperature sensor and check if a temperature proposal is true. Examples are given below. The sensor or sensors of the parameters equipping the system 1 are connected to a device 11 comprising an input 12 and a processor 13 which will process the different data and a memory 14 storing the current snapshot and the validity lists of each formula. The device 11 also comprises an input 15 receiving a clock specifying a date associated with a measured parameter. The processor 13 will deliver via one or more outputs 16i a signal Sc containing data allowing, for example:
• Soit l'affichage des résultats sur un dispositif d'affichage 17,• the display of the results on a display device 17,
• Soit la génération d'un signal à un dispositif de régulation du système,• Either the generation of a signal to a control device of the system,
• Soit la génération d'un signal d'alarme.• Either the generation of an alarm signal.
Le signal obtenu est transmis à un dispositif de génération d'une alarme et/ou à un système de contrôle ou de régulation du système placé sous la surveillance d'un moniteur généré par le procédé selon l'invention. Le système dont le comportement est surveillé peut être un modèle exécuté en simulation. Ce modèle peut parfaitement être très complexe et/ou de grande taille étant donné que le moniteur généré selon l'invention ne dépend pas de la structure interne de ce modèle. Dans ce cas le procédé peut être considéré comme une technique de débogage de modèles. Le système peut aussi être un dispositif ou un système physique dont on souhaite contrôler le comportement en fonctionnement et notamment vérifier son comportement. Le procédé peut alors être considéré comme une sous- partie d'un système plus vaste de contrôle-commande.The signal obtained is transmitted to a device for generating an alarm and / or to a system control or regulation system under the supervision of a monitor generated by the method according to the invention. The system whose behavior is monitored may be a model executed in simulation. This model can be very complex and / or large because the monitor generated according to the invention does not depend on the internal structure of this model. In this case the method can be considered as a model debugging technique. The system can also be a device or a physical system which one wishes to control the behavior in operation and in particular to check its behavior. The process can then be considered as a subset of a larger control system.
Ainsi, le système selon l'invention peut être appliqué comme dispositif permettant de détecter des erreurs dans le fonctionnement d'un système, plus connu sous l'expression « débogueur » de systèmes simulés, ou comme moniteur de systèmes physiques pour en détecter les disfonctionnements ceci dans tout domaine industriel (transport, domotique, robotique).Thus, the system according to the invention can be applied as a device making it possible to detect errors in the operation of a system, better known as the "debugger" of simulated systems, or as a monitor of physical systems for detecting malfunctions thereof. this in any industrial field (transport, home automation, robotics).
Un moniteur selon l'invention est constitué notamment de plusieurs éléments qui vont être explicités ci-après. Les notions de processus, de proposition, de liste de validité et d'instantané ont été définies précédemment. Un des éléments entrant dans la génération du moniteur est la notion de liste de validité qui est représentée par exemple dans les figures 4, 5, 6A, 6B. La manière dont une liste de validité peut être déduite d'un processus (au sens défini plus haut) est illustrée de la manière suivante. Pour cela examinons l'information qui est délivrée par un processus à un observateur ou à un capteur ou à un dispositif de surveillance au sein d'un procédé. Pour cet observateur l'information délivrée par un instantané \,- du processus subsiste jusqu'à ce que l'instantané suivant li+i rafraichisse cette information. Autrement dit l'information délivrée par un instantané de date t vaut jusqu'à t' où t' est la date de l'instantané suivant. Si le dernier instantané du processus porte la date z, ce principe permet de définir la validité d'une proposition à toute date de l'intervalle [0, z] et donc une liste de validité sur cette plage. Pour l'illustrer, les étapes de création d'une liste de validité pour la proposition p tel que le ferait un observateur placé face au processus de la figure 2 sont déroulées ci-dessous. Le processus commence en 0 où l'instantané I est rafraîchi. L'observateur remarque que la proposition p est vraie (l.p = 1 ). Il ajoute à la liste de validité de p un premier intervalle soit [0.0, 0.0]. La liste de validité de p est donc ([0.0, 0.0]). Puis l'instantané est rafraichi en 1 , p y est toujours vraie. La valeur date est 1.71. Le procédé prolonge l'intervalle de validité précédent. La liste devient ([0.0, 1.71]).A monitor according to the invention consists in particular of several elements which will be explained below. The concepts of process, proposal, validity list and snapshot have been defined previously. One of the elements entering the generation of the monitor is the notion of validity list which is represented for example in Figures 4, 5, 6A, 6B. The way in which a validity list can be deduced from a process (in the sense defined above) is illustrated as follows. For this purpose, we examine the information that is delivered by a process to an observer or a sensor or monitoring device within a process. For this observer, the information delivered by a snapshot of the process remains until the snapshot following the i + i refreshes this information. In other words, the information delivered by a snapshot of date t is equal to t 'where t' is the date of the next snapshot. If the last snapshot of the process has the date z, this principle makes it possible to define the validity of a proposition on any date of the interval [0, z] and thus a validity list on this range. To illustrate, the steps of creating a validity list for the proposition p such as would be an observer placed in front of the process of Figure 2 are carried out below. The process starts at 0 where snapshot I is refreshed. The observer notices that the proposition p is true (lp = 1). It adds to the list of validity of p a first interval is [0.0, 0.0]. The validity list of p is therefore ([0.0, 0.0]). Then the snapshot is refreshed in 1, py is always true. The date value is 1.71. The process extends the previous validity interval. The list becomes ([0.0, 1.71]).
Au rafraîchissement de l'instantané en 2, p est fausse (l.p = 0). La valeur date l.t est 2.43. Mais n'ayant pas eu d'information entre 1.71 et 2.43 il doit considérer que p était vraie jusque là. Donc l'observateur ou le procédé modifie l'intervalle précédent qui devient [0.0, 2.43 [. Noter que l'intervalle est ouvert à droite, puisqu'en 2.43 la proposition p est fausse. La liste de validité de p devient ([0.0, 2.43 [ ).When refreshing the snapshot at 2, p is false (l.p = 0). The value date l.t is 2.43. But having no information between 1.71 and 2.43 he must consider that p was true until then. So the observer or process modifies the previous interval which becomes [0.0, 2.43 [. Note that the interval is open to the right, since in 2.43 the proposition p is false. The validity list of p becomes ([0.0, 2.43 [).
Au rafraîchissement de l'instantané en 3, p redevient vraie. La valeur date est 3.27. Or elle était fausse à l'instantané précédent. L'observateur considère que jusque là elle était fausse. Il va donc créer un nouvel intervalle de validité pour p. Ainsi, en 3, la liste de validité de p est ([0.0, 2.43 [, [3.27, 3.27] ). Cet exemple montre qu'étant donné un processus il est possible d'associer à une proposition p une liste d'intervalles qui dénotent les dates où la proposition est vraie. Le procédé utilisé dans cet exemple est formalisé dans la description de l'algorithme ci-après. Algorithme de calcul de la liste de validité d'une propositionAt the refresh of the snapshot in 3, p becomes true again. The date value is 3.27. But it was wrong in the previous snapshot. The observer considers that until then it was false. He will therefore create a new validity interval for p. Thus, in 3, the validity list of p is ([0.0, 2.43 [, [3.27, 3.27]). This example shows that given a process it is possible to associate with a proposition p a list of intervals which denote the dates when the proposition is true. The method used in this example is formalized in the description of the algorithm below. Algorithm for calculating the validity list of a proposal
A toute proposition p est associée une variable booléenne p. val et une variable de type liste d'intervalles p.LV (« LV » pour liste de validité). C'est p.LV qui représente la liste de validité pour p. Si I est un instantané, l.t correspond à la date portée par I et l.p à la valeur de vérité que I attribue à la proposition p. L'algorithme est décrit par le diagramme illustré à la figure 3.Any proposition p is associated with a boolean variable p. val and a variable list variable p.LV ("LV" for validity list). It is p.LV which represents the validity list for p. If I is a snapshot, then l.t is the date that I and l.p give to the truth value I assigns to proposition p. The algorithm is described by the diagram shown in Figure 3.
La première étape, étape 20, est une étape d'initialisation des valeurs de p. val et de p.LV. La variable p.val est initialisée à faux et la variable p.LV est initialisée par la liste vide. L'étape qui suit, étape 21 , est un état d'attente de rafraîchissement de l'instantané I. Lorsque ce rafraîchissement intervient l'algorithme passe à l'étape 22 où la valeur de l.p est testée. Si la valeur de vérité de l.p est à vrai (vaut 1 ) le procédé teste, étape 23, la valeur de p.val. Si p.val est à vrai alors, étape 24, le procédé prolonge le dernier intervalle de p.LV jusqu'à l.t compris (intervalle fermé sur la valeur l.t). Si la valeur p.val est à faux (vaut 0) alors, étape 25, le procédé ajoute à la fin de p.LV le nouvel intervalle [l.t, l.t].The first step, step 20, is a step of initializing the values of p. val and p.LV. The variable p.val is initialized to false and the variable p.LV is initialized by the empty list. The next step, step 21, is a refresh standby state of snapshot I. When this refresh occurs the algorithm goes to step 22 where the value of l.p is tested. If the truth value of l.p is true (is 1) the method tests, step 23, the value of p.val. If p.val is true then, step 24, the process extends the last interval of p.LV up to and including (closed interval on the value l.t). If the value p.val is false (worth 0) then, step 25, the process adds at the end of p.LV the new interval [l.t, l.t].
Si au contraire, à l'étape 22, l.p est faux, alors le procédé teste p.val. Si p.val est à vrai , étape 26, alors le procédé prolonge le dernier intervalle de p.LV jusqu'à l.t non compris (ouvert sur l.t ) (étape 28). Si p.val est à faux, alors le procédé laisse p.LV inchangée (étape 27). A la suite des étapes 24, 25, 27 et 28, le procédé affecte à p.val la valeur de l.p (étape 29). Puis le procédé retourne à l'étape 21 d'attente de rafraîchissement de I, le calcul se prolongeant tant que le procédé est maintenu en fonctionnement. En tant que tel, il n'existe pas de condition d'arrêt pour cet algorithme de calcul puisqu'il se met en attente d'un nouvel instantané. Il peut néanmoins être facilement modifié si l'indication qu'un instantané est le dernier est disponible. Dans ce cas le retour à l'étape 21 serait soumis à la condition que l'instantané soumis ne soit pas le dernier. La condition d'arrêt sera déterminée par une stratégie d'utilisation du procédé complet c'est-à-dire par une stratégie d'exploitation des listes de validité. A partir de l'algorithme de calcul des listes de validité pour les propositions détaillées ci-dessus, le procédé peut générer un moniteur simple, pour un langage restreint aux propositions. Un premier exemple de mise en œuvre du procédé est donné à titre non limitatif, pour un comportement redouté spécifié par une seule proposition. Dans cet exemple, il est proposé de générer un moniteur permettant d'observer le compte en banque d'un client, en posant comme comportement redouté que le solde soit négatif autrement dit que la proposition (solde < 0) soit vraie à un moment donné. Par rapport aux définitions posées le processus est considéré relativement à l'ensemble { (solde < 0) }. Le procédé consiste alors en l'algorithme suivant : 1 - Allouer une variable booléenne notée I. (solde < 0) pour stocker la valeur de (solde < 0) et une variable l.t de type réel pour stocker la date de rafraîchissementIf, on the other hand, in step 22, lp is false, then the method tests p.val. If p.val is true, step 26, then the process extends the last interval of p.LV up to and excluding lt (open on lt) (step 28). If p.val is false, then the process leaves p.LV unchanged (step 27). Following steps 24, 25, 27 and 28, the method assigns p.val the value of lp (step 29). Then the process returns to the refresh standby step 21 of I, the calculation continuing as long as the process is kept running. As such, there is no stopping condition for this computation algorithm since it is waiting for a new snapshot. It can nevertheless be easily modified if the indication that a snapshot is the last is available. In this case the return to step 21 would be subject to the condition that the submitted snapshot is not the last. The stopping condition will be determined by a strategy of using the complete method, that is to say by a strategy of exploitation of the validity lists. From the algorithm for calculating validity lists for the proposals detailed above, the method can generate a simple monitor, for a language restricted to the proposals. A first example of implementation of the method is given without limitation, for a dreaded behavior specified by a single proposal. In this example, it is proposed to generate a monitor to observe the bank account of a customer, posing as dreaded behavior that the balance is negative in other words that the proposal (balance <0) is true at a given moment . Compared to the definitions, the process is considered relative to the set {(balance <0)}. The method then consists of the following algorithm: 1 - Allocate a boolean variable denoted I. (balance <0) to store the value of (balance <0) and a variable lt of real type to store the refresh date
2 - Rafraichir l'instantané I dès que se produit un mouvement de compte (c'est-à-dire évaluer la valeur de vérité de I. (solde < 0) en fonction de la valeur de la variable « solde »)2 - Refresh the snapshot I as soon as there is an account movement (that is to say, evaluate the truth value of I. (balance <0) according to the value of the variable "balance")
3 - Appeler l'algorithme de calcul des listes de validité pour la proposition (solde < 0) et étant donné l'instantané I afin d'établir une liste de validité pour la proposition (solde < 0).3 - Call the algorithm for calculating the validity lists for the proposal (balance <0) and given the snapshot I in order to establish a validity list for the proposal (balance <0).
4 - Tester la liste de validité de la proposition (solde < 0) (qui vient d'être calculée). a. Si la liste n'est plus vide, c'est-à-dire qu'elle contient un intervalle i, ceci signifie que le comportement redouté, (solde < 0) a été observé. Editer un rapport pour le gestionnaire du compte : (solde < 0) détecté, vraie pour les dates de l'intervalle i. FIN. b. Sinon retour en 2. Ce simple exemple montre que la mémoire utilisée par le procédé est bornée. L'instantané courant est représenté par deux variables I (solde < 0) et l.t , dont les valeurs sont rafraichies à chaque mouvement de compte. Seule la liste de validité de la proposition (solde < 0) est un élément dynamique de la procédure. Comme la procédure s'arrête, par exemple, dès que cette liste comporte un seul intervalle, car l'événement redouté a été observé, nous voyons que le procédé consomme une mémoire bornée. Dans le pire cas nous avons eu besoin de créer les variables l.t, I. (solde < 0) et une variable de type intervalle.4 - Test the validity list of the proposal (balance <0) (which has just been calculated). at. If the list is no longer empty, that is, it contains an interval i, this means that the dreaded behavior, (balance <0) has been observed. Edit a report for the account manager: (balance <0) detected, true for the dates of the interval i. END. b. Otherwise return in 2. This simple example shows that the memory used by the process is bounded. The current snapshot is represented by two variables I (balance <0) and lt, whose values are refreshed with each account movement. Only the validity list of the proposal (balance <0) is a dynamic element of the procedure. As the procedure stops, for example, as soon as this list includes only one interval, because the dreaded event has been observed, we see that the process consumes bounded memory. In the worst case we needed to create the variables lt, I (balance <0) and an interval variable.
Pour des applications industrielles un langage restreint aux propositions peut être dans certains cas trop limité. La suite de la description introduit un langage permettant de décrire des comportements plus évolués, faisant intervenir plusieurs propositions et permettant de décrire des notions complexes d'ordre, de concomitance, ou d'occurrence dans des délais stricts, sur les propositions.For industrial applications a language restricted to the proposals may be in some cases too limited. The rest of the description introduces a language to describe more evolved behaviors, involving several propositions and making it possible to describe complex notions of order, concomitance, or occurrence within strict deadlines, on the propositions.
Spécification formelle des comportements redoutésFormal specification of dreaded behavior
Nous donnons d'abord la syntaxe du langage du procédé selon l'invention. Le sens des opérateurs introduits sera explicité ensuite, lors de l'exposé de la sémantique de ce langage. La syntaxe dudit langage formel de spécification des comportements redoutés selon l'invention est la suivante :We first give the syntax of the language of the method according to the invention. The meaning of the operators introduced will be explained later, during the presentation of the semantics of this language. The syntax of said formal language for specifying the dreaded behaviors according to the invention is as follows:
• Tout symbole de proposition est une expression du langage selon l'invention • Si Φ est une expression dudit langage, que a et b sont des réels positifs tels que b > a, alors sont aussi des expressions de ce langage : o -i Φ• Any symbol of proposition is an expression of the language according to the invention • If Φ is an expression of this language, that a and b are positive reals such that b> a, then are also expressions of this language: o -i Φ
O F[a,b] Φ OF [a, b] Φ
O P[a,>] Φ O ( Φ )OP [a,>] Φ O (Φ)
• Si Φi et Φ2 sont deux expressions dudit langage et que a et b deux réels positifs tels que b > a alors sont aussi des expressions de ce langage o Φi Λ Φ2 o Φ-\ v Φ2 o Φi S[a,>] Φ2• If Φi and Φ 2 are two expressions of this language and a and b two positive reals such that b> a then are also expressions of this language o Φi Λ Φ 2 o Φ- \ v Φ 2 o Φi S [a ,>] Φ2
En notation BNF (Backus-Naur Form) le langage s'écrit de façon concise :In BNF (Backus-Naur Form) notation, the language is concisely written:
Φ::= p | -1 Φ | Φ! Λ Φ2 | Φ1 V Φ2 | F[a,b] Φ I P[a,b] Φ I P[a,>] Φ I Φi U[a,b] Φ2 I ΦiΦ :: = p | -1 Φ | Φ! Λ Φ 2 | Φ1 V Φ 2 | F [a , b] Φ IP [a, b] Φ IP [a,>] Φ I Φi U [a , b] Φ2 I Φi
S[a,b] Φ2 1 Φ1 S[a,>] Φ2 1 ( Φ ) où p dénote tout symbole de proposition, a, b dénotent des réels positifs tels que b > a, la signification des opérateurs mentionnés étant donnée ci-après.S [a, b] Φ2 1 Φ1 S [a, > ] Φ2 1 (Φ) where p denotes any symbol of proposition, a, b denote positive reals such that b> a, the meaning of the operators mentioned being given below. after.
Dans la suite de la description, une expression de ce langage sera appelée une formule. Les parenthèses sont utilisées pour désambiguïser une formule. En effet, si l'on écrit Φi Λ Φ2 U[a,b] Φ3 on ne sait s'il faut lire (Φ1 Λ Φ2 ) U[a,b] Φ3 ou bien lire Φ1 Λ (Φ2 U[a,bi Φs)- Or ces formules ne sont pas équivalentes, d'où l'importance des parenthèses. Quelques exemples de formules : In the following description, an expression of this language will be called a formula. Parentheses are used to disambiguate a formula. Indeed, if we write Φi Λ Φ 2 U [a , b] Φ3 we do not know whether to read (Φ1 Λ Φ 2 ) U [a , b] Φ 3 or read Φ1 Λ (Φ 2 U [a , bi Φs) - But these formulas are not equivalent, hence the importance of parentheses. Some examples of formulas:
• P3 U[O, 12] ((-i (P[1 43,5 64] (pi Λ-i p2 )) Λ (-1 F[243, 785] P2))• P3 U [O, 12] ((-i (P [1 43.5 64] (pi Λ-ip 2 )) Λ (-1 F [2 43, 785] P2))
L'opérateur → (implication), peut aussi être utilisé puisqu'il n'est qu'une abréviation exprimable dans le langage. En effet Φi → Φ2 est une abréviation The operator → (implication) can also be used since it is only an expressible abbreviation in the language. Indeed Φi → Φ 2 is an abbreviation
L'ensemble des sous-formules d'une formule est donné par la fonction SF définie de la façon suivante : • SF(p) = {p} (pour une proposition p il n'y a qu'elle même) The set of sub-formulas of a formula is given by the SF function defined as follows: • SF (p) = {p} (for a proposition p there is only it)
• SF(Φ1 Λ Φ2) = { Φ! Λ Φ2 } uSF(Φ1) uSF(Φ2)• SF (Φ 1 Λ Φ 2 ) = {Φ ! Λ Φ 2 } uSF (Φ 1 ) uSF (Φ 2 )
• SF(Φ1 v Φ2) = { Φi v Φ2 } u SF(Φ1) u SF(Φ2)• SF (Φ 1 v Φ 2 ) = {Φi v Φ 2 } u SF (Φ 1 ) u SF (Φ 2 )
• SF(F[a,b] Φ) = { F[a,b] Φ} uSF(Φ) • SF(P[a,b] Φ) = { P[a,b] Φ } U SF(Φ)• SF (F [a , b ] Φ) = {F [a , b] Φ} uSF (Φ) • SF (P [a , b] Φ) = {P [a, b] Φ} U SF (Φ )
• SF(P[a,>] Φ) = { P[a,>] Φ } USF(Φ)• SF (P [a ,>] Φ) = {P [a,>] Φ} USF (Φ)
• SF(Φi U[a,b] Φ2) = { Φi U[a,b]Φ2} uSF(Φi) USF(Φ2)• SF (Φi U [a , b] Φ 2 ) = {Φi U [a , b] Φ 2 } uSF (Φi) USF (Φ 2 )
• SF(Φ! S[a,b] Φ2) = { Φi S[a,b]Φ2} USF^1) USF(Φ2)• SF (Φ! S [a , b] Φ 2 ) = {Φi S [a , b] Φ 2 } USF ^ 1 ) USF (Φ 2 )
• SF(Φ1 S[a,>] Φ2) = { Φi S[a,>2} USFIΦO USF(Φ2) • SF((Φ)) = SF(Φ)• SF (Φ 1 S [a , >] Φ 2 ) = {Φi S [a , > ] Φ 2 } USFIΦO USF (Φ 2 ) • SF ((Φ)) = SF (Φ)
Par exemple : SF(-. p) = { -.p} uSF(p) = { -.p} u{ p} = { -.p, p}For example: SF (- .p) = {-.p} uSF (p) = {-.p} u {p} = {-.p, p}
SF ( F[243, 785] (Pi Λ-i p2)) = { F[243, 785] (pi Λ~i P2), (pi Λ~i p2), ->p2, Pi , Ç>2 }SF (F [2 43, 785] (Pi Λ-ip 2 )) = {F [243 , 785] (pi Λ ~ i P 2 ), (pi Λ ~ ip 2 ), -> p 2 , Pi, Ç > 2}
Les sous-formules directes d'une formule sont celles placées directement sous son opérateur. Par exemple, pour -iΦ il s'agit de Φ. Pour Φi U[a,b] Φ2 il s'agit de Φ1 et Φ2.The direct sub-formulas of a formula are those placed directly under its operator. For example, for -iΦ it is Φ. For Φi U [ a , b] Φ2 it is Φ 1 and Φ 2 .
Une formule du langage est dite purement booléenne si : • c'est une proposition, ou bienA language formula is said to be purely Boolean if: • it is a proposition, or else
• son opérateur est booléen (donc dans {-I,V,Λ,→}) et toutes ses sous-formules sont aussi purement booléennes.• its operator is boolean (hence in {-I, V, Λ, →}) and all its sub-formulas are also purely Boolean.
Hauteur d'une formule La hauteur d'une formule du langage défini ci-avant est donnée par une fonction h définie de la façon inductive suivante :Height of a formula The height of a formula of the language defined above is given by a function h defined inductively as follows:
• h(p) = 0 (les propositions sont de hauteur 0)• h (p) = 0 (the proposals are of height 0)
• h(op Φ) = h(Φ) +1 où op est un des opérateurs unaires du langage• h (op Φ) = h (Φ) +1 where op is one of the unary operators of the language
• h(Φi op Φ2) = sup (h(Φ), h(Φ)) + 1 où op est un des opérateurs binaires du langage Exemple : h (-1 F1112] (pi Λ p2)) = h (F1112] (pi Λ p2)) + 1 = h ((P1 Λ p2)) + 1 +1 = (SUp(Ii(PO1Ii(P2)) + 1 ) + 2 = sup(0,0)+1 +2= 0 + 3 = 3• h (Φi op Φ 2 ) = sup (h (Φ), h (Φ)) + 1 where op is one of the binary operators of the language Example: h (-1 F 1112) (pi Λ p 2 )) = h (F 1112) (pi Λ p 2 )) + 1 = h ((P 1 Λ p 2 )) + 1 + 1 = (SUp ( Ii (PO 1 Ii (P 2 )) + 1) + 2 = sup (0,0) +1 + 2 = 0 + 3 = 3
Sémantique du langage de spécification formelle des comportements redoutésSemantics of the language of formal specification of the dreaded behaviors
Sémantique intuitive :Intuitive semantics:
• L'opérateur -. est la négation. ->Φ est vraie à une date t si et seulement si Φ est fausse à cette date t.• The operator -. is the negation. -> Φ is true at a date t if and only if Φ is false at this date t.
• L'opérateur Λ est appelé conjonction. La formule Φi Λ Φ2 n'est vraie à une date t que si Φi et Φ2 sont toutes deux vraies à cette date t.• The operator Λ is called conjunction. The formula Φi Λ Φ 2 is true at a date t only if Φi and Φ 2 are both true at this date t.
• L'opérateur v est appelé disjonction. La formule Φi v Φ2 est vraie à une date t si Φ-i ou Φ2 est vraie à cette date t.• The operator v is called disjunction. The formula Φi v Φ 2 is true at a date t if Φ-i or Φ 2 is true at this date t.
• L'opérateur F[a,b] porte sur le futur. Cet opérateur signifie intuitivement « dans le futur, entre a et b » ou encore « il y aura entre a et b ». Plus rigoureusement la formule F[a,b] Φ est vraie à une date t si et seulement s'il existe une date entre t+a et t+b où Φ est vraie.• The operator F [a , b ] is about the future. This operator intuitively means "in the future, between a and b" or "there will be between a and b". More rigorously the formula F [a , b] Φ is true at a date t if and only if there exists a date between t + a and t + b where Φ is true.
• L'opérateur P[a,b] porte sur le passé. Cet opérateur signifie intuitivement « dans le passé, entre a et b » ou encore « il y a eu entre a et b ». Plus rigoureusement la formule P[a,t>] Φ est vraie en t si et seulement s'il existe une date entre t-b et t-a où Φ est vraie.• The operator P [a , b ] is about the past. This operator intuitively means "in the past, between a and b" or "there was between a and b". More strictly, the formula P [ a , t > ] Φ is true in t if and only if there exists a date between tb and ta where Φ is true.
• L'opérateur P[a >] porte sur le passé. Cet opérateur signifie intuitivement : « au-delà de -a dans le passé ». Plus rigoureusement la formule P[a,>] Φ est vraie en t si et seulement s'il existe une date entre 0 et t-a où Φ est vraie.• The operator P [a>] deals with the past. This operator intuitively means "beyond -a in the past". More rigorously the formula P [a,>] Φ is true in t if and only if there exists a date between 0 and ta where Φ is true.
• L'opérateur U[a,t>] porte aussi sur le futur (le « U » viens de l'expression anglo-saxonne « Until »). Cet opérateur signifie intuitivement : « Φ2 sera vraie entre a et b et Φi sera partout vraie entre temps ». Plus rigoureusement la formule Φi U[a,b] Φ2 est vraie en t si et seulement s'il existe une date t' entre t+a et t+b où Φ2 est vraie et que Φi est partout vraie dans l'intervalle [t, t'[.• The operator U [a , t >] also relates to the future (the "U" comes from the Anglo-Saxon "Until"). This operator intuitively means: "Φ 2 will be true between a and b and Φi will be everywhere in between". More rigorously the formula Φi U [a , b] Φ2 is true t if and only if there exists a date t 'between t + a and t + b where Φ 2 is true and Φi is everywhere true in the interval [t, t' [.
• L'opérateur Sta,b] porte aussi sur le passé (le « S » viens de l'expression anglo-saxonne « Since »). Cet opérateur signifie : « Φ2 sera vraie vers le passé entre -b et -a et Φi sera partout vraie entre temps ». Plus rigoureusement la formule Φi S[a,b] Φ2 est vraie en t si et seulement s'il existe une date t' entre t-b et t-a où Φ2 est vraie et que Φ1 est partout vraie dans l'intervalle ]t', t].• The operator S ta, b] also relates to the past (the "S" comes from the English expression "Since"). This operator means: "Φ 2 will be true to the past between -b and -a and Φi will be everywhere in between". More rigorously the formula Φi S [ a , b ] Φ2 is true in t if and only if there exists a date t 'between tb and ta where Φ 2 is true and Φ1 is everywhere true in the interval] t', t].
• L'opérateur S[a >] porte aussi sur le passé. Cet opérateur signifie : « Φ2 sera vraie vers le passé au-delà de -a et Φ1 sera partout vraie entre temps ». Plus rigoureusement la formule Φ1 S[a,>] Φ2 est vraie en t si et seulement s'il existe une date t' entre 0 et t-a où Φ2 est vraie et que Φ1 reste vraie dans l'intervalle ]t', t]. Sémantique formelle : L'objet de cette définition est de donner un sens mathématique à la notion de validation d'une formule par un processus π (processus au sens défini ci- avant) à une date t quelconque. La notation π,t |= Φ se lit : « le processus π valide Φ à la date t » , et est définie ainsi :• The operator S [a>] also deals with the past. This operator means: "sera 2 will be true to the past beyond -a and Φ 1 will be everywhere in the meantime". More rigorously the formula Φ 1 S [ a , > ] Φ 2 is true in t if and only if there exists a date t 'between 0 and ta where Φ 2 is true and Φ 1 remains true in the interval] t ', t]. Formal semantics: The purpose of this definition is to give a mathematical meaning to the notion of validation of a formula by a process π (process in the sense defined above) at any date t. The notation π, t | = Φ reads: "the process π valid Φ at the date t", and is defined as follows:
• π,t |= p ssi p est dans l'ensemble de propositions de l'instantané π(k) où k est le plus grand rang des rangs d'instantanés dont les dates sont inférieures à t (t est supérieure ou égale à la date portée par l'instantané π(k) et strictement inférieure à la date de l'instantané π(k+1 ) ).• π, t | = p iff p is in the set of propositions of the snapshot π (k) where k is the largest row of snapshots whose dates are less than t (t is greater than or equal to the date carried by the snapshot π (k) and strictly less than the date of the snapshot π (k + 1)).
• π,t |= -1 Φ ssi π,t |≠ Φ (lire : π,t ne valide pas Φ) . π,t |= Φ1 Λ Φ2 ssi π,t |= Φ-i et π,t |= Φ2 • π, t | = -1 Φ ssi π, t | ≠ Φ (read: π, t does not validate Φ). π, t | = Φ 1 Λ Φ 2 ssi π, t | = Φ-i and π, t | = Φ 2
. π,t |= Φ1 v Φ2 ssi π,t |= Φ-i ou π,t |= Φ2 . π, t | = Φ 1 v Φ 2 ssi π, t | = Φ-i or π, t | = Φ 2
• π,t |= F[a:b] Φ ssi il existe une date t' de [t+a, t+b] telle que π,t' |= Φ• π, t | = F [a: b] Φ iff there exists a date t 'of [t + a, t + b] such that π, t' | = Φ
• π,t |= P[a,b] Φ ssi il existe une date t' de [t-b, t-a] telle que π,t' |= Φ • π,t |= P[a,>] Φ ssi il existe une date t' de [0, t-a] telle que π,t' |= Φ . π,t |= Φi U[a,b] Φ2 ssi il existe une date t' de [t+a,t+b] telle que π,t'• π, t | = P [a, b ] Φ iff there exists a date t 'of [tb, ta] such that π, t' | = Φ • π, t | = P [a , > ] Φ iff there exists a date t 'of [0, ta] such that π, t' | = Φ. π, t | = Φi U [a , b] Φ2 iff there exists a date t 'of [t + a, t + b] such that π, t'
|= Φ2 et pour toute date t" de [t,t'[ π,t" |= Φ-i| = Φ 2 and for any date t "of [t, t '[π, t" | = Φ-i
. π,t |= Φ1 S[a,b] Φ2 ssi il existe une date t' de [t-b, t-a] telle que π,t' |= Φ2 et pour toute date t" de ]t',t] π,t" |= Φ1. π, t | = Φ1 S [a, b] Φ2 if there exists a date t 'of [tb, ta] such that π, t' | = Φ 2 and for every date t "of] t ', t] π , t "| = Φ1
. π,t |= Φ1 S[a,>] Φ2 ssi il existe une date t' de [0, t-a] telle que π,t' |= Φ2 et pour toute date t" de ]t',t] π,t" |= Φ1. π, t | = Φ1 S [a, > ] Φ2 if there exists a date t 'of [0, ta] such that π, t' | = Φ 2 and for every date t "of] t ', t] π , t "| = Φ1
La notion de liste de validité précédemment exposée était limitée aux propositions. Sans sortir du cadre de l'invention, cette approche peut être étendue à toute expression de notre langage (les propositions ne formant qu'une partie de ce langage). Pour cela nous avons besoin d'établir la façon dont les opérateurs du langage se traduisent en termes d'opérations sur les listes de validités.The concept of validity list previously explained was limited to the proposals. Without departing from the scope of the invention, this approach can be extended to any expression of our language (proposals forming only part of this language). For this we need to establish how language operators translate in terms of operations on validity lists.
Correspondance entre opérateurs du langage et opérations sur les listes de validitéCorrespondence between language operators and validity list operations
II a été précédemment exposé comment se constituait une liste de validité pour des propositions. Comme les formules complexes sont construites à partir des propositions et des opérateurs du langage, pour calculer les intervalles de validités des formules complexes, il est nécessaire d'établir une correspondance entre les opérateurs du langage et des opérations sur les listes de validité. Par exemple, la liste de validité de la formule Φ1 Λ Φ2 résulte de la combinaison (particulière à l'opérateur Λ) des listes de validité de Φ1 et de Φ2. Nous allons donc établir une sorte d'algèbre sur les listes de validité.It was previously explained how a validity list for proposals was constituted. Since complex formulas are constructed from propositions and language operators, to compute the validity intervals of complex formulas, it is necessary to establish a correspondence between the operators of the language and operations on the validity lists. For example, the validity list of the formula Φ 1 Λ Φ 2 results from the combination (particular to the operator Λ) of the validity lists of Φ1 and Φ 2 . So we are going to establish some kind of algebra on the validity lists.
Deux types de calcul vont être explicités. Le premier sera un calcul dédié aux formules purement booléennes. Le second sera un calcul valable pour n'importe quelle formule du langage. Premier calcul des listes de validité (valable uniquement pour les formules purement booléennes) :Two types of calculation will be explained. The first will be a calculation dedicated to purely Boolean formulas. The second will be a valid calculation for any language formula. First calculation of validity lists (valid only for purely Boolean formulas):
Pour calculer la liste de validité des formules purement booléennes l'algorithme de calcul utilisé est similaire à celui exposé pour les propositions et ne nécessite qu'une adaptation mineure. De même que pour une proposition p nous avions défini les variables booléennes p. val et l.p, pour une formule Φ purement booléenne nous définissons les variables booléennes Φ.val et I.Φ:To compute the validity list of purely Boolean formulas, the calculation algorithm used is similar to that used for the propositions and requires only a minor adaptation. As for a proposition p we had defined the boolean variables p. val and l.p, for a purely Boolean formula nous we define the Boolean variables Φ.val and I.Φ:
• Φ.val est une variable booléenne associée à Φ. Elle est initialisée à 0. • I.Φ est une variable booléenne qui représente la valeur que l'instantané I attribue à Φ. Son calcul est défini de la manière inductive suivante: o Si Φ est une proposition p alors I. Φ est l.p o Si Φ est la formule -iΦ-i alors I.Φ vaut la négation de valeur de vérité de I. Φi. Formellement : I. (-1Φ1) = 1 - I.Φi o Si Φ est Φ1 Λ Φ2 alors I.Φ vaut 1 si I.Φ1 et I.Φ2 valent tous deux 1 , 0 sinon. Formellement : l.( Φ1 Λ Φ2) = I.Φ-i * I.Φ2 o Si Φ est Φ1 v Φ2 alors I.Φ vaut 0 si I.Φ1 et I.Φ2 valent tous deux 0, 1 sinon. Formellement : l.( Φ1 v Φ2) = (I.Φ-i + I.Φ2 ) - (I.Φ1 * I.Φ2) ).• Φ.val is a Boolean variable associated with Φ. It is initialized to 0. • I.Φ is a boolean variable that represents the value that snapshot I assigns to Φ. Its calculation is defined inductively as follows: o If Φ is a proposition p then I. Φ is lp o If Φ is the formula -iΦ-i then I.Φ is the negation of the truth value of I. Φi. Formally: I. (-1Φ 1 ) = 1 - I.Φi o If Φ is Φ1 Λ Φ 2 then I.Φ is equal to 1 if both I.Φ1 and I.Φ 2 are equal to 1, 0 otherwise. Formally: 1. (Φ 1 Λ Φ 2 ) = I.Φ-i * I.Φ 2 o If Φ is Φ1 v Φ 2 then IΦ is 0 if IΦ1 and IΦ 2 are both 0, 1 otherwise. Formally: 1. (Φ 1 v Φ 2 ) = (I.Φ-i + I.Φ 2 ) - (I.Φ1 * I.Φ 2 )).
Par exemple considérons pi v p2. Supposons un instantané I tel que l.p-j = 0 et Lp2 = 1. Alors 1.(P1 v p2) = Lp1 + Lp2 - (Lp1 * Lp2) = 0 + 1 - (O M ) = LFor example consider pi vp 2 . Suppose a snapshot I such that lp-j = 0 and Lp 2 = 1. Then 1. (P 1 vp 2 ) = Lp 1 + Lp 2 - (Lp 1 * Lp 2 ) = 0 + 1 - (OM) = L
Moyennant ces définitions le calcul des listes de validité d'une formule purement booléenne est similaire à celui exposé pour une proposition. Nous allons donc pouvoir étendre ce dernier pour traiter non seulement les propositions mais aussi toutes les formules purement booléennes. Il suffit simplement d'appeler au préalable le calcul sur les sous-formules afin que toutes les variables en jeu soient définies (par exemple pour Φ-i Λ Φ2 , on doit d'abord faire le calcul pour Φï et pour Φ2 de telle sorte que I.Φi et I.Φ2 soient définies). L'algorithme généralisé pour les purement booléennes (donc aussi les propositions) est donc le suivant :With these definitions, the calculation of the validity lists of a purely Boolean formula is similar to that for a proposition. We will therefore be able to extend the latter to deal not only with the propositions but also with all the purely Boolean formulas. Simply call the calculation on the sub-formulas beforehand so that all the variables in play are defined (for example for Φ-i Λ Φ 2 , must first do the calculation for Φi and for Φ 2 so that I.Φi and I.Φ 2 are defined). The generalized algorithm for pure Booleans (and therefore also propositions) is as follows:
Algorithme de calcul de la liste de validité d'une formule purement booléenne Φ :Algorithm for calculating the validity list of a purely Boolean formula Φ:
• Φ.val est initialisée à 0• Φ.val is initialized to 0
• Φ.LV est initialisée à la liste vide• Φ.LV is initialized to the empty list
• A chaque rafraîchissement de l'instantané I faire : o calculer I.Φ comme indiqué plus haut (on suppose que les sous-formules de Φ ont été traitées avant) o Si I.Φ = 0 et Φ.val = 1 créer l'intervalle [l.t, l.t] et l'ajouter en fin de Φ.LV o Si I.Φ = 1 et Φ.val = 1 alors changer la borne supérieure du dernier intervalle de Φ.LV de sorte qu'elle devienne l.t : si (I, Ib, ub ,u) est ce dernier intervalle alors il devient (I, Ib, l.t ,u) o Si I.Φ = 1 et Φ.val = 0 alors changer la borne supérieure du dernier intervalle de Φ.LV à l.t et ouvrir cet intervalle sur cette borne supérieur : si (I, Ib, ub ,u) est ce dernier intervalle alors il devient (I, Ib, l.t ,0) o Si I.Φ = 0 et Φ.val = 0 ne pas rien faire (Φ.LV est inchangée) o Assigner I. Φ à Φ.val• With each refreshing of the snapshot I make: o calculate I.Φ as indicated above (we suppose that the sub-formulas of Φ were treated before) o If I.Φ = 0 and Φ.val = 1 create l interval [lt, lt] and add it at the end of Φ.LV o If I.Φ = 1 and Φ.val = 1 then change the upper bound of the last interval of Φ.LV so that it becomes lt: if (I, Ib, ub, u) is this last interval then it becomes (I, Ib, lt, u) o If I.Φ = 1 and Φ.val = 0 then change the upper bound of the last interval of Φ. LV to lt and open this interval on this upper bound: if (I, Ib, ub, u) is this last interval then it becomes (I, Ib, lt, 0) o If I.Φ = 0 and Φ.val = 0 do not do anything (Φ.LV is unchanged) o Assign I. Φ to Φ.val
Second calcul des listes de validité (valable pour toute formule mais moins efficace que le premier si appliqué à une purement booléenne)Second calculation of validity lists (valid for any formula but less effective than the first if applied to a purely Boolean)
Le calcul des listes de validité des formules non purement booléennes est maintenant abordé. Contrairement aux formules purement booléennes qui peuvent être calculées simplement en considérant la valeur que leur attribue un instantané I (soit I.Φ) et la valeur qu'elle avait auparavant (soit Φ.val), pour une formule non purement booléenne le calcul de sa liste de validité repose sur une composition des listes de validité de ses sous-formules directes, composition qui est fonction de l'opérateur. Nous allons donner ci- dessous quelques intuitions de cette composition propre à chaque opérateur. Ces intuitions ne présage pas que le calcul est fait « en ligne » ou « hors ligne ». Cette distinction sera envisagée plus loin lorsque nous aborderons les principes de certitude, de continuation et de zone d'influence. Nous faisons l'hypothèse implicite que le calcul est fait sur une certaine plage temporelle (qui n'a pas besoin d'être précisée pour exposer les principes). Une description formelle et prenant en compte tous les aspects du procédé est en revanche donnée en Annexe 1.The calculation of the validity lists of non-purely Boolean formulas is now discussed. Unlike purely Boolean formulas that can be calculated simply by considering the value assigned to them by a snapshot I (ie I.Φ) and the value it had before (ie Φ.val), for a non-purely Boolean formula the calculation of its validity list is based on a composition of the validity lists of its direct sub-formulas, which composition is a function of the operator. We will give below some intuitions of this composition specific to each operator. These intuitions do not presage that the calculation is done "online" or "offline". This distinction will be considered later when we discuss the principles of certainty, continuation and zone of influence. We make the implicit assumption that the computation is done over a certain time range (which does not need to be specified to expose the principles). A formal description taking into account all aspects of the process is given in Annex 1.
Cas de l'opérateur -i.Case of the operator -i.
La figure 4 illustre le calcul de la liste de validité de -iΦ connaissant celle de Φ. Le principe est le suivant : deux intervalles successifs i et i+1 de Φ donnent lieu à un intervalle pour -iΦ qui s'insère entre i et i+1. (Voir Annexe 1 pour une description plus détaillée).Figure 4 illustrates the calculation of the validity list of -iΦ knowing that of Φ. The principle is as follows: two successive intervals i and i + 1 of Φ give rise to an interval for -iΦ which inserts between i and i + 1. (See Appendix 1 for a more detailed description).
Cas de l'opérateur Λ.Case of the operator Λ.
La liste de validité de Φi Λ Φ2 est fonction de celles de Φi et de Φ2. Le principe est le suivant : si h est un intervalle de Φi et i2 un intervalle de Φ2 et que h n i2 ≠ 0, alors h n i2 est un intervalle de Φ^ Λ Φ2. (Voir Annexe 1 pour une description plus détaillée).The validity list of Φi Λ Φ 2 depends on those of Φi and Φ 2 . The principle is: if h is an interval of Φi and i 2 is an interval of Φ 2 and hni 2 ≠ 0, then hni 2 is an interval of Φ ^ Λ Φ 2 . (See Appendix 1 for a more detailed description).
Cas de l'opérateur v. La liste de validité de Φ-ιv Φ2 est fonction de celles de Φi et de Φ2. Le principe est le suivant. Tout d'abord nous faisons un choix de sens de parcours des listes de validité des listes de Φ-i et de Φ2. Nous verrons qu'il est plus judicieux de partir de la fin des listes. Nous faisons donc ce choix. Soient J1 et i2 les derniers intervalles de respectivement Φi.LV et de Φ2.LV. Nous faisons un premier choix entre il et i2 qui consiste à choisir celui va le plus loin dans le futur (où i « va plus loin dans le futur que » j signifie que soit nous avons i.ub > j.ub soit nous avons si i.ub = j.ub et i.u = 1 et j.u = O). Si ce choix n'est pas possible car ils vont tous deux aussi loin dans le futur (c'est-à-dire J1-Ub = i2.ub et J1. u = i2.u) alors nous choisissons des deux celui qui va le plus loin dans le passé. Prenons, sans perte de généralité, le cas où ii ressortirait vainqueur de ce choix. Nous faisons entrer J1 dans la liste de validité (Φiv Φ2).LV de ΦÏV Φ2 par adjonction à gauche. Ensuite nous recherchons dans les prédécesseurs de i2 (i2 compris) le premier intervalle i qui soit tel que i < ii ou bien qui chevauche J1 à gauche. Nous l'assignons à i2 (même si i vaut Nil). Nous assignons le prédécesseur de ii à ii. Puis nous réitérons le procédé en refaisant un choix entre les nouveaux U et i2 et ainsi de suite jusqu'à épuiser les listes Φi.LV et Φ2.LV. Ainsi, de proche en proche, et selon un algorithme linéaire, nous construisons la liste de validité de Φ-ιv Φ2.Case of the operator v. The validity list of Φ-ιv Φ 2 depends on those of Φi and Φ 2 . The principle is the following. First of all we make a choice of direction of the lists of validity of the lists of Φ-i and Φ 2 . We will see that it is wiser to start from the end of the lists. We make this choice. Let J 1 and i 2 be the last intervals of Φi.LV and Φ 2 .LV, respectively. We make a first choice between it and i2 which consists of choosing the one that goes farthest in the future (where i "go further in the future than" j means either we have i.ub> j.ub or we have so i.ub = j.ub and iu = 1 and ju = O). If that choice is not possible as they both go as far in the future (that is to say i = -Ub J 1 and J 2 .ub 1. I 2 = u .u) then we choose two who goes the furthest in the past. Let us take, without loss of generality, the case in which he would be the winner of this choice. We enter J 1 in the validity list (Φiv Φ 2 ) .LV of Φ Ï V Φ 2 by adding on the left. Then we look in the predecessors of i 2 (i 2 inclusive) for the first interval i which is such that i <ii or which overlaps J 1 on the left. We assign it to i 2 (even if i is Nil). We assign the predecessor of ii to ii. Then we reiterate the process by making a choice between the new U and i 2 and so on until we exhaust the lists Φi.LV and Φ 2 .LV. Thus, step by step, and according to a linear algorithm, we build the validity list of Φ-ιv Φ 2 .
Cas de l'opérateur F[a,b].Case of the operator F [a , b].
La figure 5 illustre la manière dont un intervalle de F[a,b]Φ est produit en fonction d'un intervalle existant dans la liste de validité de Φ. Si i est un intervalle de Φ on déduit que l'intervalle (i Θ [-b, -a]) contient les dates de validité pour F[a,b]Φ selon la donnée de i. En effet choisissons une date t de i Θ [-b, -a]. Est-ce que Φ est effectivement vraie dans [t+a, t+b] ? Autrement dit est-ce que [t+a, t+b] coupe i ? Supposons que cela ne soit pas le cas. Alors c'est que nous aurions [t+a, t+b] < i ou bien i < [t+a, t+b]. Considérons le cas [t+a, t+b] < i. Pour qu'il soit vérifié il n'y a que deux cas de figure. Montrons qu'il y a contradiction dans les deux cas :Figure 5 illustrates how an interval of F [a , b] Φ is produced as a function of an existing interval in the validity list of Φ. If i is an interval of Φ we deduce that the interval (i Θ [-b, -a]) contains the validity dates for F [a , b] Φ according to the data of i. Indeed, let us choose a date t of i Θ [-b, -a]. Is Φ actually true in [t + a, t + b]? In other words, does [t + a, t + b] cut i? Suppose this is not the case. Then we would have [t + a, t + b] <i or else i <[t + a, t + b]. Consider the case [t + a, t + b] <i. For it to be verified there are only two cases. Let's show that there is a contradiction in both cases:
• Soit nous aurions t+b < i.lb, donc t < i.lb - b donc t € i Θ [-b, -a]. Contradiction.• Either we would have t + b <i.lb, so t <i.lb - b so t € i Θ [-b, -a]. Contradiction.
• Soit nous aurions t+b = i.lb et i.l = 0 car [t+a, t+b] est fermé à droite sur t+b. Sachant que i Θ [-b, -a] vaut par définition (i.l, i.lb - b, i.ub - a, i.u), avec i.lb = t + b, nous aurions alors i Θ [-b, -a] = (U, (t + b) - b, i.ub - a, i.u) = (U, t, i.ub - a, i.u). Ainsi t serait dans ce cas la borne inférieure de i Θ [-b, -a]. Comme nous avons pris t dans i Θ [-b, -a], cela signifie que i Θ [-b, -a] possède sa borne inférieure, donc qu'il est fermé sur celle-ci. Autrement dit cela implique (i Θ [-b, -a]).l = 1.• Or we would have t + b = i.lb and il = 0 because [t + a, t + b] is closed on the right on t + b. Knowing that i Θ [-b, -a] is by definition (il, i.lb - b, i.ub - a, iu), with i.lb = t + b, we would then have i Θ [-b, -a] = (U, (t + b) - b, i.ub - a, iu) = (U, t, i.ub - a, iu). Thus t would be in this case the lower bound of i Θ [-b, -a]. Since we took t in i Θ [-b, -a], this means that i Θ [-b, -a] has its lower bound, so that it is closed on it. In other words, this implies (i Θ [-b, -a]). L = 1.
Comme par définition (i Θ [-b, -a]). I est U nous devrions donc avoir U = 1. Contradiction.As by definition (i Θ [-b, -a]). I is U so we should have U = 1. Contradiction.
Le cas i < [t+a, t+b] mène de la même manière à des contradictions. Ceci montre que (i Θ [-b, -a]) contient bien les dates de validité pour F[a,b] Φ selon la donnée de i et par conséquent qu'il est un intervalle à adjoindre dans la liste de validité de F[a,b] Φ. (Voir Annexe 1 pour un calcul plus détaillé).The case i <[t + a, t + b] leads in the same way to contradictions. This shows that (i Θ [-b, -a]) contains the validity dates for F [a , b] Φ according to the data of i and therefore that it is an interval to be added in the validity list of F [a , b] Φ. (See Appendix 1 for a more detailed calculation).
Cas de l'opérateur U[a,b]- Nous distinguons selon que a > 0 ou a = 0. Cas a > 0.Case of the operator U [ a , b] - We distinguish according to that a> 0 or a = 0. Case a> 0.
Rappelons que Φ-i U[a,b] Φ2 est valide en une date t si Φ2 est vraie à une date t' de [t+a,t+b] et que Φ1 est vraie partout sur [t,t'[. Il résulte de ceci qu'un intervalle H de Φ1 et un intervalle I2 de Φ2 tels que H] n i2 = 0 (rappel : h] est le fermé à droite de h) ne peuvent donner lieu à un intervalle pour Φ-i U[a,b] Φ∑- En effet si h] n i2 = 0 cela signifie qu'il existe une séparation entre h] et i2 par conséquent Φ-i ne peut être partout vraie entre une date de i-ι] jusqu'à une date de i2. Donc ii] n i2 ≠ 0 est une condition nécessaire pour que ii et i2 génèrent un intervalle pour Φ-, U[a,b] Φ2 - Considérons donc, comme sur la figure 6A, deux intervalles h et i2 tels que J1] n i2 ≠ 0. Appelons i cet intervalle J1] n i2. Considérons l'intervalle j = i Θ [-b, -a]. D'après ce que nous avons vu précédemment pour l'opérateur F[a,b], si nous choisissons une date t dans j il est clair qu'il existe une date t' de [t+a, t+b] qui soit dans i. Comme toutes les dates de i sont aussi des dates de i2 (puisque i = h] n i2), cela signifie qu'en t' Φ2 est vraie. Nous en déduisons que si t est choisie dans j alors il existe une date t' de [t+a, t+b] où Φ2 est vraie.Recall that Φ-i U [a, b] Φ 2 is valid at a date t if Φ 2 is true at a date t 'of [t + a, t + b] and that Φ 1 is true everywhere on [t, t [. It follows from this that an interval H of Φ 1 and an interval I 2 of Φ 2 such that H] nor 2 = 0 (reminder: h] is the closed to the right of h) can not give rise to an interval for Φ -i U [a , b] ΦΣ- Indeed if h] nor 2 = 0 it means that there is a separation between h] and i 2 therefore Φ-i can not be everywhere true between a date of i- until a date of i 2 . So ii] nor 2 ≠ 0 is a necessary condition for ii and i 2 to generate an interval for Φ-, U [a , b ] Φ 2 - Let us consider, as in figure 6A, two intervals h and i 2 such that J 1 ] nor 2 ≠ 0. Call this interval J 1 ] or 2 . Consider the interval j = i Θ [-b, -a]. From what we have seen previously for the operator F [a , b], if we choose a date t in j it is clear that there exists a date t 'of [t + a, t + b] which either in i. Since all the dates of i are also dates of i 2 (since i = h] nor 2 ), this means that in t 'Φ 2 is true. We deduce that if t is chosen in j then there exists a date t 'of [t + a, t + b] where Φ 2 is true.
Choisissons maintenant t dans j n J1]. Alors la date t, en tant que date de j, nous garantit comme vu ci-dessus qu'il existe une date t' de [t+a, t+b] où Φ2 est vraie. Rappelons que de plus t' est aussi une date de i.Now let us choose t in jn J 1 ]. Then the date t, as the date of j, guarantees us as seen above that there exists a date t 'of [t + a, t + b] where Φ 2 is true. Remember that t is also a date of i.
Ceci implique que t' est une date de H] (puisque i = i-i] n i2). Par ailleurs en tant que date de j n J1] la date t est aussi une date de J1]. Finalement, pour synthétiser, t et t' sont des dates de h] et t' est dans [t+a, t+b]. Gomme a > 0 alors t < t'. Donc t est dans h et t' dans J1]. C'est-à-dire que t' est ou bien dans h ou bien n'est pas dans J1 mais est J1. ub. Dans les deux cas l'intervalle ii (qui est continu) assure donc une continuité de validité de Φi sur [t, t'[. Comme Φ2 est vraie en t', il s'en suit que (Φi U[a,b] Φ2) est valide en t. Pour conclure, quand a>0, l'intervalle H] n (i-i] n i2 Θ [-b, -a]) dénote les dates où (Φ1 U[a,b] Φ2) est vraie d'après la donnée de ii et i2 (il est éventuellement vide si j < h ). Cet intervalle sera donc à adjoindre à la liste (Φ1 U[a,b] Φ2).LV de validité de Φ1 U[a,b] Φ2-This implies that t 'is a date of H] (since i = ii] nor 2 ). Moreover, as date of jn J 1 ] date t is also a date of J 1 ]. Finally, to synthesize, t and t 'are dates of h] and t' is in [t + a, t + b]. Gum a> 0 then t <t '. So t is in h and t 'in J 1 ]. That is, t 'is either in h or not in J 1 but is J 1 . ub. In both cases the interval ii (which is continuous) thus ensures a continuity of validity of Φi over [t, t '[. Since Φ 2 is true in t ', it follows that (Φi U [a , b] Φ2) is valid in t. To conclude, when a> 0, the interval H] n (ii] and 2 Θ [-b, -a] denotes the dates when (Φ1 U [a , b] Φ 2 ) is true from the given from ii and i 2 (it is possibly empty if j <h). This interval will therefore be added to the list (Φ1 U [a, b] Φ2) .LV of validity of Φ 1 U [a , b] Φ 2 -
Cas a = 0 (donc cas de : Φ1 U[o,b] Φ2)Case a = 0 (so case of: Φ1 U [o, b] Φ2)
Dans le cas où a vaut 0, l'ensemble i2 est lui-même un ensemble de dates qui valident Φ1 U[a,b] Φ2- L'intervalle i2 doit donc aussi être adjoint à (Φ1 U[a,b] Φ2).LV. Mais si par ailleurs il existe ii de Φ-i.LV qui chevauche i2 par la gauche comme sur la figure 6B, les dates de ii qui sont aussi dans i2 © [-b, 0] valident Φ-i U[0,b] Φ2- Finalement s'il existe un tel M qui chevauche i2 par la gauche c'est donc l'intervalle (h n (i2 Θ [-b, 0])) u i2 nous devons adjoindre au lieu de i2 seulement.In the case where a is 0, the set i 2 is itself a set of dates that validate Φ 1 U [a , b] Φ 2 - The interval i 2 must therefore also be adjoint to (Φ 1 U [ a , b] Φ 2 ) .LV. But if, on the other hand, there exists ii of Φ-i.LV which overlaps i 2 by the left as in figure 6B, the dates of ii which are also in i 2 © [-b, 0] validate Φ-i U [0 b] Φ 2 - Finally if there is such that overlaps i M 2 by the left this is the interval (hn (i 2 Θ [-b, 0])) es 2 we attach instead of i 2 only.
Dans l'Annexe 1 un calcul précis et formalisé a vaut 0 ou que a > 0. Cas de l'opérateur S[a,b]. Symétrique à U[a,b] dans le passé.In Annex 1 a precise and formalized calculation is worth 0 or that a> 0. Case of the operator S [a , b ]. Symmetrical to U [a , b] in the past.
Cas de l'opérateur P[a,>]. La liste de validité de P[a,>] Φ ne dépend que du premier intervalle de la liste de validité de Φ. Si celui-ci existe et est de la forme [u,v] alors la liste de validité de P[a,>] Φ est composé de l'unique intervalle [u+a,∞[.Case of the operator P [a , >] . The validity list of P [a,>] Φ depends only on the first interval of the validity list of Φ. If it exists and is of the form [u, v] then the validity list of P [a , > ] Φ is composed of the single interval [u + a, ∞ [.
Cas de l'opérateur S[a,>]. Considérons la formule Φ-i S[a,>] Φ2 . Là encore pour que \-\ de Φi et i2 de Φ2 produisent un intervalle pour Φ-i S[a,>] Φ2 il faut que i2 n [J1 ≠ 0. Supposons que ce soit le cas. Supposons que i2 soit [u,v]. Posons k = [u+a, ∞[. Alors k n "h est un intervalle de validité pour Φ-i S[a,>] Φ2.Case of the operator S [a , > ]. Consider the formula Φ-i S [a,>] Φ 2 . Again, for \ - \ of Φi and i 2 of Φ 2 to produce an interval for Φ-i S [ a,>] Φ 2 it is necessary that i 2 n [J 1 ≠ 0. Suppose this is the case. Suppose i 2 is [u, v]. Let k = [u + a, ∞ [. Then kn " h is a validity interval for Φ-i S [a,> ] Φ 2 .
Dans les descriptions ci-dessus nous n'avons donné qu'une intuition pour chaque opérateur, des bases du calcul. Il existe de multiple façon de composer des listes de validité avec un résultat identique. L'essentiel est que le calcul soit conforme à la sémantique donnée pour le langage. Dans l'Annexe 1 nous donnons une description précise et complète (en pseudo- code) d'un mode de calcul possible pour chaque opérateur.In the descriptions above we gave only one intuition for each operator, bases of calculation. There are multiple ways to compose validity lists with identical results. The point is that the calculation is consistent with the semantics given for the language. In Annex 1 we give a precise and complete description (in pseudocode) of a possible calculation method for each operator.
Relation entre le procédé et le calcul de la liste de validité de la formule principaleRelationship between the process and the calculation of the validity list of the main formula
Dans ce qui précède nous avons décrit une version simple du procédé où le comportement redouté se réduisait à une proposition, soit « solde <0 ». Le procédé reposait sur le constat que détecter l'occurrence du comportement redouté « solde <0 » équivaut à calculer la liste de validité attachée à la proposition « solde <0 » et à tester si cette liste est vide ou non. Si elle ne l'est pas, cela signifie que « solde <0 » est vraie à certaines dates et donc que le comportement redouté a eu lieu. Ensuite nous avons introduit un langage plus riche pour exprimer des propriétés plus évoluées. Pour étendre le procédé à ce langage il fallait alors disposer d'un calcul permettant de calculer la liste de validité de n'importe quelle formule exprimable dans ce langage de sorte que l'on puisse appliquer le même principe à savoir : « détecter le comportement redouté c'est tester que la liste de validité de la formule qui l'exprime est non vide ». Or nous avons montré, au travers de deux types de calcul, que ce calcul peut être fait, pour n'importe quelle formule du langage. La seule contrainte à respecter est que lorsqu'on calcul la liste de validité d'une formule il faut que l'on ait traité d'abord ses sous-formules directes. Ceci n'a rien d'inhabituel : par exemple, en arithmétique élémentaire, si l'on demande de calculer a+b, il faut bien que les termes a et b soient définies et aient été calculés avant que l'on procède au calcul de a+b. Cette contrainte laisse supposer au moins deux modes de calcul pour le procédé : « Un calcul de type récursif (reposant sur un algorithme qui s'appelle lui- même) • Un calcul suivant la hauteur des formulesIn the foregoing we have described a simple version of the process where the dreaded behavior was reduced to a proposition, "balance <0". The process was based on the observation that detecting the occurrence of the feared behavior "balance <0" is equivalent to calculating the validity list attached to the proposal "balance <0" and to testing whether this list is empty or not. If it is not, it means that "balance <0" is true on certain dates and therefore the dreaded behavior has taken place. Then we introduced a richer language to express more advanced properties. To extend the process to this language it was then necessary to have a computation allowing to compute the list of validity of any formula expressible in this language so that one can apply the same principle namely: "to detect the behavior feared is to test that the validity list of the formula that expresses it is not empty ". But we have shown, through two types of calculation, that this calculation can be done, for any formula of the language. The only constraint to be respected is that when calculating the validity list of a formula it is necessary that one treated first its direct sub-formulas. This is not unusual: for example, in elementary arithmetic, if one asks to calculate a + b, it is necessary that the terms a and b are defined and have been calculated before one proceeds to the computation from a + b. This constraint suggests at least two calculation methods for the process: "A recursive type calculation (based on an algorithm that is called itself) • A calculation according to the height of the formulas
Schématiquement l'algorithme récursif est le suivant (il prend en argument une formule, nommons là Φ) :Schematically the recursive algorithm is the following (it takes as argument a formula, let's call it Φ):
A1 - Si Φ est formule purement booléenne, calcul de la liste de validité selon l'algorithme propre à ce type de formule.A1 - If Φ is a purely Boolean formula, calculate the validity list according to the algorithm specific to this type of formula.
A2 - Sinon identification de l'opérateur de la formule Φ,A2 - Otherwise identification of the operator of the formula Φ,
A2.1 - Appel (récursif) du présent algorithme sur Φi la première sous- formule directe de ΦA2.1 - Call (recursive) of the present algorithm on Φi the first direct sub-formula of Φ
A2.2 - Si Φ possède une deuxième sous-formule directe Φ2 appel récursif sur Φ2 A2.2 - If Φ has a second direct subformula Φ 2 recursive call on Φ 2
A2.3 - Calcul de la liste de validité de Φ en fonction de celles de Φi (et Φ2) et selon l'opérateur identifié A3 - FIN Le procédé, à chaque rafraîchissement de l'instantané I, appelle cet algorithme avec comme argument la formule principale Φ.A2.3 - Calculation of the validity list of Φ according to those of Φi (and Φ 2 ) and according to the identified operator A3 - FIN The process, at each refresh of snapshot I, calls this algorithm with the main formula Φ as an argument.
Selon un autre mode de réalisation, le calcul de la liste de validité fait appel à un algorithme non récursif se basant sur la hauteur des formules. Schématiquement l'algorithme est le suivant (Φ est la formule principale) : B1 -soit k = 0According to another embodiment, the calculation of the validity list uses a non-recursive algorithm based on the height of the formulas. Schematically the algorithm is the following (Φ is the main formula): B1 -soit k = 0
B2 - « tant que » k < h(Φ) faire B2.1 - pour toute sous-formule ψde Φ telle que h(ψ) = k faire : a) Si Ψ est formule purement booléenne, calcul de sa liste de validité selon l'algorithme propre à ce type de formule b) Sinon calcul de la liste de validité de Ψ en fonction de sa ou ses formules directes (qui ont forcément été déjà traitées puisque de hauteurs inférieures)B2 - "as long as" k <h (Φ) do B2.1 - for any sub-formula ψ of Φ such that h (ψ) = k do: a) If Ψ is a purely Boolean formula, calculate its validity list according to the algorithm specific to this type of formula b) Else calculation of the validity list of Ψ according to its direct formula or formulas (which have necessarily been already processed since of lower heights)
B2.2 - k = k + 1B2.2 - k = k + 1
B2.3 - retour du « tant que » 2. B3 - FIN.B2.3 - return of "as long as" 2. B3 - END.
Pour le procédé cet algorithme est appelé à chaque rafraichissement de l'instantané I, sans argument.For the process this algorithm is called at each refresh of the snapshot I, without argument.
D'un point de vue de l'efficacité on privilégiera le calcul reposant sur la hauteur des formules. En pratique on rangera les sous-formules de la principale Φ dans une liste croissante selon la fonction h (c'est-à-dire de sorte que si Ψi et Ψ2 sont deux formules consécutives de cette liste on ait soit h(Ψ0 < h(Ψ2) soit h(Ψ0 = h(Ψ2)). Ensuite, à chaque rafraichissement de l'instantané on parcoure cette liste à partir du début et pour chaque formule rencontrée on procède au calcul de ses intervalles de validité. A chaque formule rencontrée nous sommes sûrs que les sous-formules ont déjà été calculées puisque, de hauteurs inférieures, elles ont été parcourues avant la formule courante.From an efficiency point of view, the calculation based on the height of the formulas will be preferred. In practice we will rank the sub-formulas of the principal Φ in an increasing list according to the function h (that is to say that if Ψi and Ψ 2 are two consecutive formulas of this list we have either h (Ψ0 < h (Ψ 2 ) is h (Ψ0 = h (Ψ 2 )) Then, with each refresh of the snapshot, we go through this list from the beginning and for each formula encountered we proceed to calculate its validity intervals. every formula encountered we are sure that the sub-formulas have already been computed since, from lower heights, they were traversed before the current formula.
Dans ce qui précède nous avons présenté un calcul des liste de validité sans nous préoccuper de la plage temporelle qu'il était nécessaire ou possible de calculer. Les principes du calcul rigoureux, optimisé et en ligne vont être exposés ci-après. Comme il va être vu, il s'agit de conserver les résultats déjà obtenus lorsque le procédé est assuré qu'ils ne seront plus modifiés et de ne faire, à chaque nouveau rafraichissement de l'instantané, que les calculs nécessaires au prolongement de ces résultats. De sorte que le calcul peut être vu comme une suite de calculs locaux qui prolongent des résultats acquis antérieurement.In the foregoing we have presented a calculation of the validity list without worrying about the time range that was necessary or possible to calculate. The principles of rigorous, optimized and online calculation will be discussed below. As it will be seen, it is a question of preserving the results already obtained when the process is assured that they will not be modified any more and to make, with each new refreshing of the snapshot, only the calculations necessary for the extension of these results. So the calculation can be seen as a sequence of local calculations that extend previously acquired results.
Principes du calcul en ligne (certitude, continuation et zone d'influence) Le procédé de calcul selon l'invention efficace, en ligne, et à mémoire bornée, des intervalles de validité repose sur des principes originaux qui vont être exposés. Ce sont les principes de certitude, de continuation et de zone d'influence. Corollaire de la notion de zone d'influence, la notion de date d'inutilité permet de doter le procédé d'un mécanisme essentiel à son fonctionnement sans limite de durée, à savoir l'élimination des intervalles devenus non pertinents du point de vue de la problématique de détection du comportement redouté.Principles of Online Calculation (Certainty, Continuation and Zone of Influence) The computation method according to the invention effective, online, and bounded memory, validity ranges based on original principles that will be exposed. These are the principles of certainty, continuation and zone of influence. Corollary of the concept of zone of influence, the notion of useless date makes it possible to endow the process with a mechanism essential to its operation without limit of duration, namely the elimination of the intervals become irrelevant from the point of view of the problem of detection of dreaded behavior.
Principe de certitude : Ce principe consiste à déterminer, à tout moment et pour toute formule du langage, la portion de sa liste de validité qui restera inchangée, quoique qu'il advienne par la suite.Principle of certainty: This principle consists in determining, at any time and for any formula of language, the portion of its validity list which will remain unchanged, although it happens later.
Pour rendre opérationnel ce principe, le procédé définit une fonction, appelée Cert, qui prend en argument une formule et renvoie un nombre réel et ce de telle sorte que si I est le dernier instantané alors l.t - Cert(Φ) détermine la dernière date à laquelle Φ est certaine. Se pose alors la question de la première date à partir de laquelle Φ est certaine. D'après ce qui précède cela devrait être T_origine - Cert(Φ) puisque par convention le premier rafraichissement est effectué à T_originen, date de début d'observation. Mais il se peut alors que T_origine - Cert(Φ) soit antérieur à T_origine (tout simplement lorsque Cert(Φ) est strictement supérieur à 0). Nous sommes alors devant deux options. Soit nous acceptons, option 1 , de calculer des dates de validité antérieurement à T_origine, dans ce cas la fenêtre de certitude sera, pour toute formule Φ, l'intervalle [T_origine - Cert(Φ), l.t - Cert(Φ)]. Soit, option 2, nous n'acceptons pas de calculer des dates de validité antérieurement à T_origine (nous affirmons le caractère de T_origine comme date d'origine absolue), alors dans ce cas la fenêtre de certitude sera, pour toute formule Φ, l'intervalle [sup(T_origine, (T_origine - Cert(Φ))), l.t - Cert(Φ)]. Quoique les deux options soient possibles, dans la suite de la présentation nous opterons pour l'option 2 où [sup(T_origine, (T_origine - Cert(Φ))), l.t - Cert(Φ)] définit à tout moment l'intervalle de certitude de Φ.To make this principle operational, the process defines a function, called Cert, which takes a formula as a argument and returns a real number so that if I is the last snapshot then lt - Cert (Φ) determines the last date to which Φ is certain. Then comes the question of the first date from which Φ is certain. From what precedes this should be Origin - Cert (Φ) since by convention the first refresh is done at T_originen, the start date of the observation. But it may be that T_origine - Cert (Φ) is earlier than T_origine (simply when Cert (Φ) is strictly greater than 0). We are then in front of two options. Either we accept, option 1, to compute validity dates prior to the original, in this case the certainty window will be, for any formula Φ, the interval [T_origin - Cert (Φ), lt - Cert (Φ)]. Option 2, we do not accept calculating dates of validity earlier than original (we affirm the character of Origin as the date of absolute origin), then in this case the certainty window will be, for any formula Φ, interval [sup (Origin, (Origin - Cert (Φ))), lt - Cert (Φ)]. Although both options are possible, in the rest of the presentation we will opt for option 2 where [sup (Origin, (Origin - Cert (Φ))), lt - Cert (Φ)] defines the interval at any time. certainty of Φ.
Pour une proposition p, sa valeur peut être déterminée jusqu'à la date du dernier instantané. Il est donc clair que la liste de validité d'une proposition est complètement déterminée, figée, sur la plage temporelle [T_origine, l.t] où I est le dernier instantané. Il faut donc poser Cert(p) = 0 pour que [sup (T_origine, T_ohgine - Cert(Φ)), l.t - Cert(Φ)] soit l'intervalle de certitude de p. En effet, en posant Cert(p) = 0, nous avons bien [sup (T_origine, T_origine - Cert(Φ)), l.t - Cert(Φ)] = [sup(T_origine, T_ohgine - 0), l.t - 0] = [T_origine, l.t].For a proposition p, its value can be determined until the date of the last snapshot. It is therefore clear that the validity list of a proposition is completely determined, fixed, over the time range [T_origine, l.t] where I is the last snapshot. We must therefore put Cert (p) = 0 so that [sup (T_origine, T_ohgine - Cert (Φ)), l.t - Cert (Φ)] is the certainty interval of p. Indeed, by putting Cert (p) = 0, we have [sup (Origin, T_origin - Cert (Φ)), lt - Cert (Φ)] = [sup (Origin, T_ohgine - 0), lt - 0] = [Origin, lt].
Avant de généraliser à tous les opérateurs et à toute formule, ce principe est présenté dans un premier temps avec la formule F[a,bi P, car cela est particulièrement intuitif. Considérons une date t quelconque. Si nous voulons savoir si F[a,b] P est vraie ou fausse en t, conformément à la sémantique définie pour l'opérateur F[a,b] il faut que nous connaissions la valeur de p sur tout l'intervalle [t+a, t+b]. Or pour connaître p sur [t+a, t+b] il faut que la liste de validité de p soit déterminée et figée au moins jusqu'à t+b. Si nous renversons ce raisonnement, supposons que p soit certaine jusqu'à une date r. Alors F[a,b]P ne peut être déterminée que jusqu'à r - b. En effet considérons une date t < r - b. Donc t + b < r. Est-ce que la validité de F[a b] p peut-être déterminée en t ? D'après la définition de cet opérateur cela peut être déterminé si la validité de p est certaine sur toute date de [t+a, t+b]. Or c'est le cas puisque ayant t+b < r et a < b, il suit que toutes les dates de p sur [t+a, t+b] sont inférieures à r et donc la validité de p connues pour chacune. Pour généraliser à F[a,t>] Φ, si Φ est certaine jusqu'à disons r alors F[a,b] Φ n'est certain que jusqu'à r - b. La figure 7 A illustre ce principe, la validité de F[a,b] Φ est certaine en ti et incertaine en t2 car [t2+a, t2+b] empiète sur une zone de validité non déterminée pour Φ.Before generalizing to all the operators and to all formulas, this principle is presented at first with the formula F [a , b i P, because this is particularly intuitive. Consider any date t. If we want to know if F [a , b] P is true or false in t, according to the semantics defined for the operator F [a , b] we must know the value of p over the entire interval [t + a, t + b]. But to know p on [t + a, t + b] the list must be of validity of p is determined and fixed at least until t + b. If we reverse this reasoning, suppose that p is certain until a date r. Then F [a , b ] P can be determined only until r - b. Indeed consider a date t <r - b. So t + b <r. Can the validity of F [ab ] p be determined in t? According to the definition of this operator this can be determined if the validity of p is certain on any date of [t + a, t + b]. Now this is the case since having t + b <r and a <b, it follows that all the dates of p on [t + a, t + b] are lower than r and therefore the validity of p known for each. To generalize to F [ a , t > ] Φ, if Φ is certain until we say r then F [a , b ] Φ is only certain until r - b. Figure 7 A illustrates this principle, the validity of F [a , b] Φ is certain in ti and uncertain at t 2 because [t 2 + a, t 2 + b] overlaps with an area of undetermined validity for Φ.
Pour formaliser cette idée nous définissons la fonction Cert qui prend en argument une formule Ψ et renvoie un nombre réel de telle sorte que si l.t est la date du dernier instantané alors l.t - Cert(Ψ) est la plus grande date jusqu'à laquelle Ψ soit certaine. Il suit immédiatement que Cert(p) vaut 0 pour toute proposition p. Maintenant examinons le cas de la formule F[a,b] Φ, c'est-à-dire déterminons la valeur de Cert(F[a b] Φ). Par hypothèse l.t - Cert(Φ) donne la plus grande date de certitude pour Φ. D'après ce que nous avons vu, F[a>b] Φ n'est donc certaine que jusqu'à (l.t - Cert(Φ)) - b. Or cette date est censée être l.t - Cert(F[a b] Φ). Donc nous avons : l.t - Cert(F[a,b] Φ) = l.t - Cert(Φ) - b « - Cert(F[a,bi Φ) = - Cert(Φ) - b <=> Cert(F[a,b] Φ) = Cert(Φ) + bTo formalize this idea we define the function Cert which takes as argument a formula Ψ and returns a real number so that if lt is the date of the last snapshot then lt - Cert (Ψ) is the largest date up to which Ψ be certain. It immediately follows that Cert (p) is 0 for any proposition p. Now let us examine the case of the formula F [a, b] Φ, that is to say determine the value of Cert (F [ab] Φ). By hypothesis lt - Cert (Φ) gives the greatest date of certainty for Φ. From what we have seen, F [a> b ] Φ is only certain until (lt - Cert (Φ)) - b. This date is supposed to be lt - Cert (F [ab ] Φ). So we have: lt - Cert (F [a , b] Φ) = lt - Cert (Φ) - b " - Cert (F [a , bi Φ) = - Cert (Φ) - b <=> Cert ( F [a , b ] Φ) = Cert (Φ) + b
Finalement : Cert(F[a b] Φ) = Cert(Φ) + b. La fonction de certitude Cert d'une formule se définit de façon inductive en partant des propositions pour lesquelles la fonction Cert est connue (comme nous l'avons vu elle vaut O), pour aller ensuite vers les formules plus complexes. Au final cette fonction prend en argument une formule et renvoi un nombre réel (ce nombre ne dépend que de la formule et peut donc être calculé statiquement). Comme il a été dit cette fonction est définie de telle sorte que [sup(T_origine, T_origineFinally: Cert (F [ab ] Φ) = Cert (Φ) + b. The certainty function Cert of a formula is defined inductively from the propositions for which the function Cert is known (as we have seen it is worth O), then to the more complex formulas. In the end, this function takes a formula and returns a real number (this number depends only on the formula and can therefore be calculated statically). As it has been said this function is defined so that [sup (Origin, Origin)
- Cert(Φ)), t - Cert(Φ)] soit l'intervalle de certitude de Φ, lorsque l.t est la date portée par le dernier instantané observé I. En généralisant à tous les opérateurs nous obtenons la définition inductive suivante de la fonction Cert:- Cert (Φ)), t - Cert (Φ)] is the certainty interval of Φ, when lt is the date carried by the last observed snapshot I. By generalizing to all operators we obtain the following inductive definition of the Cert function:
• Cert(Φ) = 0 si Φ est une proposition• Cert (Φ) = 0 if Φ is a proposition
• Cert(^Φ) = Cert(Φ)• Cert (^ Φ) = Cert (Φ)
• Cert(Φi Λ Φ2) = sup (Cert(Φi), Cert(Φ2))• Cert (Φi Λ Φ 2 ) = sup (Cert (Φi), Cert (Φ 2 ))
• Cert(Φ! v Φ2) = sup (Cert(Φi), Cert(Φ2)) • Cert(F[a,b] Φ) = Cert(Φ) + b• Cert (Φ! V Φ 2 ) = sup (Cert (Φi), Cert (Φ 2 )) • Cert (F [a , b] Φ) = Cert (Φ) + b
• Cert(Φi U[a,b]Φ2) = sup (Cert(Φi), Cert(Φ2)) + b• Cert (Φi U [a , b] Φ 2 ) = sup (Cert (Φi), Cert (Φ 2 )) + b
• Cert(P[a,b] Φ) = Cert(Φ) - a• Cert (P [a , b] Φ) = Cert (Φ) - a
• Cert (P[a,>] Φ) = Cert(Φ) - a• Cert (P [a , > ] Φ) = Cert (Φ) - a
• Cert(Φ1 S[a,b] Φ2 ) = sup (Cert(Φi), Cert(Φ2) - a) • Cert(Φ1 S[a,>] Φ2 ) = sup (Cert(Φi), Cert(Φ2) - a)• Cert (Φ 1 S [a , b] Φ 2 ) = sup (Cert (Φi), Cert (Φ 2 ) - a) • Cert (Φ 1 S [a , > ] Φ 2 ) = sup (Cert (Φi ), Cert (Φ 2 ) - a)
Expliquons la certitude de (Φi U[a,b] Φ2), avec a > 0, qui n'est pas triviale. On se reportera à la figure 6A. Cette figure illustre la façon dont un intervalle de Φ2 et un intervalle de Φ1 donnent lieu à un intervalle pour Φ-, U[a!b] Φ2 . Sur la figure 6A, nous avons besoin que J1] n i2 soit certain. Or la certitude d'une intersection est donnée par la plus petite date des certitudes attachées aux intervalles qui interviennent. Or nous ne sommes certains de ii que jusqu'à l.tLet's explain the certainty of (Φi U [a , b] Φ2), with a> 0, which is not trivial. Refer to Figure 6A. This figure illustrates how an interval of Φ 2 and an interval of Φ1 give rise to an interval for Φ-, U [a! b] Φ 2 . In Figure 6A, we need J 1 ] or 2 to be certain. But the certainty of an intersection is given by the smallest date of the certainties attached to the intervening intervals. Now we are certain of only up to
- Cert(Φi), de i2 que jusqu'à l.t - Cert(Φ2). La plus petite des deux est donc donnée par l.t - sup(Cert(Φi), Cert(Φ2)). Ensuite le calcul de (h] n i2) Θ [-b, - a] ne peut être certain (revoir les arguments avancés pour F[a,b]) que jusqu'à (l.t - sup(Cert(Φi), Cert(Φ2))) - b soit l.t - (sup(Cert(Φi), Cert(Φ2)) + b). Et finalement h] n j que jusqu'à : l.t - sup ( Cert(Φ1), (sup(Cert(Φ1), Cert(Φ2)) + b) ) Montrons que cela est équivalent à sup(Cert(Φi), Cert(Φ2)) + b qui est la valeur de Cert(Φi U[a,b]Φ2) dans la définition. Deux cas : • Cas Cert(Φi) > Cert(Φ2). o Alors d'une part nous avons :- Cert (Φi), from i 2 until lt - Cert (Φ 2 ). The smaller of the two is therefore given by lt - sup (Cert (Φi), Cert (Φ 2 )). Then the computation of (h] nor 2 ) Θ [-b, - a] can not be certain (to review the arguments advanced for F [a , b ]) until (lt - sup (Cert (Φi), Cert (Φ 2 ))) - b is lt - (sup (Cert (Φi), Cert (Φ 2 )) + b). And finally h] nj only up to: lt - sup (Cert (Φ 1 ), (sup (Cert (Φ 1 ), Cert (Φ 2 )) + b)) Let's show that this is equivalent to sup (Cert (Φi ), Cert (Φ 2 )) + b which is the value of Cert (Φi U [a , b] Φ 2 ) in the definition. Two cases: • Cert case (Φi)> Cert (Φ 2 ). o So on the one hand we have:
- l.t - sup ( Cert(Φ1), (sup(Cert(Φi), Cert(Φ2)) + b) )- lt - sup (Cert (Φ 1 ), (sup (Cert (Φi), Cert (Φ 2 )) + b))
- = l.t - sup ( Cert(Φi), Cert(Φi) + b) ) o Et d'autre par- = lt - sup (Cert (Φi), Cert (Φi) + b)) o And by
- sup(Cert(Φ1), Cert(Φ2)) + b o Donc l'égalité recherchée • Cas Cert(Φi) < Cert(Φ2). o Alors d'une part:- sup (Cert (Φ 1 ), Cert (Φ 2 )) + b o So the equality sought • Case Cert (Φi) <Cert (Φ 2 ). o Then on the one hand:
- l.t - sup ( Cert(Φi), (sup(Cert(Φi), Cert(Φ2)) + b) )- lt - sup (Cert (Φi), (sup (Cert (Φi), Cert (Φ 2 )) + b))
- = l.t - SUp ( CeIt^1), (Cert(Φ2) + b) )- = lt - SUp (CeIt ^ 1 ), (Cert (Φ 2 ) + b))
- = Cert(Φ2) + b o Et d'autre part- = Cert (Φ 2 ) + bo And secondly
- sup(Cert(Φ1), Cert(Φ2)) + b- sup (Cert (Φ 1 ), Cert (Φ 2 )) + b
- Cert(Φ2) + b o Donc l'égalité recherchée d'où Cert(Φ1 U[a,b] Φ2) = sup (Ceιt(Φi), Cert(Φ2)) + b. Pour Cert(Φ1 S[a,b] Φ2) la justification est illustrée par la figure 7B où l'on montre que sup(Cert(Φ1), Cert(Φ2) -a) convient. Pour les autres formules, la fonction Cert s'explique par des raisonnements analogues.- Cert (Φ 2 ) + bo Hence the sought equality from where Cert (Φ 1 U [a , b ] Φ2) = sup (Ceιt (Φi), Cert (Φ 2 )) + b. For Cert (Φ 1 S [a , b] Φ 2 ) the justification is illustrated in Figure 7B where it is shown that sup (Cert (Φ 1 ), Cert (Φ 2 ) -a) is suitable. For the other formulas, the Cert function is explained by analogous reasoning.
En pratique, à chaque sous-formule Φ de la formule principale, nous associerons une variable de type réel notée Φ.rel_œrt , destinée à stocker la valeur de Cert(Φ). Un mode de calcul possible de Φ.rel_cert est le suivant, illustré par l'algorithme récursif calcul_rel_cert:In practice, for each sub-formula Φ of the main formula, we will associate a variable of real type denoted Φ.rel_œrt, intended to store the value of Cert (Φ). A possible calculation mode of Φ.rel_cert is the following, illustrated by the recursive algorithm calcul_rel_cert:
calcul_rel_cert (Φ) C1 - Si Φ est : C1.1 - une proposition p alors Φ.rel_cert = 0calcul_rel_cert (Φ) C1 - If Φ is: C1.1 - a proposition p then Φ.rel_cert = 0
C1.2 - -Φι alors Φ.rel_cert = calcul_rel_cert (Φi)C1.2 - -Φι then Φ.rel_cert = calcul_rel_cert (Φi)
C1.3 - Φi Λ Φ2 alors Φ.rel_cert = sup(calcul_rel_cert(Φi), calcul_rel_cert(Φ2) ) C1.4 - Φi v Φ2 alors Φ.rel_cert = sup (calcul_rel_cert(Φi), calcul_rel_cert(Φ2))C1.3 - Φi Λ Φ 2 then Φ.rel_cert = sup (calculation_rel_cert (Φi), calculation_rel_cert (Φ 2 )) C1.4 - Φi v Φ 2 then Φ.rel_cert = sup (calcul_rel_cert (Φi), calculation_rel_cert (Φ 2 ))
C1.5 - F[a,b]Φ alors Φ.rel_cert = calcul_rel_cert(Φ) + bC1.5 - F [ a , b] Φ then Φ.rel_cert = calcul_rel_cert (Φ) + b
C1.6 - Φ-i U[a,b]Φ2 alors Φ.rel_cert = sup (calcul_rel_cert(Φi), calcul_rel_cert(Φ2) ) + b C1.7 - P[a,b] Φ alors Φ.rel_cert = calcul_rel_cert(Φ) - aC1.6 - Φ-i U [a , b] Φ2 then Φ.rel_cert = sup (calculation_rel_cert (Φi), calculation_rel_cert (Φ 2 )) + b C1.7 - P [ a , b] Φ then Φ.rel_cert = calculation_rel_cert (Φ) - a
C1.8 - P[a,>] Φ alors Φ.rel_cert = calcul_rel_cert(Φ) - aC1.8 - P [ a , > ] Φ then Φ.rel_cert = calculation_rel_cert (Φ) - a
C1.9 - Φi S[a,b] Φ2 alors Φ.rel_cert = sup (calcul_rel_cert(Φi), calcul_rel_cert(Φ2) - a)C1.9 - Φi S [a , b] Φ2 then Φ.rel_cert = sup (calculation_rel_cert (Φi), calculation_rel_cert (Φ 2 ) - a)
C1.10 - Φi S[a,>] Φ2 alors Φ.rel_cert = sup (calcul_rel_cert(Φ-ι), calcul_rel_cert(Φ2) - a)C1.10 - Φi S [a , > ] Φ 2 then Φ.rel_cert = sup (calculation_rel_cert (Φ-ι), calculation_rel_cert (Φ 2 ) - a)
C2 - FINC2 - END
Pour le procédé, chaque sous-formule Φ de la principale (principale comprise) se voit attribuée une variable réelle nommée Φ.abs_cert destinée à stocker la date de certitude absolue de Φ. Conformément à ce nous avons dit sur la date de certitude initiale, l'initialisation dépend d'une option. Pour Φ cette variable Φ.abs_cert sera initialisée soit à (option 1 ) T_origine -For the process, each sub-formula Φ of the principal (including principal) is assigned a real variable named Φ.abs_cert intended to store the absolute certainty date of Φ. In accordance with what we said on the initial certainty date, the initialization depends on an option. For Φ this variable Φ.abs_cert will be initialized either to (option 1) T_origine -
Φ.rel_cert soit à (option 2) sup(T_origine, T_origine - Φ.rel_cert). La certitude initiale s'interprète comme la première date à partir de laquelle la validité d'une formule sera définie. Quelques exemples :Φ.rel_cert to (option 2) sup (Original_Type, Original_Type - Φ.rel_cert). Initial certainty is interpreted as the first date from which the validity of a formula will be defined. Some examples :
• Considérons -i(P[3,5] p) avec T_origine = 0. Nous avons (~i(P[3,5] p)).rel_cert = (P^51 p).rel_cert = p.rel_cert - 3 = 0 - 3 = -3. Donc (-i(P[3,5i p)).abs_cert sera initialisée par (option 2) sup(0, 0 - (- 3)) = sup(0, 3) = 3 ou bien par (option 1 ) 0 - (- 3) = 3. Autrement dit, quelle que soit l'option choisie sur la certitude initiale, pour cette formule -i(P[3,5j p) et pour un processus commençant à la date 0, on ne commencera à faire des calculs de validité qu'à partir de la date 3. • Considérons F[3,5] p avec T_origine = 0. (F^5] p).abs_cert sera initialisée selon l'option 2 par sup(0,0 - 5) = sup(0,-5) = 0 ou par, selon l'option 1 , 0 - 5 = -5. Autrement dit, pour cette formule et pour un processus commençant à la date 0, selon l'option 2 on ne commencera à faire des calculs de validité qu'à partir de la date 0, ou bien, selon l'option 1 , à partir de la date -5.• Consider -i (P [3,5] p) with T_origine = 0. We have ( ~ i (P [3,5] p)). Rel_cert = (P ^ 51 p) .rel_cert = p.rel_cert - 3 = 0 - 3 = -3. So (-i (P [3.5i p)). Abs_cert will be initialized by (option 2) sup (0, 0 - (- 3)) = sup (0, 3) = 3 or by (option 1) 0 - (- 3) = 3. In other words, what regardless of the option chosen for the initial certainty, for this formula -i (P [3.5j p) and for a process starting on date 0, we will start making validity calculations only from the date 3. • Consider F [3 , 5 ] p with T_origine = 0. (F ^ 5 ] p) .abs_cert will be initialized according to option 2 by sup (0,0 - 5) = sup (0, -5) = 0 or by, depending on option 1, 0 - 5 = -5. In other words, for this formula and for a process starting on date 0, according to option 2 we will start to make validity calculations only from date 0, or, depending on option 1, from from the date -5.
Principe de continuationPrinciple of continuation
Du principe de certitude précédemment développé, découle le principe de continuation qui gouverne les algorithmes détaillés ci-avant de calcul des listes de validité. Supposons que I soit le dernier instantané, la liste de validité d'une formule Φ a donc été établie jusqu'à l.t - Φ.rel_cert (sa zone de certitude étant [sup(T_origine, T_origine - Φ.rel_cert), l.t - Φ.rel_cert]). Par définition ceci assure que la liste de validité de Φ sur [sup(T_origine, T_origine - Φ.rel_cert), l.t - Φ.rel_cert] ne peut être modifiée par la suite. Cette portion est donc un résultat acquis qui ne doit plus être recalculé par la suite. Si donc arrive un nouvel instantané I' après l'instantané I le calcul des intervalles pour Φ ne doit porter que sur la fenêtre dite de continuation :From the principle of certainty previously developed, follows the principle of continuation which governs the algorithms detailed above for calculating the validity lists. Suppose that I is the last snapshot, then the validity list of a formula Φ has been established up to t-Φ.rel_cert (its certainty zone being [sup (Origin, Origin - Φ.rel_cert), lt - Φ .rel_cert]). By definition this ensures that the validity list of Φ on [sup (Original_Type, Original_Type - Φ.rel_cert), l.t - Φ.rel_cert] can not be modified later. This portion is therefore an acquired result that must not be recalculated thereafter. If, therefore, a new snapshot I 'arrives after snapshot I, the calculation of the intervals for Φ must relate only to the so-called continuation window:
] I.t - Φ.rel_cert, I'.t - Φ.rel_cert]] I.t - Φ.rel_cert, I'.t - Φ.rel_cert]
II s'agit donc de prolonger les résultats acquis sur [sup(T_origine, T_origine - Φ.rel_cert), I.t-Φ.rel_cert] par un calcul sur ] l.t - Φ.rel_cert, l'.t - Φ.rel_cert] de sorte que in fine le résultat est obtenu sur [sup(T_origine, T_origine - Φ.rel_cert), l'.t - Φ.rel_cert] qui est bien l'intervalle de certitude de Φ lorsque I' est le dernier instantané. C'est ce qui est désigné dans ce contexte, par principe de continuation. Sur le plan algorithmique, à chaque formule Φ sont associées deux variables :It is thus a question of prolonging the results acquired on [sup (Origin, Origin - Φ.rel_cert), It-Φ.rel_cert] by a calculation on] lt - Φ.rel_cert, the .t - Φ.rel_cert] of so that in fine the result is obtained on [sup (Origin, T_origine - Φ.rel_cert), the .t - Φ.rel_cert] which is the certainty interval of Φ when I 'is the last snapshot. This is what is designated in this context, by principle of continuation. On the algorithmic level, for each formula Φ are associated two variables:
• la variable Φ.abs_cert qui est initialisée à o Option 1 : (T_origine - Φ.rel_cert) o Option 2 : sup(T_origine, T_origine - Φ.rel_cert)• the variable Φ.abs_cert which is initialized to o Option 1: (Origin_type - Φ.rel_cert) o Option 2: sup (Origin_Type, Origin_Type - Φ.rel_cert)
• une variable de type intervalle, initialisée à vide. Appelons cette variable Φ.w pour une formule Φ (w pour « window » soit fenêtre en français). C'est cette seconde variable qui représente la fenêtre de continuation de Φ. La fenêtre de continuation Φ.w de Φ se calcul ainsi (on suppose l'initialisation Φ.abs_cert effectuée comme décrit ci-dessus):• an interval variable, initialized empty. Call this variable Φ.w for a formula Φ (w for "window" or window in French). It is this second variable which represents the continuation window of Φ. The continuation window Φ.w of Φ is thus calculated (it is assumed that the initialization Φ.abs_cert is carried out as described above):
• A chaque rafraîchissement de l'instantané I faire :• With each refresh of snapshot I:
• Si Φ.w est vide : o Si (l.t - Φ.rel_cert) > Φ.abs_cert alors Φ.w devient : [Φ.abs_cert, l.t - Φ.rel_cert] puis affecter à Φ.abs_cert la valeur (l.t - Φ.rel_cert) o Si (l.t - Φ.rel_cert) < Φ.abs_cert alors Φ.w reste l'intervalle vide• If Φ.w is empty: o If (lt - Φ.rel_cert)> Φ.abs_cert then Φ.w becomes: [Φ.abs_cert, lt - Φ.rel_cert] then set Φ.abs_cert to the value (lt - Φ .rel_cert) o If (lt - Φ.rel_cert) <Φ.abs_cert then Φ.w remains the empty interval
• Si Φ.w n'est pas vide alors : o Φ.w devient :] Φ.abs_cert, l.t - Φ.rel_cert] o Affecter à Φ.abs_cert la valeur (l.t - Φ.rel_cert)• If Φ.w is not empty then: o Φ.w becomes:] Φ.abs_cert, l.t - Φ.rel_cert] o Assign to Φ.abs_cert the value (l.t - Φ.rel_cert)
Afin de rendre optimal le calcul de la liste de validité d'une formule Φ sur sa fenêtre de continuation, il s'agit de déterminer, dans les sous-formules de Φ, quels intervalles sont susceptibles de générer de nouveaux intervalles dans cette fenêtre de continuation de Φ. C'est l'objet de la notion de zone d'influence que de cibler seulement ces intervalles.In order to optimize the computation of the validity list of a formula Φ on its continuation window, it is necessary to determine, in the sub-formulas of Φ, which intervals are likely to generate new intervals in this window of continuation of Φ. It is the purpose of the concept of zone of influence to target only these intervals.
Les étapes de calcul données pour la formule principale Φ restent les mêmes lorsque l'on considère les sous-formules ψ d'une formule et sa variable associée ψ.abs_cert. Notion de zone d'influenceThe calculation steps given for the main formula Φ remain the same when one considers the sub-formulas ψ of a formula and its associated variable ψ.abs_cert. Notion of zone of influence
Cette notion intervient dans l'objet de l'invention, à deux titres :This notion intervenes in the object of the invention, in two ways:
• Elle définit, pour une formule Φ, quels intervalles des sous-formules de Φ ont une influence sur la fenêtre de continuation Φ.w de Φ définie précédemment,• It defines, for a formula Φ, which intervals of the sub-formulas of Φ have an influence on the continuation window Φ.w of Φ defined previously,
• Réciproquement, elle définit, pour une formule Φ, quels intervalles des sous-formules de Φ n'ont plus d'influence que sur la zone déjà certaine de Φ• Reciprocally, it defines, for a formula Φ, which intervals of the sub-formulas of Φ have more influence only on the already certain zone of Φ
• Ceci permet donc : o D'optimiser le calcul en ligne des intervalles de validité, en ne ciblant que les intervalles qui influent sur la fenêtre de continuation. o De manière duale, ceci permettra de définir les intervalles qui ne peuvent plus avoir d'influence sur les fenêtres de continuation, et donc d'éliminer ces intervalles.• This allows: o To optimize the online calculation of validity intervals, targeting only the intervals that affect the continuation window. o In a dual way, this will define the intervals that can no longer influence the continuation windows, and thus eliminate these intervals.
Là encore l'opérateur F[a,b] est particulièrement intuitif pour présenter ce principe avant sa généralisation à tout opérateur. La figure 8A illustre la zone d'influence pour F[a,b]Φ- Dans cette figure 8A, le dernier instantané est I' tandis que le précédent est I. La fenêtre de continuation (F[a,b] Φ).w de F[a,b] Φ est donc ] l.t - (F[a!b] Φ).rel_cert, l'.t - (F[a,b] Φ).rel_cert ].Here again the operator F [a , b] is particularly intuitive to present this principle before its generalization to any operator. FIG. 8A illustrates the zone of influence for F [a , b] Φ. In this FIG. 8A, the last snapshot is I 'while the precedent is I. The continuation window (F [a , b] Φ). w of F [a , b] Φ is therefore] lt - (F [a! b] Φ) .rel_cert, the .t - (F [a , b ] Φ) .rel_cert].
Les premières dates sur la valeur de Φ qui influent sur la fenêtre de continuation de F[aib]Φ sont les dates supérieures à l.t - (F[a!b] Φ).rel_cert + a tandis que la dernière qui influe sur cette fenêtre de continuation est l'.t - (F[aib] Φ).rel_cert + b. Autrement dit il s'agit de l'intervalle F[aib].w Θ [a,b]. Ceci peut s'exprimer et se généraliser sous la forme d'une fonction qui admet en arguments deux formules et qui renvoie un intervalle. Si Ψ est une formule sous-formule directe de Φ, ZI(Ψ,Φ) est la plage temporelle de la liste de validité de Ψ à considérer dans le calcul de la continuation de Φ. Par plage temporelle nous entendons tout simplement un intervalle. Finalement nous dirons qu'un intervalle de la liste de validité de Ψ a une influence sur la fenêtre de continuation de Φ si et seulement si il a une intersection non vide avec ZI(Ψ,Φ). Conformément à notre analyse pour le F[a b]Φ, nous aurions donc : ZI(Φ, F[a,t>] Φ) = (F[a,t>] Φ)-w Θ [a,b]. Définition de la fonction Zl : The first dates on the value of Φ which influence the continuation window of F [aib ] Φ are the dates superior to lt - (F [a! B] Φ) .rel_cert + a while the last one which influences this window of continuation is the .t - (F [a ib ] Φ) .rel_cert + b. In other words, it is the interval F [aib ] .w Θ [a, b]. This can be expressed and generalized as a function that accepts two formulas as arguments and returns an interval. If Ψ is a direct subformula formula of Φ, ZI (Ψ, Φ) is the time range of the validity list of Ψ to consider in calculating the continuation of Φ. By time range we simply mean an interval. Finally we say that an interval of the validity list of Ψ has an influence on the continuation window of Φ if and only if it has a non-empty intersection with ZI (Ψ, Φ). According to our analysis for F [ab] Φ, we would thus have: ZI (Φ, F [a , t>] Φ) = (F [a , t>] Φ) -w Θ [a, b]. Definition of the Zl function:
• ZI(Φi , (Φi Λ Φ2 )) = ZI(Φ2 , (Φi Λ Φ2 )) = (Φi Λ Φ2 ).W• ZI (Φi, (Φi Λ Φ 2 )) = ZI (Φ 2 , (Φi Λ Φ 2 )) = (Φi Λ Φ 2 ) .W
• ZI(Φi , (Φi v Φ2 )) = Zl (Φ2 , (Φi v Φ2 )) = (Φi v Φ2 ).w• ZI (Φi, (Φi v Φ 2 )) = Zl (Φ 2 , (Φi v Φ 2 )) = (Φi v Φ 2 ) .w
• Zl (Φ, F[a,b] Φ) = (Fta,b] Φ).w Θ [a,b] • Zl (Φ, P[a,b] Φ) = (P[a,b] Φ).w Θ [-b,-a]• Zl (Φ, F [a , b ] Φ) = (F ta , b] Φ) .w Θ [a, b] • Zl (Φ, P [a , b] Φ) = (P [a , b ] Φ) .w Θ [-b, -a]
• Zl (Φ, P[a,>]Φ) = (P[a,>] Φ).w Θ [-a, -a]• Zl (Φ, P [a , > ] Φ) = (P [a , > ] Φ) .w Θ [-a, -a]
• ZI(Φ1 ;1 U[a,b] Φ2)) = (Φ1 U[a,b] Φ2).w Θ [a,b]• ZI (Φ 1;1 U [a, b] Φ 2 )) = (Φ 1 U [a, b] Φ 2 ) .w Θ [a, b]
• ZI(Φ2j (Φi U[a,b] Φ2)) = (Φ1 U[a,b] Φ2).w Θ [a,b]• ZI (Φ 2j (Φi U [a, b] Φ 2 )) = (Φ 1 U [a, b] Φ 2 ) .w Θ [a, b]
• ZI(Φ1 ;1 S[a,b] Φ2 )) = (Φ1 S[a,b] Φ2 ) Θ [-b,-a] • ZI(Φ2, (Φi S[a,b] Φ2 )) = (Φ1 S[a,b] Φ2 ) Θ [-b,-a]• ZI (Φ 1;1 S [a, b] Φ 2 )) = (Φ 1 S [a, b] Φ 2 ) Θ [-b, -a] • ZI (Φ 2 , (Φi S [ a, b] Φ 2 )) = (Φ 1 S [a, b] Φ 2 ) Θ [-b, -a]
• ZI(Φ1 s (Φi S[a,>] Φ2 )) = ((Φi S[a,>i Φ2 ).w Θ [-a, -a])• ZI (Φ 1 s (Φi S [a , > ] Φ 2 )) = ((Φi S [a , > i Φ 2 ) .w Θ [-a, -a])
• ZI(Φ2, (Φ, S[a,>] Φ2 )) = ((Φi S[a,>] Φ2 ).w Θ [-a, -a])• ZI (Φ 2 , (Φ, S [a , > ] Φ 2 )) = ((Φi S [a , > ] Φ 2 ) .w Θ [-a, -a])
Calcul en ligne, par continuation, des listes de validitéOn-line calculation, by continuation, of validity lists
Le principe de la continuation en ligne est le suivant. Pour chaque formule le procédé ne produit de nouveaux intervalles que sur sa fenêtre propre de continuation. Ces nouveaux intervalles sont calculés à partir des listes de validité des sous-formules, mais en ne considérant que les intervalles dont l'intersection est non vide avec la zone d'influence calculée au moyen de la fonction Zl. Ces restrictions étant faites, le calcul proprement dit est alors réalisé selon les principes du calcul hors ligne (ainsi que décrit dans la section Correspondance entre opérateurs logiques et opérations sur les listes de validité). Pour synthétiser : le calcul en ligne est une succession de calculs hors ligne locaux restreints pour chaque formule à sa fenêtre de continuation propre.The principle of continuation online is as follows. For each formula the process produces new intervals only on its own continuation window. These new intervals are calculated from the validity lists of the sub-formulas, but considering only the intervals whose intersection is non-empty with the zone of influence calculated by means of the function Zl. These restrictions being made, the actual calculation is then performed according to the principles of the offline calculation (as described in the section Correspondence between logical operators and operations on the validity lists). To synthesize: the online calculation is a succession of Restricted local offline calculations for each formula at its own continuation window.
Remarque : pour que ce calcul soit correct il est nécessaire que, pour toute formule, quelle que soit la zone d'influence qui lui est attribuée, celle-ci soit incluse dans sa zone de certitude propre, comme cela est illustré figure 8A (la zone d'influence pour Φ est bien dans sa zone de certitude). Or cela est toujours le cas. Ceci se démontre à partir des définitions des fonctions Cert et Zl.Note: for this calculation to be correct it is necessary that, for any formula, whatever the zone of influence which is attributed to it, it is included in its own certainty zone, as illustrated in FIG. 8A (FIG. zone of influence for Φ is in its zone of certainty). This is always the case. This is demonstrated from the definitions of the Cert and Zl functions.
Le calcul par continuation peut là encore être facilement illustré pour F[a,t>] Φ- II s'agit de ne considérer que les intervalles de la liste de validité de Φ situés dans la zone d'influence calculée pour F[a,b]Φ- Etant donné que ces intervalles ont plus de chance d'être à la fin de la liste de validité de Φ l'algorithme procède par marche arrière. Il remonte la liste de validité de Φ à partir de la fin jusqu'à déterminer le dernier et le premier intervalle ayant une intersection non vide avec la zone d'influence. Ceci définit une sous liste de la liste de validité de Φ qui est exploitée selon l'algorithme hors ligne décrit plus haut pour le calcul de nouveaux intervalles de la liste de validité de F[a,b] Φ- Pour chaque production nous calculons son intersection avec la fenêtre de continuation de F[a,b] Φ- Si elle n'est pas vide elle est adjointe à gauche dans une liste temporaire. Puis quand tous les intervalles de la zone d'influence ont été parcourus, la liste temporaire est raccordée à la droite de F[a,b]Φ-LV (Voir l'Annexe 1 pour un calcul détaillé de F[a,t>] Φ). Le principe de continuation présente néanmoins des particularités pour les opérateurs P[a,>] et S[a,>j. Pour une formule de type P[aj>] Φ il suffit que Φ soit vraie une seule fois à une date t pour que P[ai>] Φ soit vraie au-delà de t+a. Le procédé peut donc être simplifié. Dès que Φ est vraie, c'est-à-dire Φ.LV possède un premier i, on créé l'intervalle (i.l, i.lb + a, ((P[a,>] Φ).w).ub, ((P[a,>j Φ).w).u) que l'on ajoute à la liste de validité vide de P[a,>] Φ ; ensuite cet intervalle est systématiquement étendue sur sa borne supérieure (qui devient donc l.t - (P[a,>j Φ).rel_cert à chaque rafraichissement), sans se préoccuper de la valeur de Φ. Pour S[a,>], d'après la sémantique de cet opérateur, le procédé doit examiner la valeur de vérité de Φ2 arbitrairement loin dans le passé et donc aussi celle de Φ-i . Mais cette approche obligerait à conserver en mémoire tous les intervalles de Φ2 et de Φ-i. De sorte que la mémoire requise par le moniteur pourrait croitre indéfiniment. Or un des objectifs de la présente invention est que la mémoire requise par le moniteur soit bornée. En réalité l'information que Φ2 a été vraie est conservée dans la liste de validité de Φi S[a,>] Φ2. En effet, considérant le calcul de Φi S[a,>] Φ2 sur sa fenêtre de continuation, si le dernier intervalle de la liste de validité de Φ1 S[a,>] Φ2 est tel que sa borne supérieure est (Φ1 S[a,>] Φ2).w.ub alors cela signifie qu'il a existé dans la ou les fenêtre(s) précédente(s) de continuation, un intervalle i de Φ1 ayant intersecté un intervalle de Φ2 dans le passé et qui se prolongeait au moins jusqu'à (Φ1 S[a,>] Φ2).w.ub. Si lors du calcul de Φ1 S[a,>] Φ2 le procédé trouve dans la liste de validité de Φ1 un intervalle qui contient (Φ1 S[a,>] Φ2).w.ub, cela signifie qu'il prolonge i sans interruption, et que donc il prolonge la validité de Φ1 S[a,>] Φ2- La mémoire que Φ2 a été vraie est donc contenue dans le dernier intervalle de la liste de validité de Φi S[a,>] Φ2. C'est pourquoi nous serons en mesure d'éliminer les intervalles de Φ1 et de maintenir une mémoire bornée. Ceci sera vu plus loin avec la notion de date d'inutilité.The continuation calculation can again easily be illustrated for F [a , t > ] Φ- This is to consider only the intervals of the validity list of Φ located in the area of influence calculated for F [a , b] Φ- Since these intervals are more likely to be at the end of the validity list of Φ the algorithm goes backwards. It goes up the validity list of Φ from the end until it determines the last and the first interval having a nonempty intersection with the zone of influence. This defines a sub-list of the validity list of Φ which is exploited according to the offline algorithm described above for the calculation of new intervals of the validity list of F [a, b] Φ- For each production we calculate its intersection with the continuation window of F [a , b] Φ- If it is not empty it is added to the left in a temporary list. Then when all the intervals of the zone of influence have been traveled, the temporary list is connected to the right of F [a , b] Φ-LV (See Annex 1 for a detailed calculation of F [a, t > ] Φ). The continuation principle nevertheless has peculiarities for the operators P [ a , > ] and S [ a , > j. For a formula of type P [ aj> ] Φ it is enough for Φ to be true only once at a date t so that P [ai>] Φ is true beyond t + a. The process can be simplified. As soon as Φ is true, that is, Φ.LV has a first i, we create the interval (il, i.lb + a, ((P [a , > ] Φ) .w) .ub , ((P [a, > j Φ) .w) .u) which is added to the empty validity list of P [a,>] Φ; then this interval is systematically extended to its upper bound (which becomes so lt - (P [ a, > j Φ) .rel_cert at each refresh), without worrying about the value of Φ. For S [a,>] , according to the semantics of this operator, the process must examine the truth value of Φ 2 arbitrarily far in the past and thus also that of Φ-i. But this approach would require keeping in memory all the intervals of Φ 2 and Φ-i. So the memory required by the monitor could grow indefinitely. One of the objectives of the present invention is that the memory required by the monitor is limited. In fact the information that Φ 2 has been true is kept in the validity list of Φi S [a , > ] Φ 2 . Indeed, considering the computation of Φi S [a , >] Φ 2 on its continuation window, if the last interval of the validity list of Φ 1 S [a, > ] Φ2 is such that its upper bound is (Φ1 S [ a , >] Φ 2 ) .w.ub then it means that it existed in the previous window (s) of continuation, an interval i of Φ 1 having intersected an interval of Φ 2 in the past and which lasted at least until (Φ 1 S [a , > ] Φ 2 ) .w.ub. If when calculating Φ1 S [a , > ] Φ2 the method finds in the validity list of Φ 1 an interval which contains (Φ 1 S [ a , >] Φ 2 ) .w.ub, it means that it prolongs i without interruption, and therefore extends the validity of Φ 1 S [a,>] Φ 2 - The memory that Φ 2 has been true is therefore contained in the last interval of the validity list of Φi S [a , > ] Φ 2 . That is why we will be able to eliminate the intervals of Φ 1 and maintain bounded memory. This will be seen later with the notion of useless date.
Pour synthétiser ce qui a été vu précédemment :To synthesize what has been seen previously:
• Grâce à la fonction Cert nous sommes en mesure de délimiter, pour chaque formule : o une plage temporelle où la validité est certaine o une plage temporelle jouxtant la plage certaine, appelée fenêtre de continuation, qui limite la plage de calcul à effectuer chaque fois que l'instantané est rafraîchi • Grâce à la fontion Zl, nous sommes en mesure, quand nous faisons effectuons le calcul de la continuation, de limiter les intervalles à prendre en compte pour ce calcul.• Thanks to the Cert function we are able to delimit, for each formula: o a time range where the validity is certain o a time range adjoining the certain range, called the continuation window, which limits the range of computation to be performed each time that the snapshot is refreshed • Thanks to the Zl function, we are able, when we perform the calculation of the continuation, to limit the intervals to be taken into account for this calculation.
Zone d'influence et élimination des intervalles inutiles illustrés à la figure 8A, 8BZone of influence and elimination of unnecessary intervals illustrated in Figure 8A, 8B
II a été exposé ci-dessus comment calculer la liste de validité de la formule principale. Ce calcul repose sur le calcul préalable des listes de validité de toutes ses sous-formules. Ce calcul sur les sous-formules apparaît donc comme un moyen nécessaire au procédé mais non comme une fin en soi puisque seule la liste de validité de la formule principale est déterminante pour le procédé (car c'est la non vacuité de cette liste qui témoigne de l'occurrence du comportement redouté). Si Φ est la formule principale, que l.t est la date portée par le dernier instantané I, nous savons que sur [sup(T_origine, T_origine - Φ.rel_cert), l.t - Φ.rel_cert] le calcul de la liste de validité de Φ est certain c'est-à-dire ne peut plus être modifié quoiqu'il advienne. Ainsi les intervalles des sous-formules qui ne peuvent impacter, au niveau de la formule principale, que la zone [sup(T_origine, T_origine - Φ.rel_cert), l.t - Φ.rel_cert] ne peuvent plus apporter d'information nouvelle déterminante. Ainsi ils sont inutiles. Il s'agit donc de les éliminer de la mémoire. Pour cela il faut être capable de déterminer, pour chaque sous- formule, en deçà de quelle date les intervalles peuvent être éliminés. Pour la formule principale Φ, cette date d'inutilité absolue, que nous appelerons Φ.abs_di, est donc : l.t - Φ.rel_cert. En effet, si des intervalles dans [sup(T_origine, T_origine - Φ.rel_cert), l.t - Φ.rel_cert] ont été obtenus par le procédé, l'hypothèse suivante peut être émise : ces intervalles ont été exploités (pour émettre un signal d'alarme ou un signal de régulation du système...). Ayant été exploités, ils ne sont plus utiles. Le cas de la conjonction est particulièrement intuitif (figure 8B). Dans cette figure considérons les intervalles h de Φi et \z de Φ2. D'après leurs positions ils ne peuvent contribuer à former des intervalles de validité pour (Φi Λ Φ2) que dans la zone déjà certaine de (Φi Λ Φ2). Désormais ils sont donc inutiles pour décider de la validité de (Φi Λ Φ2). Il en serait de même de tout autre intervalle antérieur à l.t - Cert(Φi Λ Φ2). Autrement dit, si z est la date d'inutilité absolue de (Φi Λ Φ2) alors la date d'inutilité absolue de Φi et de Φ2 est aussi z. Cependant, si (Φi Λ Φ2) n'est pas la formule principale, il se peut que Φi et Φ2 soient aussi sous-formules d'autres formules. Il se peut donc que d'autres formules leurs imposent une date d'inutilité antérieure à z. Ainsi, ce qui peut être affirmé à partir de (Φi A Φ2) et de sa date d'inutilité z est que les dates d'inutilité de Φi et de Φ2 doivent être inférieures ou égales à z. Une généralisation de ceci à toutes les formules du langage est explicitée ci- après.It has been explained above how to compute the validity list of the main formula. This calculation is based on the preliminary calculation of the validity lists of all its sub-formulas. This calculation on the sub-formulas thus appears as a necessary means to the process but not as an end in itself since only the validity list of the principal formula is decisive for the process (because it is the non-emptiness of this list which testifies the occurrence of the dreaded behavior). If Φ is the main formula, that lt is the date carried by the last snapshot I, we know that on [sup (Origin, Origin - Φ.rel_cert), lt - Φ.rel_cert] the computation of the validity list of Φ is certain, that is to say, can not be modified any more, whatever happens. Thus the intervals of the sub-formulas which can affect, at the level of the principal formula, only the zone [sup (original_T_, T_origine - Φ.rel_cert), lt - Φ.rel_cert] can not bring any new determining information. So they are useless. It is therefore to eliminate them from memory. For this it is necessary to be able to determine, for each sub-formula, below which date the intervals can be eliminated. For the principal formula Φ, this date of absolute uselessness, which we will call Φ.abs_di, is therefore: lt - Φ.rel_cert. In fact, if intervals in [sup (Origin, Origin_Tor - Φ.rel_cert), lt - Φ.rel_cert] have been obtained by the method, the following hypothesis can be emitted: these intervals have been exploited (to emit a signal alarm or system control signal ...). Having been exploited, they are no longer useful. The case of the conjunction is particularly intuitive (Figure 8B). In this figure consider the intervals h of Φi and \ z of Φ 2 . According to their positions they can not help to form validity intervals for (Φi Λ Φ 2 ) only in the already certain zone of (Φi Λ Φ 2 ). Henceforth they are useless for deciding the validity of (Φi Λ Φ 2 ). It would be the same with any other interval prior to lt - Cert (Φi Λ Φ 2 ). In other words, if z is the absolute useless date of (Φi Λ Φ 2 ) then the absolute useless date of Φi and Φ 2 is also z. However, if (Φi Λ Φ 2 ) is not the main formula, it is possible that Φi and Φ 2 are also sub-formulas of other formulas. It may be that other formulas impose on them a useless date prior to z. Thus, what can be asserted from (Φi A Φ 2 ) and its useless date z is that the useless dates of Φi and Φ 2 must be less than or equal to z. A generalization of this to all language formulas is explained below.
Pour généraliser, le procédé va prendre en compte les contraintes que doit satisfaire une fonction, que nous nommerons Dl, pour être une fonction d'inutilité avec dans l'idée qu'une fonction d'inutilité prend en argument une formule Φn supposée être une sous-formule d'une formule principale Φ, et renvoi un nombre réel DI(Φn), de telle sorte que la date absolue d'inutilité Φn.abs_di de Φn soit : Φ.abs_di + DI(Φn).To generalize, the process will take into account the constraints that a function, which we will call Dl, must satisfy to be a function of uselessness with the idea that a function of uselessness takes as argument a formula Φ n supposed to be a sub-formula of a main formula Φ, and returns a real number DI (Φ n ), so that the absolute useless date Φ n .abs_di of Φ n is: Φ.abs_di + DI (Φ n ) .
DI(Φn) est donc une date d'inutilité relative à la date d'inutilité absolue Φ.abs_di de la formule principale. Pour la définition inductive nous devons aussi attribuer une valeur à DI(Φ). Puisque nous voulons que Φn.abs_di = Φ.abs_di + DI(Φn) pour n'importe quelle sous-formule Φn de Φ , si Φn est la principale Φ elle-même nous devons avoir Φ.abs_di = Φ.abs_di + Dl (Φ), soit donc DI(Φ) = 0. Etant donnée une formule Φ et l'ensemble {Φi, ..., Φn} de ses sous-formules une fonction Dl de {Φ-i, ..., Φn, Φ} → R est une fonction d'inutilité si elle est telle que toutes ces contraintes sont vérifiées :DI (Φ n ) is therefore a useless date relative to the date of absolute uselessness Φ.abs_di of the main formula. For the inductive definition we must also assign a value to DI (Φ). Since we want Φ n .abs_di = Φ.abs_di + DI (Φ n ) for any sub-formula Φ n of Φ, if Φ n is the main Φ itself we must have Φ.abs_di = Φ. abs_di + Dl (Φ), so be DI (Φ) = 0. Given a formula Φ and the set {Φi, ..., Φ n } of its sub-formulas a function Dl of {Φ-i,. .., Φ n , Φ} → R is a function of uselessness if it is such that all these constraints are verified:
• DI(Φ) = 0 (0 pour la formule principale) Et pour ij e [1 ,n]• DI (Φ) = 0 (0 for the main formula) And for ij e [1, n]
• DΙ(Φi) < Dl(→ï>ι) • DI(Φι) < DI(ΦJ Λ ΦJ) • DKΦjJ≤DIfΦiΛΦj)• DΙ (Φi) <Dl (→ ï> ι) • DI (Φι) <DI (Φ J Λ ΦJ) • DKΦ j J≤DIfΦiΛΦ j )
• DI(Φ,)≤DI(F[a,b]Φ,) + a• DI (Φ,) ≤DI (F [a , b] Φ,) + a
• DI(Φ,)<DI(P[a,b]Φ,)-b• DI (Φ,) <DI (P [a , b] Φ,) - b
• DI(Φι)≤DI(P[a,>]Φι)-a • DI(Φι) < DI(Φι U[a,b] Φj) + a• DI (Φι) ≤DI (P [a , > ] Φι) -a • DI (Φι) <DI (Φι U [a, b] Φj) + a
• DI(Φj) < DI(Φ,U[a,b] Φj) + a• DI (Φj) <DI (Φ, U [a , b ] Φj) + a
• DI(Φι)< DI(Φι S[a,b] Φj) - b• DI (Φι) <DI (Φι S [a , b] Φj) - b
• DI(Φj)< Dl (Φ, Sta,b] Φj) ~ b• DI (Φj) <Dl (Φ, S ta , b] Φj) ~ b
• DI(Φ,)< DI(Φ|S[ai>]Φj)-a • DI(Φj) ≤ DI(Φ|S[ai>]Φj)-a• DI (Φ,) <DI (Φ | S [ai>] Φj) -a • DI (Φj) ≤ DI (Φ | S [ai>] Φj) -a
En pratique, la fonction retenue sera celle qui attribue la valeur la plus grande possible pour chaque sous-formule, de sorte à pouvoir éliminer le plus grand nombre d'intervalles possibles. Il s'agit en fait de choisir la plus grande valeur donnée par la contrainte la plus forte. Par exemple, si, pour une formule Φj, la plus forte contrainte est DΙ(Φi) < DI(P[a,b] Φι) - b, alors le choix pour la fonction est DΙ(Φi) = DI(P[a,b] Φι) - b.In practice, the chosen function will be the one that assigns the largest value possible for each sub-formula, so that the largest possible number of possible intervals can be eliminated. It is in fact to choose the greatest value given by the strongest constraint. For example, if, for a formula Φj, the strongest constraint is DΙ (Φi) <DI (P [a , b] Φι) - b, then the choice for the function is DΙ (Φi) = DI (P [a , b] Φι) - b.
Ci-dessous nous présentons un mode de calcul possible de la date d'inutilité de chaque sous-formule de la formule principale.Below we present a possible way of calculating the useless date of each sub-formula of the main formula.
1. Pour chaque sous-formule Ψ de la principale Φ (y compris Φ elle- même) créer une variable de type réel Ψ.rel_di et lui assigner la valeur symbolique ∞ (∞ est tel que x < ∞ est toujours vraie pour x un réel standard)1. For each subformula Ψ of the principal Φ (including Φ itself) create a variable of real type Ψ.rel_di and assign it the symbolic value ∞ (∞ is such that x <∞ is always true for x a real standard)
2. Assigner 0 à Φ.rel_di (seule la principale est mise à 0)2. Assign 0 to Φ.rel_di (only the main one is set to 0)
3. Appel de calcul_di(Φ, 0) où calcul_di est l'algorithme récursif présenté ci-dessous. calcul_di(Φ,r) :3. Calculation call_di (Φ, 0) where calcul_di is the recursive algorithm presented below. calculation_di (Φ, r):
D1 - Si r < Φ.rel_di alors Φ.rel_di = r D2 - Si Φ est :D1 - If r <Φ.rel_di then Φ.rel_di = r D2 - If Φ is:
D2.1 - une proposition p alors FIN. D2.2 - -iΦi alors appeler calcul_di(Φ-ι, Φ.rel_di) D2.3 - Φ! Λ Φ2 alors appeler calcul_di(Φi, Φ.rel_di) puis calcul_di(Φ2, Φ.rel_di)D2.1 - a proposition p then END. D2.2 - -iΦi then call calcul_di (Φ-ι, Φ.rel_di) D2.3 - Φ ! Λ Φ 2 then call calcul_di (Φi, Φ.rel_di) then calcul_di (Φ2, Φ.rel_di)
D2.4 - Φ1 v Φ2 alors appeler calcul_di(Φi, Φ.rel_di) puis calcul_di(Φ2, Φ.rel_di) D2.5 - F[a,b] Φi alors appeler calcul_di(Φi, Φ.rel_di + a)D2.4 - Φ 1 v Φ 2 then call calculation_di (Φi, Φ.rel_di) then calculation_di (Φ 2 , Φ.rel_di) D2.5 - F [a, b] Φi then call calcul_di (Φi, Φ.rel_di + at)
D2.6 - P[a,b] Φi alors appeler calcul_di(Φi, Φ.rel_di - b) D2.7 - P[a,>] Φi alors appeler calcul_di(Φi, Φ.rel_di - a) D2.8 - Φi U[a,b] Φ2 alors appeler calcul_di(Φi, Φ.rel_di + a) puis calcul_di(Φ2, Φ.rel_di + a) D2.9 - Φ1 S[a,b] Φ2 alors appeler calcul_di(Φi, Φ.rel_di - b) puis calcul_di(Φ2, Φ.rel_di - b)D2.6 - P [a, b] Φi then call calculation_di (Φi, Φ.rel_di - b) D2.7 - P [a, > ] Φi then call calcul_di (Φi, Φ.rel_di - a) D2.8 - Φi U [a, b] Φ2 then call calcul_di (Φi, Φ.rel_di + a) then calcul_di (Φ 2 , Φ.rel_di + a) D2.9 - Φ1 S [a, b] Φ2 then call calcul_di (Φi, Φ.rel_di - b) then calcul_di (Φ 2 Φ.rel_di - b)
D2.10 - Φ1 S[a,>] Φ2 alors appeler calcul_di(Φ-ι, Φ.rel_di - a) puis calcul_di(Φ2, Φ.rel_di - a)D2.10 - Φ1 S [a, > ] Φ 2 then call calculation_di (Φ-ι, Φ.rel_di - a) then calculation_di (Φ 2 , Φ.rel_di - a)
Etant donné ce mode de calcul, pour toute sous-formule Ψ de la formule principale Φ, il est possible de calculer sa date absolue d'inutilité propre, notée Ψ.abs_di :Given this method of calculation, for any sub-formula Ψ of the main formula Φ, it is possible to calculate its absolute uselessness date, denoted Ψ.abs_di:
Ψ.abs_di = Φ.abs_di + Ψ.rel_di Où Φ. abs_di = (Φ.w).ub L'élimination des intervalles inutiles consiste à supprimer, pour chaque sous- formule Ψ de la formule principale Φ, les intervalles de sa liste de validité strictement antérieurs à sa date absolue d'inutilité propre Φ.abs_di + Ψ.rel_di (un intervalle est strictement antérieur à une date si tous ses points sont inférieurs, au sens des nombres réels, à cette date). Le mécanisme d'élimination des intervalles devenus inutiles permet notamment de garantir que la ressource mémoire requise par le moniteur est bornée assurant de ce fait le fonctionnement sans limite de durée du moniteur généré par le procédé. Exemple d'application du procédé pour la surveillance d'un système masse- ressort La figure 9 illustre un exemple d'application pratique au contrôle du comportement d'un système masse-ressort. Une masse M se déplaçant sans frottement sur un plan horizontal est reliée à un support vertical S par un ressort R et un système d'amortissement A. Plusieurs propriétés peuvent être analysées par le procédé selon l'invention, lors d'une simulation de ce modèle.Ψ.abs_di = Φ.abs_di + Ψ.rel_di Where Φ. abs_di = (Φ.w) .ub The elimination of unnecessary intervals consists in deleting, for each sub-formula Ψ of the main formula Φ, the intervals of its validity list strictly prior to its absolute uselessness date Φ. abs_di + Ψ.rel_di (an interval is strictly prior to a date if all its points are lower, in the sense of real numbers, on this date). The mechanism for eliminating unnecessary intervals makes it possible in particular to guarantee that the memory resource required by the monitor is bounded thereby ensuring the operation without limit of duration of the monitor generated by the method. Example of application of the method for monitoring a mass-spring system Figure 9 illustrates an example of practical application to control the behavior of a mass-spring system. A mass M moving without friction on a horizontal plane is connected to a vertical support S by a spring R and a damping system A. Several properties can be analyzed by the method according to the invention, during a simulation of this model.
Par exemple, une propriété attendue pourrait être que la force f et le déplacement x varient toujours dans le même sens. Autrement dit, ce qui est redouté est la proposition (df.dx < 0). II est possible de relâcher cette propriété en demandant que s'il arrive que (df.dx < 0) alors (df.dx > 0) est rétablie entre 0.2 et 0.5 secondes plus tard. Autrement dit la propriété attendue est (df.dx < 0) → F[02, 05] (df.dx > 0). La formule exprimant le comportement redouté est donc -1 ( -1 ((df.dx < 0) Λ -1 Fp 2, 05] (df.dx > 0))) c'est-à-dire plus simplement : (df.dx < 0) Λ -1 F[0 2, 05] (-> (df.dx < O)).For example, an expected property could be that the force f and the displacement x always vary in the same direction. In other words, what is feared is the proposition (df.dx <0). It is possible to release this property by asking that if it happens that (df.dx <0) then (df.dx> 0) is restored between 0.2 and 0.5 seconds later. In other words, the expected property is (df.dx <0) → F [0 2, 05] (df.dx> 0). The formula expressing the dreaded behavior is therefore -1 (-1 ((df.dx <0) Λ -1 Fp 2, 05] (df.dx> 0))) that is to say simply: (df .dx <0) Λ -1 F [0 2 , 05] (-> (df.dx <O)).
Une autre propriété attendue pourrait être : on doit avoir (df.dx > 0) globalement mais on tolère que (df.dx < 0) quand df est proche de zéro (à plus ou moins 0.5 newtons). La propriété attendue est donc (df.dx > 0) v (- 0.5 < df < 0.5) . La propriété redoutée est sa négation -1 ((df.dx > 0) v (-0.5 < df < 0.5) ) soit plus simplement ((df.dx < 0) Λ (-0.5 < f v f > 0.5)).Another expected property could be: we must have (df.dx> 0) globally but we tolerate that (df.dx <0) when df is close to zero (at plus or minus 0.5 newtons). The expected property is (df.dx> 0) v (- 0.5 <df <0.5). The dreaded property is its negation -1 ((df.dx> 0) v (-0.5 <df <0.5)) or simply ((df.dx <0) Λ (-0.5 <f v f> 0.5)).
Pour résumer, les propriétés envisagées pour générer des moniteurs pour ce modèle pourraient être :To summarize, the properties considered for generating monitors for this model could be:
• df.dx < 0• df.dx <0
• (df.dx < 0) Λ -1 F[o 2, 0 si H (df.dx < O)) • (df.dx < 0) Λ (-0.5 < f v f > 0.5)• (df.dx <0) Λ -1 F [o 2 , 0 if H (df.dx <O)) • (df.dx <0) Λ (-0.5 <fvf> 0.5)
Pour illustrer de façon plus complète le procédé, nous allons étudier son déroulement en considérant la propriété (df.dx < 0) Λ -1 (F102, 05] (-> (df.dx < 0))). La date T_origine choisie est 0. La stratégie d'utilisation est la suivante : nous stoppons le moniteur dès l'occurrence du comportement redouté, c'est- à-dire lorsque la liste de validité de notre formule est non vide. Les sous- formules (classées par hauteurs croissantes) sont :To illustrate the process more fully, we will study its process by considering the property (df.dx <0) Λ -1 (F 102 , 05] (-> (df.dx <0))). The date T_origine chosen is 0. The strategy of use is as follows: we stop the monitor from the occurrence of the dreaded behavior, that is, that is, when the validity list of our formula is not empty. The sub-formulas (classified by increasing heights) are:
• (df.dx < 0) qui est une proposition• (df.dx <0) which is a proposition
• -. (df.dx < 0) • F[o 2, o s] (-i (df.dx < O))• -. (df.dx <0) • F [o 2 , os] (-i (df.dx <O))
• --(F[O 2, o s] (i (df.dx < 0)))• - (F [O 2, o s] (i (df.dx <0)))
Le calcul de la certitude est le suivant :The calculation of certainty is as follows:
• (df.dx < O).rel_cert = 0 • (-i (df.dx < O)). rel_cert = (df.dx < O).rel_cert = 0• (df.dx <O) .rel_cert = 0 • (-i (df.dx <O)). rel_cert = (df.dx <O) .rel_cert = 0
• (F[o 2, o 5] (-i (df.dx < 0))).rel_cert = o (-i (df.dx < O)).rel_cert + 0.5 = o 0 + 0.5 = 0.5• (F [o 2, o 5] (-i (df.dx <0))) rel_cert = o (-i (df.dx <O)) rel_cert + 0.5 = o 0 + 0.5 = 0.5
• H(F1O 2, o s] (-i (df.dx < O)))).rel_cert = o (F[o 2, o 5] H (df.dx < O))).rel_crt = o 0.5• H (F 1 O 2, os) (-i (df.dx <O)))). Rel_cert = o (F [o 2, o 5] H (df.dx <O))). Rel_crt = o 0.5
• Cert((df.dx < 0) Λ -. (F[0 2, o 5] (-< (df.dx < 0))) = o sup(Cert(df.dx < O),Cert(-i F[o 2, o 5] (-> (df.dx < 0)))) = o sup(0, 0.5) = 0.5• Cert ((df.dx <0) Λ -. (F [0 2 , o 5] (- <(df.dx <0))) = o sup (Cert (df.dx <O), Cert (- i F [o 2 , o 5] (-> (df.dx <0)))) = o sup (0, 0.5) = 0.5
Le tableau ci-dessous résume les valeurs attribuées à chaque formule par la fonction Cert. The table below summarizes the values assigned to each formula by the Cert function.
e tableau ci-dessous illustre le calcul de Φj.rel_di . Dans ce tableau X(i) signifie que la valeur X a été calculée en raison du fait que la formule considérée est sous-formule de la formule de la ligne i. Par exemple la notation 0.2(3) en ligne 2, signifie que 0.2 a été calculée pour -i (df.dx < 0) en raison du fait que cette formule est sous-formule de celle située en ligne 3. On peut voir que (df.dx < 0) est sous-formule de deux formules (celles en ligne 2 et 5, c'est pourquoi il existe deux valeurs pour cette formule). The table below illustrates the calculation of Φj.rel_di. In this table X (i) means that the value X has been calculated because the formula considered is a sub-formula of the formula of the line i. For example, the notation 0.2 (3) in line 2, means that 0.2 has been calculated for -i (df.dx <0) because this formula is a sub-formula of that found in line 3. It can be seen that (df.dx <0) is a sub-formula of two formulas (those in line 2 and 5, which is why there are two values for this formula).
A partir de maintenant les étapes du procédé selon l'invention vont être déroulées en indiquant l'instantané et son effet sur le moniteur, lequel est représenté sous la forme d'un tableau. Ce tableau possède notamment une colonne « Liste de validité » qui permet de visualiser les listes de validité pour chaque sous-formule.From now on, the steps of the method according to the invention will be carried out by indicating the instantaneous and its effect on the monitor, which is represented in the form of a table. This table has in particular a "Validity list" column which allows to display the validity lists for each sub-formula.
1er rafraichissement: l.(df.dx < 0) = 1 , l.t = 0. 1st refreshing: 1. (df.dx <0) = 1, lt = 0.
Pour les formules purement booléennes le calcul se base sur l'algorithme direct. C'est pourquoi la fenêtre de continuation n'est pas mentionnée. Moyennant ce premier instantané, le tableau ci-dessous résume l'état des différents aspects de notre procédé : fenêtre de continuation pour chaque formule, date absolue d'inutilité, listes de validité.For purely Boolean formulas the calculation is based on the direct algorithm. This is why the continuation window is not mentioned. With this first snapshot, the table below summarizes the state of the various aspects of our process: continuation window for each formula, absolute date of uselessness, validity lists.
La fenêtre de continuation reste vide pour certaines formules. Par exemple pour Φ3 = F[o 2, o s] (-> (df.dx < 0). En effet nous avons l.t - Φ3.rel_cert < Φ3.abs_cert puisque l.t - Φ3.rel_cert = 0 - 0.5 = -0.5 et Φ3.abs_cert = 0.The continuation window remains empty for certain formulas. For example, for Φ 3 = F [o 2, os ] (-> (df.dx <0) because we have lt - Φ 3 .rel_cert <Φ 3 .abs_cert since lt - Φ 3 .rel_cert = 0 - 0.5 = -0.5 and Φ 3 .abs_cert = 0.
\ième rafraichissement: I. (df.dx < 0) = 0, I t = 0.3Refresh: I. (df.dx <0) = 0, I t = 0.3
φ, Expressions Φi.W Φi.LVφ, Expressions Φi.W Φi.LV
Φi (df.dx < 0) ([0,0.3[)Φi (df.dx <0) ([0,0,3 [)
Φ7 (df.dx < 0) ([0.3,0.3])Φ 7 (df.dx <0) ([0.3.0.3])
Φ, F[o 2, o s] (-i (df.dx < O))Φ, F [o 2, o s] (-i (df.dx <O))
Φ_! iF[02, o 5] (-i (df.dx < O)) φc (df.dx < 0) 2, o s] (-i (df.dx < O)) Là encore la fenêtre de continuation reste vide pour certaines formules. Par exemple pour Φ3 = F[02, os] (-> (df.dx < 0). En effet nous avons l.t - Φ3.rel_cert < Φ3.abs_cert puisque l.t - Φ3.rel_cert = 0.3 - 0.5 = -0.2 et Φ3.abs_cert = 0.Φ_! iF [ 0 2, o 5] (-i (df.dx <O)) φ c (df.dx <0) 2 , os] (-i (df.dx <O)) Here again, the continuation window remains empty for certain formulas. For example for Φ 3 = F [02 , os] (-> (df.dx <0) because we have lt - Φ 3 .rel_cert <Φ 3 .abs_cert since lt - Φ 3 .rel_cert = 0.3 - 0.5 = -0.2 and Φ 3 .abs_cert = 0.
3ième rafraîchissement: I. (df.dx < 0) = 1 , l.t = 0.7 3rd refreshment: I. (df.dx <0) = 1, lt = 0.7
Dans ce tableau nous ajoutons une colonne pour les nouveaux intervalles à adjoindre à la liste existante. Rappelons qu'ils ne sont adjoints à la liste de validité qu'après troncature par la fenêtre de continuation.In this table we add a column for new ranges to add to the existing list. Remember that they are only added to the validity list after truncation by the continuation window.
Détail du calcul de Φ3.w. Nous avons l.t - Φ3.rel_cert = 0.7 - 0.5 = 0.2. Or 0.2 > Φ3.abs_cert car Φ3.abs_cert = 0. Comme Φ3.w était vide jusque là maintenant cette fenêtre devient [Φ3.abs_cert, l.t - Φ3.rel_cert] soit [0,0.2]. Detail of the calculation of Φ 3 .w. We have lt - Φ 3 .rel_cert = 0.7 - 0.5 = 0.2. 0.2> Φ 3 .abs_cert because Φ 3 .abs_cert = 0. Since Φ 3 .w was empty until now, this window becomes [Φ 3 .abs_cert, lt - Φ 3 .rel_cert] or [0,0.2].
lième l th
4ieme rafraichissement: l.(df.dx < 0) = 0, I t = 1 4 th refresh. L (df.dx <0) = 0, I t = 1
5 -iièemmee rafraîchissement: l.(df.dx < 0) = 1 , I t = 1.25 -i i è e m e th refresh. L (df.dx <0) = 1, I t = 1.2
Observons que pour Φ-, et Φ2, des intervalles de leurs listes de validité respectives sont antérieurs strictement à leurs dates d'inutilité absolues respectives. Ce sont [0,0.3[ pour Φi et [0.3,0.7[ pour Φ2. Ces intervalles peuvent être supprimés des listes de validité respectives (ils ne jouent plus aucun rôle dans la détection de Φ5 qui est la principale). Comme il a été expliqué, c'est ce mode de suppression qui permet d'assurer que le moniteur nécessite une ressource mémoire bornée.Observe that for Φ-, and Φ 2 , intervals of their respective validity lists predate strictly their respective absolute useless dates. These are [0.0.3 [for Φi and [0.3.0.7 [for Φ 2 . These intervals can be deleted from the respective validity lists (they no longer play any role in the detection of Φ 5 which is the main one). As it was explained, it is this mode of suppression which makes it possible to ensure that the monitor requires a bounded memory resource.
6ième rafraichissement: l.(df.dx < 0) = 1 , l.t = 1.86 th refresh. L (df.dx <0) = 1, lt = 1.8
A ce stade, un intervalle est apparu dans la liste de validité de la formule principale Φ5 du procédé selon l'invention. Cet intervalle [1.2, 1.3] indique que le comportement redouté se produit sur cet intervalle. En effet (df.dx < 0) est maintenu sur [1.2, 1.8]. Ainsi pour les dates de [1.2, 1.3] le retour à la normale (c'est-à-dire (df.dx > O)) n'a pas lieu. C'est bien ce que révèle le moniteur.At this point, an interval has appeared in the validity list of the main formula Φ 5 of the process according to the invention. This interval [1.2, 1.3] indicates that the dreaded behavior occurs on this interval. Indeed (df.dx <0) is maintained on [1.2, 1.8]. Thus for the dates of [1.2, 1.3] the return to normal (that is (df.dx> O)) does not take place. That's what the monitor reveals.
Le procédé et le système selon l'invention présentent notamment les avantages suivants : Un procédé automatique : le moniteur est calculé automatiquement à partir de l'expression du comportement redouté et le fonctionnement du moniteur est automatique en fonctionnement normal. Il est de fait rapide et peu coûteux en mémoire.The method and the system according to the invention have the following advantages in particular: An automatic method: the monitor is automatically calculated from the expression of the dreaded behavior and the operation of the monitor is automatic in normal operation. It is fast and inexpensive in memory.
Le procédé peut s'appliquer à tout modèle, contrairement aux approches types preuve ou model-checking qui analysent le modèle tel qu'il est défini dans sa structure interne. Le moniteur ne s'intéresse qu'aux exécutions d'un système, à ses productions observables. Que le modèle soit, dans sa structure interne, très simple ou très complexe, de petite ou de grande taille, cela est sans incidence pour le moniteur généré, puisqu'il ne dépend pas de la structure du modèle mais uniquement de la formule donnée en entrée. L'analyse est effectuée en ligne, ce qui signifie que :The method can be applied to any model, unlike the proof or model-checking model approaches that analyze the model as defined in its internal structure. The monitor is only interested in executions of a system, to its observable productions. Whether the model is, in its internal structure, very simple or very complex, small or large, this has no impact on the generated monitor, since it does not depend on the structure of the model but only on the formula given in Entrance. The analysis is done online, which means that:
• La surveillance du processus est réalisée pendant que le processus d'exécution/simulation se produit,• Process monitoring is performed while the execution / simulation process is occurring,
• La surveillance est opérée sans limite de durée,• The surveillance is carried out without limit of duration,
• La surveillance se fait sans stockage de l'exécution, • La mémoire consommée par le moniteur est bornée (ce qui permet une surveillance sans limite de durée)• Monitoring is done without storing the run, • The memory consumed by the monitor is bounded (allowing unlimited time monitoring)
Le procédé selon l'invention ne suppose pas de régularité particulière sur l'exécution, le délai entre deux observations pouvant être quelconque. The method according to the invention does not suppose a particular regularity on the execution, the delay between two observations being any.
Annexe 1Annex 1
Notations :Ratings:
Dans les algorithmes ci-dessous « Buffer » est une variable de type liste de validité, initialisée à vide au départ de chaque algorithme. « Nil » n'a pas de sens spécifique. Il intervient pour dénoter des objets vides ou non définis (listes, intervalles ...)In the algorithms below "Buffer" is a variable of validity list type, initialized empty from each algorithm. "Nil" does not have a specific meaning. It intervenes to denote empty or undefined objects (lists, intervals ...)
Φ.LV : pour liste de validité de Φ (listes d'intervalles disjoints rangée de façon croissante)Φ.LV: for list of validity of Φ (lists of disjoint intervals steadily increased)
Φ.LV.first et Φ.LV.Iast dénotent respectivement le premier et le dernier élément de Φ.LV (sont tous deux Nil pour dénoter que Φ.LV est vide)Φ.LV.first and Φ.LV.Iast denote respectively the first and the last element of Φ.LV (are both Nil to denote that Φ.LV is empty)
Pour un intervalle deux notations sont utilisées: la notation usuelle telle: ]4.32, 6.21 ] la notation sous forme de quadruplet (I, Ib, ub , u) où:For an interval two notations are used: the usual notation such as:] 4.32, 6.21] the quadruplet notation (I, Ib, ub, u) where:
I et u sont éléments de {0,1 } qui dénotent l'ouverture ou la fermeture de l'intervalle sur les bornes Ib et ubI and u are elements of {0,1} which denote the opening or closing of the interval on terminals Ib and ub
Ib : borne inférieure ub: borne supérieure exemple : (0, 4.32, 6.21 , 1 ) représente ]4.32, 6.21 ] si i est un intervalle alors i.l, i.lb, i.ub et i.u dénotent les paramètres ci-dessus mentionnésIb: lower bound ub: upper bound example: (0, 4.32, 6.21, 1) represents] 4.32, 6.21] if i is an interval then i.l, i.lb, i.ub and i.u denote the parameters mentioned above
Soit i un intervalle d'une liste de validité LV : i.pred dénote son prédécesseur dans LV (Nil si i est premier élément) i.next dénote l'intervalle suivant dans LV (Nil si i est dernier élément)Let i be an interval of a validity list LV: i.pred denotes its predecessor in LV (Nil if i is the first element) i.next denotes the following interval in LV (Nil if i is last element)
Calcul de Φ = ^Ψ : o on déclare : iter = Ψ.LV.Iast o « Tant que » iter n'est pas Nil faire : o Si iter est strictement inférieur à Φ.w faire : o créer un l'intervalle virtuel iv = ] Φ.w.ub, Φ.w.ub + 1] o faire que le prédécesseur de iv soit celui de iter: iv.pred = iter.pred o iter devient cet intervalle virtuel: iter = iv o passer à l'étape 4 o Si iter chevauche Φ.w à droite, c'est-à-dire si iter n Φ.w ≠ 0 et (iter n Φ.w).ub = w.ub, alors passer à l'étape 4 o iter = iter.pred o retour « tant que » 2 o Si iter est Nil (Ψ.LV est vide ou bien tous les intervalles de Ψ.LV sont strictement supérieurs à Φ.w): o créer un l'intervalle virtuel iv = ] Φ.w.ub, Φ.w.ub + 1 ] o faire pointer le prédécesseur de iv sur celui de iter: iv.pred = iter.pred o iter devient cet intervalle virtuel: iter = iv o « Tant que » iter n'est pas Nil faire : o si iter n ZI(Ψ,Φ) est vide : o si iter est vide ou non vide mais inférieur à ZI(Ψ,Φ) alors passer à l'étape 5 o sinon iter = iter.pred et retour du « tant que » 4 o créer l'intervalle nv : o Si iter.pred n'est pas Nil alors nv est (1 - iter.pred. u, iter.pred. ub, iter.lb, 1 - iter.l ) o sinon nv est (Φ.w.l, Φ.w.lb, iter.lb, 1 - iter.l ) o si nv n Φ.w n'est pas Nil l'adjoindre à gauche dans Buffer o iter = iter.pred o retour du « tant que » 4 o Raccorder Buffer à droite de Φ. LV o FINCalculation of Φ = ^ Ψ: o declare: iter = Ψ.LV.Iast o "As long as" it is not Nil do: o If iter is strictly inferior to Φ.w do: o create a virtual interval iv =] Φ.w.ub, Φ.w.ub + 1] o make the predecessor of iv to be that of iter: iv.pred = iter.pred o iter becomes this virtual interval: iter = iv o go to step 4 o If iter overlaps Φ.w to the right, that is to say if iter n Φ.w ≠ 0 and (iter n Φ .w) .ub = w.ub, then go to step 4 o iter = iter.pred o return "as long as" 2 o If iter is Nil (Ψ.LV is empty or all intervals of Ψ.LV are strictly superior to Φ.w): o create a virtual interval iv =] Φ.w.ub, Φ.w.ub + 1] o point the predecessor of iv to that of iter: iv.pred = iter .pred o iter becomes this virtual interval: iter = iv o "As long as" it is not Nil do: o if iter n ZI (Ψ, Φ) is empty: o if iter is empty or not empty but less than ZI (Ψ, Φ) then go to step 5 o else iter = iter.pred and return from "as long as" 4 o create the interval nv: o If iter.pred is not Nil then nv is (1 - iter.pred. u, iter.pred. ub, iter.lb, 1 - iter.l) o otherwise nv is (Φ.wl, Φ.w.lb, iter.lb, 1 - iter.l) o if nv n Φ.w is not nil add it to gau check in Buffer o iter = iter.pred o return of "as long as" 4 o Connect Buffer to the right of Φ. LV o FIN
Calcul de Φ = Ψi Λ Ψ2 : 1 . on déclare : iteri = Ψ!.LV.Iast et iter2 = Ψ2.LV.Iast 2. « Tant que » iteri et iter2 sont différents de Nil faireCalculation of Φ = Ψi Λ Ψ 2 : 1. we declare: iteri = Ψ! .LV.Iast and iter2 = Ψ 2 .LV.Iast 2. "As long as" iteri and iter2 are different from Nil do
2.1. Si iteri n ZI(Ψi,Φ) différent de Nil a) « Tant que » iteri n iter2 n'est pas Nil2.1. If iteri n ZI (Ψi, Φ) different from Nil a) "As long as" iteri n iter2 is not Nil
• adjoindre (iteri n iter2 n Φ.w) à gauche dans Buffer • iter2 = iter2.pred• add (iteri n iter2 n Φ.w) to the left in Buffer • iter2 = iter2.pred
• retour du « tant que » 2.1.a)• return of "as long as" 2.1.a)
2.2. Si iteM n ZI(Ψi, Φ) est Nil et que iteM < ZI(Ψi, Φ) alors aller à l'étape 32.2. If iteM n ZI (Ψi, Φ) is Nil and iteM <ZI (Ψi, Φ) then go to step 3
2.3. iteM = iteri .pred 2.4. retour du « tant que » 22.3. iteM = iteri .pred 2.4. return of "as long as" 2
3. Raccorder Buffer à droite de Φ.LV3. Connect Buffer to the right of Φ.LV
4. FIN4. END
Calcul de Φ = Ψ1 v Ψ2 : On introduit une notation supplémentaire. Soient i et j deux intervalles. On note j Z i si une des conditions suivantes est satisfaite :Calculation of Φ = Ψ 1 v Ψ 2 : An additional notation is introduced. Let i and i be two intervals. We denote j Z i if one of the following conditions is satisfied:
• j est Nil et i n'est pas Nil• j is Nil and i is not Nil
i = j i = j
• i.ub > j.ub • i.ub = j.ub et i.u = 1 et j.u = 0• i.ub> j.ub • i.ub = j.ub and i.u = 1 and j.u = 0
• i.ub = j.ub et i.u = j.u et une de ces conditions est satisfaite : o i.lfcx j.lb o i.lb ≈ j.lb et i.l = 1 et j.l = 0• i.ub = j.ub and i.u = j.u and one of these conditions is satisfied: o i.lfcx j.lb o i.lb ≈ j.lb and i.l = 1 and j.l = 0
Autrement dit on a j Z i lorsque i va plus loin dans le futur ou bien, s'il va aussi loin que j, il va alors plus loin dans le passé que j.In other words, we have j Z i when i goes farther into the future or, if he goes as far as j, he goes farther into the past than j.
1 . on déclare : itert = Ψ1.LV.Iast et iter2 = Ψ2.LV.Iast et tmp = Nil1. declare: itert = Ψ 1 .LV.Iast and iter2 = Ψ 2 .LV.Iast and tmp = Nil
2. « Tant que » iteri ou iter2 est différent de Nil faire : 2.1 . si iter2 Z iteri alors passer à l'étape 2.3 2.2. sinon (on échange iteri et iter2): a) tmp = iteri b) iteri = iter2 c) iter2 = tmp 2.3. Si iteri < ZI(Ψ1; Φ) alors FIN2. "As long as" iteri or iter2 is different from Nil do: 2.1. if iter2 Z iteri then go to step 2.3 2.2. otherwise (we exchange iteri and iter2): a) tmp = iteri b) iteri = iter2 c) iter2 = tmp 2.3. If iteri <ZI (Ψ 1; Φ) then END
2.4. Adjoindre à gauche iteri n Φ.w dans Buffer2.4. Add on the left iteri n Φ.w in Buffer
2.5. « tant que » iter2 n'est pas Nil faire : a) si iter2 chevauche iteri à gauche, c'est-à-dire si iter2 n iteri2.5. "As long as" iter2 is not Nil do: a) if iter2 overlaps iteri on the left, that is if iter2 n iteri
≠ 0 et (iter2 n iteri ).lb = iteri .Ib, alors passer en 2.6 b) si iter2 < iteri alors passer en 2.6 c) iter2 = iter2.pred d) retour « tant que » 2.5.≠ 0 and (iter2 n iteri) .lb = iteri .Ib, then go to 2.6 b) if iter2 <iteri then go to 2.6 c) iter2 = iter2.pred d) back "as long as" 2.5.
2.6. iteri = iteri .pred2.6. iteri = iteri .pred
2.7. retour du « tant que » 2. 3. Raccorder Buffer à droite de Φ. LV2.7. return "as long as" 2. 3. Connect Buffer to the right of Φ. LV
4. FIN4. END
Calcul de Φ = F[a,b] Ψ : 1. iter ≈ Ψ.LV.Iast 2. « tant que » iter n'est pas Nil faire :Calculation of Φ = F [a , b ] Ψ: 1. iter ≈ Ψ.LV.Iast 2. "as long as" it is not Nil do:
2.1. Si iter n ZI(Ψ, Φ) est Nil a) Si iter < ZI(Ψ, Φ) alors passer à l'étape 3 b) Sinon iter = iter.pred et retour du « tant que » 22.1. If iter n ZI (Ψ, Φ) is Nil a) If iter <ZI (Ψ, Φ) then go to step 3 b) Otherwise iter = iter.pred and return from "as long as" 2
2.2. Adjoindre à gauche ((iter Θ [-b,-a]) n Φ.w) dans Buffer 2.3. iter = iter.pred2.2. Add on the left ((iter Θ [-b, -a]) n Φ.w) in Buffer 2.3. iter = iter.pred
2.4. retour du « tant que » 22.4. return of "as long as" 2
3. Raccorder Buffer à droite de Φ.LV3. Connect Buffer to the right of Φ.LV
4. FIN Calcul de Φ = P[a,b] Ψ :4. END Calculation of Φ = P [a , b ] Ψ:
1. iter = Ψ.LV.Iast1. iter = Ψ.LV.Iast
2. « tant que » iter n'est pas Nil faire : 2.1. Si iter n ZI(Ψ, Φ) est Nil a) Si iter < ZI(Ψ, Φ) alors FIN b) Sinon iter = iter.pred et retour du « tant que » 22. "As long as" it is not Nil do: 2.1. If iter n ZI (Ψ, Φ) is Nil a) If iter <ZI (Ψ, Φ) then END b) Otherwise iter = iter.pred and return of "as long as" 2
2.2. Adjoindre à gauche ((iter Θ [a,b]) n Φ.w) dans Buffer2.2. Add on the left ((iter Θ [a, b]) n Φ.w) in Buffer
2.3. iter = iter.pred2.3. iter = iter.pred
2.4. retour du « tant que » 2 3. Raccorder Buffer à droite de Φ. LV2.4. return "as long as" 2 3. Connect Buffer to the right of Φ. LV
4. FIN4. END
Calcul de Φ = P[a,>] Ψ :Calculation of Φ = P [a , > ] Ψ:
1. Si Φ.LV n'est pas vide, alors soit i son unique intervalle. On modifie cet intervalle de sorte qu'il devienne (i.l, i.lb, w.ub, w.u) et FIN.1. If Φ.LV is not empty, then be i its unique interval. This interval is modified so that it becomes (i.l, i.lb, w.ub, w.u) and FIN.
2. Si Ψ.LV est vide alors ne rien faire et FIN.2. If Ψ.LV is empty then do nothing and END.
3. Si Ψ.LV n'est pas vide et que i est son premier élément alors ajouter (i.l, i.lb + a, w.ub, w.u) à P[a,>] Φ.LV et FIN.3. If Ψ.LV is not empty and i is its first element then add (il, i.lb + a, w.ub, wu) to P [a , > ] Φ.LV and FIN.
Calcul de Φ = Ψ! U[0,b] Ψ2 :Calculation of Φ = Ψ! U [0 , b ] Ψ 2 :
1. iteri = Ψi.LV.Iast et iter2 = Ψ2.LV.Iast et tmp = Nil1. iteri = Ψi.LV.Iast and iter2 = Ψ 2 .LV.Iast and tmp = Nil
2. « tant que >> iter2 n'est pas Nil 2.1. Si iter2 n ZI(Ψ2, Φ) est Nil a) Si iter2 < ZI(Ψ2, Φ) alors FIN. b) Sinon iter2 = iter2.pred2. "as long as >> iter2 is not Nil 2.1. If iter2 n ZI (Ψ 2 , Φ) is Nil a) If iter2 <ZI (Ψ 2 , Φ) then END. b) Otherwise iter2 = iter2.pred
2.2. retour du « tant que » 22.2. return of "as long as" 2
3. « tant que » iter2 n'est pas Nil3. "As long as" iter2 is not Nil
3.1 . Si iter2 < ZI(Ψ2, Φ) alors FIN.3.1. If iter2 <ZI (Ψ 2 , Φ) then END.
3.2. Adjoindre iter2 à gauche dans Buffer (puisque a=0 il y a tout iter2) 3.3. « tant que » iteri n'est pas Nil a) Si iteri ] n iter2 n'est pas Nil alors tmp = iteri b) Si iteri ] < iter2 alors passer à l'étape 3.4 c) iteri = iteri .pred d) retour « tant que » 3.33.2. Add iter2 on the left in Buffer (since a = 0 there is all iter2) 3.3. "As long as" iteri is not Nil a) If iteri] n iter2 is not Nil then tmp = iteri b) If iteri] <iter2 then go to step 3.4 c) iteri = iteri .pred d) back "As long as" 3.3
3.4. iteri = tmp (iteri est le plus antérieur qui étende iter2 vers le passé)3.4. iteri = tmp (iteri is the older one that extends iter2 to the past)
3.5. Si iteri ] chevauche iter2 à gauche, c'est-à-dire si itert ] n iter2 ≠ 0 et (iteri ] n iter2).lb = iter2.lb, alors : a) Adjoindre à gauche ((iteri .I, iteri .Ib, iter2,lb, iter2.l) n (iter2.l, iter2.lb - b, iter2,lb, iter2.l) n Φ.w) dans Buffer3.5. If iteri] overlaps iter2 on the left, that is, itert] n iter2 ≠ 0 and (iteri] n iter2) .lb = iter2.lb, then: a) Add on the left ((iteri .I, iteri .Ib, iter2, lb, iter2.l) n (iter2.l, iter2.lb -b, iter2, lb, iter2.l) n Φ.w) in Buffer
3.6. iter2 = iter2.pred3.6. iter2 = iter2.pred
3.7. retour du « tant que » 33.7. return of "as long as" 3
4. Raccorder Buffer à droite de Φ.LV 5. FIN4. Connect Buffer to the right of Φ.LV 5. END
Calcul de Φ = Ψ1 U[a,b] Ψ2 avec a > 0 :Calculation of Φ = Ψ 1 U [a , b] Ψ2 with a> 0:
1 . iteri = Ψi.LV.Iast et iter2 = Ψ2.LV.Iast1. iteri = Ψi.LV.Iast and iter2 = Ψ 2 .LV.Iast
2. « tant que » iter2 n'est pas Nil faire : 2.1 . Si iter2 n ZI(Ψ2, Φ) est Nil a) Si iter2 < ZI(Ψ2, Φ) alors FIN. b) Sinon iter2 = iter2.pred 2.2. retour « tant que » 22. "as long as" iter2 is not Nil do: 2.1. If iter2 n ZI (Ψ 2 , Φ) is Nil a) If iter2 <ZI (Ψ 2 , Φ) then END. b) Otherwise iter2 = iter2.pred 2.2. back "as long as" 2
3. « tant que >> iter2 n'est pas Nil faire : 3.1 . Si iter2 < ZI(Ψ2, Φ) alors FIN.3. "as long as" iter2 is not Nil do: 3.1. If iter2 <ZI (Ψ 2 , Φ) then END.
3.2. « tant que » iteri n'est pas Nil faire : a) Si iteri ] n iter2 (rappel : i] est le fermé à droite de i) n'est pas Nil alors adjoindre à gauche (( (iteri ] n iter2) Θ [-b,-a]) n iteri ]) n Φ.w dans Buffer b) Sinon passer à l'étape 3.3 c) iteri = iteri .pred d) retour du « tant que » 3.23.2. "As long as" iteri is not Nil do: a) If iteri] n iter2 (reminder: i) is the closed to the right of i) is not Nil then add to left (((iteri] n iter2) Θ [-b, -a]) n iteri]) n Φ.w in Buffer b) Otherwise go to step 3.3 c) iteri = iteri .pred d) return of 'as long as' 3.2
3.3. iter2 = iter2.pred3.3. iter2 = iter2.pred
3.4. retour du « tant que » 3 4. Raccorder Buffer à droite de Φ.LV3.4. return of "as long as" 3 4. Connect Buffer to the right of Φ.LV
5. FIN5. END
Calcul de Φ = Ψi S[0,b] Ψ2 :Calculation of Φ = Ψi S [0 , b ] Ψ 2 :
1. iteri = Ψi.LV.Iast et iter2 = Ψ2.LV.Iast 2. « tant que » iter2 n'est pas Nil1. iteri = Ψi.LV.Iast and iter2 = Ψ 2 .LV.Iast 2. "as long as" iter2 is not Nil
2.1 . Si iter2 n ZI(Ψ2, Φ) est Nil a) Si iter2 < ZI(Ψ2, Φ) alors FIN. b) Sinon iter2 = iter2.pred2.1. If iter2 n ZI (Ψ 2 , Φ) is Nil a) If iter2 <ZI (Ψ 2 , Φ) then END. b) Otherwise iter2 = iter2.pred
2.2. retour du « tant que » 2 3. « tant que » iter2 n'est pas Nil2.2. return of "as long as" 2 3. "as long as" iter2 is not Nil
3.1 . Si iter2 < Zl (Ψ2, Φ) alors FIN.3.1. If iter2 <Zl (Ψ 2 , Φ) then FIN.
3.2. « tant que » iteri n'est pas Nil a) Si [iteri n iter2 n'est pas Nil alors passer à l'étape 3.3 b) Si iteri < iter2 alors FIN. c) iteri = iteM .pred d) retour « tant que » 3.23.2. "As long as" iteri is not Nil a) If [iteri n iter2 is not Nil then go to step 3.3 b) If iteri <iter2 then END. c) iteri = iteM .pred d) back "as long as" 3.2
3.3. Si [iteri chevauche iter2 à droite : a) alors adjoindre à gauche ((iter2.l, iter2.lb, iteri .ub, iteri .u) n (iter2.l, iter2.lb, iter2,ub + b, iter2.l) n Φ.w) dans Buffer b) sinon adjoindre à gauche iter2 dans Buffer3.3. If [iteri overlaps iter2 on the right: a) then add on the left ((iter2.l, iter2.lb, iteri .ub, iteri .u) n (iter2.l, iter2.lb, iter2, ub + b, iter2. l) n Φ.w) in Buffer b) else add left iter2 in Buffer
3.4. iter2 = iter2.pred3.4. iter2 = iter2.pred
3.5. retour du « tant que » 33.5. return of "as long as" 3
4. Raccorder Buffer à droite de Φ.LV4. Connect Buffer to the right of Φ.LV
5. FIN Calcul de Φ = Ψi S[a,b] Ψ2 avec a > 0 :5. END Calculation of Φ = Ψi S [a , b ] Ψ2 with a> 0:
1. iteri = Ψi.LV.Iast et iter2 = Ψ2.LV.Iast1. iteri = Ψi.LV.Iast and iter2 = Ψ 2 .LV.Iast
2. « tant que » iter2 n'est pas Nil faire : 2.1. Si iter2 n ZI(Ψ2) Φ) est Nil a) Si iter2 < ZI(Ψ2, Φ) alors FIN. b) Sinon iter2 = iter2.pred2. "as long as" iter2 is not Nil do: 2.1. If iter2 n ZI (Ψ 2) Φ) is Nil a) If iter2 <ZI (Ψ 2 , Φ) then END. b) Otherwise iter2 = iter2.pred
2.2. retour « tant que » 22.2. back "as long as" 2
3. « tant que » iter2 n'est pas Nil faire :3. "as long as" iter2 is not Nil do:
3.1. Si iter2 < ZI(Ψ2, Φ) alors FIN. 3.2. « tant que » iteri n'est pas Nil faire : a) Si [iteri n iter2 (rappel : [i est le fermé à gauche de i) n'est pas Nil3.1. If iter2 <ZI (Ψ 2 , Φ) then END. 3.2. "As long as" iteri is not Nil do: a) If [iteri n iter2 (reminder: [i is the closed to the left of i) is not Nil
• alors adjoindre à gauche (( ( [iteri n iter2) Θ [a, b]) n [iteri )) n Φ.w dans Buffer • sinon passer à l'étape 3.3 b) iteri = iteM .pred c) retour du « tant que » 3.2• then add on the left ((([iteri n iter2) Θ [a, b]) n [iteri)) n Φ.w in Buffer • otherwise go to step 3.3 b) iteri = iteM .pred c) return from "As long as" 3.2
3.3. iter2 = iter2.pred3.3. iter2 = iter2.pred
3.4. retour du « tant que » 3 4. Raccorder Buffer à droite de Φ.LV3.4. return of "as long as" 3 4. Connect Buffer to the right of Φ.LV
5. FIN5. END
Calcul de Φ = Ψ1 S[a,>] Ψ2 avec a > 0 :Calculation of Φ = Ψ1 S [a , > ] Ψ 2 with a> 0:
1. iteri = Ψi.LV.Iast et iter2 = Ψ2.LV.Iast 2. « tant que » iter2 n'est pas Nil faire :1. iteri = Ψi.LV.Iast and iter2 = Ψ 2 .LV.Iast 2. "as long as" iter2 is not Nil do:
2.1. Si iter2 n ZI(Ψ2, Φ) est Nil a) Si iter2 < ZI(Ψ2, Φ) alors FIN. b) Sinon iter2 = iter2.pred2.1. If iter2 n ZI (Ψ 2 , Φ) is Nil a) If iter2 <ZI (Ψ 2 , Φ) then END. b) Otherwise iter2 = iter2.pred
2.2. retour « tant que » 2 3. « tant que » iter2 n'est pas Nil faire : 3.1. Si iter2 < ZI(Ψ2, Φ) alors FIN.2.2. return "as long as" 2 3. "as long as" iter2 is not Nil do: 3.1. If iter2 <ZI (Ψ 2 , Φ) then END.
3.2. « tant que » iteri n'est pas Nil faire : a) Φ.lb e iteri alors adjoindre iteri à gauche dans Buffer et passer a l'étape 4 b) Si iter2 n [iteri (rappel : [i est le fermé à gauche de i) n'est pas Nil alors adjoindre (1 , iteri .Ib + a, iteri .ub, iteri .u) n Φ.w à gauche dans Buffer c) Sinon passer à l'étape 3.3 d) iteri = iteri .pred e) retour du « tant que » 3.23.2. «As long as» iteri is not Nil do: a) Φ.lb e iteri then add iteri on the left in Buffer and go to step 4 b) If iter2 n [iteri (reminder: [i is the closed on the left of i) is not Nil then add (1, iteri .Ib + a, iteri .ub, iteri .u) n Φ.w on the left in Buffer c) Otherwise proceed to step 3.3 d) iteri = iteri. pred e) return of "as long as" 3.2
3.3. iter2 = iter2.pred3.3. iter2 = iter2.pred
3.4. retour du « tant que » 33.4. return of "as long as" 3
4. Raccorder Buffer à droite de Φ.LV4. Connect Buffer to the right of Φ.LV
5. FIN5. END
Calcul de Φ = W1 S[o,>] Ψ2 :Calculation of Φ = W 1 S [o , > ] Ψ 2 :
1. iteri = Ψj.LV.Iast et iter2 = Ψ2.LV.Iast1. iteri = Ψj.LV.Iast and iter2 = Ψ 2 .LV.Iast
2. « tant que » iter2 n'est pas Nil2. "as long as" iter2 is not Nil
2.1. Si iter2 n ZI(Ψ2, Φ) est Nil a) Si iter2 < ZI(Ψ2, Φ) alors FIN. b) Sinon iter2 = iter2.pred2.1. If iter2 n ZI (Ψ 2 , Φ) is Nil a) If iter2 <ZI (Ψ 2 , Φ) then END. b) Otherwise iter2 = iter2.pred
2.2. retour du « tant que » 22.2. return of "as long as" 2
3. « tant que >> iter2 n'est pas Nil3. "as long as >> iter2 is not Nil
3.1. Si iter2 < ZI(Ψ2, Φ) alors FIN. 3.2. « tant que » iteri n'est pas Nil a) Si iter2 n [iteri n'est pas Nil alors passer à l'étape 3.3 b) Si iteri < iter2 alors FIN. c) iteri = iteri .pred d) retour « tant que » 3.2 3.3. Si [iteri chevauche iter2 à droite : a) alors adjoindre à gauche (iter2.l, iter2.lb, iteM .ub, iteri .u) n Φ.w à gauche dans Buffer b) sinon adjoindre iter2 n Φ.w à gauche dans Buffer3.1. If iter2 <ZI (Ψ 2 , Φ) then END. 3.2. "As long as" iteri is not Nil a) If iter2 n [iteri is not Nil then go to step 3.3 b) If iteri <iter2 then END. c) iteri = iteri .pred d) back "as long as" 3.2 3.3. If [iteri overlaps iter2 on the right: a) then add on the left (iter2.l, iter2.lb, iteM .ub, iteri .u) n Φ.w on the left in Buffer b) else add iter2 n Φ.w on the left in Buffer
3.4. iter2 = iter2.pred3.4. iter2 = iter2.pred
3.5. retour du « tant que » 33.5. return of "as long as" 3
4. Raccorder Buffer à droite de Φ. LV4. Connect Buffer to the right of Φ. LV
5. FIN 5. END

Claims

REVENDICATIONS
1 - Procédé permettant de générer un détecteur de comportements redoutés spécifiés en logique temporelle linéaire métrique d'un système dont le comportement est à surveiller caractérisé en ce qu'il comporte au moins les étapes suivantes mises en œuvre par un processeur :1 - Method for generating a detector of feared behaviors specified in metric linear time logic of a system whose behavior is to be monitored, characterized in that it comprises at least the following steps implemented by a processor:
• définir des variables caractéristiques du système à surveiller,• define characteristic variables of the system to be monitored,
• définir un certain nombre de propositions (P1, ..., pn} sur ces variables,• define a certain number of propositions (P 1 , ..., p n ) on these variables,
• définir la date de début d'observation : T_origine, • choisir une option sur la certitude initiale des formules• define the observation start date: Origin, • choose an option on the initial certainty of the formulas
• allouer en mémoire du détecteur un espace suffisant pour mémoriser un instantané relatif à ces propositions c'est-à-dire allouer une variable réelle notée Lt et n variables booléennes pour chaque proposition de {p-i, ..., pn}, si Pk est une proposition, I. pk dénote la variable booléenne associée à PR,• allocate in memory of the detector a sufficient space to memorize a snapshot relative to these propositions, that is to say, to allocate a real variable denoted Lt and n boolean variables for each proposition of {pi, ..., p n }, if P k is a proposition, I. p k denotes the Boolean variable associated with PR,
• définir une formule principale Φ, construite sur lesdites propositions (pi, ..., pn} traduisant un comportement redouté en utilisant un langage composé d'opérateurs logiques et d'opérateurs temporels portant sur le futur et le passé et dont la grammaire BNF est la suivante : φ ::= p | -i φ | φ! Λ φ2 | Cp1 v φ2 | F[a,b] φ I ψi U[a,b] ς>2 I ψi S[a,b]• define a principal formula Φ, built on the aforementioned propositions (pi, ..., pn) expressing a dreaded behavior by using a language composed of logical operators and temporal operators dealing with the future and the past and whose BNF grammar is the following: φ :: = p | -i φ | φ! Λ φ 2 | Cp 1 v φ 2 | F [a , b ] φ I ψi U [a , b ] ς> 2 I ψi S [a , b]
Φ2 | Cp1 S[a,>] ψ2 | P[a,b] ψ I P[a,>] ψ | ( ψ )Φ2 | Cp1 S [a ,>] ψ2 | P [a, b] ψ IP [a,>] ψ | (ψ)
Où p e (p-i, ..., pn} et dont le sens est le suivant : o L'opérateur -i est la négation, -iΦ est vraie à une date t si et seulement si Φ est fausse à cette date t, o L'opérateur Λ est appelé conjonction, la formule Φi Λ Φ2 n'est vraie à une date t que si Φi et Φ2 sont toutes deux vraies à cette date t, o L'opérateur v est appelé disjonction, la formule Φi v Φ2 est vraie à une date t si Φ^ ou Φ2 est vraie à cette date t, o L'opérateur F[a,t>] signifie « dans le futur, entre a et b » ou encore « il y aura entre a et b »,la formule F[a,bj Φ est vraie à une date t si et seulement s'il existe une date entre t+a et t+b où Φ est vraie, o L'opérateur P[a b] signifie « dans le passé, entre a et b » ou encore « il y a eu entre a et b », la formule P[a,bj Φ est vraie en t si et seulement s'il existe une date entre t-b et t-a où Φ est vraie, o L'opérateur P[a >] signifie : « au-delà de -a dans le passé », la formule P[a,>] Φ est vraie en t si et seulement s'il existe une date entre T_origine et t-a où Φ est vraie, o L'opérateur U[a b] signifie : « Φ2 sera vraie entre a et b et Φi sera partout vraie entre temps », la formule Φi U[a,b] Φ2 est vraie en t si et seulement s'il existe une date t' entre t+a et t+b où Φ2 est vraie et que Φi est partout vraie dans l'intervalle [t, t'[, o L'opérateur S[a,b] signifie : « Φ2 sera vraie vers le passé entre -b et -a et Φi sera partout vraie entre temps », la formule Φi S[a b] Where pe (pi, ..., p n } and whose meaning is as follows: o The operator -i is the negation, -iΦ is true at a date t if and only if Φ is false at this date t, o The operator Λ is called conjunction, the formula Φi Λ Φ 2 is true at a date t only if Φi and Φ 2 are both true at this date t, o The operator v is called disjunction, the formula Φi v Φ 2 is true at a date t if Φ ^ or Φ 2 is true at this date t, o The operator F [a , t > ] means "in the future, between a and b" or "there will be between a and b", the formula F [a , bj Φ is true at a date t if and only if there is a date between t + a and t + b where Φ is true, o The operator P [ab] means "in the past, between a and b" or "there was between a and b », The formula P [ a , bj Φ is true in t if and only if there exists a date between tb and ta where Φ is true, o The operator P [a>] means:« beyond -a in the past ", the formula P [a ,>] Φ is true in t if and only if there exists a date between T_origine and ta where Φ is true, o The operator U [ab] means:" Φ 2 will true between a and b and Φi will be everywhere true in the meantime ", the formula Φi U [ a , b] Φ2 is true in t if and only if there exists a date t 'between t + a and t + b where Φ 2 is true and that Φi is everywhere true in the interval [t, t '[, o The operator S [a, b] means: "Φ 2 will be true in the past between -b and -a and Φi s everywhere in the meantime ", the formula Φi S [ab]
Φ2 est vraie en t si et seulement s'il existe une date t' entre t-b et t-a où Φ2 est vraie et que Φi est partout vraie dans l'intervalle ]t\ t], o L'opérateur S[a,>] signifie : « Φ2 sera vraie vers le passé au-delà de -a et Φi sera partout vraie entre temps », la formule Φi S[a,>]Φ 2 is true in t if and only if there exists a date t 'between tb and ta where Φ 2 is true and Φi is everywhere true in the interval] t \ t], o The operator S [a, >] means: "Φ 2 will be true to the past beyond -a and Φi will be everywhere true in the meantime", the formula Φi S [a , > ]
Φ2 est vraie en t si et seulement s'il existe une date t' entre 0 et t-a où Φ2 est vraie et que Φi reste vraie dans l'intervalle ]t', t], • pour chaque sous-formule Ψ de Φ (y compris Φ elle-même), créer une variable notée Ψ.LV de type liste d'intervalles, et l'initialiser à vide, • pour toute sous-formule Ψ de Φ (y compris Φ elle-même) créer une variable booléenne Ψ.val, et l'initialiser à 0, • pour toute sous-formule Ψ de Φ (y compris Φ elle-même) créer une variable de type réel notée Ψ.rel_cert, appelée certitude relative de Ψ, et lui assigner la valeur Cert(Ψ) où Cert est la fonction caractérisée comme suit: o Cert(φ) = 0 si φ est une proposition de {pi , ..., pn} o Cert(φi Λ φ2) = sup (Cert(φ-ι), Cert(φ2)) o Cert(φi v φ2) = sup (Cert(φ-ι), Cert(φ2)) o Cert(F[a,b] φ) = Cert(φ) + b o Cert(φi U[a,b] Ψ2) = sup (Cert(φi), Cert(φ2) ) + b o Cert(P[a,b] φ) = Cert(φ) - a o Cert (P[a,>] φ) = Cert(φ) - a o Cert(φi S[a,b] 92 ) = sup (Cert(φ1), Cert(φ2) - a) o Cert(φi S[a,>] φ2 ) = sup (Cert(φ1), Cert(φ2) - a) • pour chaque sous-formule Ψ de Φ (y compris Φ elle-même) définir une variable réelle notée Ψ.abs_cert destinée à stocker la certitude absolue de Ψ. Selon l'option choisie pour la certitude des formules, pour chaque formule Ψ sous-formule de Φ, sa variable Ψ.abs_cert associée est initialisée à : o Option 1 : T_origine - Ψ.rel_cert o Option 2 : sup(T_origine, T_origine - Ψ.rel_cert)Φ 2 is true in t if and only if there exists a date t 'between 0 and ta where Φ 2 is true and Φi remains true in the interval] t', t], • for each sub-formula Ψ of Φ (including Φ itself), create a variable denoted Ψ.LV of type interval list, and initialize it empty, • for any sub-formula Ψ of Φ (including Φ itself) create a Boolean variable Ψ.val, and initialize it to 0, • for any subformula Ψ of Φ (including Φ itself) create a variable of real type denoted Ψ.rel_cert, called relative certainty of Ψ, and assign it the value Cert (Ψ) where Cert is the function characterized as follows: o Cert (φ) = 0 if φ is a proposition of {pi, ..., p n } o Cert (φi Λ φ 2 ) = sup (Cert (φ-ι), Cert (φ 2 )) o Cert (φi v φ 2 ) = sup (Cert (φ-ι), Cert (φ 2 )) o Cert (F [a , b] φ) = Cert (φ) + bo Cert (φi U [ a , b] Ψ2) = sup (Cert (φi), Cert (φ 2 )) + bo Cert (P [a, b ] φ) = Cert (φ) - ao Cert (P [a , > ] φ) = Cert (φ) - ao Cert (φi S [a, b ] 9 2 ) = sup (Cert (φ 1 ), Cert ( φ 2 ) - a) o Cert (φi S [a , >] φ 2 ) = sup (Cert (φ 1 ), Cert (φ 2 ) - a) • for each subformula Ψ of Φ (including Φ it itself) define a real variable denoted Ψ.abs_cert intended to store the absolute certainty of Ψ. Depending on the option chosen for the certainty of the formulas, for each formula Ψ sub-formula of Φ, its associated variable Ψ.abs_cert is initialized to: o Option 1: Origin_t - Ψ.rel_cert o Option 2: sup (Origin, Origin - Origin Ψ.rel_cert)
• pour chaque sous-formule Ψ de Φ (y compris Φ elle-même) créer une variable notée Ψ.w de type intervalle, appelée fenêtre de continuation de Ψ et l'initialiser à vide • de façon régulière ou périodique faire l'acquisition de la valeur des variables caractéristiques du système observé et mémoriser la date de cette acquisition,• for each sub-formula Ψ of Φ (including Φ itself) create a variable denoted Ψ.w of type interval, called continuation window of Ψ and initialize empty • regularly or periodically acquire the value of the characteristic variables of the observed system and memorize the date of this acquisition,
• en fonction des valeurs des variables caractéristiques issues de l'acquisition réalisée à l'étape précédente, évaluer la valeur booléenne des propositions et rafraîchir l'instantané I c'est-à-dire assigner la valeur booléenne de p à l.p pour chaque p s {pi, ..., pn} et assigner la date d'acquisition mémorisée à 1.1.• depending on the values of the characteristic variables resulting from the acquisition carried out in the previous step, evaluate the Boolean value proposals and refresh snapshot I that is to say assign the Boolean value of p to lp for each ps {pi, ..., p n } and assign the memorized acquisition date to 1.1.
• pour chaque rafraîchissement de l'instantané I tel que réalisé à l'étape précédente, pour chaque sous-formule Ψ de Φ (y compris Φ elle- même), et selon un ordre qui soit tel que toute formule soit traitée après ses sous-formules directes : o Actualiser sa fenêtre de continuation Ψ.w comme suit :• for each refresh of the snapshot I as performed in the previous step, for each sub-formula Ψ of Φ (including Φ itself), and in an order that is such that any formula is treated after its under -formulas: o Update its continuation window Ψ.w as follows:
• Si Ψ.w est vide : • Si (l.t - Ψ.rel_cert) > Ψ.abs_cert alors Ψ.w devient : [Ψ.abs_cert, l.t - Ψ.rel_cert] puis affecter à Ψ.abs_cert la valeur (l.t - Ψ.rel_cert)• If Ψ.w is empty: • If (lt - Ψ.rel_cert)> Ψ.abs_cert then Ψ.w becomes: [Ψ.abs_cert, lt - Ψ.rel_cert] then set Ψ.abs_cert to the value (lt - Ψ .rel_cert)
• Si (l.t - Ψ.rel_cert) < Ψ.abs_cert alors Ψ.w reste l'intervalle vide et Ψ.abs_cert reste inchangé - Si Ψ.w n'est pas vide alors :• If (l.t - Ψ.rel_cert) <Ψ.abs_cert then Ψ.w remains the empty interval and Ψ.abs_cert remains unchanged - If Ψ.w is not empty then:
• Ψ.w devient :] Ψ.abs_cert, l.t - Ψ.rel_cert]• Ψ.w becomes:] Ψ.abs_cert, l.t - Ψ.rel_cert]
• Affecter à Ψ.abs_cert la valeur (l.t - Ψ.rel_cert) o calculer de nouveaux intervalles de validité pour Ψ sur sa fenêtre de continuation Ψ.w o exploiter les informations contenues dans la liste de validité de la formule principale Φ et émettre un signal associé. o Attendre un nouveau rafraîchissement de l'instantané• Assign Ψ.abs_cert the value (lt - Ψ.rel_cert) o calculate new validity intervals for Ψ on its continuation window Ψ.wo use the information contained in the validity list of the main formula Φ and send a signal associated. o Wait for a new refresh of the snapshot
2 - Procédé selon la revendication 1 caractérisé en ce que, si Ψ est une formule purement booléenne l'étape de calcul de ses nouveaux intervalles comporte au moins les étapes suivantes : à toute proposition ou formule purement booléenne Ψ est associée une variable booléenne Ψ.val, si I est l'instantané, l.t correspond à la date portée par I et I. Ψ à la valeur de vérité que I attribue à Ψ, qui est calculée de la façon inductive suivante : si Ψ est une proposition p alors I.Ψ = l.p Si Ψ est -1Ψ1 alors I.Ψ = 1 - I.Ψ1 Si Ψ est ΨI Λ Ψ2 alors I.Ψ = I.Ψ1 * I.Ψ2 2 - Process according to claim 1, characterized in that, if Ψ is a purely Boolean formula, the step of calculating its new intervals comprises at least the following steps: to any proposition or purely Boolean formula Ψ is associated a Boolean variable Ψ. val if I is the snapshot, lt corresponds to the date carried by I and I. Ψ to the truth value that I assigns to Ψ, which is calculated in the following inductive way: if Ψ is a proposition p then I.Ψ = lp If Ψ is -1Ψ1 then I.Ψ = 1 - I.Ψ1 If Ψ is ΨI Λ Ψ 2 then I.Ψ = I.Ψ 1 * I.Ψ 2
Si Ψ est Ψ1 v Ψ2 alors I.Ψ = (I.Ψ1 + I.Ψ2) - (I.Ψ1 * I.Ψ2) initialiser (20) les valeurs de Ψ.val et de Ψ.LV, respectivement à 0 et à liste vide, attendre le rafraîchissement de l'instantané I (21 ), tester ensuite (22) la valeur de vérité I.Ψ:If Ψ is Ψ1 v Ψ 2 then I.Ψ = (I.Ψ1 + I.Ψ 2 ) - (I.Ψ1 * I.Ψ 2 ) initialize (20) the values of Ψ.val and Ψ.LV, respectively to 0 and empty list, wait for refresh of snapshot I (21), then test (22) the truth value I.Ψ:
Si I.Ψ est à 1 le procédé teste, étape (23), la valeur de Ψ.val :If I.Ψ is at 1 the process tests, step (23), the value of Ψ.val:
Si Ψ.val est à 1 alors, étape (24), le procédé remplace le dernier intervalle j de Ψ.LV par (j.l, j.lb, l.t, j.u)If Ψ.val is at 1 then, step (24), the process replaces the last interval j of Ψ.LV by (j.l, j.lb, l.t, j.u)
Si Ψ.val est à 0 alors, étape (25), le procédé ajoute à la fin de Ψ.LV le nouvel intervalle [l.t, l.t].If Ψ.val is at 0 then, step (25), the process adds at the end of Ψ.LV the new interval [l.t, l.t].
Si I. Ψ est à 0, alors le procédé teste la valeur de Ψ.val :If I. Ψ is 0, then the process tests the value of Ψ.val:
Si Ψ.val est à 1 , étape (26), alors le procédé remplace le dernier intervalle j de Ψ.LV par (j.l, j.lb, l.t, 0) (étape 28). Si Ψ.val est à 0, alors le procédé laisse Ψ.LV inchangé (étape 27). à la suite des étapes (24, 25, 27 et 28), affecter à Ψ.val la valeur actuelle de I.Ψ (29), puis retourner à l'étape (21 ) d'attente de rafraîchissement de I, le calcul se prolongeant tant que le procédé est maintenu en fonctionnement.If Ψ.val is at 1, step (26), then the method replaces the last interval j of Ψ.LV with (j.l, j.lb, l.t, 0) (step 28). If Ψ.val is at 0, then the process leaves Ψ.LV unchanged (step 27). following the steps (24, 25, 27 and 28), assign to Ψ.val the current value of I.Ψ (29), then return to the refresh standby step (21) of I, the calculation continuing as long as the process is maintained in operation.
3 - Procédé selon la revendication 1 caractérisé en ce que le calcul de nouveaux intervalles pour une formule qui n'est pas purement booléenne est fondée sur une opération propre à chaque opérateur, permettant de composer les listes de validité. 4 - Procédé selon les revendications 1 et 3 caractérisé en ce que, pour les formules non purement booléennes, le calcul des nouveaux intervalles sur la fenêtre de continuation peut-être est effectué de façon plus rapide grâce à une fonction Zl laquelle permet de déterminer, lors du calcul de nouveaux intervalles d'une formule non purement booléenne Φ les plages temporelles à considérer dans les listes de validité des sous-formules directes.3 - Process according to claim 1 characterized in that the calculation of new intervals for a formula that is not purely Boolean is based on an operation specific to each operator, to compose the validity lists. 4 - Process according to claims 1 and 3 characterized in that, for non-purely Boolean formulas, the calculation of the new intervals on the continuation window may be performed more quickly by a Zl function which allows to determine, when calculating new intervals of a non-purely Boolean formula Φ the time ranges to be considered in the validity lists of the direct sub-formulas.
5 - Procédé selon la revendication 1 caractérisé en ce que, si Ψ est sous- formule directe d'une formule Φ, les intervalles de Ψ ayant une influence sur le calcul de la liste de validité de Φ sur sa fenêtre de continuation Φ.w sont ceux qui ont une intersection non vide avec l'intervalle ZI(Ψ,Φ) calculé à l'aide de la fonction Zl définie comme suit :5 - Process according to claim 1 characterized in that, if Ψ is direct subformula of a formula Φ, the intervals of Ψ having an influence on the calculation of the validity list of Φ on its continuation window Φ.w are those that have a nonempty intersection with the interval ZI (Ψ, Φ) calculated using the Zl function defined as follows:
• ZI(Φ.^Φ) = (-Φ).w• ZI (Φ. ^ Φ) = (-Φ) .w
• ZI(Φ-| , (Φ-| Λ Φ2 )) = ZI(Φ2 , (Φi Λ Φ2 )) = (Φi Λ Φ2 ).W • ZI(Φ-| , (Φ-| V Φ2 )) = ZI(Φ2 , (Φ-| V Φ2 )) = (Φ-| V Φ2 ).W• ZI (Φ- |, (Φ- | Λ Φ 2 )) = ZI (Φ 2 , (Φi Λ Φ 2 )) = (Φi Λ Φ 2 ) .W • ZI (Φ- |, (Φ- | V Φ 2 )) = ZI (Φ 2 , (Φ- | V Φ 2 )) = (Φ- | V Φ 2 ) .W
• ZI(Φ, F[a,b] Φ) = (F[a,b] Φ).w Θ [a,b]• ZI (Φ, F [a , b ] Φ) = (F [a , b] Φ) .w Θ [a, b]
• Zl (Φ, P[a,b] Φ) = (P[a,b] Φ).w Θ [-b,-a]• Zl (Φ, P [a , b ] Φ) = (P [a , b] Φ) .w Θ [-b, -a]
• Zl (Φ, P[a,>]Φ) = (P[a,>] Φ).w Θ [-a, -a]• Zl (Φ, P [a , > ] Φ) = (P [a , > ] Φ) .w Θ [-a, -a]
• ZI(Φi, (Φi UIa,b] Φ2)) = (Φi U[a,b] Φ2).w Θ [a,b] • ZI(Φ2, ^1 U[a,b] Φ2)) = (Φi U[a,bl Φ2)-W Θ [a,b]• ZI (Φi, (Φi U Ia , b] Φ2)) = (Φi U [a, b] Φ 2 ) .w Θ [a, b] • ZI (Φ 2 , ^ 1 U [a , b] Φ 2 )) = (Φi U [a , bl Φ 2 ) -W Θ [a, b]
• Zl (Φi, (Φi S[a,b] Φ2 )) = (Φi S[a,b] Φ2 ) θ [-b,-a]• Zl (Φi, (Φi S [a , b] Φ 2 )) = (Φi S [a , b] Φ 2 ) θ [-b, -a]
• ZI(Φ2j (Φi S[a,b] Φ2 )) = (Φi S[a,b] Φ2 ) Θ [-b,-a]• ZI (Φ 2j (Φi S [a , b] Φ2)) = (Φi S [a , b] Φ 2 ) Θ [-b, -a]
• ZKΦL (ΦI S[a,>] Φ2 )) = ((Φi S[a,>] Φ2 ).w Θ [-a, -a])• ZKΦL (ΦI S [a , >] Φ 2 )) = ((Φi S [a , > ] Φ 2 ) .w Θ [-a, -a])
• ZI(Φ2, (Φ1 S[a,>] Φ2 )) = ((Φi S[a,>] Φ2 ).w Θ [-a, -a])• ZI (Φ 2 , (Φ 1 S [a , >] Φ 2 )) = ((Φi S [a , > ] Φ 2 ) .w Θ [-a, -a])
6 - Procédé selon l'une des revendications 1 à 5 caractérisé en ce qu'il comporte en plus les étapes suivantes, après rafraîchissement de l'instantané et calcul de la continuation : • fixer la date absolue d'inutilité Φ.abs_di de la formule principale à la borne supérieure de sa fenêtre de continuation Φ.w. Si Φ.w est vide alors Φ.abs_di n'est pas définie,6 - Method according to one of claims 1 to 5 characterized in that it further comprises the following steps, after refresh of the snapshot and calculation of the continuation: • set the absolute useless date Φ.abs_di of the main formula to the upper bound of its continuation window Φ.w. If Φ.w is empty then Φ.abs_di is not defined,
• Si la date Φ. abs_di est définie : o attribuer à chaque sous-formule Ψ de la formule principale• If the date Φ. abs_di is defined: o assign to each sub-formula Ψ of the main formula
Φ sa date absolue d'inutilité propre Ψ.abs_di qui est égale à Φ.abs_di + DI(Ψ) soit la somme de la date fixée pour la formule principale et de la valeur renvoyée par une fonction d'inutilité Dl appliquée à Ψ, o éliminer, pour toute sous-formule Ψ de la principale ΦΦ its absolute uselessness date Ψ.abs_di which is equal to Φ.abs_di + DI (Ψ) is the sum of the date fixed for the main formula and the value returned by a useless function Dl applied to Ψ, o eliminate, for any sub-formula Ψ of the main Φ
(principale comprise), les intervalles de sa liste de validité propre Ψ.LV qui sont antérieurs à sa date d'inutilité absolue propre Ψ.abs_di.(including principal), the intervals of its own validity list Ψ.LV which are prior to its date of absolute uselessness Ψ.abs_di.
7 - Procédé selon la revendication 1 caractérisé en ce qu'il attribue une date d'inutilité relative à toutes les sous-formules {Φ1; ..., Φn} de la formule principale Φ (y compris elle-même). Cette date est calculée grâce à une fonction d'inutilité Dl laquelle doit satisfaire toutes les contraintes suivantes :7 - Process according to claim 1 characterized in that it assigns a useless date relative to all the sub-formulas {Φ 1; ..., Φ n } of the main formula Φ (including itself). This date is calculated thanks to a function of uselessness Dl which must satisfy all the following constraints:
• DI(Φ) = 0 (0 pour la formule principale) Et pour i,j e [1,n]• DI (Φ) = 0 (0 for the main formula) And for i, j e [1, n]
• DI(Φι) < DIHΦi)• DI (Φι) <DIHΦi)
• DI(Φi) ≤ DI(ΦiΛΦj)• DI (Φi) ≤ DI (ΦiΛΦj)
• DI(Φj) < DI(ΦiΛΦj)• DI (Φj) <DI (ΦiΛΦj)
• DI(Φi) < DI(ΦiVΦj) • DI(Φj) < DI(ΦiVΦj)• DI (Φi) <DI (ΦiVΦj) • DI (Φj) <DI (ΦiVΦj)
• DΙ(Φi) < DI(F[a,b] Φ,) + a• DΙ (Φi) <DI (F [a, b] Φ,) + a
• DI(Φ|) ≤ DI(P[a,b] Φι) -b• DI (Φ |) ≤ DI (P [a, b] Φι) -b
• DI(Φ|) < DI(P[a,>] Φι)-a• DI (Φ |) <DI (P [a,> ] Φι) -a
• DI(Φ|) ≤ DI(Φ| U[a,b] Φj) + a • DI(Φj) < DI(ΦiU[a,b] Φj) + a • DI(Φ,) < DI(Φ, S[a,b] Φj) - b • DI (Φ |) ≤ DI (Φ | U [a , b] Φj) + a • DI (Φj) <DI (ΦiU [a, b] Φj) + a • DI (Φ,) <DI (Φ, S [a , b] Φj) - b
• DI(Φj) < Dl (Φι S[a,>] Φj) - a Pour éliminer le maximum d'intervalles on pourra choisir comme fonction Dl celle qui assigne pour chaque sous-formule la plus grande la valeur permise par la contrainte la plus forte.• DI (Φj) <Dl (Φι S [a , > ] Φj) - a To eliminate the maximum of intervals we will be able to choose as function Dl the one which assigns for each sub-formula the greatest the value allowed by the stress the stronger.
8 - Procédé selon la revendication 1 caractérisé en ce que le signal émis est un signal déclenchant une alarme et/ou un signal de déclenchement d'une commande pour contrôler un processus, ou encore l'émission d'un rapport signalant l'anomalie détectée.8 - Process according to claim 1 characterized in that the transmitted signal is a signal triggering an alarm and / or a trigger signal of a command to control a process, or the issuing of a report signaling the detected anomaly .
9 - Système permettant de générer un détecteur de comportements redoutés spécifiés en logique temporelle linéaire métrique, à mémoire bornée, caractérisé en ce qu'il comporte au moins les éléments suivants : Une entrée recevant un ou plusieurs paramètre(s) caractéristique(s) de l'état du système à surveiller, et une horloge H indiquant la date d'acquisition de ce(s) paramètre(s), • Un processeur adapté à exécuter les étapes du procédé selon l'une des revendications 1 à 10 en utilisant le(s) paramètre(s) mesuré(s) et la date associée,9 - System for generating a detector of feared behaviors specified in metric linear time logic, with bounded memory, characterized in that it comprises at least the following elements: An input receiving one or more parameter (s) characteristic (s) of the state of the system to be monitored, and a clock H indicating the date of acquisition of this parameter (s), • A processor adapted to perform the steps of the method according to one of claims 1 to 10 using the measured parameter (s) and the associated date,
• Une mémoire (14) adaptée à o mémoriser l'instantané courant o mémoriser les listes de validité LV déterminées par la mise en œuvre du procédé pour la formule principale et ses sous- formules,A memory (14) adapted to store the instantaneous snapshot memory of the validity lists LV determined by the implementation of the method for the main formula and its sub-formulas,
• Une sortie (1 6) émettant un signal SC correspondant aux informations contenues dans la liste de validité pour la formule principale et émettre ledit signal. 10 - Système selon la revendication 9 caractérisé en ce qu'il comporte un dispositif d'affichage piloté par le signal correspondant aux informations contenues dans la liste de validité pour la formule principale.• An output (1 6) transmitting a signal SC corresponding to the information contained in the validity list for the main formula and outputting said signal. 10 - System according to claim 9 characterized in that it comprises a display device controlled by the signal corresponding to the information contained in the validity list for the main formula.
11 - Système selon la revendication 9 caractérisé en ce que le signal obtenu est transmis à un dispositif de génération d'une alarme et/ou à un système de contrôle ou de régulation du système placé sous la surveillance d'un moniteur généré selon le procédé selon l'une des revendications 1 à 10. 11 - System according to claim 9 characterized in that the signal obtained is transmitted to a device for generating an alarm and / or a system control or regulation system under the supervision of a monitor generated according to the method according to one of claims 1 to 10.
EP09782492A 2008-09-02 2009-09-02 Method and system for generating a supervision device from specified feared behaviours Ceased EP2321728A2 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR0804812A FR2935500B1 (en) 2008-09-02 2008-09-02 METHOD AND SYSTEM FOR GENERATING A DEVICE FOR CONTROLLING SPECIFIC REDUCED BEHAVIOR
PCT/EP2009/061318 WO2010026150A2 (en) 2008-09-02 2009-09-02 Method and system for generating a supervision device from specified feared behaviours

Publications (1)

Publication Number Publication Date
EP2321728A2 true EP2321728A2 (en) 2011-05-18

Family

ID=40351954

Family Applications (1)

Application Number Title Priority Date Filing Date
EP09782492A Ceased EP2321728A2 (en) 2008-09-02 2009-09-02 Method and system for generating a supervision device from specified feared behaviours

Country Status (3)

Country Link
EP (1) EP2321728A2 (en)
FR (1) FR2935500B1 (en)
WO (1) WO2010026150A2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104057452A (en) * 2014-06-30 2014-09-24 西北工业大学 Universal action debugging method for human-like robot

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107728639B (en) * 2017-09-08 2020-11-10 哈尔滨工程大学 Heterogeneous multi-AUV system task coordination method under time window constraint

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
None *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104057452A (en) * 2014-06-30 2014-09-24 西北工业大学 Universal action debugging method for human-like robot

Also Published As

Publication number Publication date
WO2010026150A3 (en) 2010-06-10
FR2935500B1 (en) 2018-02-09
WO2010026150A2 (en) 2010-03-11
FR2935500A1 (en) 2010-03-05

Similar Documents

Publication Publication Date Title
CN107690616B (en) Streaming join in a constrained memory environment
WO2010070142A2 (en) Method and system for merging data or information
EP2364467B1 (en) Method for recognising sequential patterns for a method for fault message processing
CA2505943C (en) Monitoring the robustness of the modelling of a physical system
EP3846046A1 (en) Method and system for processing data for the preparation of a data set
FR2949161A1 (en) DEVICE FOR SYSTEM DIAGNOSIS
FR3067326A1 (en) METHOD AND SYSTEM FOR PERMITTING COMPONENT CONTROL REDUNDANCY IN A DIGITAL NETWORK OF INTELLIGENT DETECTION DEVICES
Dey et al. Modeling relationship between post-release faults and usage in mobile software
EP2321728A2 (en) Method and system for generating a supervision device from specified feared behaviours
Burns et al. Reasoning about smart city
FR3105862A1 (en) METHOD AND SYSTEM FOR SELECTING A LEARNING MODEL WITHIN A PLURALITY OF LEARNING MODELS
FR2954537A1 (en) METHOD AND DEVICE FOR PERFORMING A MAINTENANCE FUNCTION
EP3881515B1 (en) System for the formal supervision of communications
EP3846047A1 (en) Method and system for identifying relevant variables
CA2314521A1 (en) Automatic specification production method
FR2889325A1 (en) SOFTWARE COMPONENT ARCHITECTURE FOR EXECUTION PLATFORM APPLICATIONS PROVIDING ACCESS TO THE METAPROGRAM LEVEL
FR2968809A1 (en) METHOD AND APPARATUS FOR GENERATING A CONTROL SYSTEM FROM SPECIFIC REDUCED BEHAVIOR
Vacura Modeling artificial agents’ actions in context–a deontic cognitive event ontology
US11182271B2 (en) Performance analysis using content-oriented analysis
EP4033361B1 (en) Method and device for determining at least one machine involved in an anomaly detected in a complex computer infrastructure
WO2017108924A1 (en) Method for detecting computer module testability problems
FR2999318A1 (en) METHOD FOR EVALUATING THE OPERATING SAFETY OF A COMPLEX SYSTEM
FR3024788A1 (en) METHOD OF VERIFYING TRACEABILITY OF FIRST INSTRUCTIONS IN A PROCEDURAL PROGRAMMING LANGUAGE GENERATED FROM SECOND INSTRUCTIONS IN A MODELING LANGUAGE
FR3134674A1 (en) Method and device for communicating data representative of graphic objects generated from data representative of a set of electronic messages
Henriksson Outlier Detection as a Safety Measure for Safety Critical Deep Learning

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 20110302

AK Designated contracting states

Kind code of ref document: A2

Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO SE SI SK SM TR

AX Request for extension of the european patent

Extension state: AL BA RS

DAX Request for extension of the european patent (deleted)
17Q First examination report despatched

Effective date: 20170207

REG Reference to a national code

Ref country code: DE

Ref legal event code: R003

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION HAS BEEN REFUSED

18R Application refused

Effective date: 20190411