{ 
[T:i:Id 
 k:{k:Knd| 
hasloc(k;i)}  
 Type]. 
[P:i:Id
                                                    
 k:{k:Knd| 
hasloc(k;i)} 
                                                    
 T[i;k]]. 
[ik:LocKnd].
    (let i,k:LocKnd = ik in P[i;k] 
 T[fst(ik);snd(ik)]) }
{ Proof }
Definitions occuring in Statement : 
locknd-spread: let i,k:LocKnd = ik in P[i; k], 
LocKnd: LocKnd, 
hasloc: hasloc(k;i), 
Knd: Knd, 
Id: Id, 
assert:
b, 
uall:
[x:A]. B[x], 
so_apply: x[s1;s2], 
pi1: fst(t), 
pi2: snd(t), 
member: t 
 T, 
set: {x:A| B[x]} , 
function: x:A 
 B[x], 
universe: Type
Definitions : 
LocKnd: LocKnd, 
locknd-spread: let i,k:LocKnd = ik in P[i; k], 
uall:
[x:A]. B[x], 
so_apply: x[s1;s2], 
member: t 
 T, 
pi1: fst(t), 
pi2: snd(t), 
prop:
, 
implies: P 
 Q, 
iff: P 

 Q, 
and: P 
 Q, 
rev_implies: P 
 Q
Lemmas : 
Id_wf, 
Knd_wf, 
assert_wf, 
hasloc_wf
\mforall{}[T:i:Id  {}\mrightarrow{}  k:\{k:Knd|  \muparrow{}hasloc(k;i)\}    {}\mrightarrow{}  Type].  \mforall{}[P:i:Id  {}\mrightarrow{}  k:\{k:Knd|  \muparrow{}hasloc(k;i)\}    {}\mrightarrow{}  T[i;k]].
\mforall{}[ik:LocKnd].
    (let  i,k:LocKnd  =  ik  in  P[i;k]  \mmember{}  T[fst(ik);snd(ik)])
Date html generated:
2011_08_10-AM-07_51_52
Last ObjectModification:
2011_06_18-AM-08_14_15
Home
Index