Module ForeignData
Section
ForeignData
.
Require
Import
EquivDec
.
Require
Import
RUtil
.
Class
foreign_data
:
Type
:=
mk_foreign_data
{
foreign_data_type
:
Set
;
foreign_data_dec
:>
EqDec
foreign_data_type
eq
;
foreign_data_normalized
(
a
:
foreign_data_type
) :
Prop
;
foreign_data_normalize
(
a
:
foreign_data_type
) :
foreign_data_type
;
foreign_data_normalize_normalizes
(
a
:
foreign_data_type
) :
foreign_data_normalized
(
foreign_data_normalize
a
)
;
foreign_data_normalize_idempotent
(
a
:
foreign_data_type
) :
foreign_data_normalized
a
->
foreign_data_normalize
a
=
a
;
foreign_data_tostring
:>
ToString
foreign_data_type
}.
End
ForeignData
.