| 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 |
| ΓC:=ΓI ) |
| ΓC:=ΓI ) |
| ΓC:=ΓI ) |
| ΓC:=ΓI ) |
| ΓC:=ΓI ) |
| ΓC:=ΓI ) |
|
||||
| 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 ≤βδιζ U2 | |
| E[] ⊢ Assum()(c:U1) <: Assum()(c:U2) |
| E[] ⊢ U1 ≤βδιζ U2 | |
| E[] ⊢ Def()(c:=t:U1) <: Assum()(c:U2) |
| E[] ⊢ U1 ≤βδιζ U2 E[] ⊢ c =βδιζ t2 | |
| E[] ⊢ Assum()(c:U1) <: Def()(c:=t2:U2) |
| E[] ⊢ U1 ≤βδιζ U2 E[] ⊢ t1 =βδιζ t2 | |
| E[] ⊢ Def()(c:=t1:U1) <: Def()(c:=t2:U2) |
| E[] ⊢ ΓP =βδιζ ΓP' E[ΓP] ⊢ ΓC =βδιζ ΓC' E[ΓP;ΓC] ⊢ ΓI =βδιζ ΓI' | |
| E[] ⊢ Ind()[ΓP](ΓC:=ΓI ) <: Ind()[ΓP'](ΓC':=ΓI' ) |
| E[] ⊢ ΓP =βδιζ ΓP' E[ΓP] ⊢ ΓC =βδιζ ΓC' E[ΓP;ΓC] ⊢ ΓI =βδιζ ΓI' | ||||
|
| E[] ⊢ ΓP =βδιζ ΓP' E[ΓP] ⊢ ΓC =βδιζ ΓC' E[ΓP;ΓC] ⊢ ΓI =βδιζ ΓI' E[] ⊢ p =βδιζ 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 =βδιζ p2 | |
| E[] ⊢ ModS(m:T1) <: ModSEq(m:T2==p2) |
| E[] ⊢ T1 <: T2 E[] ⊢ p1 =βδιζ 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 =βδιζ 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[Γ] ⊢ p : Sig Spec1;...;Speci;Assum()(c:U);... End | |
| E[Γ] ⊢ p.c : U{p.l/l}l ∈ labels(Spec1;...;Speci) |
| E[Γ] ⊢ p : Sig Spec1;...;Speci;Def()(c:=t:U);... End | |
| E[Γ] ⊢ p.c : U{p.l/l}l ∈ labels(Spec1;...;Speci) |
| E[Γ] ⊢ p : Sig Spec1;...;Speci;Def()(c:=t:U);... End | |
| E[Γ] ⊢ p.c ▷δ t{p.l/l}l ∈ labels(Spec1;...;Speci) |
| E[Γ] ⊢ p : Sig Spec1;...;Speci;Ind()[ΓP](ΓC:=ΓI );... End | |
| E[Γ] ⊢ p.Ij : (p1:P1)…(pr:Pr)Aj{p.l/l}l ∈ labels(Spec1;...;Speci) |
| E[Γ] ⊢ p : Sig Spec1;...;Speci;Ind()[ΓP](ΓC:=ΓI );... End | |
| E[Γ] ⊢ p.cm : (p1:P1)…(pr:Pr)Cm{Ij/(Ij p1… pr)}j=1… k{p.l/l}l ∈ labels(Spec1;...;Speci) |
|
||||
| E[] ⊢ p.Ii ▷δ p'.Ii |
|
||||
| E[] ⊢ p.ci ▷δ p'.ci |
| E[Γ] ⊢ p : Sig Spec1;...;Speci; ModS(m:T);... End | |
| E[Γ] ⊢ p.m : T{p.l/l}l ∈ labels(Spec1;...;Speci) |
| E[Γ] ⊢ p : Sig Spec1;...;Speci; ModSEq(m:T==p');... End | |
| E[Γ] ⊢ p.m : T{p.l/l}l ∈ labels(Spec1;...;Speci) |
| E[Γ] ⊢ p : Sig Spec1;...;Speci; ModSEq(m:T==p');... End | |
| E[Γ] ⊢ p.m ▷δ p'{p.l/l}l ∈ labels(Spec1;...;Speci) |
| E[Γ] ⊢ p : Sig Spec1;...;Speci; ModType(S:=T);... End | |
| E[Γ] ⊢ p.S ▷δ T{p.l/l}l ∈ labels(Spec1;...;Speci) |
| WF(E; ModS(m:T);E')[Γ] | |
| E; ModS(m:T);E'[Γ] ⊢ m : T |
| WF(E; ModSEq(m:T==p);E')[Γ] | |
| E; ModSEq(m:T==p);E'[Γ] ⊢ m : T |
| WF(E; ModSEq(m:T==p);E')[Γ] | |
| E; ModSEq(m:T==p);E'[Γ] ⊢ m ▷δ p |
| WF(E; ModType(S:=T);E')[Γ] | |
| E; ModType(S:=T);E'[Γ] ⊢ S ▷δ T |
|
||||
|
|
||||
|