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 open CostSpec (** val reverse_label_map : RTLabs_syntax.statement Graphs.graph -> PreIdentifiers.identifier Identifiers.identifier_map Types.option **) let reverse_label_map g = Identifiers.foldi PreIdentifiers.LabelTag (fun l s m -> match m with | Types.None -> Types.None | Types.Some m0 -> (match CostSpec.cost_label_of s with | Types.None -> Types.Some m0 | Types.Some cl -> (match Identifiers.lookup PreIdentifiers.CostTag m0 cl with | Types.None -> Types.Some (Identifiers.add PreIdentifiers.CostTag m0 cl l) | Types.Some x -> Types.None))) g (Types.Some (Identifiers.empty_map PreIdentifiers.CostTag)) (** val check_fun_inj : RTLabs_syntax.internal_function -> Bool.bool **) let check_fun_inj f = match reverse_label_map f.RTLabs_syntax.f_graph with | Types.None -> Bool.False | Types.Some x -> Bool.True (** val check_program_cost_injectivity : RTLabs_syntax.rTLabs_program -> Bool.bool **) let check_program_cost_injectivity p = Lists.all (fun x -> match x.Types.snd with | AST.Internal f -> check_fun_inj f | AST.External x0 -> Bool.True) p.AST.prog_funct (** val check_program_cost_injectivity_prf : RTLabs_syntax.rTLabs_program -> __ Errors.res **) let check_program_cost_injectivity_prf p = (match check_program_cost_injectivity p with | Bool.True -> (fun _ -> Errors.OK __) | Bool.False -> (fun _ -> Errors.Error (Errors.msg ErrorMessages.BadCostLabelling))) __