123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368openParseropenParser.MenhirInterpreterletstring_of_token=function|WITH->"WITH"|WHEN->"WHEN"|VARIABLE->"VARIABLE"|UNDERSCORE->"UNDERSCORE"|TZn->Printf.sprintf"TZ(%s)"(Big_int.string_of_big_intn)|TRUE->"TRUE"|TRANSITION->"TRANSITION"|TRANSFER->"TRANSFER"|TO->"TO"|THEOREM->"THEOREM"|THEN->"THEN"|STRINGs->Printf.sprintf"STRING(%s)"s|STATES->"STATES"|SPECIFICATION->"SPECIFICATION"|SORTED->"SORTED"|SOME->"SOME"|SEMI_COLON->"SEMI_COLON"|SECURITY->"SECURITY"|RPAREN->"RPAREN"|RETURN->"RETURN"|REQUIRE->"REQUIRE"|REFUSE_TRANSFER->"REFUSE_TRANSFER"|REF->"REF"|RECORD->"RECORD"|RBRACKET->"RBRACKET"|RBRACE->"RBRACE"|RATIONAL(d,n)->Printf.sprintf"RATIONAL(%s, %s)"(Big_int.string_of_big_intd)(Big_int.string_of_big_intn)|POSTCONDITION->"POSTCONDITION"|PREDICATE->"PREDICATE"|PLUSEQUAL->"PLUSEQUAL"|PLUS->"PLUS"|PIPE->"PIPE"|PERCENTRBRACKET->"PERCENTRBRACKET"|PERCENT->"PERCENT"|PARTITION->"PARTITION"|OTHERWISE->"OTHERWISE"|OREQUAL->"OREQUAL"|OR->"OR"|OPTION->"OPTION"|ON->"ON"|OF->"OF"|NUMBERn->Printf.sprintf"NUMBER(%s)"(Big_int.string_of_big_intn)|NOT->"NOT"|NONE->"NONE"|NEQUAL->"NEQUAL"|NAMESPACE->"NAMESPACE"|MULTEQUAL->"MULTEQUAL"|MULT->"MULT"|MTZn->Printf.sprintf"MTZ(%s)"(Big_int.string_of_big_intn)|MINUSEQUAL->"MINUSEQUAL"|MINUS->"MINUS"|MATCH->"MATCH"|LPAREN->"LPAREN"|LET->"LET"|LESSEQUAL->"LESSEQUAL"|LESS->"LESS"|LEMMA->"LEMMA"|LBRACKETPERCENT->"LBRACKETPERCENT"|LBRACKET->"LBRACKET"|LBRACE->"LBRACE"|ITER->"ITER"|INVARIANT->"INVARIANT"|INVALID_EXPR->"INVALID_EXPR"|INVALID_EFFECT->"INVALID_EFFECT"|INVALID_DECL->"INVALID_DECL"|INSTANCE->"INSTANCE"|INITIALIZED->"INITIALIZED"|INITIAL->"INITIAL"|IN->"IN"|IMPLY->"IMPLY"|IF->"IF"|IDENTIFIED->"IDENTIFIED"|IDENTs->Printf.sprintf"IDENT(%s)"s|GREATEREQUAL->"GREATEREQUAL"|GREATER->"GREATER"|FUNCTION->"FUNCTION"|FROM->"FROM"|FORALL->"FORALL"|FOR->"FOR"|FALSE->"FALSE"|FAILIF->"FAILIF"|EXTENSION->"EXTENSION"|EXISTS->"EXISTS"|EQUIV->"EQUIV"|EQUAL->"EQUAL"|EOF->"EOF"|ENUM->"ENUM"|END->"END"|ELSE->"ELSE"|EFFECT->"EFFECT"|DURATIONs->Printf.sprintf"DURATION(%s)"s|DOT->"DOT"|DIVEQUAL->"DIVEQUAL"|DIV->"DIV"|DEFINITION->"DEFINITION"|DATEs->Printf.sprintf"DATE(%s)"s|CONTRACT->"CONTRACT"|CONSTANT->"CONSTANT"|COMMA->"COMMA"|COLONEQUAL->"COLONEQUAL"|COLONCOLON->"COLONCOLON"|COLON->"COLON"|COLLECTION->"COLLECTION"|CALLED->"CALLED"|BY->"BY"|BUT->"BUT"|BREAK->"BREAK"|BACK->"BACK"|AT_UPDATE->"AT_UPDATE"|AT_REMOVE->"AT_REMOVE"|AT_ADD->"AT_ADD"|AT->"AT"|ASSET->"ASSET"|ASSERT->"ASSERT"|ARCHETYPE->"ARCHETYPE"|ANDEQUAL->"ANDEQUAL"|AND->"AND"|ADDRESSs->Printf.sprintf"DURATION(%s)"s|ACTION->"ACTION"|ACCEPT_TRANSFER->"ACCEPT_TRANSFER"letstring_of_symbol=function|X(TT_error)->"error"|X(TT_WITH)->"with"|X(TT_WHEN)->"when"|X(TT_VARIABLE)->"variable"|X(TT_UNDERSCORE)->"_"|X(TT_TZ)->"a tz"|X(TT_TRUE)->"true"|X(TT_TRANSITION)->"transition"|X(TT_TRANSFER)->"transfer"|X(TT_TO)->"to"|X(TT_THEOREM)->"theorem"|X(TT_THEN)->"then"|X(TT_STRING)->"a string"|X(TT_STATES)->"states"|X(TT_SPECIFICATION)->"postcondition"|X(TT_SORTED)->"sorted"|X(TT_SOME)->"some"|X(TT_SEMI_COLON)->";"|X(TT_SECURITY)->"security"|X(TT_RPAREN)->")"|X(TT_RETURN)->"return"|X(TT_REQUIRE)->"require"|X(TT_REFUSE_TRANSFER)->"refuse transfer"|X(TT_REF)->"ref"|X(TT_RECORD)->"record"|X(TT_RBRACKET)->"]"|X(TT_RBRACE)->"}"|X(TT_RATIONAL)->"rational"|X(TT_PREDICATE)->"predicate"|X(TT_POSTCONDITION)->"postcondition"|X(TT_PLUSEQUAL)->"+="|X(TT_PLUS)->"+"|X(TT_PIPE)->"|"|X(TT_PERCENTRBRACKET)->"%]"|X(TT_PERCENT)->"%"|X(TT_PARTITION)->"partition"|X(TT_OTHERWISE)->"otherwise"|X(TT_OREQUAL)->"|="|X(TT_OR)->"or"|X(TT_OPTION)->"option"|X(TT_ON)->"on"|X(TT_OF)->"of"|X(TT_NUMBER)->"a number"|X(TT_NOT)->"not"|X(TT_NONE)->"none"|X(TT_NEQUAL)->"<>"|X(TT_NAMESPACE)->"namespace"|X(TT_MULTEQUAL)->"*="|X(TT_MULT)->"*"|X(TT_MTZ)->"a mtz"|X(TT_MINUSEQUAL)->"-="|X(TT_MINUS)->"-"|X(TT_MATCH)->"match"|X(TT_LPAREN)->"("|X(TT_LET)->"let"|X(TT_LESSEQUAL)->"<="|X(TT_LESS)->"<"|X(TT_LEMMA)->"lemma"|X(TT_LBRACKETPERCENT)->"[%"|X(TT_LBRACKET)->"["|X(TT_LBRACE)->"{"|X(TT_ITER)->"iter"|X(TT_INVARIANT)->"invariant"|X(TT_INVALID_EXPR)->"invalid-expression"|X(TT_INVALID_EFFECT)->"invalid-effect"|X(TT_INVALID_DECL)->"invalid-declaration"|X(TT_INSTANCE)->"instance"|X(TT_INITIALIZED)->"initialized"|X(TT_INITIAL)->"initial"|X(TT_IN)->"in"|X(TT_IMPLY)->"->"|X(TT_IF)->"if"|X(TT_IDENTIFIED)->"identified"|X(TT_IDENT)->"an ident"|X(TT_GREATEREQUAL)->">="|X(TT_GREATER)->">"|X(TT_FUNCTION)->"function"|X(TT_FROM)->"from"|X(TT_FORALL)->"forall"|X(TT_FOR)->"for"|X(TT_FALSE)->"false"|X(TT_FAILIF)->"failif"|X(TT_EXTENSION)->"extension"|X(TT_EXISTS)->"exists"|X(TT_EQUIV)->"<->"|X(TT_EQUAL)->"="|X(TT_EOF)->"end-of-file"|X(TT_ENUM)->"enum"|X(TT_END)->"end"|X(TT_ELSE)->"else"|X(TT_EFFECT)->"effect"|X(TT_DURATION)->"duration"|X(TT_DOT)->"."|X(TT_DIVEQUAL)->"/="|X(TT_DIV)->"/"|X(TT_DEFINITION)->"definition"|X(TT_DATE)->"a date"|X(TT_CONTRACT)->"contract"|X(TT_CONSTANT)->"constant"|X(TT_COMMA)->","|X(TT_COLONEQUAL)->":="|X(TT_COLONCOLON)->"::"|X(TT_COLON)->":"|X(TT_COLLECTION)->"collection"|X(TT_CALLED)->"called"|X(TT_BY)->"by"|X(TT_BUT)->"but"|X(TT_BREAK)->"break"|X(TT_BACK)->"back"|X(TT_AT_UPDATE)->"@update"|X(TT_AT_REMOVE)->"@remove"|X(TT_AT_ADD)->"@add"|X(TT_AT)->"at"|X(TT_ASSET)->"asset"|X(TT_ASSERT)->"assert"|X(TT_ARCHETYPE)->"archetype"|X(TT_ANDEQUAL)->"&="|X(TT_AND)->"and"|X(TT_ADDRESS)->"an address"|X(TT_ACTION)->"action"|X(TT_ACCEPT_TRANSFER)->"accept address"|X(NN_specification_fun)->"a specification function"|X(NN_specification_decl)->"a specification declaration"|X(NN_spec_items)->"a list of specification item"|X(NN_vc_decl_VARIABLE_)->"a variable declaration"|X(NN_vc_decl_CONSTANT_)->"a constant declaration"|X(NN_variable)->"a variable"|X(NN_value_option)->"a value option"|X(NN_types)->"types"|X(NN_type_s_unloc)->"types"|X(NN_type_r)->"a type"|X(NN_list_loc_spec_variable__)->"a list of specification variable item"|X(NN_list_loc_spec_theorem__)->"a list of specification theorem item"|X(NN_list_loc_spec_postcondition__)->"a list of specification postcondition item"|X(NN_list_loc_spec_predicate__)->"a list of specification predicate item"|X(NN_list_loc_spec_lemma__)->"a list of specification lemma item"|X(NN_list_loc_spec_effect__)->"a list of specification effect item"|X(NN_list_loc_spec_definition__)->"a list of specification definition item"|X(NN_list_loc_spec_assert__)->"a list of specification assert item"|X(NN_transition_to_item)->"a transition to item"|X(NN_transition)->"a transition"|X(NN_start_expr)->"a start expression"|X(NN_snl2_COMMA_simple_expr_)->"a non empty list of simple expression separated by ,"|X(NN_snl2_OR_security_arg_)->"a non empty list of security argument separated by OR"|X(NN_security_arg_unloc)->"a security argument"|X(NN_security_arg_ext_unloc)->"a security argument"|X(NN_security_decl_unloc)->"a security declaration"|X(NN_security_decl)->"a security declaration"|X(NN_nonempty_list_security_arg_)->"a non empty list of security argument"|X(NN_simple_expr_r)->"a simple expression"|X(NN_signature)->"a signature"|X(NN_separated_nonempty_list_SEMI_COLON_record_item_)->"a non empty list of record item by ;"|X(NN_separated_nonempty_list_COMMA_type_t_)->"a non empty list of type separated by ,"|X(NN_separated_nonempty_list_COMMA_security_arg_)->"a non empty list of security arg"|X(NN_require)->"a require"|X(NN_record_item)->"a record item"|X(NN_pattern)->"a pattern"|X(NN_order_operations)->"order operations"|X(NN_order_operation)->"an order operation"|X(NN_option_with_effect_)->"a with effect option"|X(NN_option_specification_fun_)->"a specification function option"|X(NN_option_simple_expr_)->"a simple expression option"|X(NN_option_value_options_)->"a value option"|X(NN_option_require_value_)->"a require option"|X(NN_option_require_)->"a require option"|X(NN_option_on_value_)->"a on value option"|X(NN_option_function_return_)->"a function return option"|X(NN_option_failif_)->"a failif option"|X(NN_option_extensions_)->"extensions option"|X(NN_option_effect_)->"an effect option"|X(NN_option_default_value_)->"a default value option"|X(NN_option_calledby_)->"a call by option"|X(NN_option_bracket_asset_operation__)->"a list of asset operation"|X(NN_option_asset_options_)->"assets option"|X(NN_option_asset_fields_)->"asset fields option"|X(NN_on_value)->"on value"|X(NN_nonempty_list_value_option_)->"a non empty list of value option"|X(NN_nonempty_list_type_tuple_)->"a non empty list of type tuple"|X(NN_nonempty_list_transition_to_item_)->"a non empty list of transition to item"|X(NN_nonempty_list_signature_)->"a non empty list of signature"|X(NN_nonempty_list_pipe_ident_)->"a non empty list of pipe identifier"|X(NN_nonempty_list_loc_pattern__)->"a non empty list of pattern"|X(NN_nonempty_list_ident_typ_q_item_)->"a non empty list of typed identifier"|X(NN_nonempty_list_ident_)->"a non empty list of identifier"|X(NN_nonempty_list_function_arg_)->"a non empty list of function argument"|X(NN_nonempty_list_extension_)->"a non empty list of extension"|X(NN_nonempty_list_enum_option_)->"a non empty list of enum"|X(NN_nonempty_list_declaration_)->"a non empty list of declaration"|X(NN_nonempty_list_branch_)->"a non empty list of branch"|X(NN_nonempty_list_asset_option_)->"a non empty list of asset option"|X(NN_nonempty_list_asset_operation_enum_)->"a non empty list of asset operation enum"|X(NN_namespace)->"a namespace"|X(NN_main)->"archetype"|X(NN_loption_separated_nonempty_list_COMMA_security_arg__)->"a non empty list of security arg"|X(NN_literal)->"a literal"|X(NN_list_function_item_)->"a list of item function"|X(NN_list_invars_)->"a list of invariants"|X(NN_list_asset_post_option_)->"a list of asset post option"|X(NN_implementation_archetype)->"an archetype implementation"|X(NN_instance)->"an instance declaration"|X(NN_ident_typ_q)->"an item of type"|X(NN_function_item)->"an item function"|X(NN_function_decl)->"a function declaration"|X(NN_field_r)->"a field"|X(NN_failif)->"a failif"|X(NN_extension_r)->"an extension"|X(NN_expr_r)->"an expression"|X(NN_equal_enum_values)->"enum values with equal operator"|X(NN_enum_values)->"enum values"|X(NN_enum_option)->"an enum option"|X(NN_enum)->"an enum"|X(NN_effect)->"an effect"|X(NN_dextension)->"a extension declaration"|X(NN_declaration_r)->"a declaration"|X(NN_contract)->"a contract"|X(NN_constant)->"a constant"|X(NN_calledby)->"called by"|X(NN_branch)->"branch"|X(NN_boption_REF_)->"ref option"|X(NN_boption_BACK_)->"back option"|X(NN_asset_post_option)->"asset post option"|X(NN_asset_option)->"an asset option"|X(NN_asset)->"an asset"|X(NN_archetype_r)->"archetype"|X(NN_archetype_extension)->"an extension"|X(NN_archetype)->"archetype"|X(NN_action_properties)->"action properties"|X(NN_action)->"an action"|X(NN_snl_SEMI_COLON_security_item_)->"a non empty list of security item"|X(NN_sl_SEMI_COLON_security_item_)->"a list of security item"|X(NN_snl_SEMI_COLON_field_)->"a non empty list of field"|X(NN_sl_SEMI_COLON_field_)->"a list of field"|X(NN_snl_SEMI_COLON_label_expr_)->"a non empty list of label expr"|X(NN_label_expr_unloc)->"a label expr"letstring_of_item(p,i)=string_of_symbol(lhsp)^" -> "^String.concat" "(List.mapi(funjs->(ifj=ithen"."else"")^string_of_symbols)(rhsp))^(ifi=List.length(rhsp)then"."else"")