WF(E;E')[] | |
E[] |- WF( Sig E' End) |
E; ModS(X:T)[] |- WF(T') | |
E[] |- WF( Funsig(X:T) T') |
|
||||
E[] |- Struct Impl1;...;Impln End : Sig Spec1;...;Specn End |
E; ModS(X:T)[] |- M : T' | |
E[] |- Functor(X:T) M : Funsig(X:T) T' |
|
||||
E[] |- p p1 ... pn : T'{X1/p1... Xn/pn} |
E[] |- M : T E[] |- T <: T' | |
E[] |- M : T' |
E[] |- p : T | |
E[] |- p : T/p |
GammaC:=GammaI ) |
GammaC:=GammaI ) |
GammaC:=GammaI ) |
GammaC:=GammaI ) |
GammaC:=GammaI ) |
GammaC:=GammaI ) |
|
||||
E[] |- Sig Spec1;...;Specn End <: Sig Spec'1;...;Spec'm End |
E[] |- T1' <: T1 E; ModS(X:T1')[] |- T2 <: T2' | |
E[] |- Funsig(X:T1) T2 <: Funsig(X:T1') T2' |
E[] |- U1 <=betadeltaiotazeta U2 | |
E[] |- Assum()(c:U1) <: Assum()(c:U2) |
E[] |- U1 <=betadeltaiotazeta U2 | |
E[] |- Def()(c:=t:U1) <: Assum()(c:U2) |
E[] |- U1 <=betadeltaiotazeta U2 E[] |- c =betadeltaiotazeta t2 | |
E[] |- Assum()(c:U1) <: Def()(c:=t2:U2) |
E[] |- U1 <=betadeltaiotazeta U2 E[] |- t1 =betadeltaiotazeta t2 | |
E[] |- Def()(c:=t1:U1) <: Def()(c:=t2:U2) |
E[] |- GammaP =betadeltaiotazeta GammaP' E[GammaP] |- GammaC =betadeltaiotazeta GammaC' E[GammaP;GammaC] |- GammaI =betadeltaiotazeta GammaI' | |
E[] |- Ind()[GammaP](GammaC:=GammaI ) <: Ind()[GammaP'](GammaC':=GammaI' ) |
E[] |- GammaP =betadeltaiotazeta GammaP' E[GammaP] |- GammaC =betadeltaiotazeta GammaC' E[GammaP;GammaC] |- GammaI =betadeltaiotazeta GammaI' | ||||
|
E[] |- GammaP =betadeltaiotazeta GammaP' E[GammaP] |- GammaC =betadeltaiotazeta GammaC' E[GammaP;GammaC] |- GammaI =betadeltaiotazeta GammaI' E[] |- p =betadeltaiotazeta p' | ||||||
|
E[] |- T1 <: T2 | |
E[] |- ModS(m:T1) <: ModS(m:T2) |
E[] |- T1 <: T2 | |
E[] |- ModSEq(m:T1==p) <: ModS(m:T2) |
E[] |- T1 <: T2 E[] |- m =betadeltaiotazeta p2 | |
E[] |- ModS(m:T1) <: ModSEq(m:T2==p2) |
E[] |- T1 <: T2 E[] |- p1 =betadeltaiotazeta p2 | |
E[] |- ModSEq(m:T1==p1) <: ModSEq(m:T2==p2) |
E[] |- T1 <: T2 E[] |- T2 <: T1 | |
E[] |- ModType(S:=T1) <: ModType(S:=T2) |
|
||||
E[] |- Spec : Spec |
WF(E; ModS(m:T))[] E[] |- M : T | |
E[] |- Mod(m:T:=M) : ModS(m:T) |
WF(E; ModSEq(m:T==p))[] E[] |- p =betadeltaiotazeta p' | |
E[] |- Mod(m:T:=p') : ModSEq(m:T==p') |
WF(E)[] E[] |- WF(T) | |
WF(E; ModS(m:T))[] |
WF(E)[] E[] |- p : T | |
WF(E, ModSEq(m:T==p))[] |
WF(E)[] E[] |- WF(T) | |
WF(E, ModType(S:=T))[] |
|
|||||
|
E[Gamma] |- p : Sig Spec1;...;Speci;Assum()(c:U);... End | |
E[Gamma] |- p.c : U{p.l/l}l in labels(Spec1;...;Speci) |
E[Gamma] |- p : Sig Spec1;...;Speci;Def()(c:=t:U);... End | |
E[Gamma] |- p.c : U{p.l/l}l in labels(Spec1;...;Speci) |
E[Gamma] |- p : Sig Spec1;...;Speci;Def()(c:=t:U);... End | |
E[Gamma] |- p.c |>delta t{p.l/l}l in labels(Spec1;...;Speci) |
E[Gamma] |- p : Sig Spec1;...;Speci;Ind()[GammaP](GammaC:=GammaI );... End | |
E[Gamma] |- p.Ij : (p1:P1)...(pr:Pr)Aj{p.l/l}l in labels(Spec1;...;Speci) |
E[Gamma] |- p : Sig Spec1;...;Speci;Ind()[GammaP](GammaC:=GammaI );... End | |
E[Gamma] |- p.cm : (p1:P1)...(pr:Pr)Cm{Ij/(Ij p1... pr)}j=1... k{p.l/l}l in labels(Spec1;...;Speci) |
|
||||
E[] |- p.Ii |>delta p'.Ii |
|
||||
E[] |- p.ci |>delta p'.ci |
E[Gamma] |- p : Sig Spec1;...;Speci; ModS(m:T);... End | |
E[Gamma] |- p.m : T{p.l/l}l in labels(Spec1;...;Speci) |
E[Gamma] |- p : Sig Spec1;...;Speci; ModSEq(m:T==p');... End | |
E[Gamma] |- p.m : T{p.l/l}l in labels(Spec1;...;Speci) |
E[Gamma] |- p : Sig Spec1;...;Speci; ModSEq(m:T==p');... End | |
E[Gamma] |- p.m |>delta p'{p.l/l}l in labels(Spec1;...;Speci) |
E[Gamma] |- p : Sig Spec1;...;Speci; ModType(S:=T);... End | |
E[Gamma] |- p.S |>delta T{p.l/l}l in labels(Spec1;...;Speci) |
WF(E; ModS(m:T);E')[Gamma] | |
E; ModS(m:T);E'[Gamma] |- m : T |
WF(E; ModSEq(m:T==p);E')[Gamma] | |
E; ModSEq(m:T==p);E'[Gamma] |- m : T |
WF(E; ModSEq(m:T==p);E')[Gamma] | |
E; ModSEq(m:T==p);E'[Gamma] |- m |>delta p |
WF(E; ModType(S:=T);E')[Gamma] | |
E; ModType(S:=T);E'[Gamma] |- S |>delta T |
|
||||
|
|
||||
|