OpenAxiom displays Equation(Domain) as:
 (3) -> V1=V2
  LISP output:
 (UNPRINTABLE . UNPRINTABLE)
                            Type: Equation Domain
 (4) -> %::Boolean
   Internal Error
   The function = with signature (%,%) -> Boolean is missing from
      domain Domain
and is missing equality.
fricas
(1) -> V1:=DirectProduct(3+4,Integer)
Type: Type
fricas
V2:=DirectProduct(7,Integer)
Type: Type
fricas
V1=V2
 LISP output:
(UNPRINTABLE . UNPRINTABLE)
Type: Equation(Type)
fricas
%::Boolean
   >> System error:
   The value
  NIL
is not of type
  FUNCTION
Axiom Version:  => /usr/local/lib/open-axiom/x86_64-unknown-linux/1.2.0-2008-05-25 
Putting 
Domain in 
SetCategory is one possible solution to this problem:
spad
)abbrev domain DOMAIN Domain
++ Author: Gabriel Dos Reis
++ Date Create: October 18, 2007.
++ Modified: Bill Page
++ Date Last Updated: June 17, 2008.
++ Basic Operations: coerce, reify
++ Related Constructors: Type, Syntax, OutputForm
++ Also See: Type, ConstructorCall
Domain(): Public == Private where
  Public ==> SetCategory with
    reify: % -> ConstructorCall
      ++ reify(d) returns the abstract syntax for the domain `x'.
    reflect: ConstructorCall -> %
      ++ reflect cc returns the domain object designated by the
      ++ ConstructorCall syntax `cc'.  The constructor implied
      ++ by `cc' must be known to the system since it is instantiated.
    showSummary: % -> Void
      ++ showSummary(d) prints out implementation detail information
      ++ of domain `d'.
  Private ==> add
    coerce x ==
      outputDomainConstructor(x)$Lisp
    x = y ==
      x0 := reify(x)
      y0 := reify(y)
      constructorName(x0)=constructorName(y0) and arguments(x0)=arguments(y0)
    reify x ==
      devaluate(x)$Lisp @ ConstructorCall
    reflect cc ==
      evalDomain(cc)$Lisp @ %
    showSummary x ==
      showSummary(x)$Lisp
spad
   Compiling FriCAS source code from file 
      /var/lib/zope2.10/instance/axiom-wiki/var/LatexWiki/6570934237940921533-25px002.spad
      using old system compiler.
   DOMAIN abbreviates domain Domain 
------------------------------------------------------------------------
   initializing NRLIB DOMAIN for Domain 
   compiling into NRLIB DOMAIN 
   compiling exported coerce : % -> OutputForm
      DOMAIN;coerce;%Of;1 is replaced by outputDomainConstructor 
Time: 0 SEC.
   compiling exported = : (%,%) -> Boolean
****** comp fails at level 4 with expression: ******
error in function = 
(SEQ (|:=| |x0| (|reify| |x|)) (|:=| |y0| (|reify| |y|))
     (|:=| (|:| #1=#:G2 (|Boolean|))
      (= | << | (|constructorName| |x0|) | >> | (|constructorName| |y0|)))
     (|exit| 1
      (IF #1#
          (= (|arguments| |x0|) (|arguments| |y0|))
          |false|)))
****** level 4  ******
x:= (constructorName x0)
m:= $EmptyMode
f:=
((((#:G2 #) (|y0| #) (|x0| #) (|y| # #) ...)))
   >> Apparent user error:
   NoValueMode
    is an unknown mode 
fricas
(V1=V2)@Boolean
   There are 2 exposed and 10 unexposed library operations named = 
      having 2 argument(s) but none was determined to be applicable. 
      Use HyperDoc Browse, or issue
                                )display op =
      to learn more about the available operations. Perhaps 
      package-calling the operation or using coercions on the arguments
      will allow you to apply the operation.
   Cannot find a definition or applicable library operation named = 
      with argument type(s) 
                                    Type
                                    Type
      Perhaps you should use "@" to indicate the required return type, 
      or "$" to specify which version of the function you need.
fricas
V1=V2
 LISP output:
(UNPRINTABLE . UNPRINTABLE)
Type: Equation(Type)
fricas
%::Boolean
   >> System error:
   The value
  NIL
is not of type
  FUNCTION
Status: open => closed