anchor.diff:    env
   
   let push_new_effect env (ed, quals) =
  -  let effects = {env.effects with decls=(ed, quals)::env.effects.decls} in
  +  let effects = {env.effects with decls=env.effects.decls@[(ed, quals)]} in
     {env with effects=effects}
   
   let exists_polymonadic_bind env m n =
  
positive.code:        else "path in the effect lattice") in
  
    if exists_polymonadic_bind env m n |> is_some
    then raise_error (Errors.Fatal_PolymonadicBind_conflict, (err_msg true)) env.range
    else if join_opt env m n |> is_some
         && not (lid_equals m n)
    then raise_error (Errors.Fatal_PolymonadicBind_conflict, (err_msg false)) env.range
    else { env with
           effects = ({ env.effects with polymonadic_binds = (m, n, p, ty)::env.effects.polymonadic_binds }) }
  
  
negative.code:       (if poly then "polymonadic subcomp"
         else "path in the effect lattice") in
  
    if exists_polymonadic_subcomp env m n |> is_some ||
       exists_polymonadic_subcomp env n m |> is_some
    then raise_error (Errors.Fatal_Effects_Ordering_Coherence, (err_msg true)) env.range
    else if monad_leq env m n |> is_some ||
            monad_leq env n m |> is_some
    then raise_error (Errors.Fatal_Effects_Ordering_Coherence, (err_msg false)) env.range
    else { env with
           effects = ({ env.effects with
                        polymonadic_subcomps = (m, n, ts)::env.effects.polymonadic_subcomps }) }
  