anchor.diff:              | (true, false) ->
                   bind (fun b -> (f (ma.GetValue()) b) :> IMod<_>) mb
               | (false, false) ->
  -                let f = scoped2 f
                   let inner : ref<Option<'a * 'b * IMod<'c>>> = ref None
   
                   // for a detailed description see bind above
  
positive.code:         if m.IsConstant then
              m.GetValue() |> f :> IMod<_>
          else
              let f = scoped f
              let inner : ref<Option<'a * IMod<'b>>> = ref None
  
  
  
negative.code:             | (false, true) -> 
                  map (fun a -> f a (m2.GetValue())) m1
              | (false, false) ->
                  let res = LazyMod(fun () -> f (m1.GetValue()) (m2.GetValue()))
                  m1.AddOutput res
                  m2.AddOutput res
  