Library mcertikos.objects.dev.Oracle


Require Import Coqlib.
Require Import List.
Require Import Bool.

Module Type Event.
  Parameter T: Type.
  Parameter d: T.
End Event.

Module Type Oracle.
  Parameter Time: Set.
  Parameter Entry: Type.
  Parameter Tape: Type.

  Parameter span: Time.
  Parameter tlt: TimeTimeProp.
  Parameter tle: TimeTimeProp.
  Parameter empty: Tape.
  Parameter default: Entry.

  Parameter get: TimeTapeoption Entry.
  Parameter valid: TapeProp.

  Axiom empty_def: t:Time,
      get t empty = None.

  Axiom order: a b: Time,
      {tlt a b} + {a = b} + {¬tle a b}.

  Axiom valid_range: (t: Time) (l: Tape),
      valid l
      tlt t span
       e,
        get t l = Some e.

End Oracle.