File OpmlAmlRelSpec

From MatchingLogic Require Export ModelIsomorphism.
From MatchingLogic.OPML Require Export OpmlSignature OpmlModel.

Record OpmlAmlSigRel
    {Σo : OPMLSignature} {Σa : Signature} := {

    oasr_sym : opml_symbolsymbols ;
    oasr_sym_inj : Inj (=) (=) oasr_sym ;

    oasr_no_junk : symbols;
    oasr_no_junk_distinct :
         s, oasr_sym soasr_no_junk ;

}.

Record OpmlAmlModRel
    {Σo : OPMLSignature}
    {Σa : Signature}
    (Mo : OPMLModel)
    (Ma : Model)
:= {

    oamr_sig : OpmlAmlSigRel ;

    oamr_ele :
        om_unified_carrier MoDomain Ma ;
    
    oamr_ele_inj : Inj (=) (=) oamr_ele ;

    (* The 'no_junk' symbol is interpreted as all the 'original' (OPML) model elements. *)
    oamr_no_junk :
         (ma : Domain Ma),
            ((ma ∈ (sym_interp Ma (oasr_no_junk oamr_sig)))
            ↔ (mo : om_unified_carrier Mo),
                ma = oamr_ele mo
            )
            ;
}.

Lemma oamr_no_junk_fmap
    {Σo : OPMLSignature}
    {Σa : Signature}
    (Mo : OPMLModel)
    (Ma : Model)
    (r : OpmlAmlModRel Mo Ma)
    :
    ((oamr_ele Mo Ma r) <$> (@propset_top (om_unified_carrier Mo))) ≡ (sym_interp Ma (oasr_no_junk (oamr_sig Mo Ma r)))
.

Definition OpmlAmlModRel_preserves_isom
    {Σo : OPMLSignature}
    {Σa : Signature}
    (Mo : OPMLModel)
    (Ma : Model)
    (r : OpmlAmlModRel Mo Ma)
    :=
     Mo' Ma',
        OPMLModelIsomorphism Mo Mo'
        @ModelIsomorphism _ Ma Ma'
        OpmlAmlModRel Mo' Ma'
.


This page has been generated by coqdoc