es-decl-set-join(dd1;dd2) ==
  let S1,ds1,da1 = dd1 in 
  let S2,ds2,da2 = dd2 in 
  <remove-repeats(IdDeq;S1 @ S2)
  , 
i.if deq-member(IdDeq;i;S1)
       then if deq-member(IdDeq;i;S2)
            then if null(fpf-domain(da1 i)) then ds2 i
                 if null(fpf-domain(da2 i)) then ds1 i
                 else ds1 i 
 ds2 i
                 fi 
            else ds1 i
            fi 
       else ds2 i
       fi 
  , 
i.if deq-member(IdDeq;i;S1)
       then if deq-member(IdDeq;i;S2) then da1 i 
 da2 i else da1 i fi 
       else da2 i
       fi >
Definitions : 
spreadn: spread3, 
remove-repeats: remove-repeats(eq;L), 
append: as @ bs, 
pair: <a, b>, 
null: null(as), 
fpf-domain: fpf-domain(f), 
lambda:
x.A[x], 
ifthenelse: if b then t else f fi , 
deq-member: deq-member(eq;x;L), 
id-deq: IdDeq, 
fpf-join: f 
 g, 
Kind-deq: KindDeq, 
apply: f a
FDL editor aliases : 
es-decl-set-join
es-decl-set-join(dd1;dd2)  ==
    let  S1,ds1,da1  =  dd1  in 
    let  S2,ds2,da2  =  dd2  in 
    <remove-repeats(IdDeq;S1  @  S2)
    ,  \mlambda{}i.if  deq-member(IdDeq;i;S1)
              then  if  deq-member(IdDeq;i;S2)
                        then  if  null(fpf-domain(da1  i))  then  ds2  i
                                  if  null(fpf-domain(da2  i))  then  ds1  i
                                  else  ds1  i  \moplus{}  ds2  i
                                  fi 
                        else  ds1  i
                        fi 
              else  ds2  i
              fi 
    ,  \mlambda{}i.if  deq-member(IdDeq;i;S1)
              then  if  deq-member(IdDeq;i;S2)  then  da1  i  \moplus{}  da2  i  else  da1  i  fi 
              else  da2  i
              fi  >
Date html generated:
2010_08_27-AM-09_32_09
Last ObjectModification:
2009_12_16-AM-01_09_32
Home
Index