anchor.diff:                      (CFunc.Func (vfunc "holdLock" []))
                       None))
   
  +
   module ViewFail =
       let check (view : View) (expectedFailures : ViewError list) =
           let actualErrors = failOption <| modelCView context view
  
positive.code:                  Error.TypeMismatch
                     (Int "t", Type.Bool ())) ])
  
  module ArithmeticExprs =
      let check (env : VarMap) (ast : Expression) (expectedExpr : IntExpr<Sym<Var>>) =
          let actualIntExpr = okOption <| modelIntExpr env environ id ast
          AssertAreEqual(Some expectedExpr, actualIntExpr)
  
      [<Test>]
      let ``test modelling (1 * 3) % 2`` ()=
  
negative.code:     Map.ofList [ ("foo", Type.Int ())
                   ("bar", Type.Int ())
                   ("baz", Type.Bool ())
                   ("emp", Type.Bool ())
                   // Multi-dimensional arrays
                   ("grid",
                      Type.Array
                          (Type.Array (Type.Int (), Some 320, ()),
                           Some 240,
                           ())) ]
  
  let shared =
      Map.ofList [ ("nums", Type.Array (Type.Int(), Some 10, ()))
                   ("x", Type.Int ())
                   ("y", Type.Bool ()) ]
  
  let context =
  