{ 
[P:SimpleType 
 
']
    ((
name:Atom. P[st_var(name)])
    
 (
ty:Type. P[st_const(ty)])
    
 (
domain,range:SimpleType.
          (P[domain] 
 P[range] 
 P[st_arrow(domain;range)]))
    
 (
fst,snd:SimpleType.  (P[fst] 
 P[snd] 
 P[st_prod(fst;snd)]))
    
 (
left,right:SimpleType.
          (P[left] 
 P[right] 
 P[st_union(left;right)]))
    
 (
kind:SimpleType. (P[kind] 
 P[st_list(kind)]))
    
 (
kind:SimpleType. (P[kind] 
 P[st_class(kind)]))
    
 {
x:SimpleType. P[x]}) }
{ Proof }
Definitions occuring in Statement : 
st_class: st_class(kind), 
st_list: st_list(kind), 
st_union: st_union(left;right), 
st_prod: st_prod(fst;snd), 
st_arrow: st_arrow(domain;range), 
st_const: st_const(ty), 
st_var: st_var(name), 
simple_type: SimpleType, 
uall:
[x:A]. B[x], 
prop:
, 
guard: {T}, 
so_apply: x[s], 
all:
x:A. B[x], 
implies: P 
 Q, 
function: x:A 
 B[x], 
atom: Atom, 
universe: Type
Definitions : 
inr: inr x , 
fpf: a:A fp-> B[a], 
decision: Decision, 
inl: inl x , 
tag-by: z
T, 
ldag: LabeledDAG(T), 
labeled-graph: LabeledGraph(T), 
record+: record+, 
record: record(x.T[x]), 
eclass: EClass(A[eo; e]), 
fset: FSet{T}, 
dataflow: dataflow(A;B), 
isect2: T1 
 T2, 
b-union: A 
 B, 
rev_implies: P 
 Q, 
or: P 
 Q, 
iff: P 

 Q, 
bag: bag(T), 
list: type List, 
set: {x:A| B[x]} , 
top: Top, 
true: True, 
so_lambda: 
x.t[x], 
type-monotone: Monotone(T.F[T]), 
union: left + right, 
st_var: st_var(name), 
st_const: st_const(ty), 
st_arrow: st_arrow(domain;range), 
st_prod: st_prod(fst;snd), 
st_union: st_union(left;right), 
st_list: st_list(kind), 
st_class: st_class(kind), 
equal: s = t, 
member: t 
 T, 
rec: rec(x.A[x]), 
strong-subtype: strong-subtype(A;B), 
le: A 
 B, 
ge: i 
 j , 
not:
A, 
less_than: a < b, 
uimplies: b supposing a, 
product: x:A 
 B[x], 
and: P 
 Q, 
uiff: uiff(P;Q), 
subtype_rel: A 
r B, 
guard: {T}, 
uall:
[x:A]. B[x], 
isect:
x:A. B[x], 
simple_type: SimpleType, 
atom: Atom, 
universe: Type, 
prop:
, 
all:
x:A. B[x], 
implies: P 
 Q, 
function: x:A 
 B[x], 
apply: f a, 
so_apply: x[s]
Lemmas : 
subtype_rel_simple_product, 
subtype_rel_sum, 
subtype_rel_wf, 
uall_wf, 
type-monotone_wf, 
simple_type_wf, 
st_var_wf, 
st_const_wf, 
st_arrow_wf, 
st_prod_wf, 
st_union_wf, 
st_list_wf, 
st_class_wf, 
member_wf
\mforall{}[P:SimpleType  {}\mrightarrow{}  \mBbbP{}']
    ((\mforall{}name:Atom.  P[st\_var(name)])
    {}\mRightarrow{}  (\mforall{}ty:Type.  P[st\_const(ty)])
    {}\mRightarrow{}  (\mforall{}domain,range:SimpleType.    (P[domain]  {}\mRightarrow{}  P[range]  {}\mRightarrow{}  P[st\_arrow(domain;range)]))
    {}\mRightarrow{}  (\mforall{}fst,snd:SimpleType.    (P[fst]  {}\mRightarrow{}  P[snd]  {}\mRightarrow{}  P[st\_prod(fst;snd)]))
    {}\mRightarrow{}  (\mforall{}left,right:SimpleType.    (P[left]  {}\mRightarrow{}  P[right]  {}\mRightarrow{}  P[st\_union(left;right)]))
    {}\mRightarrow{}  (\mforall{}kind:SimpleType.  (P[kind]  {}\mRightarrow{}  P[st\_list(kind)]))
    {}\mRightarrow{}  (\mforall{}kind:SimpleType.  (P[kind]  {}\mRightarrow{}  P[st\_class(kind)]))
    {}\mRightarrow{}  \{\mforall{}x:SimpleType.  P[x]\})
Date html generated:
2011_08_17-PM-04_42_34
Last ObjectModification:
2011_02_06-PM-04_03_47
Home
Index