anchor.diff:    module Logic =
       let or' left right = Et.OrElse(left, right) :> Et
       let and' left right = Et.AndAlso(left, right) :> Et
  +    let not target = Et.OnesComplement target :> Et
   
       let is' typ target = Et.TypeIs(target, typ) :> Et
       let isT<'a> = is' typeof<'a> 
  
positive.code:   let int1 = constant 1
  
    module Array =
      let length target = Et.ArrayLength(target)
      let index target (index:Et) = Et.ArrayIndex(target, index) :> Et
      let access target (exprs:Et seq) = Et.ArrayAccess(target, exprs)
  
      let new' typ (bounds:Et seq) = Et.NewArrayBounds(typ, bounds) :> Et
      let newT<'a> = new' typeof<'a>
  
negative.code:   let blockWithLocals (parms:EtParam seq) (exprs:Et seq) = 
      if Seq.length exprs = 0 then void' else Et.Block(parms, exprs) :> Et
  
    let block exprs = 
      blockWithLocals [] exprs
  
    let blockTmp typ (fn:EtParam -> Et list) = 
      let tmp = Et.Parameter(typ, "~tmp")
      blockWithLocals [tmp] (fn tmp)
  
    let blockTmpT<'a> = 
      blockTmp typeof<'a>
  
    let field expr (name:string) = Et.Field(expr, name) :> Et
    let property expr (name:string) = Et.Property(expr, name) :> Et
  