code: def test_tag_solve_triangular():
      if not imported_scipy:
          raise SkipTest("Scipy needed for the Cholesky op.")
      cholesky_lower = Cholesky(lower=True)
      cholesky_upper = Cholesky(lower=False)
      A = tensor.matrix("A")
      x = tensor.vector("x")
      L = cholesky_lower(A)
      U = cholesky_upper(A)
      b1 = solve(L, x)
      b2 = solve(U, x)
      f = theano.function([A, x], b1)
      if config.mode != "FAST_COMPILE":
          for node in f.maker.fgraph.toposort():
              if isinstance(node.op, Solve):
                  assert node.op.A_structure == "lower_triangular"
      f = theano.function([A, x], b2)
      if config.mode != "FAST_COMPILE":
          for node in f.maker.fgraph.toposort():
              if isinstance(node.op, Solve):
                  assert node.op.A_structure == "upper_triangular"
  
file_path: Theano/theano/sandbox/linalg/tests/test_linalg.py
imports: from __future__ import absolute_import, print_function, division
  import numpy
  import numpy.linalg
  import theano
  from theano import tensor, function
  from theano.tensor.basic import _allclose
  from theano.tests.test_rop import break_op
  from theano.tests import unittest_tools
  from theano import config
  from theano.tensor.nlinalg import MatrixInverse
  from theano.tensor import DimShuffle
  from theano.sandbox.linalg.ops import Cholesky, matrix_inverse, Solve, solve, spectral_radius_bound, imported_scipy, inv_as_solve
  from nose.plugins.skip import SkipTest
label_desc: Use image node_id 4 for calling a global function with example usage: test_tag_solve_triangular() without return types