open Preamble open CostLabel open Proper open PositiveMap open Deqsets open Extralib open Lists open Identifiers open Integers open AST open Division open Exp open Arithmetic open Extranat open Vector open FoldStuff open BitVector open Z open BitVectorZ open Pointers open ErrorMessages open Option open Setoids open Monad open Positive open PreIdentifiers open Errors open Div_and_mod open Jmeq open Russell open Util open Bool open Relations open Nat open List open Hints_declaration open Core_notation open Pts open Logic open Types open Coqlib open Values open Events type transrel = | Mk_transrel val transrel_rect_Type4 : (__ -> __ -> __ -> 'a1) -> transrel -> 'a1 val transrel_rect_Type5 : (__ -> __ -> __ -> 'a1) -> transrel -> 'a1 val transrel_rect_Type3 : (__ -> __ -> __ -> 'a1) -> transrel -> 'a1 val transrel_rect_Type2 : (__ -> __ -> __ -> 'a1) -> transrel -> 'a1 val transrel_rect_Type1 : (__ -> __ -> __ -> 'a1) -> transrel -> 'a1 val transrel_rect_Type0 : (__ -> __ -> __ -> 'a1) -> transrel -> 'a1 type genv type state val transrel_inv_rect_Type4 : transrel -> (__ -> __ -> __ -> __ -> 'a1) -> 'a1 val transrel_inv_rect_Type3 : transrel -> (__ -> __ -> __ -> __ -> 'a1) -> 'a1 val transrel_inv_rect_Type2 : transrel -> (__ -> __ -> __ -> __ -> 'a1) -> 'a1 val transrel_inv_rect_Type1 : transrel -> (__ -> __ -> __ -> __ -> 'a1) -> 'a1 val transrel_inv_rect_Type0 : transrel -> (__ -> __ -> __ -> __ -> 'a1) -> 'a1 val transrel_jmdiscr : transrel -> transrel -> __ type program_behavior = | Terminates of Events.trace * Integers.int | Diverges of Events.trace | Reacts of Events.traceinf | Goes_wrong of Events.trace val program_behavior_rect_Type4 : (Events.trace -> Integers.int -> 'a1) -> (Events.trace -> 'a1) -> (Events.traceinf -> 'a1) -> (Events.trace -> 'a1) -> program_behavior -> 'a1 val program_behavior_rect_Type5 : (Events.trace -> Integers.int -> 'a1) -> (Events.trace -> 'a1) -> (Events.traceinf -> 'a1) -> (Events.trace -> 'a1) -> program_behavior -> 'a1 val program_behavior_rect_Type3 : (Events.trace -> Integers.int -> 'a1) -> (Events.trace -> 'a1) -> (Events.traceinf -> 'a1) -> (Events.trace -> 'a1) -> program_behavior -> 'a1 val program_behavior_rect_Type2 : (Events.trace -> Integers.int -> 'a1) -> (Events.trace -> 'a1) -> (Events.traceinf -> 'a1) -> (Events.trace -> 'a1) -> program_behavior -> 'a1 val program_behavior_rect_Type1 : (Events.trace -> Integers.int -> 'a1) -> (Events.trace -> 'a1) -> (Events.traceinf -> 'a1) -> (Events.trace -> 'a1) -> program_behavior -> 'a1 val program_behavior_rect_Type0 : (Events.trace -> Integers.int -> 'a1) -> (Events.trace -> 'a1) -> (Events.traceinf -> 'a1) -> (Events.trace -> 'a1) -> program_behavior -> 'a1 val program_behavior_inv_rect_Type4 : program_behavior -> (Events.trace -> Integers.int -> __ -> 'a1) -> (Events.trace -> __ -> 'a1) -> (Events.traceinf -> __ -> 'a1) -> (Events.trace -> __ -> 'a1) -> 'a1 val program_behavior_inv_rect_Type3 : program_behavior -> (Events.trace -> Integers.int -> __ -> 'a1) -> (Events.trace -> __ -> 'a1) -> (Events.traceinf -> __ -> 'a1) -> (Events.trace -> __ -> 'a1) -> 'a1 val program_behavior_inv_rect_Type2 : program_behavior -> (Events.trace -> Integers.int -> __ -> 'a1) -> (Events.trace -> __ -> 'a1) -> (Events.traceinf -> __ -> 'a1) -> (Events.trace -> __ -> 'a1) -> 'a1 val program_behavior_inv_rect_Type1 : program_behavior -> (Events.trace -> Integers.int -> __ -> 'a1) -> (Events.trace -> __ -> 'a1) -> (Events.traceinf -> __ -> 'a1) -> (Events.trace -> __ -> 'a1) -> 'a1 val program_behavior_inv_rect_Type0 : program_behavior -> (Events.trace -> Integers.int -> __ -> 'a1) -> (Events.trace -> __ -> 'a1) -> (Events.traceinf -> __ -> 'a1) -> (Events.trace -> __ -> 'a1) -> 'a1 val program_behavior_discr : program_behavior -> program_behavior -> __ val program_behavior_jmdiscr : program_behavior -> program_behavior -> __ type semantics = { trans : transrel; ge : __ } val semantics_rect_Type4 : (transrel -> __ -> __ -> __ -> 'a1) -> semantics -> 'a1 val semantics_rect_Type5 : (transrel -> __ -> __ -> __ -> 'a1) -> semantics -> 'a1 val semantics_rect_Type3 : (transrel -> __ -> __ -> __ -> 'a1) -> semantics -> 'a1 val semantics_rect_Type2 : (transrel -> __ -> __ -> __ -> 'a1) -> semantics -> 'a1 val semantics_rect_Type1 : (transrel -> __ -> __ -> __ -> 'a1) -> semantics -> 'a1 val semantics_rect_Type0 : (transrel -> __ -> __ -> __ -> 'a1) -> semantics -> 'a1 val trans : semantics -> transrel val ge : semantics -> __ val semantics_inv_rect_Type4 : semantics -> (transrel -> __ -> __ -> __ -> __ -> 'a1) -> 'a1 val semantics_inv_rect_Type3 : semantics -> (transrel -> __ -> __ -> __ -> __ -> 'a1) -> 'a1 val semantics_inv_rect_Type2 : semantics -> (transrel -> __ -> __ -> __ -> __ -> 'a1) -> 'a1 val semantics_inv_rect_Type1 : semantics -> (transrel -> __ -> __ -> __ -> __ -> 'a1) -> 'a1 val semantics_inv_rect_Type0 : semantics -> (transrel -> __ -> __ -> __ -> __ -> 'a1) -> 'a1 val semantics_jmdiscr : semantics -> semantics -> __ type related_semantics = { sem1 : semantics; sem2 : semantics } val related_semantics_rect_Type4 : (semantics -> semantics -> __ -> __ -> __ -> 'a1) -> related_semantics -> 'a1 val related_semantics_rect_Type5 : (semantics -> semantics -> __ -> __ -> __ -> 'a1) -> related_semantics -> 'a1 val related_semantics_rect_Type3 : (semantics -> semantics -> __ -> __ -> __ -> 'a1) -> related_semantics -> 'a1 val related_semantics_rect_Type2 : (semantics -> semantics -> __ -> __ -> __ -> 'a1) -> related_semantics -> 'a1 val related_semantics_rect_Type1 : (semantics -> semantics -> __ -> __ -> __ -> 'a1) -> related_semantics -> 'a1 val related_semantics_rect_Type0 : (semantics -> semantics -> __ -> __ -> __ -> 'a1) -> related_semantics -> 'a1 val sem1 : related_semantics -> semantics val sem2 : related_semantics -> semantics val related_semantics_inv_rect_Type4 : related_semantics -> (semantics -> semantics -> __ -> __ -> __ -> __ -> 'a1) -> 'a1 val related_semantics_inv_rect_Type3 : related_semantics -> (semantics -> semantics -> __ -> __ -> __ -> __ -> 'a1) -> 'a1 val related_semantics_inv_rect_Type2 : related_semantics -> (semantics -> semantics -> __ -> __ -> __ -> __ -> 'a1) -> 'a1 val related_semantics_inv_rect_Type1 : related_semantics -> (semantics -> semantics -> __ -> __ -> __ -> __ -> 'a1) -> 'a1 val related_semantics_inv_rect_Type0 : related_semantics -> (semantics -> semantics -> __ -> __ -> __ -> __ -> 'a1) -> 'a1 val related_semantics_jmdiscr : related_semantics -> related_semantics -> __ type order_sim = related_semantics (* singleton inductive, whose constructor was mk_order_sim *) val order_sim_rect_Type4 : (related_semantics -> __ -> __ -> 'a1) -> order_sim -> 'a1 val order_sim_rect_Type5 : (related_semantics -> __ -> __ -> 'a1) -> order_sim -> 'a1 val order_sim_rect_Type3 : (related_semantics -> __ -> __ -> 'a1) -> order_sim -> 'a1 val order_sim_rect_Type2 : (related_semantics -> __ -> __ -> 'a1) -> order_sim -> 'a1 val order_sim_rect_Type1 : (related_semantics -> __ -> __ -> 'a1) -> order_sim -> 'a1 val order_sim_rect_Type0 : (related_semantics -> __ -> __ -> 'a1) -> order_sim -> 'a1 val sem : order_sim -> related_semantics val order_sim_inv_rect_Type4 : order_sim -> (related_semantics -> __ -> __ -> __ -> 'a1) -> 'a1 val order_sim_inv_rect_Type3 : order_sim -> (related_semantics -> __ -> __ -> __ -> 'a1) -> 'a1 val order_sim_inv_rect_Type2 : order_sim -> (related_semantics -> __ -> __ -> __ -> 'a1) -> 'a1 val order_sim_inv_rect_Type1 : order_sim -> (related_semantics -> __ -> __ -> __ -> 'a1) -> 'a1 val order_sim_inv_rect_Type0 : order_sim -> (related_semantics -> __ -> __ -> __ -> 'a1) -> 'a1 val order_sim_jmdiscr : order_sim -> order_sim -> __