Module ForeignType


Section TForeign.
  Require Import EquivDec.

  Require Import Lattice.
  
  Class foreign_type : Type
    := mk_foreign_type {
           foreign_type_type : Set
           ; foreign_type_dec :> EqDec foreign_type_type eq
           ; foreign_type_lattice :> Lattice foreign_type_type eq
           ; foreign_type_sub (a b : foreign_type_type) : Prop
           ; foreign_type_sub_dec (a b : foreign_type_type) :
               { foreign_type_sub a b} + {~ foreign_type_sub a b}
           ; foreign_type_sub_pre :> PreOrder foreign_type_sub
           ; foreign_type_sub_part :> PartialOrder eq foreign_type_sub
           ; foreign_type_olattice :> OLattice eq foreign_type_sub
      }.
  
End TForeign.