open Preamble open BitVectorTrie open Graphs open Order open Registers open FrontEndVal open Hide open ByteValues open GenMem open FrontEndMem open Division open Z open BitVectorZ open Pointers open Coqlib open Values open FrontEndOps open CostLabel open Proper open PositiveMap open Deqsets open ErrorMessages open PreIdentifiers open Errors open Extralib open Lists open Positive open Identifiers open Exp open Arithmetic open Vector open Div_and_mod open Util open FoldStuff open BitVector open Jmeq open Russell open List open Setoids open Monad open Option open Extranat open Bool open Relations open Nat open Integers open Types open AST open Hints_declaration open Core_notation open Pts open Logic open RTLabs_syntax (** val is_cost_label : RTLabs_syntax.statement -> Bool.bool **) let is_cost_label = function | RTLabs_syntax.St_skip x -> Bool.False | RTLabs_syntax.St_cost (x, x0) -> Bool.True | RTLabs_syntax.St_const (x, x0, x1, x2) -> Bool.False | RTLabs_syntax.St_op1 (x, x0, x1, x2, x3, x4) -> Bool.False | RTLabs_syntax.St_op2 (x, x0, x1, x2, x3, x4, x5, x6) -> Bool.False | RTLabs_syntax.St_load (x, x0, x1, x2) -> Bool.False | RTLabs_syntax.St_store (x, x0, x1, x2) -> Bool.False | RTLabs_syntax.St_call_id (x, x0, x1, x2) -> Bool.False | RTLabs_syntax.St_call_ptr (x, x0, x1, x2) -> Bool.False | RTLabs_syntax.St_cond (x, x0, x1) -> Bool.False | RTLabs_syntax.St_return -> Bool.False (** val cost_label_of : RTLabs_syntax.statement -> CostLabel.costlabel Types.option **) let cost_label_of = function | RTLabs_syntax.St_skip x -> Types.None | RTLabs_syntax.St_cost (s0, x) -> Types.Some s0 | RTLabs_syntax.St_const (x, x0, x1, x2) -> Types.None | RTLabs_syntax.St_op1 (x, x0, x1, x2, x3, x4) -> Types.None | RTLabs_syntax.St_op2 (x, x0, x1, x2, x3, x4, x5, x6) -> Types.None | RTLabs_syntax.St_load (x, x0, x1, x2) -> Types.None | RTLabs_syntax.St_store (x, x0, x1, x2) -> Types.None | RTLabs_syntax.St_call_id (x, x0, x1, x2) -> Types.None | RTLabs_syntax.St_call_ptr (x, x0, x1, x2) -> Types.None | RTLabs_syntax.St_cond (x, x0, x1) -> Types.None | RTLabs_syntax.St_return -> Types.None (** val well_cost_labelled_statement : RTLabs_syntax.statement Graphs.graph -> RTLabs_syntax.statement -> Bool.bool **) let well_cost_labelled_statement g s = (match s with | RTLabs_syntax.St_skip x -> (fun _ -> Bool.True) | RTLabs_syntax.St_cost (x, x0) -> (fun _ -> Bool.True) | RTLabs_syntax.St_const (x, x0, x1, x2) -> (fun _ -> Bool.True) | RTLabs_syntax.St_op1 (x, x0, x1, x2, x3, x4) -> (fun _ -> Bool.True) | RTLabs_syntax.St_op2 (x, x0, x1, x2, x3, x4, x5, x6) -> (fun _ -> Bool.True) | RTLabs_syntax.St_load (x, x0, x1, x2) -> (fun _ -> Bool.True) | RTLabs_syntax.St_store (x, x0, x1, x2) -> (fun _ -> Bool.True) | RTLabs_syntax.St_call_id (x, x0, x1, x2) -> (fun _ -> Bool.True) | RTLabs_syntax.St_call_ptr (x, x0, x1, x2) -> (fun _ -> Bool.True) | RTLabs_syntax.St_cond (x, l1, l2) -> (fun _ -> Bool.andb (is_cost_label (Identifiers.lookup_present PreIdentifiers.LabelTag g l1)) (is_cost_label (Identifiers.lookup_present PreIdentifiers.LabelTag g l2))) | RTLabs_syntax.St_return -> (fun _ -> Bool.True)) __ (** val successors : RTLabs_syntax.statement -> Graphs.label List.list **) let rec successors = function | RTLabs_syntax.St_skip l -> List.Cons (l, List.Nil) | RTLabs_syntax.St_cost (x, l) -> List.Cons (l, List.Nil) | RTLabs_syntax.St_const (x, x0, x1, l) -> List.Cons (l, List.Nil) | RTLabs_syntax.St_op1 (x, x0, x1, x2, x3, l) -> List.Cons (l, List.Nil) | RTLabs_syntax.St_op2 (x, x0, x1, x2, x3, x4, x5, l) -> List.Cons (l, List.Nil) | RTLabs_syntax.St_load (x, x0, x1, l) -> List.Cons (l, List.Nil) | RTLabs_syntax.St_store (x, x0, x1, l) -> List.Cons (l, List.Nil) | RTLabs_syntax.St_call_id (x, x0, x1, l) -> List.Cons (l, List.Nil) | RTLabs_syntax.St_call_ptr (x, x0, x1, l) -> List.Cons (l, List.Nil) | RTLabs_syntax.St_cond (x, l1, l2) -> List.Cons (l1, (List.Cons (l2, List.Nil))) | RTLabs_syntax.St_return -> List.Nil