-- Copyright 2020 United States Government as represented by the Administrator -- of the National Aeronautics and Space Administration. All Rights Reserved. -- -- Disclaimers -- -- Licensed under the Apache License, Version 2.0 (the "License"); you may -- not use this file except in compliance with the License. You may obtain a -- copy of the License at -- -- https://www.apache.org/licenses/LICENSE-2.0 -- -- Unless required by applicable law or agreed to in writing, software -- distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -- WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -- License for the specific language governing permissions and limitations -- under the License. -- This is a simplified grammar of SMV temporal logic expressions. This grammar -- allows for the presence of tags around some expressions, which some tools -- that produce SMV include in expressions. entrypoints BoolSpec; BoolSpecSignal. BoolSpec9 ::= Ident; BoolSpecConst. BoolSpec9 ::= BoolConst ; BoolSpecNum. BoolSpec9 ::= NumExpr; BoolSpecCmp. BoolSpec8 ::= BoolSpec8 OrdOp BoolSpec9; BoolSpecNeg. BoolSpec7 ::= "!" BoolSpec8; BoolSpecAnd. BoolSpec6 ::= BoolSpec6 "&" BoolSpec7; BoolSpecOr. BoolSpec5 ::= BoolSpec5 "|" BoolSpec6; BoolSpecXor. BoolSpec4 ::= BoolSpec4 "xor" BoolSpec5; BoolSpecImplies. BoolSpec3 ::= BoolSpec3 "->" BoolSpec4; BoolSpecEquivs. BoolSpec2 ::= BoolSpec2 "<->" BoolSpec3; BoolSpecOp1. BoolSpec1 ::= OpOne BoolSpec2; BoolSpecOp2. BoolSpec ::= BoolSpec OpTwo BoolSpec1; _ . BoolSpec9 ::= "(" BoolSpec ")"; _ . BoolSpec9 ::= "" BoolSpec ""; _ . BoolSpec9 ::= "" BoolSpec ""; _ . BoolSpec8 ::= BoolSpec9 ; _ . BoolSpec7 ::= BoolSpec8 ; _ . BoolSpec6 ::= BoolSpec7 ; _ . BoolSpec5 ::= BoolSpec6 ; _ . BoolSpec4 ::= BoolSpec5 ; _ . BoolSpec3 ::= BoolSpec4 ; _ . BoolSpec2 ::= BoolSpec3 ; _ . BoolSpec1 ::= BoolSpec2 ; _ . BoolSpec ::= BoolSpec1 ; NumId . NumExpr2 ::= Ident ; NumConstI . NumExpr2 ::= Integer ; NumConstD . NumExpr2 ::= Double; NumAdd . NumExpr1 ::= NumExpr1 AdditiveOp NumExpr2; NumMult . NumExpr ::= NumExpr MultOp NumExpr1; _ . NumExpr2 ::= "(" NumExpr ")" ; _ . NumExpr1 ::= NumExpr2 ; _ . NumExpr ::= NumExpr1; OpPlus . AdditiveOp ::= "+" ; OpMinus . AdditiveOp ::= "-" ; OpTimes . MultOp ::= "*" ; OpDiv . MultOp ::= "/" ; BoolConstTrue. BoolConst ::= "TRUE"; BoolConstFalse. BoolConst ::= "FALSE"; BoolConstFTP. BoolConst ::= "FTP"; BoolConstLAST. BoolConst ::= "LAST"; Op1Alone . OpOne ::= Op1Name; Op1MTL. OpOne ::= Op1Name "[" OrdOp Number "]"; Op1MTLRange. OpOne ::= Op1Name "[" Number "," Number "]"; NumberInt . Number ::= Integer; _ . Number ::= "" Number ""; _ . Number ::= "" Number ""; OrdOpLT . OrdOp ::= "<"; OrdOpLE . OrdOp ::= "<="; OrdOpEQ . OrdOp ::= "="; OrdOpNE . OrdOp ::= "!="; OrdOpGT . OrdOp ::= ">"; OrdOpGE . OrdOp ::= ">="; Op1Pre. Op1Name ::= "pre"; Op1X. Op1Name ::= "X"; Op1G. Op1Name ::= "G"; Op1F. Op1Name ::= "F"; Op1Y. Op1Name ::= "Y"; Op1Z. Op1Name ::= "Z"; Op1Hist. Op1Name ::= "H"; Op1O. Op1Name ::= "O"; Op2S. OpTwo ::= "S"; Op2T. OpTwo ::= "T"; Op2V. OpTwo ::= "V"; Op2U. OpTwo ::= "U";