text: #*****************************************************************************#
  #* Copyright (c) 2004-2008, SRI International.                               *#
  #* All rights reserved.                                                      *#
  #*                                                                           *#
  #* Redistribution and use in source and binary forms, with or without        *#
  #* modification, are permitted provided that the following conditions are    *#
  #* met:                                                                      *#
  #*   * Redistributions of source code must retain the above copyright        *#
  #*     notice, this list of conditions and the following disclaimer.         *#
  #*   * Redistributions in binary form must reproduce the above copyright     *#
  #*     notice, this list of conditions and the following disclaimer in the   *#
  #*     documentation and/or other materials provided with the distribution.  *#
  #*   * Neither the name of SRI International nor the names of its            *#
  #*     contributors may be used to endorse or promote products derived from  *#
  #*     this software without specific prior written permission.              *#
  #*                                                                           *#
  #* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS       *#
  #* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT         *#
  #* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR     *#
  #* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT      *#
  #* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,     *#
  #* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT          *#
  #* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,     *#
  #* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY     *#
  #* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT       *#
  #* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE     *#
  #* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.      *#
  #*****************************************************************************#
  
  from spark.internal.debug.trace import enable_tracing, disable_tracing, get_trace_fn, TRACE
  from spark.pylang.implementation import PredImpInt, Imp
  from spark.internal.standard import _M
  import __builtin__
  
  
  def showVariable(m, v):
      print _M(m).__dict__[v]
      return True
  
  def showObject(obj):
      SHOW(obj)
      return True
  
  class TracingPredicate(Imp, PredImpInt):
      def solution(self, agent, bindings, zitems):
          return get_trace_fn() == TRACE
      def conclude(self, agent, bindings, zexpr):
          enable_tracing()
      def retractall(self, agent, bindings, zexpr):
          disable_tracing()
  