{ 
[P:ClassDerivation 
 
']
    ((
args:BaseDef. P[cdvbase(args)])
    
 (
fst,snd:ClassDerivation.  (P[fst] 
 P[snd] 
 P[cdvpair(fst;snd)]))
    
 (
X:ClassDerivation. 
dummy:Unit.  (P[X] 
 P[cdvdelay(X;dummy)]))
    
 (
[typ,argtype:Type].
          
arg:ClassDerivation. 
fun:argtype 
 bag(typ).
            (P[arg] 
 P[cdvcomb(typ;argtype;arg;fun)]))
    
 (
[typ,argtype:Type].
          
arg:ClassDerivation. 
fun:argtype 
 bag(typ) 
 bag(typ).
            (P[arg] 
 P[cdvreccomb(typ;argtype;arg;fun)]))
    
 {
x:ClassDerivation. P[x]}) }
{ Proof }
Definitions occuring in Statement : 
cdvreccomb: cdvreccomb(typ;argtype;arg;fun), 
cdvcomb: cdvcomb(typ;argtype;arg;fun), 
cdvdelay: cdvdelay(X;dummy), 
cdvpair: cdvpair(fst;snd), 
cdvbase: cdvbase(args), 
classderiv: ClassDerivation, 
base-deriv: BaseDef, 
uall:
[x:A]. B[x], 
prop:
, 
guard: {T}, 
so_apply: x[s], 
all:
x:A. B[x], 
implies: P 
 Q, 
unit: Unit, 
function: x:A 
 B[x], 
universe: Type, 
bag: bag(T)
Definitions : 
natural_number: $n, 
it:
, 
pair: <a, b>, 
inr: inr x , 
fpf: a:A fp-> B[a], 
name: Name, 
decision: Decision, 
inl: inl x , 
int:
, 
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, 
list: type List, 
set: {x:A| B[x]} , 
top: Top, 
true: True, 
type-monotone: Monotone(T.F[T]), 
union: left + right, 
cdvbase: cdvbase(args), 
cdvpair: cdvpair(fst;snd), 
cdvdelay: cdvdelay(X;dummy), 
cdvcomb: cdvcomb(typ;argtype;arg;fun), 
cdvreccomb: cdvreccomb(typ;argtype;arg;fun), 
lambda:
x.A[x], 
equal: s = t, 
member: t 
 T, 
strong-subtype: strong-subtype(A;B), 
rec: rec(x.A[x]), 
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, 
bag: bag(T), 
so_lambda: 
x.t[x], 
unit: Unit, 
guard: {T}, 
uall:
[x:A]. B[x], 
isect:
x:A. B[x], 
universe: Type, 
base-deriv: BaseDef, 
so_apply: x[s], 
apply: f a, 
classderiv: ClassDerivation, 
prop:
, 
implies: P 
 Q, 
all:
x:A. B[x], 
function: x:A 
 B[x]
Lemmas : 
cdvpair_wf, 
classderiv_wf, 
cdvdelay_wf, 
unit_wf, 
cdvcomb_wf, 
bag_wf, 
uall_wf, 
cdvreccomb_wf, 
base-deriv_wf, 
cdvbase_wf, 
type-monotone_wf, 
subtype_rel_wf, 
subtype_rel_sum, 
subtype_rel_simple_product, 
subtype_rel_product, 
member_wf, 
it_wf
\mforall{}[P:ClassDerivation  {}\mrightarrow{}  \mBbbP{}']
    ((\mforall{}args:BaseDef.  P[cdvbase(args)])
    {}\mRightarrow{}  (\mforall{}fst,snd:ClassDerivation.    (P[fst]  {}\mRightarrow{}  P[snd]  {}\mRightarrow{}  P[cdvpair(fst;snd)]))
    {}\mRightarrow{}  (\mforall{}X:ClassDerivation.  \mforall{}dummy:Unit.    (P[X]  {}\mRightarrow{}  P[cdvdelay(X;dummy)]))
    {}\mRightarrow{}  (\mforall{}[typ,argtype:Type].
                \mforall{}arg:ClassDerivation.  \mforall{}fun:argtype  {}\mrightarrow{}  bag(typ).
                    (P[arg]  {}\mRightarrow{}  P[cdvcomb(typ;argtype;arg;fun)]))
    {}\mRightarrow{}  (\mforall{}[typ,argtype:Type].
                \mforall{}arg:ClassDerivation.  \mforall{}fun:argtype  {}\mrightarrow{}  bag(typ)  {}\mrightarrow{}  bag(typ).
                    (P[arg]  {}\mRightarrow{}  P[cdvreccomb(typ;argtype;arg;fun)]))
    {}\mRightarrow{}  \{\mforall{}x:ClassDerivation.  P[x]\})
Date html generated:
2011_08_17-PM-04_23_39
Last ObjectModification:
2011_06_18-AM-11_35_26
Home
Index