code: private void checkLoopInvariant(String msg, Stmt.Loop stmt, Context context) {
  		//
  		Tuple<WyilFile.Expr> loopInvariant = stmt.getInvariant();
  		LocalEnvironment environment = context.getEnvironment();
  		WyilFile.Decl.FunctionOrMethod declaration = (WyilFile.Decl.FunctionOrMethod) environment
  				.getParent().enclosingDeclaration;
  		// Construct argument to invocation
  		Tuple<WyilFile.Decl.Variable> localVariables = determineUsedVariables(stmt.getInvariant());
  		Expr[] arguments = new Expr[localVariables.size()];
  		for (int i = 0; i != arguments.length; ++i) {
  			WyilFile.Decl.Variable var = localVariables.get(i);
  			arguments[i] = new Expr.VariableAccess(environment.read(var));
  		}
  		//
  		for (int i = 0; i != loopInvariant.size(); ++i) {
  			WyilFile.Expr clause = loopInvariant.get(i);
  			Name ident = convert(declaration.getQualifiedName(), "_loopinvariant_" + clause.getIndex(), declaration.getName());
  			Expr macroCall = new Expr.Invoke(null, ident, null, arguments);
  			context.emit(new VerificationCondition(msg, context.assumptions, macroCall,
  					clause.getParent(WyilFile.Attribute.Span.class)));
  		}
  	}
docs: Emit verification condition(s) to ensure that the clauses of loop invariant
  hold at a given point
  
  @param loopInvariant
  The clauses making up the loop invariant
  @param context