Module Exports.
Coercion sort : type >-> Sortclass.
Notation unlifted := type.
Notation UnliftedMixin := Mixin.
Notation Unlifted T m := (@pack T m).
Notation "[ 'unliftedMixin' 'of' T ]" := (class _ : mixin_of T)
(at level 0, format "[ 'unliftedMixin'  'of'  T ]") : form_scope.
Notation "[ 'unlifted' 'of' T 'for' C ]" := (@clone T C _ idfun id)
(at level 0, format "[ 'unlifted'  'of'  T  'for'  C ]") : form_scope.
Notation "[ 'unlifted' 'of' T ]" := (@clone T _ _ id id)
(at level 0, format "[ 'unlifted'  'of'  T ]") : form_scope.
Notation ounit := ounit.
Notation ojoin := ojoin.
Arguments ounit {cT}.

Lemma ojoinC (U : unlifted) (x y : U) : ojoin x y = ojoin y x.