Module Qcert.EJson.Model.ForeignEJson


Require Import EquivDec.
Require Import CoqLibAdd.
Require Import JSON.

Section ForeignEJson.
  
  Class foreign_ejson (foreign_ejson_model : Set) : Type
    := mk_foreign_ejson {
           foreign_ejson_dec :> EqDec foreign_ejson_model eq
           ; foreign_ejson_normalized (a : foreign_ejson_model) : Prop
           ; foreign_ejson_normalize (a : foreign_ejson_model) : foreign_ejson_model
           ; foreign_ejson_normalize_normalizes (a : foreign_ejson_model) : foreign_ejson_normalized (foreign_ejson_normalize a)
           ; foreign_ejson_normalize_idempotent (a : foreign_ejson_model) : foreign_ejson_normalized a -> foreign_ejson_normalize a = a
           ; foreign_ejson_tostring :> ToString foreign_ejson_model
      }.

End ForeignEJson.