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