code: def test_kanren_basic():
      A_pt = pt.matrix("A")
      x_pt = pt.vector("x")
  
      y_pt = pt.dot(A_pt, x_pt)
  
      q = var()
      res = list(run(None, q, eq(y_pt, etuple(_dot, q, x_pt))))
  
      assert res == [A_pt]
  
imports: from copy import copy
  import numpy
  import pytest
  from etuples import etuple
  from kanren import eq, fact, run
  from kanren.assoccomm import associative, commutative, eq_assoccomm
  from kanren.core import lall
  from unification import var, vars
  import pytensor.tensor
  from pytensor.graph.basic import Apply
  from pytensor.graph.fg import FunctionGraph
  from pytensor.graph.op import Op
  from pytensor.graph.rewriting.basic import EquilibriumGraphRewriter
  from pytensor.graph.rewriting.kanren import KanrenRelationSub
  from pytensor.graph.rewriting.unify import eval_if_etuple
  from pytensor.graph.rewriting.utils import rewrite_graph
  from pytensor.tensor.math import Dot, _dot
  from tests.graph.utils import MyType, MyVariable
label_desc: Use image node_id 2 for calling a global function with example usage: test_kanren_basic() without return types