let yyact = [|
  (fun _ -> failwith "parser")
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 1 : 'options) in
    let _2 = (Parsing.peek_val __caml_parser_env 0 : 'states) in
    Obj.repr(
# 85 "src/ltl_to_acsl/yaparser.mly"
                   ( 
  List.iter (fun(key, ids) -> begin
    match key with
      "init"   -> List.iter (fun id -> try 
        (Hashtbl.find observed_states id).init <- True
      with
        Not_found -> begin Ltl_to_acsl_option.error "Error: no state '%s'\n" id; exit 1 end) ids

    | "accept" -> List.iter (fun id -> try
        (Hashtbl.find observed_states id).acceptation <- True
      with Not_found -> begin Ltl_to_acsl_option.error "Error: no state '%s'\n" id; exit 1 end) ids
    | oth      -> begin Ltl_to_acsl_option.error "Error: unknown option '%s'\n" oth; exit 1 end
    ;
  end) _1
;
           let states=
             Hashtbl.fold (fun _ st l -> 
               if st.acceptation=Undefined or st.init=Undefined then
                 begin
                   Ltl_to_acsl_option.fatal "Error: the state '%s' is used but never defined.\n" st.name
                 end;
               st::l
                          ) observed_states []
           in 
           Data_for_ltl.setLtl_expressions observed_expressions;
           Ltl_logic.setLtl_expressions observed_expressions;
           let n=ref 0 in
           let transitions = Ltl_logic.simplifyTrans _2 in
           List.iter (fun t -> t.numt<-(!n); n:=!n+1) transitions;
           
           ((states , transitions),observed_vars,observed_funcs)
        )
# 316 "src/ltl_to_acsl/yaparser.ml"
               : (Promelaast.buchautomata * (string, string) Hashtbl.t * (string, string) Hashtbl.t)))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 1 : 'options) in
    let _2 = (Parsing.peek_val __caml_parser_env 0 : 'option) in
    Obj.repr(
# 121 "src/ltl_to_acsl/yaparser.mly"
                   ( _1@[_2] )
# 324 "src/ltl_to_acsl/yaparser.ml"
               : 'options))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 0 : 'option) in
    Obj.repr(
# 122 "src/ltl_to_acsl/yaparser.mly"
                   ( [_1] )
# 331 "src/ltl_to_acsl/yaparser.ml"
               : 'options))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 3 : string) in
    let _4 = (Parsing.peek_val __caml_parser_env 1 : 'opt_identifiers) in
    Obj.repr(
# 126 "src/ltl_to_acsl/yaparser.mly"
                                                        ( (_2, _4) )
# 339 "src/ltl_to_acsl/yaparser.ml"
               : 'option))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'opt_identifiers) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : string) in
    Obj.repr(
# 130 "src/ltl_to_acsl/yaparser.mly"
                                     ( _1@[_3] )
# 347 "src/ltl_to_acsl/yaparser.ml"
               : 'opt_identifiers))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 0 : string) in
    Obj.repr(
# 131 "src/ltl_to_acsl/yaparser.mly"
                                     ( [_1] )
# 354 "src/ltl_to_acsl/yaparser.ml"
               : 'opt_identifiers))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 1 : 'states) in
    let _2 = (Parsing.peek_val __caml_parser_env 0 : 'state) in
    Obj.repr(
# 139 "src/ltl_to_acsl/yaparser.mly"
                 ( _1@_2 )
# 362 "src/ltl_to_acsl/yaparser.ml"
               : 'states))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 0 : 'state) in
    Obj.repr(
# 140 "src/ltl_to_acsl/yaparser.mly"
          ( _1 )
# 369 "src/ltl_to_acsl/yaparser.ml"
               : 'states))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 3 : string) in
    let _3 = (Parsing.peek_val __caml_parser_env 1 : 'transitions) in
    Obj.repr(
# 145 "src/ltl_to_acsl/yaparser.mly"
                                            (
      let start_state = fetch_and_create_state _1 in
      List.map (fun(cross,stop_state) -> { start=start_state; stop=stop_state;
                                           cross=cross;       numt=(-1) }) _3 )
# 380 "src/ltl_to_acsl/yaparser.ml"
               : 'state))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'transitions) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'transition) in
    Obj.repr(
# 153 "src/ltl_to_acsl/yaparser.mly"
                                ( _1@[_3] )
# 388 "src/ltl_to_acsl/yaparser.ml"
               : 'transitions))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 0 : 'transition) in
    Obj.repr(
# 154 "src/ltl_to_acsl/yaparser.mly"
               ( [_1] )
# 395 "src/ltl_to_acsl/yaparser.ml"
               : 'transitions))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 3 : 'guard) in
    let _5 = (Parsing.peek_val __caml_parser_env 0 : string) in
    Obj.repr(
# 159 "src/ltl_to_acsl/yaparser.mly"
                                          ( (_2, fetch_and_create_state _5) )
# 403 "src/ltl_to_acsl/yaparser.ml"
               : 'transition))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 0 : string) in
    Obj.repr(
# 160 "src/ltl_to_acsl/yaparser.mly"
                      ( (PTrue, fetch_and_create_state _2) )
# 410 "src/ltl_to_acsl/yaparser.ml"
               : 'transition))
; (fun __caml_parser_env ->
    let _3 = (Parsing.peek_val __caml_parser_env 1 : string) in
    Obj.repr(
# 167 "src/ltl_to_acsl/yaparser.mly"
     ( if not (Hashtbl.mem observed_funcs _3) then Hashtbl.add observed_funcs _3 _3 ; PCallOrReturn _3 )
# 417 "src/ltl_to_acsl/yaparser.ml"
               : 'guard))
; (fun __caml_parser_env ->
    let _3 = (Parsing.peek_val __caml_parser_env 1 : string) in
    Obj.repr(
# 169 "src/ltl_to_acsl/yaparser.mly"
     ( if not (Hashtbl.mem observed_funcs _3) then Hashtbl.add observed_funcs _3 _3 ; PCall _3 )
# 424 "src/ltl_to_acsl/yaparser.ml"
               : 'guard))
; (fun __caml_parser_env ->
    let _3 = (Parsing.peek_val __caml_parser_env 1 : string) in
    Obj.repr(
# 171 "src/ltl_to_acsl/yaparser.mly"
     ( if not (Hashtbl.mem observed_funcs _3) then Hashtbl.add observed_funcs _3 _3 ; PReturn _3 )
# 431 "src/ltl_to_acsl/yaparser.ml"
               : 'guard))
; (fun __caml_parser_env ->
    Obj.repr(
# 173 "src/ltl_to_acsl/yaparser.mly"
            ( PTrue )
# 437 "src/ltl_to_acsl/yaparser.ml"
               : 'guard))
; (fun __caml_parser_env ->
    Obj.repr(
# 175 "src/ltl_to_acsl/yaparser.mly"
            ( PFalse )
# 443 "src/ltl_to_acsl/yaparser.ml"
               : 'guard))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 0 : 'guard) in
    Obj.repr(
# 177 "src/ltl_to_acsl/yaparser.mly"
     ( PNot _2 )
# 450 "src/ltl_to_acsl/yaparser.ml"
               : 'guard))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'guard) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'guard) in
    Obj.repr(
# 179 "src/ltl_to_acsl/yaparser.mly"
     ( PAnd (_1,_3) )
# 458 "src/ltl_to_acsl/yaparser.ml"
               : 'guard))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'guard) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'guard) in
    Obj.repr(
# 181 "src/ltl_to_acsl/yaparser.mly"
            ( POr (_1,_3) )
# 466 "src/ltl_to_acsl/yaparser.ml"
               : 'guard))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 1 : 'guard) in
    Obj.repr(
# 183 "src/ltl_to_acsl/yaparser.mly"
     ( _2 )
# 473 "src/ltl_to_acsl/yaparser.ml"
               : 'guard))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 0 : 'logic_relation) in
    Obj.repr(
# 185 "src/ltl_to_acsl/yaparser.mly"
     ( 

              let id = get_fresh_ident () in
              let (pred,exp) = _1 in
              Hashtbl.add observed_expressions id 
                (exp, (Pretty_utils.sfprintf "%a" Cil.d_exp exp), pred);
              (*Ltlast.LIdent(id)*)

              Hashtbl.add observed_vars id id ; 
              PIndexedExp id  
            )
# 490 "src/ltl_to_acsl/yaparser.ml"
               : 'guard))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'arith_relation) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'arith_relation) in
    Obj.repr(
# 203 "src/ltl_to_acsl/yaparser.mly"
                                     (
    ( Cil_types.Prel(Cil_types.ReqLogic_utils.expr_to_term _1,
                                      Logic_utils.expr_to_term _3),
      Cil.new_exp(Cil_types.BinOp(Cil_types.Eq, _1 , _3 , Cil.intType)) ) )
# 501 "src/ltl_to_acsl/yaparser.ml"
               : 'logic_relation))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'arith_relation) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'arith_relation) in
    Obj.repr(
# 207 "src/ltl_to_acsl/yaparser.mly"
                                     (
    ( Cil_types.Prel(Cil_types.RltLogic_utils.expr_to_term _1,
                                    Logic_utils.expr_to_term _3),
      Cil.new_exp(Cil_types.BinOp(Cil_types.Lt, _1 , _3 , Cil.intType)) ) )
# 512 "src/ltl_to_acsl/yaparser.ml"
               : 'logic_relation))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'arith_relation) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'arith_relation) in
    Obj.repr(
# 211 "src/ltl_to_acsl/yaparser.mly"
                                     ( 
    ( Cil_types.Prel(Cil_types.RgtLogic_utils.expr_to_term _1,
                                    Logic_utils.expr_to_term _3),
      Cil.new_exp(Cil_types.BinOp(Cil_types.Gt, _1 , _3 , Cil.intType)) ) )
# 523 "src/ltl_to_acsl/yaparser.ml"
               : 'logic_relation))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'arith_relation) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'arith_relation) in
    Obj.repr(
# 215 "src/ltl_to_acsl/yaparser.mly"
                                      (
    ( Cil_types.Prel(Cil_types.RleLogic_utils.expr_to_term _1,
                                    Logic_utils.expr_to_term _3),
      Cil.new_exp(Cil_types.BinOp(Cil_types.Le, _1 , _3 , Cil.intType)) ) )
# 534 "src/ltl_to_acsl/yaparser.ml"
               : 'logic_relation))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'arith_relation) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'arith_relation) in
    Obj.repr(
# 219 "src/ltl_to_acsl/yaparser.mly"
                                     (
    ( Cil_types.Prel(Cil_types.RgeLogic_utils.expr_to_term _1,
                                    Logic_utils.expr_to_term _3),
      Cil.new_exp(Cil_types.BinOp(Cil_types.Ge, _1 , _3 , Cil.intType) )) )
# 545 "src/ltl_to_acsl/yaparser.ml"
               : 'logic_relation))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'arith_relation) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'arith_relation) in
    Obj.repr(
# 223 "src/ltl_to_acsl/yaparser.mly"
                                      (
    ( Cil_types.Prel(Cil_types.Rneq,Logic_utils.expr_to_term _1,
                                    Logic_utils.expr_to_term _3),
      Cil.new_exp(Cil_types.BinOp(Cil_types.Ne, _1 , _3 , Cil.intType) )) )
# 556 "src/ltl_to_acsl/yaparser.ml"
               : 'logic_relation))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 0 : 'arith_relation) in
    Obj.repr(
# 227 "src/ltl_to_acsl/yaparser.mly"
                   (
    ( Cil_types.Prel(Cil_types.Rneq,Logic_utils.expr_to_term _1,
                     Logic_const.term(Cil_types.TConst(Cil_types.CInt64(Int64.of_int 0,Cil_types.IInt,Some("0"))))
                       (Cil_types.Ctype Cil.intType)), _1) )
# 566 "src/ltl_to_acsl/yaparser.ml"
               : 'logic_relation))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'arith_relation_mul) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'arith_relation) in
    Obj.repr(
# 235 "src/ltl_to_acsl/yaparser.mly"
                                           (
    Cil.new_exp (Cil_types.BinOp(Cil_types.PlusA, _1 , _3 , Cil.intType)) )
# 575 "src/ltl_to_acsl/yaparser.ml"
               : 'arith_relation))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'arith_relation_mul) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'arith_relation) in
    Obj.repr(
# 237 "src/ltl_to_acsl/yaparser.mly"
                                            (
    Cil.new_exp (Cil_types.BinOp(Cil_types.MinusA, _1 , _3 , Cil.intType)) )
# 584 "src/ltl_to_acsl/yaparser.ml"
               : 'arith_relation))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 0 : 'arith_relation_mul) in
    Obj.repr(
# 239 "src/ltl_to_acsl/yaparser.mly"
                       ( _1 )
# 591 "src/ltl_to_acsl/yaparser.ml"
               : 'arith_relation))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'arith_relation_mul) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'access_or_const) in
    Obj.repr(
# 244 "src/ltl_to_acsl/yaparser.mly"
                                             (
    Cil.new_exp (Cil_types.BinOp(Cil_types.Div, _1 , _3 , Cil.intType)) )
# 600 "src/ltl_to_acsl/yaparser.ml"
               : 'arith_relation_mul))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'arith_relation_mul) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'access_or_const) in
    Obj.repr(
# 246 "src/ltl_to_acsl/yaparser.mly"
                                            (
    Cil.new_exp (Cil_types.BinOp(Cil_types.Mult, _1 , _3 , Cil.intType)) )
# 609 "src/ltl_to_acsl/yaparser.ml"
               : 'arith_relation_mul))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'arith_relation_mul) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'access_or_const) in
    Obj.repr(
# 248 "src/ltl_to_acsl/yaparser.mly"
                                               (
    Cil.new_exp (Cil_types.BinOp(Cil_types.Mod, _1 , _3 , Cil.intType)) )
# 618 "src/ltl_to_acsl/yaparser.ml"
               : 'arith_relation_mul))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 0 : 'access_or_const) in
    Obj.repr(
# 250 "src/ltl_to_acsl/yaparser.mly"
                    ( _1 )
# 625 "src/ltl_to_acsl/yaparser.ml"
               : 'arith_relation_mul))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 0 : string) in
    Obj.repr(
# 256 "src/ltl_to_acsl/yaparser.mly"
            ( Cil.new_exp (Cil_types.Const(Cil_types.CInt64(Int64.of_string _1,Cil_types.IIntSome(_1)))))
# 632 "src/ltl_to_acsl/yaparser.ml"
               : 'access_or_const))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 0 : 'access) in
    Obj.repr(
# 258 "src/ltl_to_acsl/yaparser.mly"
            ( Cil.new_exp (Cil_types.Lval(_1)) )
# 639 "src/ltl_to_acsl/yaparser.ml"
               : 'access_or_const))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 1 : 'arith_relation) in
    Obj.repr(
# 260 "src/ltl_to_acsl/yaparser.mly"
     ( _2 )
# 646 "src/ltl_to_acsl/yaparser.ml"
               : 'access_or_const))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'access) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : string) in
    Obj.repr(
# 268 "src/ltl_to_acsl/yaparser.mly"
            ( 
                            
              let (my_host,my_offset) = (_1) in
              
              let new_offset = Utils_parser.add_offset my_offset (Utils_parser.get_new_offset my_host my_offset _3) in
              (my_host,new_offset)
                         
                            
                             (*Ltl_to_acsl_option.fatal "NOT YET IMPLEMENTED : A.B structure filed access." *))
# 662 "src/ltl_to_acsl/yaparser.ml"
               : 'access))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 0 : 'access_array) in
    Obj.repr(
# 278 "src/ltl_to_acsl/yaparser.mly"
     (_1)
# 669 "src/ltl_to_acsl/yaparser.ml"
               : 'access))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 3 : 'access_array) in
    let _3 = (Parsing.peek_val __caml_parser_env 1 : 'access_or_const) in
    Obj.repr(
# 282 "src/ltl_to_acsl/yaparser.mly"
     ( Cil.addOffsetLval (Cil_types.Index (_3,Cil_types.NoOffset)) _1)
# 677 "src/ltl_to_acsl/yaparser.ml"
               : 'access_array))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 0 : 'access_leaf) in
    Obj.repr(
# 283 "src/ltl_to_acsl/yaparser.mly"
                    (_1)
# 684 "src/ltl_to_acsl/yaparser.ml"
               : 'access_array))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 0 : 'access) in
    Obj.repr(
# 288 "src/ltl_to_acsl/yaparser.mly"
 ( Ltl_to_acsl_option.fatal "NOT YET IMPLEMENTED : *A dereferencement access." )
# 691 "src/ltl_to_acsl/yaparser.ml"
               : 'access_leaf))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 0 : string) in
    Obj.repr(
# 290 "src/ltl_to_acsl/yaparser.mly"
     ( Cil.var ( Data_for_ltl.get_varinfo _1) )
# 698 "src/ltl_to_acsl/yaparser.ml"
               : 'access_leaf))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 1 : 'access) in
    Obj.repr(
# 292 "src/ltl_to_acsl/yaparser.mly"
     ( _2 )
# 705 "src/ltl_to_acsl/yaparser.ml"
               : 'access_leaf))
(* Entry main *)
; (fun __caml_parser_env -> raise (Parsing.YYexit (Parsing.peek_val __caml_parser_env 0)))
|]