diff --git a/world_prop_sig.v b/world_prop_sig.v new file mode 100644 index 0000000000000000000000000000000000000000..deeb1af39bc033775d67d2de2dbedec05fc60b64 --- /dev/null +++ b/world_prop_sig.v @@ -0,0 +1,44 @@ +(* For some reason, the order matters. We cannot import Constr last. *) +Require Import ModuRes.Finmap ModuRes.Constr ModuRes.PCM ModuRes.UPred ModuRes.BI ModuRes.PreoMet. + + +Module Type WorldPropSig (Res : PCM_T). + + (** The construction is parametric in the monoid we choose *) + Import Res. + + (* The functor is fixed *) + Section Definitions. + (** We'll be working with complete metric spaces, so whenever + something needs an additional preorder, we'll just take a + discrete one. *) + Local Instance pt_disc P `{cmetric P} : preoType P | 2000 := disc_preo P. + Local Instance pcm_disc P `{cmetric P} : pcmType P | 2000 := disc_pcm P. + + Definition FProp P `{cmP : cmetric P} := + (nat -f> P) -m> UPred res. + End Definitions. + + Parameter PreProp : Type. + Parameter PrePropS : Setoid PreProp. + Parameter PrePropM : metric PreProp. + Parameter PrePropCM: cmetric PreProp. + + Definition Props := FProp PreProp. + Parameter PropS : Setoid Props. + Parameter PropM : metric Props. + Parameter PropCM : cmetric Props. + + Definition Wld := (nat -f> PreProp). + + Parameter ı : PreProp -> halve (cmfromType Props). + Parameter ı' : halve (cmfromType Props) -> PreProp. + + Axiom iso : forall P, ı' (ı P) == P. + Axiom isoR : forall T, ı (ı' T) == T. + +(*Parameter PProp_preo : preoType PreProp. + Parameter PProp_pcm : pcmType PreProp. + Parameter PProp_ext : extensible PreProp.*) + +End WorldPropSig.