# Path: calculus/variable.py
# class GeneralizedVariable:
# class Variable(GeneralizedVariable):
# class StringVariable(Variable):
# class ApplySymbolVariable(GeneralizedVariable):
# class ProductVariable(GeneralizedVariable):
#   def simplify(self):
#   def render(self):
#   def applied_variables(self):
#   def relatedVariable(self):
#   def __init__(self):
#   def _generate_id(self):
#   def updateVariables(self):
#   def __eq__(self, other):
#   def __ne__(self, other):
#   def __hash__(self):
#   def applied_variables(self):
#   def __repr__(self):
#   def substituteVariable(self, a, b):
#   def freeVariables(self):
#   def __init__(self, name, infix = None):
#   def relatedVariable(self):
#   def render(self):
#   def name(self):
#   def __repr__(self):
#   def updateVariables(self):
# def renderInfix(productVariable, infixSymbols, infixVariable):
#   def __init__(self, variable, symbol):
#   def __eq__(self, other):
#   def applied_variables(self):
#   def __ne__(self, other):
#   def __repr__(self):
#   def updateVariables(self):
#   def substituteVariable(self, a, b):
#   def freeVariables(self):
#   def render(self):
# def colors_for_symbol(symbol):
#   def __init__(self, symbol_variable_pairs):
#   def applied_variables(self):
#   def __eq__(self, other):
#   def __ne__(self, other):
#   def __repr__(self):
#   def updateVariables(self):
#   def substituteVariable(self, a, b):
#   def freeVariables(self):
#   def render(self):
# def renderSymbolVariablePair(s, v, c0, c1):
# def borderStack(dimension, color, a, b, borderWidth):
# def renderSymbol(s):
# def renderStringSymbol(s):
# def renderWithBackground(s, border_width, color):
# 
# Path: calculus/variable.py
# class StringVariable(Variable):
#   # infix: either None, or a pair of symbols (a, b) such that when this variable holds
#   #        of a variable v, v is a product variable over symbols a and b.
#   def __init__(self, name, infix = None):
#     self._generate_id()
#     self._name = name
#     self.infix = infix
# 
#   def relatedVariable(self):
#     return StringVariable(name = self.name() + "'", infix = self.infix)
# 
#   def render(self):
#     return primitives.newTextStack(colors.variableColor, repr(self))
# 
#   def name(self):
#     return self._name
# 
#   def __repr__(self):
#     return self.name()
# 
#   def updateVariables(self):
#     return self.relatedVariable()
# 
# Path: lib/common_symbols.py



from calculus import variable
from calculus.variable import StringVariable
from lib.common_symbols import functionPairsSymbol
b = lambda: StringVariable('b')
c = lambda: StringVariable('c')
d = lambda: StringVariable('d')
e = lambda: StringVariable('e')

aprime = lambda: StringVariable('a\'')
bprime = lambda: StringVariable('b\'')
cprime = lambda: StringVariable('c\'')
dprime = lambda: StringVariable('d\'')
eprime = lambda: StringVariable('e\'')

A = lambda: StringVariable('A')
B = lambda: StringVariable('B')
C = lambda: StringVariable('C')

x = lambda: StringVariable('x')
y = lambda: StringVariable('y')
z = lambda: StringVariable('z')

R = lambda: StringVariable('R')

equivalence = StringVariable('equivalence')

function = StringVariable('function')

tmp = lambda: StringVariable('tmp')

natural = variable.StringVariable('N')

S = variable.StringVariable('S')

# Path: calculus/variable.py
# class GeneralizedVariable:
# class Variable(GeneralizedVariable):
# class StringVariable(Variable):
# class ApplySymbolVariable(GeneralizedVariable):
# class ProductVariable(GeneralizedVariable):
#   def simplify(self):
#   def render(self):
#   def applied_variables(self):
#   def relatedVariable(self):
#   def __init__(self):
#   def _generate_id(self):
#   def updateVariables(self):
#   def __eq__(self, other):
#   def __ne__(self, other):
#   def __hash__(self):
#   def applied_variables(self):
#   def __repr__(self):
#   def substituteVariable(self, a, b):
#   def freeVariables(self):
#   def __init__(self, name, infix = None):
#   def relatedVariable(self):
#   def render(self):
#   def name(self):
#   def __repr__(self):
#   def updateVariables(self):
# def renderInfix(productVariable, infixSymbols, infixVariable):
#   def __init__(self, variable, symbol):
#   def __eq__(self, other):
#   def applied_variables(self):
#   def __ne__(self, other):
#   def __repr__(self):
#   def updateVariables(self):
#   def substituteVariable(self, a, b):
#   def freeVariables(self):
#   def render(self):
# def colors_for_symbol(symbol):
#   def __init__(self, symbol_variable_pairs):
#   def applied_variables(self):
#   def __eq__(self, other):
#   def __ne__(self, other):
#   def __repr__(self):
#   def updateVariables(self):
#   def substituteVariable(self, a, b):
#   def freeVariables(self):
#   def render(self):
# def renderSymbolVariablePair(s, v, c0, c1):
# def borderStack(dimension, color, a, b, borderWidth):
# def renderSymbol(s):
# def renderStringSymbol(s):
# def renderWithBackground(s, border_width, color):
# 
# Path: calculus/variable.py
# class StringVariable(Variable):
#   # infix: either None, or a pair of symbols (a, b) such that when this variable holds
#   #        of a variable v, v is a product variable over symbols a and b.
#   def __init__(self, name, infix = None):
#     self._generate_id()
#     self._name = name
#     self.infix = infix
# 
#   def relatedVariable(self):
#     return StringVariable(name = self.name() + "'", infix = self.infix)
# 
#   def render(self):
#     return primitives.newTextStack(colors.variableColor, repr(self))
# 
#   def name(self):
#     return self._name
# 
#   def __repr__(self):
#     return self.name()
# 
#   def updateVariables(self):
#     return self.relatedVariable()
# 
# Path: lib/common_symbols.py



# Path: lib/common_vars.py
from calculus import variable
from calculus.variable import StringVariable
from lib.common_symbols import functionPairsSymbol

b = lambda: StringVariable('b')
c = lambda: StringVariable('c')
d = lambda: StringVariable('d')
e = lambda: StringVariable('e')

aprime = lambda: StringVariable('a\'')
bprime = lambda: StringVariable('b\'')
cprime = lambda: StringVariable('c\'')
dprime = lambda: StringVariable('d\'')
eprime = lambda: StringVariable('e\'')

A = lambda: StringVariable('A')
B = lambda: StringVariable('B')
C = lambda: StringVariable('C')

x = lambda: StringVariable('x')
y = lambda: StringVariable('y')
z = lambda: StringVariable('z')

R = lambda: StringVariable('R')

equivalence = StringVariable('equivalence')

function = StringVariable('function')

tmp = lambda: StringVariable('tmp')

natural = variable.StringVariable('N')

S = variable.StringVariable('S')

S_pairs = variable.ApplySymbolVariable(S, functionPairsSymbol)