

{"id":317,"date":"2012-12-20T14:13:59","date_gmt":"2012-12-20T13:13:59","guid":{"rendered":"https:\/\/project.inria.fr\/plasma-lab\/?page_id=317"},"modified":"2015-08-04T17:18:59","modified_gmt":"2015-08-04T15:18:59","slug":"property-language","status":"publish","type":"page","link":"https:\/\/project.inria.fr\/plasma-lab\/documentation\/languages\/property-language\/","title":{"rendered":"Bounded Linear Temporal Logic"},"content":{"rendered":"<p>Our property logic is based on a <strong>Bounded Linear Temporal Logic<\/strong> (B-LTL). This logic enhance Linear Temporal Logic (LTL) operators with <strong>bounds<\/strong> expressed in <strong>step or time units<\/strong>. These bounds gives the length of the run on which the nested formula must hold.<\/p>\n<p>Any decidable property on states or runs can be used in the formulas including nested B-LTL operators.<\/p>\n<p>Thus, the semantic of our B-LTL logic is the semantic of LTL logic restricted to a time interval.<\/p>\n<div class=\"alert alert-success\" role=\"alert\"><p class=\"printonly\"><strong>Important!<\/strong><\/p><\/p>\n<p class=\"first-p\">For a quick introduction to LTL you could read the wikipedia article on <strong><a href=\"http:\/\/en.wikipedia.org\/wiki\/Linear_temporal_logic\">Linear Temporal Logic<\/a><\/strong>.<\/p>\n<p><\/div>\n<hr \/>\n<h3>B-LTL Grammar<\/h3>\n<p>The grammar accepted by our BLTL plugin is the following:<\/p>\n<pre lang=\"bnf\" line=\"0\">Property ::= ( ('declare' Variable (';' Variable)*)?\r\n               ('optimize' Variable (';' Variable)*)?\r\n               'end')? Formula\r\nFormula ::= 'F <=' Bound Formula\r\n    | 'G <=' Bound Formula\r\n    | Formula 'U <=' Bound Formula\r\n    | Formula 'W <=' Bound Formula\r\n    | 'X' ('<=' Bound)? Formula      \r\n    | Formula '&#038;' Formula\r\n    | Formula '|' Formula\r\n    | Formula '=>' Formula\r\n    | '!' Formula\r\n    | '(' Formula ')'\r\n    | 'true'\r\n    | 'false'\r\n    | Numerical Operator Numerical\r\nBound ::= ('#')? Numerical\r\nVariable ::= ident ':=' (Interval | number)\r\nInterval ::= '['number';'number';'number']'\r\nNumerical ::= ident | number\r\nOperator ::=  '<' | '<' | '!=' | '=' | '>=' | '>' | '+' | '-' | '*' | '\/' \r\n<\/pre>\n<p>The difference with classical Linear Temporal Logic is that temporal operators (F, G, X, U and W) are bounded by a temporal bound. This bound may either be a number of steps (using the syntax <= # Numerical) or a real-time bound (using the syntax <= Numerical). If the model is untimed, the two syntax are equivalent.\n\n\n\n<h3>Optimisation<\/h3>\n<p>It is possible to declare a new variable in a BLTL property and assign a range of values to it. This generates a set of BLTL formulas that can be checked simultaneously by some SMC algorithms. For instance:<br \/>\n<div class=\"alert alert-success\" role=\"alert\"><p class=\"printonly\"><strong>Important!<\/strong><\/p>declare K:=[5;10;5] end<br \/>\nF&lt;=#(K) &#8220;eat&#8221;<\/div><br \/>\ngenerates a property whose temporal bound is successively 5 and 10.<\/p>\n<p>It is also possible to optimize existing variables in the model and assign similarly a range of initial values to it. When checking such a property several initial states will be successively checked by the SMC algorithm.For instance:<br \/>\n<div class=\"alert alert-success\" role=\"alert\"><p class=\"printonly\"><strong>Important!<\/strong><\/p>optimize p1:=[0;5;1]  end<br \/>\nF&lt;=#5 &#8220;eat&#8221;<\/div><br \/>\nwill check the property for each values of the variable p1 from 0 to 5 with an increment of 1.<\/p>\n<p>For more information look at the tutorial on <strong><a href=\"https:\/\/project.inria.fr\/plasma-lab\/how-to-use-the-optimization-panel\/\">optimisation<\/a><\/strong>.<\/p>\n<hr \/>\n<h3>Nested B-LTL<\/h3>\n<p>We added a new &#8220;nested probability&#8221; operator. This operator allows you to check, within a property, if a sub-property&#8217;s probability is superior or equal to a given probability. To do this we extended the B-LTL grammar with a new nested transition:<\/p>\n<pre lang=\"bnf\" line=\"0\">Property::=\r\n    'Pr >=' number '['Property']'<\/pre>\n<hr \/>\n<h3 id=\"ABLTL\">Adaptive BLTL (A-BLTL)<\/h3>\n<p>We have extended the grammar of BLTL with two adaptive operators that observe adaptive transitions in stochastic adaptive systems (SAS). The grammar of the new logic is the following:<\/p>\n<pre lang=\"bnf\" line=\"0\">Property ::= ( ('declare' Variable (';' Variable)*)?\r\n               ('optimize' Variable (';' Variable)*)?\r\n               'end')? Formula\r\nFormula ::= BLTL_Formula\r\n    | BLTL_Formula '; [' Trigger ',' Trigger '] ==>' Formula\r\n    | BLTL_Formula '; [' Trigger ',' Trigger '] <=' Bound '==>' Formula\r\n    | BLTL_Formula '==> [' Trigger ',' Trigger '] ;' Formula\r\n    | BLTL_Formula_Formula '==> [' Trigger ',' Trigger '] <=' Bound ';' Formula Trigger ::=      Trigger '=>' Trigger\r\n    | Trigger '&' Trigger\r\n    | '!' Trigger\r\n    | '(' Trigger ')'\r\n    | 'true'\r\n    | 'false'\r\n    | Numerical Operator Numerical\r\nBound ::= ('#')? Numerical\r\nVariable ::= ident ':=' (Interval | number)\r\nInterval ::= '['number';'number';'number']'\r\nNumerical ::=  ident | ident \"'\" | number\r\nOperator ::=  '<' | '<' | '!=' | '=' | '>=' | '>' | '+' | '-' | '*' | '\/' <\/pre>\n<p>As presented above, the two adaptive operators of A-BLTL can be either bounded or unbounded. Informally the semantics of these operators is the following:<\/p>\n<ul>\n<li>BLTL Property &#8216;==&gt; [&#8216; Trigger &#8216;,&#8217; Trigger &#8216;] ;&#8217; Property, is satisfied by an execution if the first BLTL property is satisfied by the first state and there exists an adaptive transition that satisfies the tiggers and the second property is satisfied by the state reached just after the adaptive transition.<\/li>\n<li>BLTL Property &#8216;; [&#8216; Trigger &#8216;,&#8217; Trigger &#8216;] ==&gt;&#8217; Property, is satisfied by an execution if when the first BLTL property is satisfied by the first state and there exists an adaptive transition that satisfies the tiggers, then the second property is satisfied by the state reached just after the adaptive transition. Therefore in this semantics it is not necessary to observe an adaptive transition in order to satisfy the property.<\/li>\n<\/ul>\n<p>The triggers are Boolean expressions over the variables of the model. The first trigger is evaluated on the state just before an adaptive transition, while the second is evaluated on the state reached just after the adaptive transition. To specifiy expressions, A-BLTL include an additional prime operator on identifiers that test if a variable exists and returns false in the contrary.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Our property logic is based on a Bounded Linear Temporal Logic (B-LTL). This logic enhance Linear Temporal Logic (LTL) operators with bounds expressed in step or time units. These bounds gives the length of the run on which the nested formula must hold. Any decidable property on states or runs\u2026<\/p>\n<p> <a class=\"continue-reading-link\" href=\"https:\/\/project.inria.fr\/plasma-lab\/documentation\/languages\/property-language\/\"><span>Continue reading<\/span><i class=\"crycon-right-dir\"><\/i><\/a> <\/p>\n","protected":false},"author":234,"featured_media":0,"parent":234,"menu_order":0,"comment_status":"closed","ping_status":"open","template":"","meta":{"footnotes":""},"class_list":["post-317","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/project.inria.fr\/plasma-lab\/wp-json\/wp\/v2\/pages\/317","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/project.inria.fr\/plasma-lab\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/project.inria.fr\/plasma-lab\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/project.inria.fr\/plasma-lab\/wp-json\/wp\/v2\/users\/234"}],"replies":[{"embeddable":true,"href":"https:\/\/project.inria.fr\/plasma-lab\/wp-json\/wp\/v2\/comments?post=317"}],"version-history":[{"count":58,"href":"https:\/\/project.inria.fr\/plasma-lab\/wp-json\/wp\/v2\/pages\/317\/revisions"}],"predecessor-version":[{"id":2124,"href":"https:\/\/project.inria.fr\/plasma-lab\/wp-json\/wp\/v2\/pages\/317\/revisions\/2124"}],"up":[{"embeddable":true,"href":"https:\/\/project.inria.fr\/plasma-lab\/wp-json\/wp\/v2\/pages\/234"}],"wp:attachment":[{"href":"https:\/\/project.inria.fr\/plasma-lab\/wp-json\/wp\/v2\/media?parent=317"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}