X-Git-Url: http://git.megacz.com/?p=coq-hetmet.git;a=blobdiff_plain;f=src%2FProgrammingLanguageReification.v;h=c1a06d85d51f00c43eda77f2c5d132a2b9b20e72;hp=ab8bb90c5fd62a071f60e1a0eb009aa5904827b4;hb=034f7e7856bebbbcb3c83946aa603c640b17f3bb;hpb=e68b13536be2d1def208bde68dbbcdc4c1097d16 diff --git a/src/ProgrammingLanguageReification.v b/src/ProgrammingLanguageReification.v index ab8bb90..c1a06d8 100644 --- a/src/ProgrammingLanguageReification.v +++ b/src/ProgrammingLanguageReification.v @@ -28,16 +28,37 @@ Require Import Reification. Require Import NaturalDeduction. Require Import NaturalDeductionCategory. Require Import ProgrammingLanguage. +Require Import ProgrammingLanguageCategory. +Require Import Enrichments. -Definition TwoLevelLanguage (Guest Host:ProgrammingLanguageSMME) - := Reification Guest Host (me_i Host). +Section ProgrammingLanguageReification. -Inductive NLevelLanguage : nat -> ProgrammingLanguageSMME -> Type := -| NLevelLanguage_zero : forall lang, NLevelLanguage O lang -| NLevelLanguage_succ : forall (L1 L2:ProgrammingLanguageSMME) n, - TwoLevelLanguage L1 L2 -> NLevelLanguage n L1 -> NLevelLanguage (S n) L2. + Definition TwoLevelLanguage `(Guest:ProgrammingLanguage) `(Host:ProgrammingLanguage) + := Reification (TypesEnrichedInJudgments Guest) (TypesEnrichedInJudgments Host) []. -Definition OmegaLevelLanguage : Type := - { f : nat -> ProgrammingLanguageSMME - & forall n, TwoLevelLanguage (f n) (f (S n)) }. + Inductive NLevelLanguage : forall (n:nat) `(PL:ProgrammingLanguage), Type := + | NLevelLanguage_zero : forall `(lang:ProgrammingLanguage), + NLevelLanguage O lang + | NLevelLanguage_succ : forall `(L1:ProgrammingLanguage) `(L2:ProgrammingLanguage) n, + TwoLevelLanguage L1 L2 -> NLevelLanguage n L1 -> NLevelLanguage (S n) L2. + (* + Definition OmegaLevelLanguage : Type := + { f : nat -> ProgrammingLanguage + & forall n, TwoLevelLanguage (f n) (f (S n)) }. + *) + +End ProgrammingLanguageReification. + +(* + Structure ProgrammingLanguage := + { plsmme_t : Type + ; plsmme_judg : Type + ; plsmme_sequent : Tree ??plsmme_t -> Tree ??plsmme_t -> plsmme_judg + ; plsmme_rule : Tree ??plsmme_judg -> Tree ??plsmme_judg -> Type + ; plsmme_pl : @ProgrammingLanguage plsmme_t plsmme_judg plsmme_sequent plsmme_rule + ; plsmme_smme : SurjectiveEnrichment (TypesEnrichedInJudgments _ _ plsmme_pl) + }. + Coercion plsmme_pl : ProgrammingLanguage >-> ProgrammingLanguage. + Coercion plsmme_smme : ProgrammingLanguage >-> SurjectiveMonicMonoidalEnrichment. +*)