code: def test_not(self):
      x, y, z = ints("xyz")
      fn = (
          gof.DualLinker()
          .accept(FunctionGraph([x, y], [invert(x)]))
          .make_function()
      )
      for a, b in ((0, 1), (0, 0), (1, 0), (1, 1)):
          self.assertTrue(fn(a, b) == ~a, (a,))
  
      x, y, z = ints("xyz")
      fn = (
          gof.DualLinker()
          .accept(FunctionGraph([x, y], [~x]))
          .make_function()
      )
      for a, b in ((0, 1), (0, 0), (1, 0), (1, 1)):
          self.assertTrue(fn(a, b) == ~a, (a,))
  
imports: from __future__ import absolute_import, print_function, division
  import unittest
  import numpy
  import theano
  from theano.gof import FunctionGraph
  from theano import gof
  from theano.tests import unittest_tools
  from theano.scalar.basic import floats, float16, float32, float64, ints, int8, int32, complex64, uint8, ComplexError, IntDiv, TrueDiv, Composite, add, div_proxy, and_, eq, neq, invert, mul, Scalar, InRange, cast, constant, switch
  from theano.scalar.basic import true_div, inv, log, log2, log10, log1p, exp, exp2, expm1, sqrt, deg2rad, rad2deg, cos, arccos, sin, arcsin, tan, arctan, arctan2, cosh, arccosh, sinh, arcsinh, tanh, arctanh
label_desc: Use image node_id 10 for calling the test_logical obj's underlying member method code with example usage: obj.test_not() without return types