<?xml version="1.0" encoding="ASCII"?>
<!DOCTYPE VersavantTopicMap SYSTEM "http://www.versavant.org/dtds/Versavant-A-1.0.dtd">
<VersavantTopicMap
    TopicMapName="Jacks Topic Map"
    VersavantTopicMapDTDVersion="A-1.0"
    OSPathSeparator="\"
    PythonVersion="2.4"
    VersavantVersion="1.40"
    VersavantSystemTMAName="Vsys"


  ><VersavantTMA AppNm="A_assert"

    ><TMAConfigFile ConfSrcPath="tmaconf.xml">S'%3c?xml version="1.0" encoding="ASCII"?>\n%3c!-- \n\n#####################################################################\n#####################################################################\n## Copyright 2005 Steven R. Newcomb                                ##\n##                                                                 ##\n## This software is licensed under the Apache License, Version 2.0 ##\n## (the "License"); you may not use this file except in compliance ##\n## with the License.  Copies of the License are available at       ##\n##        http://www.apache.org/licenses/LICENSE-2.0               ##\n##                                                                 ##\n## Unless required by applicable law or agreed to in writing,      ##\n## software distributed under the License is distributed on an "AS ##\n## IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either ##\n## express or implied.  See the License for the specific language  ##\n## governing permissions and limitations under the License.        ##\n##                                                                 ##\n## Copies of the source code and the license are available at      ##\n##        http://www.versavant.org                                 ##\n#####################################################################\n#####################################################################\n\n####################################\ncvsRevision = "$Revision: 1.3 $" ##\n####################################\n\n"A_assert" (type-role-assertion) assertions:\n_____________________________________________\n\nThese are like BigAssert, but without casting proxies (c-proxies),\nrole proxies (r-proxies), or assertion type proxies (t-proxies).  Only\nthe assertion proxies (a-proxies) are present.  The roles are identified\nby strings.\n\nAssumptions (almost the same as BigAssert):\n\n* An assertion can only be created by uttering an a_sip property.\n  Everything else will be conferred into existence (but, of course,\n  that doesn\'t prevent the other parts of the assertion from *also*\n  being created manually).  \n\n* You can\'t create an assertion if its x-proxies don\'t already exist.\n  Those x-proxies must already have one or more SIPs.  (Because\n  conferral operations can\'t duplicate SIPs that don\'t exist.)\n\n* An a_sip property consists of a set of tuples, one for each playable\n  role.  Each tuple may have a single member, in which case that\n  member is a unplayed role name.  The tuple may have two members, in\n  which case the first member is the role name and the second is the\n  proxyId of the role player.  No two tuples can have the same first\n  member.\n\n* The SIPs of x-proxies are outside the scope of this TMA.  They\n  cannot be conferred into existence by uttering an a_sip.  (However,\n  an a-proxy can be an x-proxy, too, in which case, obviously, the SIP\n  of such an x-proxy happens to be governed by this TMA.)\n\nproperties of a-proxies\n\n    a_sip (like BigAssert, except that the first member of each tuple\n          is a role name, not a proxyId)\n  \n        Property value type: \n\n           setOfString_ProxyRefTuples.  There must be one or two\n           members per tuple.  The first member of each tuple is a\n           string that will be regarded as a role name.  The second\n           member, if there is one, must be a proxy reference.\n\n        Property value constraints:\n\n           There must be at least two tuples.\n\n           At least one of the tuples must have two members.\n\n           (The first member will be regarded as a role name, while\n           the second member, if there is one, will be regarded as a\n           reference to an x-proxy.)\n\n           No rolename can appear in more than one tuple.\n\n        Context constraints:\n\n           None.\n\n        Proxies with a_sip properties merge when:\n\n           ...the lists of tuples, considered as sets, match.\n\n        The result of merging two or more a_sip properties will be:\n\n           ...the same as any one of them.\n\n        a_sip property values are significantly different if:\n\n           ...the lists of tuples, considered as sets, don\'t match\n\n        a_sip properties trigger conferrals as follows:\n\n           - for each tuple in the a_sip property value that has two\n             members (i.e., that has a reference to an x-proxy)\n\n              . an x-proxy, with its x_roles property, plus the SIP\n                that may be, but is not necessarily, governed by this\n                TMA but already extant\n\nproperties of x-proxies\n\n    (sip not governed by this TMA)\n\n    x_roles    \n\n        Property value type: \n\n           setOfString_ProxyRefTuples.  Each member of each tuple must be a\n           proxy reference.\n\n\n        Property value constraints:\n\n           Each tuple must have two members.\n\n           (The first member will be regarded as a role name.\n           The second member will be regarded as a reference\n           to an a-proxy.)\n\n           Proxies referenced as a-proxies cannot have any properties\n           governed by this TMA other than a_sip and x_roles.\n\n           The role name must be a role name that appears in the\n           referenced a-proxy\'s a-sip value.\n\n        Context constraints:\n\n           (none)\n\n        Proxies merge when:\n\n           (not applicable; this property is not an SIP)\n\n        The result of merging two or more x_roles properties will be:\n\n           ...the union of the sets of tuples that are their values.\n\n        x_roles property values are significantly different if:\n\n           the sets of tuples that are their values are not the same\n\n-->\n%3c!-- %3c!DOCTYPE VersavantTMA SYSTEM "http://www.versavant.org/dtds/TMAConfigFile.dtd">-->\n%3c!DOCTYPE VersavantTMA SYSTEM "../versavantTMA.dtd">\n%3cVersavantTMA\nVersavantTMADTDVersion="1"\n\n  >%3cDesc>TMA for assertions that reify relationships (assertions), but not castings, roles, or assertion types.%3c/Desc\n\n  >%3cValueType ValueTypeName="setOfString_ProxyRefTuples"\n    >%3cDesc>Value type for a_sip class.%3c/Desc\n    >%3cValueIsNotOfType__\n      functionModuleFilePath="${VSVEXECDIR}/Lib/VTsetOfString_ProxyRefTuples.py"\n      functionName="ValueIsNotOfType_setOfString_ProxyRefTuples_"\n    />%3cInstanceOf__ValueTypeToXMLContentString\n      functionModuleFilePath="${VSVEXECDIR}/Lib/VTsetOfString_ProxyRefTuples.py"\n      functionName="InstanceOf_setOfString_ProxyRefTuples_ValueTypeToXMLContentString"\n    />%3cXMLContentStringToInstanceOf__ValueType\n      functionModuleFilePath="${VSVEXECDIR}/Lib/VTsetOfString_ProxyRefTuples.py"\n      functionName="XMLContentStringToInstanceOf_setOfString_ProxyRefTuples_ValueType"\n  />%3c/ValueType\n\n  >%3cPropertyClass PropertyClassName="a_sip" ValueType="setOfString_ProxyRefTuples"\n    >%3cDesc>SIP of this a-proxy; subject is a relationship.%3c/Desc\n    >%3cAdd__PropToOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCsetOfString_ProxyRefTuples.py"\n      functionName="Add_setOfString_ProxyRefTuples_PropToOverheadDict"\n    />%3cRemove__PropFromOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCsetOfString_ProxyRefTuples.py"\n      functionName="Remove_setOfString_ProxyRefTuples_PropFromOverheadDict"\n\n    />%3cValueIsInvalidFor__Property\n      functionModuleFilePath="${VSVEXECDIR}/Lib/A_assert/propertyClasses.py"\n      functionName="ValueIsInvalidFor_a_sip_Property"\n\n    />%3cMerge__PropertyValues\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCsetOfString_ProxyRefTuples.py"\n      functionName="Merge_setOfString_ProxyRefTuples_PropertyValues"\n    />%3cValuesOf__PropertyInstancesAreSignificantlyDifferent\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCsetOfString_ProxyRefTuples.py"\n      functionName="ValuesOf_setOfString_ProxyRefTuples_PropertyInstancesAreSignificantlyDifferent"\n\n    />%3cMergeProxiesBecause__PropertyInstancesSpecifySameSubject\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCsetOfString_ProxyRefTuples.py"\n      functionName="MergeProxiesBecause_setOfString_ProxyRefTuples_PropertyInstancesSpecifySameSubject"\n    />%3cProxiesWith__ValueNotSignificantlyDifferentFrom\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCsetOfString_ProxyRefTuples.py"\n      functionName="ProxiesOfSubjectIdentifiedBy_setOfString_ProxyRefTuples_Value"\n    />%3cUpdateProxyReferencesIn__Value\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCsetOfString_ProxyRefTuples.py"\n      functionName="UpdateProxyReferencesIn_setOfString_ProxyRefTuples_Value"\n  />%3c/PropertyClass\n\n  >%3cConferralRule ConferralRuleName="inferFrom_a_sip_"\n      functionModuleFilePath="${VSVEXECDIR}/Lib/BIGASSERT/conferralRules.py"\n      functionName="inferFrom_a_sip_"\n      functionExtraArgsString="assertionModel = \'A_assert\'"\n    >%3cDesc>From each a_sip property, confers x_roles properties.%3c/Desc\n  >%3c/ConferralRule\n\n  >%3cConferralRule ConferralRuleName="bridge_BigAssert_a_sip_to_A_assert_a_sip"\n      functionModuleFilePath="${VSVEXECDIR}/Lib/BIGASSERT/conferralRules.py"\n      functionName="bridgeAcross_a_sip_Models"\n      functionExtraArgsString="bridgeFromTMAName = \'BigAssert\', \n                               bridgeFromTMAModel = \'BigAssert\', \n                               bridgeToTMAModel = \'A_assert\', \n                               bridgeFromR_ProxyPropertyName = \'role name\', \n                               bridgeFromR_ProxyTMAName = \'Roles\'"\n    >%3cDesc>For each a_sip property in the TMA named in the bridgeFromTMAName keyword argument, confers an a_sip property in this TMA.%3c/Desc\n  >%3c/ConferralRule\n\n  >%3cConferralRule ConferralRuleName="bridge_TRA_assert_a_sip_to_BigAssert_a_sip"\n      functionModuleFilePath="${VSVEXECDIR}/Lib/BIGASSERT/conferralRules.py"\n      functionName="bridgeAcross_a_sip_Models"\n      functionExtraArgsString="bridgeFromTMAName = \'TRA_assert\', \n                               bridgeFromTMAModel = \'TRA_assert\', \n                               bridgeToTMAModel = \'A_assert\', \n                               bridgeFromR_ProxyPropertyName = \'role name\', \n                               bridgeFromR_ProxyTMAName = \'Roles\'"\n    >%3cDesc>For each a_sip property in the TMA named in the bridgeFromTMAName keyword argument, confers an a_sip property in this TMA.%3c/Desc\n  >%3c/ConferralRule\n\n  >%3cPropertyClass PropertyClassName="x_roles" ValueType="setOfString_ProxyRefTuples"\n    >%3cDesc>Rolename/a-proxy-reference pairs that specify the roles/assertions in which the subject of this proxy is the role player.%3c/Desc\n    >%3cAdd__PropToOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCsetOfString_ProxyRefTuples.py"\n      functionName="Add_setOfString_ProxyRefTuples_PropToOverheadDict"\n    />%3cRemove__PropFromOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCsetOfString_ProxyRefTuples.py"\n      functionName="Remove_setOfString_ProxyRefTuples_PropFromOverheadDict"\n    />%3cValueIsInvalidFor__Property\n      functionModuleFilePath="propertyClasses.py"\n      functionName="ValueIsInvalidFor_x_roles_Property"\n      functionExtraArgsString="a_proxy_allowed_properties = [ \'a_sip\', \'x_roles\']"\n    />%3cMerge__PropertyValues\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCsetOfString_ProxyRefTuples.py"\n      functionName="Merge_setOfString_ProxyRefTuples_PropertyValues"\n    />%3cValuesOf__PropertyInstancesAreSignificantlyDifferent\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCsetOfString_ProxyRefTuples.py"\n      functionName="ValuesOf_setOfString_ProxyRefTuples_PropertyInstancesAreSignificantlyDifferent"\n    />%3cProxiesWith__ValueNotSignificantlyDifferentFrom\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCsetOfString_ProxyRefTuples.py"\n      functionName="ProxiesOfSubjectIdentifiedBy_setOfString_ProxyRefTuples_Value"\n    />%3cUpdateProxyReferencesIn__Value\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCsetOfString_ProxyRefTuples.py"\n      functionName="UpdateProxyReferencesIn_setOfString_ProxyRefTuples_Value"\n  />%3c/PropertyClass\n\n>%3c/VersavantTMA>\n'%0ap1%0a.</TMAConfigFile

    ><TMAModule ModName="001_PCsetOfString_ProxyRefTuples" ModSrcFileName="001_PCsetOfString_ProxyRefTuples.py">S'#####################################################################\n#####################################################################\n## Copyright 2005 Steven R. Newcomb                                ##\n##                                                                 ##\n## This software is licensed under the Apache License, Version 2.0 ##\n## (the "License"); you may not use this file except in compliance ##\n## with the License.  Copies of the License are available at       ##\n##        http://www.apache.org/licenses/LICENSE-2.0               ##\n##                                                                 ##\n## Unless required by applicable law or agreed to in writing,      ##\n## software distributed under the License is distributed on an "AS ##\n## IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either ##\n## express or implied.  See the License for the specific language  ##\n## governing permissions and limitations under the License.        ##\n##                                                                 ##\n## Copies of the source code and the license are available at      ##\n##        http://www.versavant.org                                 ##\n#####################################################################\n#####################################################################\n\n####################################\ncvsRevision = "$Revision: 1.4 $" ##\n####################################\n\n\nimport sys\n\n\n###################################\n## setOfString_ProxyRefTuples PC implementation ##\n###################################\n\n#######################################################\ndef Add_setOfString_ProxyRefTuples_PropToOverheadDict( vsv, propertyInstance, overheadDict):\n\n    value = propertyInstance._value\n\n    hashablePropertyValue = propertyInstance.hashablePropertyValue = frozenset( value)\n\n    if overheadDict.has_key( hashablePropertyValue):\n        if propertyInstance.proxyId not in overheadDict[ hashablePropertyValue]:\n            overheadDict[ hashablePropertyValue].append( propertyInstance.proxyId)\n    else:\n        overheadDict[ hashablePropertyValue] = [ propertyInstance.proxyId]\n\n    proxyRefSet = {}\n    for tuple in value:\n        proxyRefSet[ tuple[ 1]] = None\n    propertyInstance.listOfIdsOfReferencedProxies = proxyRefSet.keys()\n    vsv.addNewProxyReferencesToReferencedProxiesDict( propertyInstance)\n\n#######################################################\ndef Remove_setOfString_ProxyRefTuples_PropFromOverheadDict( vsv, propertyInstance, overheadDict):\n    hashablePropertyValue = propertyInstance.hashablePropertyValue\n    if not overheadDict.has_key( hashablePropertyValue):\n        vsv.errMsg( \'No entry in overheadDict of property class for the value (%25s) of property %25s\' %25 (\n            propertyInstance._value,\n            vsv.catKey( propertyInstance.topicMap.topicMapName, propertyInstance.propertyInstanceKey)))\n        sys.exit( 1)\n\n    if propertyInstance.proxyId not in overheadDict[ hashablePropertyValue]:\n        vsv.errMsg( \'ProxyId %25s not found in the overheadDict of property class for the value (%25s) of property %25s\' %25 (\n            propertyInstance.proxyId,\n            propertyInstance._value,\n            vsv.catKey( propertyInstance.topicMap.topicMapName, propertyInstance.propertyInstanceKey)))\n        sys.exit( 1)\n\n    overheadDict[ hashablePropertyValue].remove( propertyInstance.proxyId)\n    if not len( overheadDict[ hashablePropertyValue]):\n        del overheadDict[ hashablePropertyValue]\n\n    vsv.removeOldProxyReferencesFromReferencedProxiesDict( propertyInstance)\n\n#######################################################\ndef Merge_setOfString_ProxyRefTuples_PropertyValues( vsv, value1, value2):\n    newValue = {}\n    for thisTuple in value1:\n        newValue[ thisTuple] = None\n    for thisTuple in value2:\n        newValue[ thisTuple] = None\n    return newValue.keys()\n\n#######################################################\ndef ValuesOf_setOfString_ProxyRefTuples_PropertyInstancesAreSignificantlyDifferent( vsv, value1, value2):\n    if frozenset( value1) != frozenset( value2):  ## ignore differences in sequence and ignore redundant entries\n        return True\n    return False\n\n#######################################################\ndef MergeProxiesBecause_setOfString_ProxyRefTuples_PropertyInstancesSpecifySameSubject( vsv, propertyClass):\n    oDKeys = propertyClass.overheadDict.keys()\n    for key in oDKeys:\n        if propertyClass.overheadDict.has_key( key):\n            if len( propertyClass.overheadDict[ key]) > 1:\n                vsv.mergeListOfProxies( propertyClass, propertyClass.overheadDict[ key])\n\n#######################################################\ndef ProxiesOfSubjectIdentifiedBy_setOfString_ProxyRefTuples_Value( vsv, propertyClass, value):\n    hashablePropertyValue = frozenset( value)\n    if propertyClass.overheadDict.has_key( hashablePropertyValue):\n        return propertyClass.overheadDict[ hashablePropertyValue]\n    else:\n        return []  ## empty list -- no match\n\n#######################################################\ndef UpdateProxyReferencesIn_setOfString_ProxyRefTuples_Value( vsv, propertyInstance, proxyIdToReplace, replacementProxyId):\n    oldValue = propertyInstance._value\n    newValueSet = {}  ## if it turns out that two tuples wind up being the same,\n                   ## this method will make sure that only one of them\n                   ## remains.\n    proxyRefSet = {}  \n##     foundProxyIdToReplace = False\n    for oldTuple in oldValue:\n        newTupleList = [ oldTuple[ 0]]\n        if oldTuple[ 1] == proxyIdToReplace:\n            newTupleList.append( replacementProxyId)\n            proxyRefSet[ replacementProxyId] = None\n##                 foundProxyIdToReplace = True\n        else:\n            newTupleList.append( oldTuple[ 1])\n            proxyRefSet[ oldTuple[ 1]] = None\n        newValueSet[ tuple( newTupleList)] = None\n\n##     CANNOT DO THIS CHECK because sometimes a proxy reference is updated multiple times in the same merge cycle.\n##     if not foundProxyIdToReplace:\n##         vsv.errMsg( \'Did not find reference to proxy %25s in propertyInstance %25s.\' %25 ( proxyIdToReplace, propertyInstance.propertyInstanceKey))\n## ###\n##         vsv.inspect( proxyId=propertyInstance.proxy.proxyId)\n## ###        \n##         sys.exit( 1)\n\n    propertyClass = propertyInstance.propertyClass\n    \n    ## Remove old value from the "overhead" data for this property class\n    if propertyClass.Remove__PropFromOverheadDictFArgString:\n        execStr = \'propertyClass.Remove__PropFromOverheadDictF( vsv, propertyInstance, propertyClass.overheadDict, %25s)\' %25 (\n            propertyClass.Remove__PropFromOverheadDictFArgString)\n        exec execStr\n    else:\n        propertyClass.Remove__PropFromOverheadDictF( vsv, propertyInstance, propertyClass.overheadDict)\n\n    ## Replace the old value with the new one\n    del oldValue[:]\n    oldValue.extend( newValueSet.keys())\n        \n    ## Expose the list of proxy references that appear in the value as a list of proxyIds\n    propertyInstance.listOfIdsOfReferencedProxies = proxyRefSet.keys()\n\n    ## Add new value to the "overhead" data for this property class  (this sets propertyInstance.hashablevalue)\n    if propertyClass.Add__PropToOverheadDictFArgString:\n        execStr = \'propertyClass.Add__PropToOverheadDictF( vsv, propertyInstance, propertyClass.overheadDict, %25s)\' %25 (\n            propertyClass.Add__PropToOverheadDictFArgString)\n        exec execStr\n    else:\n        propertyClass.Add__PropToOverheadDictF( vsv, propertyInstance, propertyClass.overheadDict)\n\n\n\n'%0ap1%0a.</TMAModule

    ><TMAModule ModName="001_VTsetOfString_ProxyRefTuples" ModSrcFileName="001_VTsetOfString_ProxyRefTuples.py">S'#####################################################################\n#####################################################################\n## Versavant Topic Map Application Bus / Subject Addressing Engine ##\n## Copyright 2005 Steven R. Newcomb                                ##\n##                                                                 ##\n## This software is licensed under the Apache License, Version 2.0 ##\n## (the "License"); you may not use this file except in compliance ##\n## with the License.  Copies of the License are available at       ##\n##        http://www.apache.org/licenses/LICENSE-2.0               ##\n##                                                                 ##\n## Unless required by applicable law or agreed to in writing,      ##\n## software distributed under the License is distributed on an "AS ##\n## IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either ##\n## express or implied.  See the License for the specific language  ##\n## governing permissions and limitations under the License.        ##\n##                                                                 ##\n## Copies of the source code and the license are available at      ##\n##        http://www.versavant.org                                 ##\n#####################################################################\n#####################################################################\n\n####################################\ncvsRevision = "$Revision: 1.4 $" ##\n####################################\n\n\n###################################################################\n## setOfString_ProxyRefTuples  (for a_sip properties in BIGASSERT, and x_roles properties in TRA_assert)\n###################################################################\n\nimport types, traceback\n\n#################################################\n## implementation of                           ##\n## setOfString_ProxyRefTuples                         ##\n#################################################\n\n#######################################################\ndef ValueIsNotOfType_setOfString_ProxyRefTuples_( vsv, propertyValue, propertyClass, propertyInstance = None):\n    if not isinstance( propertyValue, types.ListType):\n        if propertyInstance:\n            vsv.errMsg( \'Value "%25s" of property "%25s" is not a list.\' %25 ( propertyValue, propertyInstance.propertyInstanceKey))\n        else:\n            vsv.errMsg( \'Value "%25s" of proposed "%25s" property is not a list.\' %25 ( propertyValue, vsv.catKey( propertyClass.topicMap.topicMapName, propertyClass.propertyClassName)))\n        return True\n\n    if vsv.nowImporting:\n        return False  ## can\'t make the rest of these checks yet\n    \n    for tuple in propertyValue:\n        if not isinstance( tuple, types.TupleType):\n            vsv.errMsg( \'Value is a list that contains an item (%25s) that is not a tuple.\' %25 ( tuple))\n            return True\n        memberNumber = 0\n        for member in tuple:\n            memberNumber += 1\n            if not isinstance( member, types.StringType):\n                vsv.errMsg( \'Value is a list that contains an item that is a tuple that contains a member (%25s) that is not a string.\' %25 ( member))\n                return True\n            if memberNumber == 2:  ## only the second member of the pair is a proxy reference\n                if propertyInstance:\n                    proxy = vsv.isProxyId( member, propertyInstance.topicMap)\n                    if not proxy:\n                        vsv.errMsg( \'Value is a list that contains an item that is a tuple that contains a member (%25s) that is a string that is not a proxyId in topic map "%25s".\' %25 ( member, propertyInstance.topicMap.topicMapName))\n                        return True\n                    if proxy.forwardTo:\n                        traceback.print_stack()\n                        vsv.errMsg( \'Value "%25s" of "%25s" is a list that contains an item that is a tuple that contains a member (%25s) that is a string that is the proxyId (in topic map "%25s") of a dead proxy.  Only living proxies can be referenced.\' %25 ( propertyValue, propertyInstance.propertyInstanceKey, member, propertyInstance.topicMap.topicMapName))\n###\n                        vsv.inspect( proxyId = propertyInstance.proxyId)\n###\n\n                        return True\n                else:\n                    proxy = vsv.isProxyId( member)\n                    if not proxy:\n                        vsv.errMsg( \'Value is a list that contains an item that is a tuple that contains a member (%25s) that is a string that is not a proxyId.\' %25 ( member))\n                        return True\n                    if proxy.forwardTo:\n                        vsv.errMsg( \'Value is a list that contains an item that is a tuple that contains a member (%25s) that is a string that is the proxyId of a dead proxy.  Only living proxies can be referenced.\' %25 ( member))\n\n    return False\n\n#######################################################\ndef InstanceOf_setOfString_ProxyRefTuples_ValueTypeToXMLContentString( vsv, propertyInstance):\n    return vsv.cPickleDumpObjectAsXMLContentString( propertyInstance._value)\n\n#######################################################\ndef XMLContentStringToInstanceOf_setOfString_ProxyRefTuples_ValueType( vsv, string, propertyClass):\n    ## Import a list of proxy references, adjusting them as necessary to\n    ## the new proxyIds of the imported proxies to which they refer.\n\n    propertyClassName = propertyClass.propertyClassName\n    TMAName = propertyClass.TMA.TMAName\n\n    oldSetOfString_ProxyRefTuples = vsv.cPickleLoadObjectFromXMLContentString( string)\n\n    mem2xmlProxyIdDict = vsv.currentTopicMapHoldingDict[ \'IoMapsDict\'][ \'ProxyIds.mem2xml\']\n        ## This dictionary allows us to look up the in-xml element id of a\n        ## proxy, given the proxy\'s proxyId as it was in the topic map\n        ## from which the proxy was exported as xml.\n\n    firstImportedProxyId = vsv.firstImportedProxyId\n        ## This is an integer which, if we were to convert it into a\n        ## string of decimal digits with 2 prepended zero characters,\n        ## would be the proxyId of the first (the first, that is, not\n        ## counting the proxies created in order to register the TMAs\n        ## of the xml topic map being imported) in-memory proxy to be\n        ## imported into the being-imported-into topic map from the\n        ## xml topic map that we\'re importing.\n\n\n    newSetOfString_ProxyRefTuples = []\n\n    for oldTuple in oldSetOfString_ProxyRefTuples:\n        newTupleList = []\n        memberNumber = 0\n        for oldMember in oldTuple:\n            memberNumber += 1\n            if memberNumber == 1:\n                newTupleList.append( oldMember)\n            else:  ## memberNumber == 2: replace the proxyId\n                xmlProxyNum = mem2xmlProxyIdDict[ int( oldMember)]\n                newProxyNum = (xmlProxyNum + firstImportedProxyId) - 1\n                newMember = \'00%25s\' %25 ( newProxyNum)\n\n                newTupleList.append( newMember)\n\n                appDict = vsv.currentTopicMapHoldingDict[ \'IoMapsDict\'][ \'TMAs\'][ TMAName]\n                if not appDict.has_key( propertyClassName):\n                    appDict[ propertyClassName] = [ newMember]\n                else:\n                    if newMember not in appDict[ propertyClassName]:\n                        appDict[ propertyClassName].append( newMember)\n\n        newSetOfString_ProxyRefTuples.append( tuple( newTupleList))\n\n    ## vsv.IoMapsDict[ args[ \'TMAName\']][ propertyClassName] will be consulted by\n    ## the ValueIsNotOfType__() function in order to avoid a logical logjam over this.\n    ## The logical logjam is that we\'re referring to proxies that haven\'t been imported\n    ## yet, and the ValueIsNotOfType__() function checks to see that the proxy references are valid.\n    ## This gives the ValueIsNotOfType__() function something to fall back on, as it checks.\n    ## See that function, above, for more.\n\n    return newSetOfString_ProxyRefTuples\n\n'%0ap1%0a.</TMAModule

    ><TMAModule ModName="001_conferralRules" ModSrcFileName="001_conferralRules.py">S'#####################################################################\n#####################################################################\n## Copyright 2005 Steven R. Newcomb                                ##\n##                                                                 ##\n## This software is licensed under the Apache License, Version 2.0 ##\n## (the "License"); you may not use this file except in compliance ##\n## with the License.  Copies of the License are available at       ##\n##        http://www.apache.org/licenses/LICENSE-2.0               ##\n##                                                                 ##\n## Unless required by applicable law or agreed to in writing,      ##\n## software distributed under the License is distributed on an "AS ##\n## IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either ##\n## express or implied.  See the License for the specific language  ##\n## governing permissions and limitations under the License.        ##\n##                                                                 ##\n## Copies of the source code and the license are available at      ##\n##        http://www.versavant.org                                 ##\n#####################################################################\n#####################################################################\n\n\n#####################################################################\n## Implementation of the conferral rules "inferFrom_a_sip_"\n## in Topic Map Application "BIGASSERT".\n#####################################################################\n\n####################################\ncvsRevision = "$Revision: 1.4 $" ##\n####################################\n\n\nimport sys, copy\n\ndef inferFrom_a_sip_( vsv, conferralRule, **args):\n\n##         a_sip properties trigger conferrals as follows:\n\n##            - if assertionModel == \'BigAssert\' or assertionModel == \'TRA_assert\':\n##              a t-proxy, with its t_sip and t_assertions properties.\n##              The t_sip property\'s value is a list of references to the\n##              set of r-proxies (the ones that are referenced as the\n##              first member of each tuple in the a_sip property\'s\n##              value).  The t_assertions property\'s value is a list of\n##              proxy references with one item in it - a reference to\n##              the a-proxy that has this a_sip property.\n\n##            - for each tuple in the a_sip property value, the following\n##              are conferred into existence:\n\n##               . if assertionModel == \'BigAssert\':\n##                 a c-proxy, with its c_sip property.  (See c_sip,\n##                 below.)\n\n##               . if assertionModel == \'BigAssert\':\n##                 an r-proxy, with its r_type and r_castings properties,\n##                 plus an SIP that is not governed by this TMA but is\n##                 already extant.\n\n##               . if assertionModel == \'TRA_assert\':\n##                 an r-proxy, with its r_type and r_rolePlayers properties,\n##                 plus an SIP that is not governed by this TMA but is\n##                 already extant.\n\n##            - for each tuple in the a_sip property value that has two\n##              members (i.e., that has a reference to an x-proxy)\n\n##               . if assertionModel == \'BigAssert\':\n##                 an x-proxy, with its x_castings property, plus the SIP\n##                 not governed by this TMA but already extant\n\n##               . if assertionModel == \'TRA_assert\':\n##                 an x-proxy, with its x_roles property, which in\n##                 this case consists of duples, the first member of\n##                 which is a reference to an r-proxy, and the second\n##                 member of which is a reference to an a-proxy, plus\n##                 the SIP not governed by this TMA but already extant\n\n##               . if assertionModel == \'A_assert\':\n##                 an x-proxy, with its x_roles property, which in\n##                 this case consists of duples, the first member of\n##                 which is a rolename of an (unreified) role, and the second\n##                 member of which is a reference to an a-proxy, plus\n##                 the SIP not governed by this TMA but already extant\n\n##            - if assertionModel == \'BigAssert\' or assertionModel == \'TRA_assert\':\n##              an a_type property on a new a_proxy that has a copy of\n##              the triggering a_sip property.\n\n##            - if assertionModel == \'BigAssert\':\n##              an a_castings property on a new a_proxy that has a\n##              copy of the triggering a_sip property.\n\n\n    assertionModel = args[ \'assertionModel\']  ## possible values: \'BigAssert\', \'TRA_assert\', \'A_assert\'\n\n    topicMap = conferralRule.topicMap  ## make the below code less verbose (and maybe run slightly faster)\n    TMA = conferralRule.TMA  ## this is the TMA that defines this conferral rule\n    old_a_sip_overheadDict = TMA.propertyClasses[ \'a_sip\'].overheadDict\n\n    old_a_sip_hashableValueList = old_a_sip_overheadDict.keys()\n\n    for old_a_sip_hashableValue in old_a_sip_hashableValueList:\n\n        old_a_proxyIdList = old_a_sip_overheadDict[ old_a_sip_hashableValue]\n\n        for old_a_proxyId in old_a_proxyIdList:\n\n            old_a_proxy = topicMap.proxies[ old_a_proxyId]\n            old_a_sip_instance = old_a_proxy.propertyInstances[ vsv.catKey( TMA.TMAName, \'a_sip\')]\n\n            ## Don\'t be triggered by any a_sip_instance that was\n            ## output by an operation of this rule, and don\'t be\n            ## triggered by an a_sip_instance property more than once.\n            conferralRuleTriggerRoleId = vsv.catKey( conferralRule.conferralRuleKey, \'a_sip value\')\n            if old_a_sip_instance.conferralTriggerAncestry.has_key( conferralRuleTriggerRoleId) or \\\n                old_a_sip_instance.conferralsTriggered.has_key( conferralRuleTriggerRoleId):\n                continue\n\n            triggers = {}  ## new dictionary to work in\n            triggers[ \'a_sip value\'] = old_a_sip_instance.propertyInstanceKey\n            conferredValueSources = {}  ## new dictionary to work in\n            conferredValueSources[ \'a_sip value\'] = old_a_sip_instance.propertyInstanceKey\n\n            if vsv.conferralMayBeSignificant( conferralRule, triggers, conferredValueSources):\n\n                if assertionModel == \'BigAssert\' or assertionModel == \'TRA_assert\':\n                    ## new t_proxy\n                    t_proxy = vsv.newProxyObject( topicMap)\n                    r_proxyIdList = []\n                    new_c_proxyIdList = []\n\n                for currentTuple in old_a_sip_instance._value:\n\n                    if len( currentTuple) == 2: ## If there\'s a role player\n                        ## make new x_proxy\n                        old_x_proxy = topicMap.proxies[ currentTuple[ 1]]\n                        old_x_proxy_sip = vsv.SIPOfProxy( old_x_proxy)\n\n                        x_proxy = vsv.newProxyObject( topicMap)\n\n                        vsv.newPropertyInstance( x_proxy,  ## copy the x_proxy\'s SIP\n                                                 old_x_proxy_sip.propertyClass.TMA,\n                                                 old_x_proxy_sip.propertyClass.propertyClassName,\n                                                 vsv.versaCopy( old_x_proxy_sip._value),   ## important!  Must be a copy; cannot be same object.\n                                                 triggers,\n                                                 conferredValueSources)\n\n                    if assertionModel == \'BigAssert\' or assertionModel == \'TRA_assert\':\n                        r_proxyIdList.append( currentTuple[ 0])\n\n                        if assertionModel == \'BigAssert\': ## BIGASSERT, not TRA_assert\n                            ## new c_proxy\n                            c_proxy = vsv.newProxyObject( topicMap)\n                            new_c_proxyIdList.append( c_proxy.proxyId)\n\n                            if len( currentTuple) == 1:\n                                c_sip_value = [ currentTuple[ 0], old_a_proxy.proxyId]\n                            else:  ## len( currentTuple) == 2:\n                                c_sip_value = [ currentTuple[ 0], old_a_proxy.proxyId, currentTuple[ 1]]\n\n                                vsv.newPropertyInstance( x_proxy,\n                                                         conferralRule.TMA,\n                                                         \'x_castings\',\n                                                         [ c_proxy.proxyId],\n                                                         triggers,\n                                                         conferredValueSources)\n\n\n\n                            vsv.newPropertyInstance( c_proxy,\n                                                     conferralRule.TMA,\n                                                     \'c_sip\',\n                                                     c_sip_value,\n                                                     triggers,\n                                                     conferredValueSources)\n\n                        ## new r_proxy\n                        old_r_proxy = topicMap.proxies[ currentTuple[ 0]]\n                        old_r_proxy_sip = vsv.SIPOfProxy( old_r_proxy)\n\n                        r_proxy = vsv.newProxyObject( topicMap)\n\n                        vsv.newPropertyInstance( r_proxy,  ## copy the r_proxy\'s SIP, so the new proxy will merge with the old one\n                                                 old_r_proxy_sip.propertyClass.TMA,\n                                                 old_r_proxy_sip.propertyClass.propertyClassName,\n                                                 vsv.versaCopy( old_r_proxy_sip._value),  ## important that it\'s a copy, not a reference!\n                                                 triggers,\n                                                 conferredValueSources)\n\n                        vsv.newPropertyInstance( r_proxy,\n                                                 conferralRule.TMA,\n                                                 \'r_type\',\n                                                 [ t_proxy.proxyId],\n                                                 triggers,\n                                                 conferredValueSources)\n\n                        if assertionModel == \'BigAssert\': ## BIGASSERT only, not TRA_assert or A_assert\n                            vsv.newPropertyInstance( r_proxy,\n                                                     conferralRule.TMA,\n                                                     \'r_castings\',\n                                                     [ c_proxy.proxyId],\n                                                     triggers,\n                                                     conferredValueSources)\n\n                        elif assertionModel == \'TRA_assert\': ## TRA_assert only, not BIGASSERT or A_assert\n                            vsv.newPropertyInstance( r_proxy,\n                                                     conferralRule.TMA,\n                                                     \'r_rolePlayers\',\n                                                     [ x_proxy.proxyId],\n                                                     triggers,\n                                                     conferredValueSources)\n\n                    if assertionModel == \'TRA_assert\': ## TRA_assert, not BIGASSERT, nor A_assert\n                        if len( currentTuple) == 2:\n                            vsv.newPropertyInstance( x_proxy,\n                                                     conferralRule.TMA,\n                                                     \'x_roles\',\n                                                     [ tuple( [ r_proxy.proxyId, old_a_proxy.proxyId])],\n                                                     triggers,\n                                                     conferredValueSources)\n\n                    if assertionModel == \'A_assert\': ## A_assert, not BIGASSERT, nor TRA_assert\n                        currentTupleList = list( currentTuple)\n                        if len( currentTupleList) == 1:\n                            vsv.newPropertyInstance( x_proxy,\n                                                     conferralRule.TMA,\n                                                     \'x_roles\',\n                                                     [ tuple( [ currentTupleList[ 0]])],\n                                                     triggers,\n                                                     conferredValueSources)\n                        if len( currentTupleList) == 2:\n                            vsv.newPropertyInstance( x_proxy,\n                                                     conferralRule.TMA,\n                                                     \'x_roles\',\n                                                     [ tuple( [ currentTupleList[ 0], old_a_proxy.proxyId])],\n                                                     triggers,\n                                                     conferredValueSources)\n\n                if assertionModel == \'BigAssert\' or assertionModel == \'TRA_assert\':\n                    ## set t_proxy\'s properties\n                    vsv.newPropertyInstance( t_proxy,\n                                             conferralRule.TMA,\n                                             \'t_sip\',\n                                             r_proxyIdList,\n                                             triggers,\n                                             conferredValueSources)\n\n                    vsv.newPropertyInstance( t_proxy,\n                                             conferralRule.TMA,\n                                             \'t_assertions\',\n                                             [ old_a_proxyId],\n                                             triggers,\n                                             conferredValueSources)\n\n\n\n                    ## set new a_proxy\'s properties\n                    new_a_proxy = vsv.newProxyObject( topicMap)\n\n                    vsv.newPropertyInstance( new_a_proxy,  ## copy the a_proxy\'s SIP\n                                             conferralRule.TMA,\n                                             \'a_sip\',\n                                             vsv.versaCopy( old_a_sip_instance._value),\n                                             triggers,\n                                             conferredValueSources)\n\n                    vsv.newPropertyInstance( new_a_proxy,\n                                             conferralRule.TMA,\n                                             \'a_type\',\n                                             [ t_proxy.proxyId],\n                                             triggers,\n                                             conferredValueSources)\n\n                    if assertionModel == \'BigAssert\':  ## BIGASSERT, not TRA_assert or A_assert\n                        vsv.newPropertyInstance( new_a_proxy,\n                                                 conferralRule.TMA,\n                                                 \'a_castings\',\n                                                 new_c_proxyIdList,\n                                                 triggers,\n                                                 conferredValueSources)\n\n\n\ndef bridgeAcross_a_sip_Models( vsv, conferralRule, **args):\n    ## from bridgeFromTMAName,,a_sip properties, infer a_sip\n    ## properties in the conferralRule\'s TMA.  (With all that that\n    ## entails.)\n\n    bridgeFromTMAName  = args[ \'bridgeFromTMAName\']\n    bridgeFromTMAModel = args[ \'bridgeFromTMAModel\']  ## possible values: \'BigAssert\', \'TRA_assert\', \'A_assert\'\n    bridgeToTMAModel   = args[ \'bridgeToTMAModel\']    ## possible values: \'BigAssert\', \'TRA_assert\', \'A_assert\'\n    \n    ## this happens later, iff bridging to A_assert:\n    ##   bridgeFromR_ProxyTMAName = args[ \'bridgeFromR_ProxyTMAName\']\n    ##   bridgeFromR_ProxyPropertyName = args[ \'bridgeFromR_ProxyPropertyName\']\n\n    ## this happens later, iff bridging from A_assert:\n    ##   bridgeToR_ProxyTMAName = args[ \'bridgeToR_ProxyPropertyName\']\n    ##   bridgeToR_ProxyPropertyName = args[ \'bridgeToR_ProxyPropertyName\']\n    ## Note that the bridgeToR_Proxy property must be an SIP, and there must already be an instance\n    ## of it to merge with, or Versavant will refuse to honor a request to create it.  Therefore,\n    ## an up-translation may require an original population task to pre-create the r-proxies.\n\n    topicMap = conferralRule.topicMap  ## make the below code less verbose (and maybe run slightly faster)\n    TMA = conferralRule.TMA  ## this is the TMA that defines this conferral rule\n    bridgeFromTMA = topicMap.TMAs[ bridgeFromTMAName]\n    bridgeFrom_a_sip_overheadDict = bridgeFromTMA.propertyClasses[ \'a_sip\'].overheadDict\n\n    old_a_sip_hashableValueList = bridgeFrom_a_sip_overheadDict.keys()\n\n    for old_a_sip_hashableValue in old_a_sip_hashableValueList:\n\n        old_a_proxyIdList = vsv.versaCopy( bridgeFrom_a_sip_overheadDict[ old_a_sip_hashableValue])\n\n        for old_a_proxyId in old_a_proxyIdList:\n\n            old_a_proxy = topicMap.proxies[ old_a_proxyId]\n            old_a_sip_instance = old_a_proxy.propertyInstances[ vsv.catKey( bridgeFromTMA.TMAName, \'a_sip\')]\n\n            ## Don\'t be triggered by an a_sip_instance property more\n            ## than once, and don\'t be triggered by any a_sip_instance\n            ## that was output by an operation of this rule\n            conferralRuleTriggerRoleId = vsv.catKey( conferralRule.conferralRuleKey, \'a_sip value\')\n            if old_a_sip_instance.conferralTriggerAncestry.has_key( conferralRuleTriggerRoleId) or \\\n                   old_a_sip_instance.conferralsTriggered.has_key( conferralRuleTriggerRoleId):\n                continue\n\n            triggers = {}  ## new dictionary to work in\n            triggers[ \'a_sip value\'] = old_a_sip_instance.propertyInstanceKey\n            conferredValueSources = {}  ## new dictionary to work in\n            conferredValueSources[ \'a_sip value\'] = old_a_sip_instance.propertyInstanceKey\n\n            if vsv.conferralMayBeSignificant( conferralRule, triggers, conferredValueSources):\n\n                ## new a_proxy\n                a_proxy = vsv.newProxyObject( topicMap)\n\n                vsv.newPropertyInstance( a_proxy,  ## copy the existing old_a_proxy\'s a_sip\n                                         bridgeFromTMA,\n                                         \'a_sip\',\n                                         vsv.versaCopy( old_a_sip_instance._value),\n                                         triggers,\n                                         conferredValueSources)\n\n                ## calculate this TMA\'s SIP value\n\n                if bridgeFromTMAModel not in [ \'BigAssert\', \'TRA_assert\', \'A_assert\']:\n                    vsv.errMsg( \'unrecognized bridgeFromTMAModel value: "%25s"\' %25 ( bridgeFromTMAModel))\n                    sys.exit( 1)\n\n                if bridgeToTMAModel not in [ \'BigAssert\', \'TRA_assert\', \'A_assert\']:\n                    vsv.errMsg( \'unrecognized bridgeToTMAModel value: "%25s"\' %25 ( bridgeToTMAModel))\n                    sys.exit( 1)\n\n                if bridgeFromTMAModel == bridgeToTMAModel:\n                    vsv.errMsg( \'does not make sense to bridge from bridgeFromTMAModel "%25s" to bridgeToTMAModel "%25s".\' %25 ( bridgeFromTMAModel, bridgeToTMAModel))\n                    sys.exit( 1)\n\n                if ( bridgeFromTMAModel == \'BigAssert\' and bridgeToTMAModel == \'TRA_assert\') or ( bridgeFromTMAModel == \'TRA_assert\' and bridgeToTMAModel == \'BigAssert\'):\n                    ## There\'s no difference between the a_sip properties of BigAssert vs. TRA_assert.  Just duplicate it.\n                    thisTMAs_a_sip_instanceValue = old_a_sip_instance._value\n\n                elif ( bridgeFromTMAModel == \'BigAssert\' or bridgeFromTMAModel == \'TRA_assert\') and ( bridgeToTMAModel == \'A_assert\'):\n                    ## Here we need to convert each r-proxy reference (the first member of each tuple) into a string which will serve as the role name.\n                    bridgeFromR_ProxyPropertyName = args[ \'bridgeFromR_ProxyPropertyName\']\n                    bridgeFromR_ProxyTMAName = args[ \'bridgeFromR_ProxyTMAName\']\n\n                    thisTMAs_a_sip_instanceValue = []\n                    roleNames = {}\n                    for thisTuple in old_a_sip_instance._value:\n                        r_proxy = topicMap.proxies[ thisTuple[ 0]]\n                        r_proxy_sip = r_proxy.propertyInstances[ vsv.catKey( bridgeFromR_ProxyTMAName, bridgeFromR_ProxyPropertyName)]\n                        roleName = \'%25s\' %25 ( r_proxy_sip._value)\n                        if roleName in roleNames:\n                            vsv.errMsg( \'a_sip value of proxy %25s cannot be bridged from TMA %25s (model %25s) to TMA %25s (model %25s); two or more roleNames turn out to be "%25s".\' %25 ( old_a_proxyId, bridgeFromTMAName, bridgeFromTMAModel, TMA.TMAName, bridgeToTMAModel, roleName))\n                            sys.exit( 1)\n                        roleNames[ roleName] = None\n                        newTupleList = [ roleName, thisTuple[ 1]]\n                        thisTMAs_a_sip_instanceValue.append( tuple( newTupleList))\n\n                elif ( bridgeFromTMAModel == \'A_assert\') and ( bridgeToTMAModel == \'BigAssert\' or bridgeToTMAModel == \'TRA_assert\'):\n                    bridgeToR_ProxyTMAName = args[ \'bridgeToR_ProxyTMAName\']\n                    bridgeToR_ProxyPropertyName = args[ \'bridgeToR_ProxyPropertyName\']\n\n                    thisTMAs_a_sip_instanceValue = []\n                    for thisTuple in old_a_sip_instance._value:\n                        r_proxy = vsv.newProxyObject( topicMap)\n                        vsv.newPropertyInstance( r_proxy,\n                            bridgeToR_ProxyTMAName,\n                            bridgeToR_ProxyPropertyName,\n                            vsv.versaCopy( thisTuple[ 0]),  ## here is the role name that we\'re reifying with this new r-proxy\n                            triggers,\n                            conferredValueSources)\n\n                        newTupleList = [ r_proxy.proxyId, thisTuple[ 1]]  ## thisTuple[ 1] is the proxyId of the role player\n                        thisTMAs_a_sip_instanceValue.append( tuple( newTupleList))\n\n                else:\n                    vsv.errMsg( \'This should never happen.  bridgeFromTMAModel == "%25s"; bridgeToTMAModel == "%25s".\' %25 ( bridgeFromTMAModel, bridgeToTMAModel))\n                    sys.exit( 1)\n\n                vsv.newPropertyInstance( a_proxy,  ## set this TMA\'s a_sip to the same value\n                                         TMA,\n                                         \'a_sip\',\n                                         vsv.versaCopy( thisTMAs_a_sip_instanceValue),\n                                         triggers,\n                                         conferredValueSources)\n\n\ndef bridgeAcross_t_sip_Models( vsv, conferralRule, **args):\n    ## from bridgeFromTMAName,,t_sip properties, infer t_sip\n    ## properties in the conferralRule\'s TMA.  (With all that that\n    ## entails.)\n\n    bridgeFromTMAName = args[ \'bridgeFromTMAName\']\n\n    topicMap = conferralRule.topicMap  ## make the below code less verbose (and maybe run slightly faster)\n    TMA = conferralRule.TMA  ## this is the TMA that defines this conferral rule\n    bridgeFromTMA = topicMap.TMAs[ bridgeFromTMAName]\n    bridgeFrom_t_sip_overheadDict = bridgeFromTMA.propertyClasses[ \'t_sip\'].overheadDict\n\n    t_sip_hashableValueList = bridgeFrom_t_sip_overheadDict.keys()\n\n    for t_sip_hashableValue in t_sip_hashableValueList:\n\n        t_proxyIdList = vsv.versaCopy( bridgeFrom_t_sip_overheadDict[ t_sip_hashableValue])\n\n        for t_proxyId in t_proxyIdList:\n\n            t_proxy = topicMap.proxies[ t_proxyId]\n            t_sip_instance = t_proxy.propertyInstances[ vsv.catKey( bridgeFromTMA.TMAName, \'t_sip\')]\n\n            ## Don\'t be triggered by an t_sip_instance property more\n            ## than once, and don\'t be triggered by any t_sip_instance\n            ## that was output by an operation of this rule\n            conferralRuleTriggerRoleId = vsv.catKey( conferralRule.conferralRuleKey, \'t_sip value\')\n            if t_sip_instance.conferralTriggerAncestry.has_key( conferralRuleTriggerRoleId) or \\\n                   t_sip_instance.conferralsTriggered.has_key( conferralRuleTriggerRoleId):\n                continue\n\n            triggers = {}  ## new dictionary to work in\n            triggers[ \'t_sip value\'] = t_sip_instance.propertyInstanceKey\n            conferredValueSources = {}  ## new dictionary to work in\n            conferredValueSources[ \'t_sip value\'] = t_sip_instance.propertyInstanceKey\n\n            if vsv.conferralMayBeSignificant( conferralRule, triggers, conferredValueSources):\n\n                ## new t_proxy\n                t_proxy = vsv.newProxyObject( topicMap)\n\n                vsv.newPropertyInstance( t_proxy,  ## copy the existing t_proxy\'s t_sip\n                                         bridgeFromTMA,\n                                         \'t_sip\',\n                                         vsv.versaCopy( t_sip_instance._value),\n                                         triggers,\n                                         conferredValueSources)\n\n                vsv.newPropertyInstance( t_proxy,  ## set this TMA\'s t_sip to the same value\n                                         TMA,\n                                         \'t_sip\',\n                                         vsv.versaCopy( t_sip_instance._value),\n                                         triggers,\n                                         conferredValueSources)\n\n\ndef bridgeFromU_assert( vsv, conferralRule, **args):\n    ## from bridgeFromTMAName,,x_LrnRrnRrp properties, infer a_sip\n    ## properties in the conferralRule\'s TMA.  (With all that that\n    ## entails.)\n\n    u_assertTMAName = args[ \'bridgeFromTMAName\']\n    rolesTMAName = args[ \'rolesTMAName\']\n    roleNamePropertyClassName = args[ \'roleNamePropertyClassName\']\n    u_assertPropertyName = \'x_LrnRrnRrp\'\n\n    topicMap = conferralRule.topicMap\n    TMA = conferralRule.TMA  ## this is the TMA that defines this conferral rule\n    rolesTMA = topicMap.TMAs[ rolesTMAName]\n    u_assertTMA = topicMap.TMAs[ u_assertTMAName]\n    proxyIdList = u_assertTMA.propertyClasses[ u_assertPropertyName].overheadDict[ \'proxyIds\'].keys()\n    u_assertPropertyInstanceInProxyKey = vsv.catKey( u_assertTMAName, u_assertPropertyName)\n\n    existingRoleDict = rolesTMA.propertyClasses[ \'role name\'].overheadDict\n\n    for proxyId in proxyIdList:\n\n        proxy = topicMap.proxies[ proxyId]\n\n        u_assertProperty = proxy.propertyInstances[ u_assertPropertyInstanceInProxyKey]\n\n        ## Don\'t be triggered by a u_assert property more than once\n        conferralRuleTriggerRoleId = vsv.catKey( conferralRule.conferralRuleKey, \'A\')\n        if u_assertProperty.conferralTriggerAncestry.has_key( conferralRuleTriggerRoleId) or \\\n               u_assertProperty.conferralsTriggered.has_key( conferralRuleTriggerRoleId):\n            continue\n\n        triggers = {}  ## new dictionary to work in\n        triggers[ \'A\'] = u_assertProperty.propertyInstanceKey\n        conferredValueSources = {}  ## new dictionary to work in\n        conferredValueSources[ \'A\'] = u_assertProperty.propertyInstanceKey\n\n        if vsv.conferralMayBeSignificant( conferralRule, triggers, conferredValueSources):\n\n            dict1 = u_assertProperty._value\n\n            for dict1Key in dict1:\n                localRoleName = dict1Key\n                localRoleProxyId = existingRoleDict[ localRoleName][ 0]\n                dict2 = dict1[ dict1Key]\n                for dict2Key in dict2:\n                    remoteRoleName = dict2Key\n                    remoteRoleProxyId = existingRoleDict[ remoteRoleName][ 0]\n                    stringList = dict2[ dict2Key]\n                    for remoteProxyId in stringList:\n\n\n                        ## new a_proxy\n                        a_proxy = vsv.newProxyObject( topicMap)\n\n                        vsv.newPropertyInstance( a_proxy,  ## set this TMA\'s t_sip to the same value\n                                                 TMA,\n                                                 \'a_sip\',\n                                                 [ ( localRoleProxyId, proxyId), ( remoteRoleProxyId, remoteProxyId)],\n                                                 triggers,\n                                                 conferredValueSources)\n\n'%0ap1%0a.</TMAModule

    ><TMAModule ModName="001_propertyClasses" ModSrcFileName="001_propertyClasses.py">S'#####################################################################\n#####################################################################\n## Copyright 2005 Steven R. Newcomb                                ##\n##                                                                 ##\n## This software is licensed under the Apache License, Version 2.0 ##\n## (the "License"); you may not use this file except in compliance ##\n## with the License.  Copies of the License are available at       ##\n##        http://www.apache.org/licenses/LICENSE-2.0               ##\n##                                                                 ##\n## Unless required by applicable law or agreed to in writing,      ##\n## software distributed under the License is distributed on an "AS ##\n## IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either ##\n## express or implied.  See the License for the specific language  ##\n## governing permissions and limitations under the License.        ##\n##                                                                 ##\n## Copies of the source code and the license are available at      ##\n##        http://www.versavant.org                                 ##\n#####################################################################\n#####################################################################\n\n####################################\ncvsRevision = "$Revision: 1.3 $" ##\n####################################\n\n\nimport sys\n\n#################################################################\n## a_sip PC implementation                                     ##\n## (mostly it\'s in ${VSVEXECDIR}/Lib/PCsetOfString_ProxyRefTuples.py, ##\n#################################################################\n\n#######################################################\ndef ValueIsInvalidFor_a_sip_Property( vsv, propertyValue, propertyClass, propertyInstance = None):\n    TMAName = propertyClass.TMA.TMAName\n    topicMap = propertyClass.topicMap\n\n    if len( propertyValue) %3c 2:\n        if propertyInstance:\n            vsv.errMsg( \'Value of %25s property contains %25d tuples; should have at least two tuples.  A relationship must have at least two roles, even if some of them are unplayed.\' %25 ( propertyInstance.propertyInstanceKey, len( propertyValue)))\n        else:\n            vsv.errMsg( \'Value of %25s presumptive property contains %25d tuples; should have at least two tuples.  A relationship must have at least two roles, even if some of them are unplayed.\' %25 ( vsv.catKey( TMAName, propertyClass), len( propertyValue)))\n        return True\n\n    foundDuple = False\n    for tuple in propertyValue:\n        memberCount = len( tuple)\n        if memberCount == 2:\n            foundDuple = True\n        elif memberCount == 1:\n            pass\n        else:\n            if propertyInstance:\n                vsv.errMsg( \'Tuple in %25s property\\\'s value has %25d members; should have 1 (an unplayed role name) or 2 (a role name and a role player).\' %25 ( propertyInstance.propertyInstanceKey, memberCount))\n            else:\n                vsv.errMsg( \'Tuple in presumptive %25s property\\\'s value has %25d members; should have 1 (an unplayed role name) or 2 (a role name and a role player).\' %25 ( vsv.catKey( TMAName, propertyClass.propertyClassName), memberCount))\n            return True\n        memberNumber = 0\n        roleNameDict = {}\n        for member in tuple:\n            memberNumber += 1\n\n            if memberNumber == 1:\n                roleName = member\n                if vsv.looksLikeProxyId( member):\n                    bool, proxyIdLookalikeREString = vsv.looksLikeProxyId( member)\n                    if propertyInstance:\n                        vsv.errMsg( \'member %25s of tuple "%25s" ("%25s") of %25s property is bad because it looks like a proxyId.  Role names cannot match the regular expression "%25s".\' %25 ( memberNumber, tuple, member, propertyInstance.propertyInstanceKey, proxyIdLookalikeREString))\n                    else:\n                        vsv.errMsg( \'member %25s of tuple "%25s" ("%25s") of presumptive %25s property is bad because it looks like a proxyId.  Role names cannot match the regular expression "%25s".\' %25 ( memberNumber, tuple, member, vsv.catKey( propertyClass.TMA.TMAName, propertyClass.propertyClassName), proxyIdLookalikeREString))\n                    return True\n                    \n                if roleNameDict.has_key( member):\n                    if propertyInstance:\n                        vsv.errMsg( \'multiple appearances of the same role name (%25s) in property %25s.  No role name can be used more than once in any given assertion.\' %25 ( member, propertyInstance.propertyInstanceKey))\n                    else:\n                        vsv.errMsg( \'multiple appearances of the same role name (%25s) in presumptive property %25s.  No role name can be used more than once in any given assertion.\' %25 ( member, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n                    return True\n                roleNameDict[ member] = None\n\n            elif memberNumber == 2:  ## this should be a reference to an x_proxy\n                if not vsv.nowImporting:  ## can\'t do these checks if we\'re importing\n                    proxy = vsv.isProxyId( member, topicMap)\n                    if not proxy:\n                        if propertyInstance:\n                            vsv.errMsg( \'Tuple in value of %25s property has as its second member "%25s", which is not a proxyId.\' %25 ( propertyInstance.propertyInstanceKey, member))\n                        else:\n                            vsv.errMsg( \'Tuple in value of presumptive %25s property has as its second member "%25s", which is not a proxyId.\' %25 ( vsv.catKey( TMAName, propertyClass.propertyClassName), member))\n                        return True\n                    if proxy.forwardTo:\n                        if propertyInstance:\n                            vsv.errMsg( \'Tuple in value of %25s property as its second member "%25s", which is the proxyId of a dead proxy.\' %25 ( propertyInstance.propertyInstanceKey, member))\n                        else:\n                            vsv.errMsg( \'Tuple in value of presumptive %25s property has as its second member "%25s", which is the proxyId of a dead proxy.\' %25 ( vsv.catKey( TMAName, propertyClass.propertyClassName), member))\n                        return True\n\n                    if not vsv.currentProcOperation:\n                        found_x_roles_property = False\n                        for propertyInstanceKey2 in proxy.propertyInstances:\n                            tmaName, checkablePropertyClassName = vsv.parsePropertyKey2( propertyInstanceKey2)\n                            if TMAName == tmaName:\n                                if checkablePropertyClassName == \'x_roles\':\n                                    found_x_roles_property = True\n                                    foundRoleName = False\n                                    for thatTuple in propertyInstance._value:\n                                        if thatTuple[ 0] == roleName:\n                                            foundRoleName = True\n                                            break\n                                    if not foundRoleName:\n                                        if propertyInstance:\n                                            vsv.errMsg( \'Proxy referenced as second member of tuple "%25s" in value of %25s property has an x_roles property that does not mention the role name "%25s" which is the first member of the tuple.\' %25 ( thisTuple, propertyInstance.propertyInstanceKey, roleName))\n                                        else:\n                                            vsv.errMsg( \'Proxy referenced as second member of tuple "%25s" in value of presumptive %25s property has an x_roles property that does not mention the role name "%25s" which is the first member of the tuple.\' %25 ( thisTuple, vsv.catKey( TMAName, propertyClass.propertyClassName), roleName))\n                                        return True\n                        if ( not found_x_roles_property):\n                            if propertyInstance:\n                                vsv.errMsg( \'Proxy referenced as second member of tuple "%25s" in value of %25s property has no x_roles property.\' %25 ( thisTuple, propertyInstance.propertyInstanceKey))\n                            else:\n                                vsv.errMsg( \'Proxy referenced as second member of tuple "%25s" in value of presumptive %25s property has no x_roles property.\' %25 ( thisTuple, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n                            return True\n\n    if not foundDuple:\n        if propertyInstance:\n            vsv.errMsg( \'No tuple in value of %25s property has 2 members.  There must be at least one tuple that has two members; a relationship between nothing and nothing is not a relationship.\' %25 ( propertyInstance.propertyInstanceKey))\n        else:\n            vsv.errMsg( \'No tuple in value of presumptive %25s property has 2 members.  There must be at least one tuple that has two members; a relationship between nothing and nothing is not a relationship.\' %25 ( vsv.catKey( TMAName, propertyClass.propertyClassName)))\n        return True\n\n    return False\n\n\n\n\n###########################################\n## x_roles PC implementation               ##\n## (mostly re-uses ${VSVEXECDIR}/Lib/PCsetOfString_ProxyRefTuples) ##\n###########################################\n\n#######################################################\ndef ValueIsInvalidFor_x_roles_Property( vsv, propertyValue, propertyClass, propertyInstance = None, **args):\n    a_proxy_allowed_properties = args[ \'a_proxy_allowed_properties\']\n    TMAName = propertyClass.TMA.TMAName\n    topicMap = propertyClass.topicMap\n\n    for thisTuple in propertyValue:\n        memberCount = len( thisTuple)\n        if memberCount != 2:\n            if propertyInstance:\n                vsv.errMsg( \'Tuple in %25s property\\\'s value has %25d members; should have 2 (a role name and a relationship).\' %25 ( propertyInstance.propertyInstanceKey, memberCount))\n            else:\n                vsv.errMsg( \'Tuple in presumptive %25s property\\\'s value has %25d members; should have 2 (a role name and a relationship).\' %25 ( vsv.catKey( TMAName, propertyClass.propertyClassName), memberCount))\n            return True\n        memberNumber = 0\n        for member in thisTuple:\n            memberNumber += 1\n            if memberNumber == 1:  ## this should be a roleName\n                roleName = member\n            else:                  ## memberNumber == 2; this should be a reference to an a-proxy\n                if not vsv.nowImporting:  ## can\'t do this check if we\'re importing\n                    proxy = vsv.isProxyId( member, topicMap)\n                    if not proxy:\n                        if propertyInstance:\n                            vsv.errMsg( \'Tuple in value of %25s property has as its second member "%25s", which is not a proxyId.\' %25 ( propertyInstance.propertyInstanceKey, member))\n                        else:\n                            vsv.errMsg( \'Tuple in value of presumptive %25s property has as its second member "%25s", which is not a proxyId.\' %25 ( vsv.catKey( TMAName, propertyClass.propertyClassName), member))\n                        return True\n                    if proxy.forwardTo:\n                        if propertyInstance:\n                            vsv.errMsg( \'Tuple in value of %25s property as its second member "%25s", which is the proxyId of a dead proxy.\' %25 ( propertyInstance.propertyInstanceKey, member))\n                        else:\n                            vsv.errMsg( \'Tuple in value of presumptive %25s property has as its second member "%25s", which is the proxyId of a dead proxy.\' %25 ( vsv.catKey( TMAName, propertyClass.propertyClassName), member))\n                        return True\n\n                    if not vsv.currentProcOperation:\n                        found_a_sip_property = False\n                        for propertyInstanceKey2 in proxy.propertyInstances:\n                            tmaName, checkablePropertyClassName = vsv.parsePropertyKey2( propertyInstanceKey2)\n                            if TMAName == tmaName:\n                                if checkablePropertyClassName not in a_proxy_allowed_properties:\n                                    if propertyInstance:\n                                        vsv.errMsg( \'Proxy referenced as second member of tuple "%25s" in value of %25s property value has a "%25s" property, which, as an a-proxy, it should not have.\' %25 ( thisTuple, propertyInstance.propertyInstanceKey, checkablePropertyClassName))\n                                    else:\n                                        vsv.errMsg( \'Proxy referenced as second member of tuple "%25s" in value of presumptive %25s property value has a "%25s" property, which, as an a-proxy, it should not have.\' %25 ( thisTuple, vsv.catKey( TMAName, propertyClass.propertyClassName), checkablePropertyClassName))\n                                    return True\n                                if checkablePropertyClassName == \'a_sip\':\n                                    found_a_sip_property = True\n                                    foundRoleName = False\n                                    for thatTuple in propertyInstance._value:\n                                        if thatTuple[ 0] == roleName:\n                                            foundRoleName = True\n                                            break\n                                    if not foundRoleName:\n                                        if propertyInstance:\n                                            vsv.errMsg( \'Proxy referenced as second member of tuple "%25s" in value of %25s property has an a_sip property that does not mention the role name "%25s" which is the first member of the tuple.\' %25 ( thisTuple, propertyInstance.propertyInstanceKey, roleName))\n                                        else:\n                                            vsv.errMsg( \'Proxy referenced as second member of tuple "%25s" in value of presumptive %25s property has an a_sip property that does not mention the role name "%25s" which is the first member of the tuple.\' %25 ( thisTuple, vsv.catKey( TMAName, propertyClass.propertyClassName), roleName))\n                                        return True\n                        if not found_a_sip_property:\n                            if propertyInstance:\n                                vsv.errMsg( \'Proxy referenced as second member of tuple "%25s" in value of %25s property has no a_sip property.\' %25 ( thisTuple, propertyInstance.propertyInstanceKey))\n                            else:\n                                vsv.errMsg( \'Proxy referenced as second member of tuple "%25s" in value of presumptive %25s property has no a_sip property.\' %25 ( thisTuple, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n                            return True\n\n    return False\n\n\n\n'%0ap1%0a.</TMAModule

    ><TMAModule ModName="002_propertyClasses" ModSrcFileName="002_propertyClasses.py">S'#####################################################################\n#####################################################################\n## Copyright 2005 Steven R. Newcomb                                ##\n##                                                                 ##\n## This software is licensed under the Apache License, Version 2.0 ##\n## (the "License"); you may not use this file except in compliance ##\n## with the License.  Copies of the License are available at       ##\n##        http://www.apache.org/licenses/LICENSE-2.0               ##\n##                                                                 ##\n## Unless required by applicable law or agreed to in writing,      ##\n## software distributed under the License is distributed on an "AS ##\n## IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either ##\n## express or implied.  See the License for the specific language  ##\n## governing permissions and limitations under the License.        ##\n##                                                                 ##\n## Copies of the source code and the license are available at      ##\n##        http://www.versavant.org                                 ##\n#####################################################################\n#####################################################################\n\n####################################\ncvsRevision = "$Revision: 1.3 $" ##\n####################################\n\n\nimport sys\n\n#################################################################\n## a_sip PC implementation                                     ##\n## (mostly it\'s in ${VSVEXECDIR}/Lib/PCsetOfString_ProxyRefTuples.py, ##\n#################################################################\n\n#######################################################\ndef ValueIsInvalidFor_a_sip_Property( vsv, propertyValue, propertyClass, propertyInstance = None):\n    TMAName = propertyClass.TMA.TMAName\n    topicMap = propertyClass.topicMap\n\n    if len( propertyValue) %3c 2:\n        if propertyInstance:\n            vsv.errMsg( \'Value of %25s property contains %25d tuples; should have at least two tuples.  A relationship must have at least two roles, even if some of them are unplayed.\' %25 ( propertyInstance.propertyInstanceKey, len( propertyValue)))\n        else:\n            vsv.errMsg( \'Value of %25s presumptive property contains %25d tuples; should have at least two tuples.  A relationship must have at least two roles, even if some of them are unplayed.\' %25 ( vsv.catKey( TMAName, propertyClass), len( propertyValue)))\n        return True\n\n    foundDuple = False\n    for tuple in propertyValue:\n        memberCount = len( tuple)\n        if memberCount == 2:\n            foundDuple = True\n        elif memberCount == 1:\n            pass\n        else:\n            if propertyInstance:\n                vsv.errMsg( \'Tuple in %25s property\\\'s value has %25d members; should have 1 (an unplayed role name) or 2 (a role name and a role player).\' %25 ( propertyInstance.propertyInstanceKey, memberCount))\n            else:\n                vsv.errMsg( \'Tuple in presumptive %25s property\\\'s value has %25d members; should have 1 (an unplayed role name) or 2 (a role name and a role player).\' %25 ( vsv.catKey( TMAName, propertyClass.propertyClassName), memberCount))\n            return True\n        memberNumber = 0\n        roleNameDict = {}\n        for member in tuple:\n            memberNumber += 1\n\n            if memberNumber == 1:\n                roleName = member\n                if vsv.looksLikeProxyId( member):\n                    bool, proxyIdLookalikeREString = vsv.looksLikeProxyId( member)\n                    if propertyInstance:\n                        vsv.errMsg( \'member %25s of tuple "%25s" ("%25s") of %25s property is bad because it looks like a proxyId.  Role names cannot match the regular expression "%25s".\' %25 ( memberNumber, tuple, member, propertyInstance.propertyInstanceKey, proxyIdLookalikeREString))\n                    else:\n                        vsv.errMsg( \'member %25s of tuple "%25s" ("%25s") of presumptive %25s property is bad because it looks like a proxyId.  Role names cannot match the regular expression "%25s".\' %25 ( memberNumber, tuple, member, vsv.catKey( propertyClass.TMA.TMAName, propertyClass.propertyClassName), proxyIdLookalikeREString))\n                    return True\n                    \n                if roleNameDict.has_key( member):\n                    if propertyInstance:\n                        vsv.errMsg( \'multiple appearances of the same role name (%25s) in property %25s.  No role name can be used more than once in any given assertion.\' %25 ( member, propertyInstance.propertyInstanceKey))\n                    else:\n                        vsv.errMsg( \'multiple appearances of the same role name (%25s) in presumptive property %25s.  No role name can be used more than once in any given assertion.\' %25 ( member, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n                    return True\n                roleNameDict[ member] = None\n\n            elif memberNumber == 2:  ## this should be a reference to an x_proxy\n                if not vsv.nowImporting:  ## can\'t do these checks if we\'re importing\n                    proxy = vsv.isProxyId( member, topicMap)\n                    if not proxy:\n                        if propertyInstance:\n                            vsv.errMsg( \'Tuple in value of %25s property has as its second member "%25s", which is not a proxyId.\' %25 ( propertyInstance.propertyInstanceKey, member))\n                        else:\n                            vsv.errMsg( \'Tuple in value of presumptive %25s property has as its second member "%25s", which is not a proxyId.\' %25 ( vsv.catKey( TMAName, propertyClass.propertyClassName), member))\n                        return True\n                    if proxy.forwardTo:\n                        if propertyInstance:\n                            vsv.errMsg( \'Tuple in value of %25s property as its second member "%25s", which is the proxyId of a dead proxy.\' %25 ( propertyInstance.propertyInstanceKey, member))\n                        else:\n                            vsv.errMsg( \'Tuple in value of presumptive %25s property has as its second member "%25s", which is the proxyId of a dead proxy.\' %25 ( vsv.catKey( TMAName, propertyClass.propertyClassName), member))\n                        return True\n\n                    if not vsv.currentProcOperation:\n                        found_x_roles_property = False\n                        for propertyInstanceKey2 in proxy.propertyInstances:\n                            tmaName, checkablePropertyClassName = vsv.parsePropertyKey2( propertyInstanceKey2)\n                            if TMAName == tmaName:\n                                if checkablePropertyClassName == \'x_roles\':\n                                    found_x_roles_property = True\n                                    foundRoleName = False\n                                    for thatTuple in propertyInstance._value:\n                                        if thatTuple[ 0] == roleName:\n                                            foundRoleName = True\n                                            break\n                                    if not foundRoleName:\n                                        if propertyInstance:\n                                            vsv.errMsg( \'Proxy referenced as second member of tuple "%25s" in value of %25s property has an x_roles property that does not mention the role name "%25s" which is the first member of the tuple.\' %25 ( thisTuple, propertyInstance.propertyInstanceKey, roleName))\n                                        else:\n                                            vsv.errMsg( \'Proxy referenced as second member of tuple "%25s" in value of presumptive %25s property has an x_roles property that does not mention the role name "%25s" which is the first member of the tuple.\' %25 ( thisTuple, vsv.catKey( TMAName, propertyClass.propertyClassName), roleName))\n                                        return True\n                        if ( not found_x_roles_property):\n                            if propertyInstance:\n                                vsv.errMsg( \'Proxy referenced as second member of tuple "%25s" in value of %25s property has no x_roles property.\' %25 ( thisTuple, propertyInstance.propertyInstanceKey))\n                            else:\n                                vsv.errMsg( \'Proxy referenced as second member of tuple "%25s" in value of presumptive %25s property has no x_roles property.\' %25 ( thisTuple, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n                            return True\n\n    if not foundDuple:\n        if propertyInstance:\n            vsv.errMsg( \'No tuple in value of %25s property has 2 members.  There must be at least one tuple that has two members; a relationship between nothing and nothing is not a relationship.\' %25 ( propertyInstance.propertyInstanceKey))\n        else:\n            vsv.errMsg( \'No tuple in value of presumptive %25s property has 2 members.  There must be at least one tuple that has two members; a relationship between nothing and nothing is not a relationship.\' %25 ( vsv.catKey( TMAName, propertyClass.propertyClassName)))\n        return True\n\n    return False\n\n\n\n\n###########################################\n## x_roles PC implementation               ##\n## (mostly re-uses ${VSVEXECDIR}/Lib/PCsetOfString_ProxyRefTuples) ##\n###########################################\n\n#######################################################\ndef ValueIsInvalidFor_x_roles_Property( vsv, propertyValue, propertyClass, propertyInstance = None, **args):\n    a_proxy_allowed_properties = args[ \'a_proxy_allowed_properties\']\n    TMAName = propertyClass.TMA.TMAName\n    topicMap = propertyClass.topicMap\n\n    for thisTuple in propertyValue:\n        memberCount = len( thisTuple)\n        if memberCount != 2:\n            if propertyInstance:\n                vsv.errMsg( \'Tuple in %25s property\\\'s value has %25d members; should have 2 (a role name and a relationship).\' %25 ( propertyInstance.propertyInstanceKey, memberCount))\n            else:\n                vsv.errMsg( \'Tuple in presumptive %25s property\\\'s value has %25d members; should have 2 (a role name and a relationship).\' %25 ( vsv.catKey( TMAName, propertyClass.propertyClassName), memberCount))\n            return True\n        memberNumber = 0\n        for member in thisTuple:\n            memberNumber += 1\n            if memberNumber == 1:  ## this should be a roleName\n                roleName = member\n            else:                  ## memberNumber == 2; this should be a reference to an a-proxy\n                if not vsv.nowImporting:  ## can\'t do this check if we\'re importing\n                    proxy = vsv.isProxyId( member, topicMap)\n                    if not proxy:\n                        if propertyInstance:\n                            vsv.errMsg( \'Tuple in value of %25s property has as its second member "%25s", which is not a proxyId.\' %25 ( propertyInstance.propertyInstanceKey, member))\n                        else:\n                            vsv.errMsg( \'Tuple in value of presumptive %25s property has as its second member "%25s", which is not a proxyId.\' %25 ( vsv.catKey( TMAName, propertyClass.propertyClassName), member))\n                        return True\n                    if proxy.forwardTo:\n                        if propertyInstance:\n                            vsv.errMsg( \'Tuple in value of %25s property as its second member "%25s", which is the proxyId of a dead proxy.\' %25 ( propertyInstance.propertyInstanceKey, member))\n                        else:\n                            vsv.errMsg( \'Tuple in value of presumptive %25s property has as its second member "%25s", which is the proxyId of a dead proxy.\' %25 ( vsv.catKey( TMAName, propertyClass.propertyClassName), member))\n                        return True\n\n                    if not vsv.currentProcOperation:\n                        found_a_sip_property = False\n                        for propertyInstanceKey2 in proxy.propertyInstances:\n                            tmaName, checkablePropertyClassName = vsv.parsePropertyKey2( propertyInstanceKey2)\n                            if TMAName == tmaName:\n                                if checkablePropertyClassName not in a_proxy_allowed_properties:\n                                    if propertyInstance:\n                                        vsv.errMsg( \'Proxy referenced as second member of tuple "%25s" in value of %25s property value has a "%25s" property, which, as an a-proxy, it should not have.\' %25 ( thisTuple, propertyInstance.propertyInstanceKey, checkablePropertyClassName))\n                                    else:\n                                        vsv.errMsg( \'Proxy referenced as second member of tuple "%25s" in value of presumptive %25s property value has a "%25s" property, which, as an a-proxy, it should not have.\' %25 ( thisTuple, vsv.catKey( TMAName, propertyClass.propertyClassName), checkablePropertyClassName))\n                                    return True\n                                if checkablePropertyClassName == \'a_sip\':\n                                    found_a_sip_property = True\n                                    foundRoleName = False\n                                    for thatTuple in propertyInstance._value:\n                                        if thatTuple[ 0] == roleName:\n                                            foundRoleName = True\n                                            break\n                                    if not foundRoleName:\n                                        if propertyInstance:\n                                            vsv.errMsg( \'Proxy referenced as second member of tuple "%25s" in value of %25s property has an a_sip property that does not mention the role name "%25s" which is the first member of the tuple.\' %25 ( thisTuple, propertyInstance.propertyInstanceKey, roleName))\n                                        else:\n                                            vsv.errMsg( \'Proxy referenced as second member of tuple "%25s" in value of presumptive %25s property has an a_sip property that does not mention the role name "%25s" which is the first member of the tuple.\' %25 ( thisTuple, vsv.catKey( TMAName, propertyClass.propertyClassName), roleName))\n                                        return True\n                        if not found_a_sip_property:\n                            if propertyInstance:\n                                vsv.errMsg( \'Proxy referenced as second member of tuple "%25s" in value of %25s property has no a_sip property.\' %25 ( thisTuple, propertyInstance.propertyInstanceKey))\n                            else:\n                                vsv.errMsg( \'Proxy referenced as second member of tuple "%25s" in value of presumptive %25s property has no a_sip property.\' %25 ( thisTuple, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n                            return True\n\n    return False\n\n\n\n'%0ap1%0a.</TMAModule

  ></VersavantTMA


  ><VersavantTMA AppNm="BigAssert"

    ><TMAConfigFile ConfSrcPath="tmaconf.xml">S'%3c?xml version="1.0" encoding="ASCII"?>\n%3c!-- \n\n#####################################################################\n#####################################################################\n## Copyright 2005 Steven R. Newcomb                                ##\n##                                                                 ##\n## This software is licensed under the Apache License, Version 2.0 ##\n## (the "License"); you may not use this file except in compliance ##\n## with the License.  Copies of the License are available at       ##\n##        http://www.apache.org/licenses/LICENSE-2.0               ##\n##                                                                 ##\n## Unless required by applicable law or agreed to in writing,      ##\n## software distributed under the License is distributed on an "AS ##\n## IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either ##\n## express or implied.  See the License for the specific language  ##\n## governing permissions and limitations under the License.        ##\n##                                                                 ##\n## Copies of the source code and the license are available at      ##\n##        http://www.versavant.org                                 ##\n#####################################################################\n#####################################################################\n\n####################################\ncvsRevision = "$Revision: 1.9 $" ##\n####################################\n\n\n"BigAssert" assertions\n_______________________\n\n(1) The heavy-duty model:\n\n            t\n        r1  |   r2\n        |   |   |\n   x1___c1__a___c2__x2         Suggest: "fully reified assertion"\n                               This one is implemented; the\n                               implementation is called "BigAssert",\n                               which is perhaps a more tasteful name\n                               than "BigAss".  See attached diagram.\n\nAssumptions:\n\n* An assertion can only be created by uttering an a_sip property.\n  Everything else will be conferred into existence (but, of course,\n  that doesn\'t prevent the other parts of the assertion from *also*\n  being created manually).  \n\n* You can\'t create an assertion if its r-proxies and x-proxies don\'t\n  already exist.  Those r-proxies and x-proxies must already have one\n  or more SIPs.  (Because conferral operations can\'t duplicate SIPs\n  that don\'t exist.)\n\n* An a_sip property consists of a set of tuples, one for each playable\n  role.  Each tuple may have a single member, in which case that\n  member is an unplayed role.  The tuple may have two members, in\n  which case the first member is the role and the second is the role\n  player.  The set of playable roles becomes the t_sip of the t-proxy.\n  No two tuples can have the same first member.\n\n* The SIPs of r-proxies and x-proxies are outside the scope of this\n  TMA.  They cannot be conferred into existence by uttering an a_sip.\n\n* The constraint that no r-proxy can appear in more than one t-proxy\n  is a constraint on the value of the r_type property.\n\nproperties of a-proxies\n\n    a_sip\n  \n        Property value type: \n\n           setOfProxyRefTuples.  Each member of each tuple must be a\n           proxy reference.\n\n        Property value constraints:\n\n           There must be at least two tuples.\n\n           At least one of the tuples must have two members.\n\n           (The first member will be regarded as a reference to an\n           r-proxy, while the second member, if there is one, will be\n           regarded as a reference to an x-proxy.)\n\n           No proxy can be referenced as an r-proxy more than once\n           (i.e., by more than one tuple)\n\n           Proxies referenced as r-proxies cannot have any properties\n           governed by this TMA other than r_type, r_rolePlayers, and\n           x_roles.\n\n        Context constraints:\n\n           Proxies that have a_sip properties cannot have any\n           properties governed by this TMA other than a_sip, a_type,\n           a_castings, and x_castings.\n\n        Proxies with a_sip properties merge when:\n\n           ...the lists of tuples, considered as sets, match.\n\n        The result of merging two or more a_sip properties will be:\n\n           ...the same as any one of them.\n\n        a_sip property values are significantly different if:\n\n           ...the lists of tuples, considered as sets, don\'t match\n\n        a_sip properties trigger conferrals as follows:\n\n           - a t-proxy, with its t_sip and t_assertions properties.\n             The t_sip property\'s value is a list of references to the\n             set of r-proxies (the ones that are referenced as the\n             first member of each tuple in the a_sip property\'s\n             value).  The t_assertions property\'s value is a list of\n             proxy references with one item in it - a reference to\n             the a-proxy that has this a_sip property.\n\n           - for each tuple in the a_sip property value, the following\n             are conferred into existence:\n\n              . a c-proxy, with its c_sip property.  (See c_sip,\n                below.)\n\n              . an r-proxy, with its r_type and r_castings property,\n                plus an SIP that is not governed by this TMA but is\n                already extant.\n\n           - for each tuple in the a_sip property value that has two\n             members (i.e., that has a reference to an x-proxy)\n\n              . an x-proxy, with its x_castings property, plus the SIP\n                that may be, but is not necessarily, governed by this\n                TMA but is already extant\n\n           - an a_type property on the same proxy in which the a_sip\n             property appears\n\n           - an a_castings property on the same proxy in which the\n             a_sip appears\n\n    a_castings\n\n        Property value type: \n\n           A list of proxy references.\n\n        Property value constraints:\n\n           There must be at least two proxy references.\n\n           No two references can be to the same proxy\n\n           Proxies referenced cannot have any properties governed by\n           this TMA other than c_sip and x_castings.\n\n           Proxies referenced must have c_sip properties whose\n           second tuple-member is the a-proxy.\n\n        Context constraints:\n\n           Proxies that have a_castings properties cannot have any\n           properties governed by this TMA other than a_sip, a_type,\n           a_castings, and x_castings.\n\n        Proxies merge when:\n\n           (not applicable; this property is not an SIP)\n\n        The result of merging two or more a_castings properties will be:\n\n           ...the same as any one of them\n\n        a_castings property values are significantly different if:\n\n           Their lists of proxy references, considered as sets, don\'t match.\n\n        a_castings properties trigger conferrals as follows:\n\n           (no conferrals)\n\n    a_type\n\n        Property value type: \n\n           List of proxy references.\n\n        Property value constraints:\n\n           There must be at least one proxy reference.  (During a\n           merging cycle, there may temporarily be more than one.)\n\n           Proxies referenced cannot have any properties governed by\n           this TMA other than t_sip, t_assertions, and x_castings.\n\n        Context constraints:\n\n           Proxies that have a_type properties cannot have any\n           properties governed by this TMA other than a_sip,\n           a_type, and x_castings.\n\n        Proxies merge when:\n\n           (not applicable; this property is not an SIP)\n\n        The result of merging two or more a_type properties will be:\n\n           ...the union of their sets of proxy references\n\n        a_type property values are significantly different if:\n\n           Their lists of proxy references, considered as sets, don\'t match.\n\n        a_type properties trigger conferrals as follows:\n\n           (no conferrals)\n\n\nproperties of c-proxies\n\n    c_sip\n\n        Property value type: \n\n           A list, treated as a tuple.  The tuple must have either two\n           or three members, and each member must be a proxy\n           reference.\n\n        Property value constraints:\n\n           (The first member will be regarded as a reference to an\n           r-proxy.  The second member will be regarded as a reference\n           to an a-proxy.  The third member, if there is one, will be\n           regarded as a reference to an x-proxy.)\n\n           The r-proxy cannot have any properties governed by this TMA\n           other than r_type, r_castings, and x_castings.\n\n           The a-proxy cannot have any properties governed by this TMA\n           other than a_sip, a_type, a_castings, and x_castings.\n\n        Context constraints:\n\n           Proxies that have c_sip properties cannot have any\n           properties governed by this TMA other than c_sip\n           and x_castings.\n\n        Proxies merge when:\n\n           The value is an exact match.\n\n        The result of merging two or more c_sip properties will be:\n\n           ...the same as any one of them\n\n        c_sip property values are significantly different if:\n\n           ...the values are not an exact match\n\n        c_sip properties trigger conferrals as follows:\n\n           (no conferrals)\n\nproperties of r-proxies\n\n    (sip not governed by this TMA)\n\n    r_type\n\n        Property value type: \n\n           List of proxy references.\n\n        Property value constraints:\n\n           There must be at least one proxy reference.  (During a\n           merging cycle, there may temporarily be more than one.)\n\n           Proxies referenced cannot have any properties governed by\n           this TMA other than t_sip, t_assertions, and x_castings.\n\n        Context constraints:\n\n           Proxies that have r_type properties cannot have any\n           properties governed by this TMA other than r_type,\n           r_castings, and x_castings.\n\n        Proxies merge when:\n\n           (not applicable; this property is not an SIP)\n\n        The result of merging two or more r_type properties will be:\n\n           ...the union of their sets of proxy references\n\n        r_type property values are significantly different if:\n\n           their lists of proxy references, considered as sets, don\'t match.\n\n        r_type properties trigger conferrals as follows:\n\n           (no conferrals)\n\n\n    r_castings    \n\n        Property value type: \n\n           List of proxy references.\n\n        Property value constraints:\n\n           Proxies referenced cannot have any properties governed by\n           this TMA other than c_sip and x_castings.\n\n        Context constraints:\n\n           Proxies that have r_castings properties cannot have any\n           properties governed by this TMA other than r_type,\n           r_castings, and x_castings.\n\n        Proxies merge when:\n\n           (not applicable; this property is not an SIP)\n\n        The result of merging two or more r_castings properties will be:\n\n           ...the union of their sets of proxy references\n\n        r_castings property values are significantly different if:\n\n           Their lists of proxy references, considered as sets, don\'t match.\n\n        r_castings properties trigger conferrals as follows:\n\n           (no conferrals)\n\n\nproperties of t-proxies\n\n    t_sip\n\n        Property value type: \n\n           List of proxy references.\n\n        Property value constraints:\n\n           There must be at least two proxy references, and no two\n           references can be to the same proxy.\n\n           No referenced proxy can have any properties governed by\n           this TMA other than r_type, r_castings, and x_castings.\n\n        Context constraints:\n\n           Proxies that have t_sip properties cannot have any\n           properties governed by this TMA other than t_sip, \n           t_assertions, and x_castings.\n\n        Proxies merge when:\n\n           Any two t_sip values are references to the same set of\n           r-proxies.\n\n        The result of merging two or more t_sip properties will be:\n\n           ...the same as any one of them\n\n        t_sip property values are significantly different if:\n\n           The lists of referenced r-proxies are not the same.\n\n    t_assertions\n\n        Property value type: \n\n           List of proxy references.\n\n        Property value constraints:\n\n           No referenced proxy can have any properties governed by\n           this TMA other than a_sip, a_type, a_castings, and\n           x_castings.\n\n        Context constraints:\n\n           Proxies that have t_assertions properties cannot have any\n           properties governed by this TMA other than t_sip,\n           t_assertions, and x_castings.\n\n        Proxies merge when:\n\n           (not applicable; this property is not an SIP)\n\n        The result of merging two or more t_assertions properties will be:\n\n           ...the union of their values\n\n        t_assertions property values are significantly different if:\n\n           the sets of a-proxies that they reference are not the same\n\n\nproperties of x-proxies\n\n    (sip not governed by this TMA)\n\n    x_castings    \n\n        Property value type: \n\n           List of proxy references.\n\n        Property value constraints:\n\n           No referenced proxy can have any properties governed by\n           this TMA other than c_sip and x_castings.\n\n        Context constraints:\n\n           (none)\n\n        Proxies merge when:\n\n           (not applicable; this property is not an SIP)\n\n        The result of merging two or more x_castings properties will be:\n\n           ...the union of their values\n\n        x_castings property values are significantly different if:\n\n           the sets of c-proxies that they reference are not the same\n\n\n-->\n%3c!-- %3c!DOCTYPE VersavantTMA SYSTEM "http://www.versavant.org/dtds/TMAConfigFile.dtd">-->\n%3c!DOCTYPE VersavantTMA SYSTEM "../versavantTMA.dtd">\n%3cVersavantTMA\nVersavantTMADTDVersion="1"\n\n  >%3cDesc>TMA for fully-reified assertions pretty much along the lines of the model found in version 3.10 of the Topic Maps Reference Model (http://www.isotopicmaps.org/tmrm/TMRM-3.10/TMRM-3.10.html).%3c/Desc\n\n  >%3cValueType ValueTypeName="setOfProxyRefTuples"\n    >%3cDesc>Value type for a_sip class.%3c/Desc\n    >%3cValueIsNotOfType__\n      functionModuleFilePath="${VSVEXECDIR}/Lib/VTsetOfProxyRefTuples.py"\n      functionName="ValueIsNotOfType_setOfProxyRefTuples_"\n    />%3cInstanceOf__ValueTypeToXMLContentString\n      functionModuleFilePath="${VSVEXECDIR}/Lib/VTsetOfProxyRefTuples.py"\n      functionName="InstanceOf_setOfProxyRefTuples_ValueTypeToXMLContentString"\n    />%3cXMLContentStringToInstanceOf__ValueType\n      functionModuleFilePath="${VSVEXECDIR}/Lib/VTsetOfProxyRefTuples.py"\n      functionName="XMLContentStringToInstanceOf_setOfProxyRefTuples_ValueType"\n  />%3c/ValueType\n\n  >%3cValueType ValueTypeName="proxyIdList"\n    >%3cDesc>General-purpose list-of-subject-proxies value type.%3c/Desc\n    >%3cValueIsNotOfType__\n      functionModuleFilePath="${VSVEXECDIR}/Lib/VTproxyIdList.py"\n      functionName="ValueIsNotOfType_proxyIdList_"\n    />%3cInstanceOf__ValueTypeToXMLContentString\n      functionModuleFilePath="${VSVEXECDIR}/Lib/VTproxyIdList.py"\n      functionName="InstanceOf_proxyIdList_ValueTypeToXMLContentString"\n    />%3cXMLContentStringToInstanceOf__ValueType\n      functionModuleFilePath="${VSVEXECDIR}/Lib/VTproxyIdList.py"\n      functionName="XMLContentStringToInstanceOf_proxyIdList_ValueType"\n  />%3c/ValueType\n\n  >%3cValueType ValueTypeName="proxyIdSet"\n    >%3cDesc>General-purpose set-of-subject-proxies value type.  (Same valuetype implementation as proxyIdList.)%3c/Desc\n    >%3cValueIsNotOfType__\n      functionModuleFilePath="${VSVEXECDIR}/Lib/VTproxyIdList.py"\n      functionName="ValueIsNotOfType_proxyIdList_"\n    />%3cInstanceOf__ValueTypeToXMLContentString\n      functionModuleFilePath="${VSVEXECDIR}/Lib/VTproxyIdList.py"\n      functionName="InstanceOf_proxyIdList_ValueTypeToXMLContentString"\n    />%3cXMLContentStringToInstanceOf__ValueType\n      functionModuleFilePath="${VSVEXECDIR}/Lib/VTproxyIdList.py"\n      functionName="XMLContentStringToInstanceOf_proxyIdList_ValueType"\n  />%3c/ValueType\n\n  >%3cPropertyClass PropertyClassName="a_sip" ValueType="setOfProxyRefTuples"\n    >%3cDesc>SIP of this a-proxy; subject is a relationship.%3c/Desc\n    >%3cAdd__PropToOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCsetOfProxyRefTuples.py"\n      functionName="Add_setOfProxyRefTuples_PropToOverheadDict"\n    />%3cRemove__PropFromOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCsetOfProxyRefTuples.py"\n      functionName="Remove_setOfProxyRefTuples_PropFromOverheadDict"\n    />%3cValueIsInvalidFor__Property\n      functionModuleFilePath="propertyClasses.py"\n      functionName="ValueIsInvalidFor_a_sip_Property"\n      functionExtraArgsString="r_proxy_allowed_properties = [ \'r_type\', \'r_castings\', \'x_castings\']"\n    />%3cMerge__PropertyValues\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCsetOfProxyRefTuples.py"\n      functionName="Merge_setOfProxyRefTuples_PropertyValues"\n    />%3cValuesOf__PropertyInstancesAreSignificantlyDifferent\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCsetOfProxyRefTuples.py"\n      functionName="ValuesOf_setOfProxyRefTuples_PropertyInstancesAreSignificantlyDifferent"\n    />%3cContextOf__PropertyIsInvalid\n      functionModuleFilePath="propertyClasses.py"\n      functionName="ContextOf_BIGASSERT_PropertyIsInvalid"\n      functionExtraArgsString="\'a_sip\'"\n    />%3cMergeProxiesBecause__PropertyInstancesSpecifySameSubject\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCsetOfProxyRefTuples.py"\n      functionName="MergeProxiesBecause_setOfProxyRefTuples_PropertyInstancesSpecifySameSubject"\n    />%3cProxiesWith__ValueNotSignificantlyDifferentFrom\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCsetOfProxyRefTuples.py"\n      functionName="ProxiesOfSubjectIdentifiedBy_setOfProxyRefTuples_Value"\n    />%3cUpdateProxyReferencesIn__Value\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCsetOfProxyRefTuples.py"\n      functionName="UpdateProxyReferencesIn_setOfProxyRefTuples_Value"\n  />%3c/PropertyClass\n\n  >%3cConferralRule ConferralRuleName="inferFrom_a_sip_"\n      functionModuleFilePath="conferralRules.py"\n      functionName="inferFrom_a_sip_"\n      functionExtraArgsString="assertionModel = \'BigAssert\'"\n    >%3cDesc>From each a_sip property, confers a_type, a_castings, c_sip, r_type, r_castings, t_sip, t_assertions, and x_castings properties.%3c/Desc\n  >%3c/ConferralRule\n\n  >%3cConferralRule ConferralRuleName="bridge_TRA_assert_a_sip_to_BigAssert_a_sip"\n      functionModuleFilePath="${VSVEXECDIR}/Lib/BIGASSERT/conferralRules.py"\n      functionName="bridgeAcross_a_sip_Models"\n      functionExtraArgsString="bridgeFromTMAName = \'TRA_assert\', \n                               bridgeFromTMAModel = \'TRA_assert\', \n                               bridgeToTMAModel = \'BigAssert\'"\n    >%3cDesc>For each a_sip property in the TMA named in the bridgeFromTMAName keyword argument, confers an a_sip property in this TMA.%3c/Desc\n  >%3c/ConferralRule\n\n  >%3cConferralRule ConferralRuleName="bridge_A_assert_a_sip_to_BigAssert_a_sip"\n      functionModuleFilePath="${VSVEXECDIR}/Lib/BIGASSERT/conferralRules.py"\n      functionName="bridgeAcross_a_sip_Models"\n      functionExtraArgsString="bridgeFromTMAName = \'A_assert\', \n                               bridgeFromTMAModel = \'A_assert\', \n                               bridgeToTMAModel = \'BigAssert\', \n                               bridgeToR_ProxyPropertyName = \'role name\', \n                               bridgeToR_ProxyTMAName = \'Roles\'"\n    >%3cDesc>For each a_sip property in the TMA named in the bridgeFromTMAName keyword argument, confers an a_sip property in this TMA.%3c/Desc\n  >%3c/ConferralRule\n\n  >%3cConferralRule ConferralRuleName="bridgeFromU_assert"\n      functionModuleFilePath="${VSVEXECDIR}/Lib/BIGASSERT/conferralRules.py"\n      functionName="bridgeFromU_assert"\n      functionExtraArgsString="bridgeFromTMAName = \'U_assert\', \n                               bridgeToTMAModel = \'BigAssert\', \n                               roleNamePropertyClassName = \'role name\', \n                               rolesTMAName = \'Roles\'"\n    >%3cDesc>For each U_assert,,x_LrnRrnRrp property in the TMA named in the bridgeFromTMAName keyword argument, confers an a_sip property in this TMA.%3c/Desc\n  >%3c/ConferralRule\n\n  >%3cConferralRule ConferralRuleName="bridgeAcross_t_sip_Models"\n      functionModuleFilePath="${VSVEXECDIR}/Lib/BIGASSERT/conferralRules.py"\n      functionName="bridgeAcross_t_sip_Models"\n      functionExtraArgsString="bridgeFromTMAName = \'TRA_assert\'"\n    >%3cDesc>For each t_sip property in the TMA named in the bridgeFromTMAName keyword argument, confers a t_sip property in this TMA.%3c/Desc\n  >%3c/ConferralRule\n\n  >%3cPropertyClass PropertyClassName="t_sip" ValueType="proxyIdSet"\n    >%3cDesc>SIP of this t-proxy; subject is a relationship type.%3c/Desc\n    >%3cAdd__PropToOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="Add_proxyIdSet_PropToOverheadDict"\n    />%3cRemove__PropFromOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="Remove_proxyIdSet_PropFromOverheadDict"\n    />%3cValueIsInvalidFor__Property\n      functionModuleFilePath="propertyClasses.py"\n      functionName="ValueIsInvalidFor_t_sip_Property"\n      functionExtraArgsString="r_proxy_allowed_properties = [ \'r_type\', \'r_castings\', \'x_castings\']"\n    />%3cMerge__PropertyValues\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="Merge_proxyIdSet_PropertyValues"\n    />%3cValuesOf__PropertyInstancesAreSignificantlyDifferent\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="ValuesOf_proxyIdSet_PropertyInstancesAreSignificantlyDifferent"\n    />%3cContextOf__PropertyIsInvalid\n      functionModuleFilePath="propertyClasses.py"\n      functionName="ContextOf_BIGASSERT_PropertyIsInvalid"\n      functionExtraArgsString="\'t_sip\'"\n    />%3cMergeProxiesBecause__PropertyInstancesSpecifySameSubject\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="MergeProxiesBecause_proxyIdSet_PropertyInstancesSpecifySameSubject"\n    />%3cProxiesWith__ValueNotSignificantlyDifferentFrom\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="ProxiesOfSubjectIdentifiedBy_proxyIdSet_Value"\n    />%3cUpdateProxyReferencesIn__Value\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="UpdateProxyReferencesIn_proxyIdSet_Value"\n  />%3c/PropertyClass\n\n  >%3cPropertyClass PropertyClassName="c_sip" ValueType="proxyIdList"\n    >%3cDesc>SIP of this c-proxy; subject is a casting in a relationship.%3c/Desc\n    >%3cAdd__PropToOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdList.py"\n      functionName="Add_proxyIdList_PropToOverheadDict"\n    />%3cRemove__PropFromOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdList.py"\n      functionName="Remove_proxyIdList_PropFromOverheadDict"\n    />%3cValueIsInvalidFor__Property\n      functionModuleFilePath="propertyClasses.py"\n      functionName="ValueIsInvalidFor_c_sip_Property"\n    />%3cMerge__PropertyValues\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdList.py"\n      functionName="Merge_proxyIdList_PropertyValues"\n    />%3cValuesOf__PropertyInstancesAreSignificantlyDifferent\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdList.py"\n      functionName="ValuesOf_proxyIdList_PropertyInstancesAreSignificantlyDifferent"\n    />%3cContextOf__PropertyIsInvalid\n      functionModuleFilePath="propertyClasses.py"\n      functionName="ContextOf_BIGASSERT_PropertyIsInvalid"\n      functionExtraArgsString="\'c_sip\'"\n    />%3cMergeProxiesBecause__PropertyInstancesSpecifySameSubject\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdList.py"\n      functionName="MergeProxiesBecause_proxyIdList_PropertyInstancesSpecifySameSubject"\n    />%3cProxiesWith__ValueNotSignificantlyDifferentFrom\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdList.py"\n      functionName="ProxiesOfSubjectIdentifiedBy_proxyIdList_Value"\n    />%3cUpdateProxyReferencesIn__Value\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdList.py"\n      functionName="UpdateProxyReferencesIn_proxyIdList_Value"\n  />%3c/PropertyClass\n\n  >%3cPropertyClass PropertyClassName="r_type" ValueType="proxyIdSet"\n    >%3cDesc>Refers to the t-proxy whose subject is the relationship type in which the subject of this r-proxy is one of the roles.%3c/Desc\n    >%3cAdd__PropToOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="Add_proxyIdSet_PropToOverheadDict"\n    />%3cRemove__PropFromOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="Remove_proxyIdSet_PropFromOverheadDict"\n    />%3cValueIsInvalidFor__Property\n      functionModuleFilePath="propertyClasses.py"\n      functionName="ValueIsInvalidFor_r_type_Property"\n    />%3cMerge__PropertyValues\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="Merge_proxyIdSet_PropertyValues"\n    />%3cValuesOf__PropertyInstancesAreSignificantlyDifferent\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="ValuesOf_proxyIdSet_PropertyInstancesAreSignificantlyDifferent"\n    />%3cContextOf__PropertyIsInvalid\n      functionModuleFilePath="propertyClasses.py"\n      functionName="ContextOf_BIGASSERT_PropertyIsInvalid"\n      functionExtraArgsString="\'r_type\'"\n    />%3cProxiesWith__ValueNotSignificantlyDifferentFrom\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="ProxiesOfSubjectIdentifiedBy_proxyIdSet_Value"\n    />%3cUpdateProxyReferencesIn__Value\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="UpdateProxyReferencesIn_proxyIdSet_Value"\n  />%3c/PropertyClass\n\n  >%3cPropertyClass PropertyClassName="r_castings" ValueType="proxyIdSet"\n    >%3cDesc>Refers to the c-proxies whose subjects are the castings in which the subject of this r-proxy is the role.%3c/Desc\n    >%3cAdd__PropToOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="Add_proxyIdSet_PropToOverheadDict"\n    />%3cRemove__PropFromOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="Remove_proxyIdSet_PropFromOverheadDict"\n    />%3cValueIsInvalidFor__Property\n      functionModuleFilePath="propertyClasses.py"\n      functionName="ValueIsInvalidFor_r_castings_Property"\n    />%3cMerge__PropertyValues\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="Merge_proxyIdSet_PropertyValues"\n    />%3cValuesOf__PropertyInstancesAreSignificantlyDifferent\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="ValuesOf_proxyIdSet_PropertyInstancesAreSignificantlyDifferent"\n    />%3cContextOf__PropertyIsInvalid\n      functionModuleFilePath="propertyClasses.py"\n      functionName="ContextOf_BIGASSERT_PropertyIsInvalid"\n      functionExtraArgsString="\'r_castings\'"\n    />%3cProxiesWith__ValueNotSignificantlyDifferentFrom\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="ProxiesOfSubjectIdentifiedBy_proxyIdSet_Value"\n    />%3cUpdateProxyReferencesIn__Value\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="UpdateProxyReferencesIn_proxyIdSet_Value"\n  />%3c/PropertyClass\n\n  >%3cPropertyClass PropertyClassName="x_castings" ValueType="proxyIdSet"\n    >%3cDesc>Refers to the c-proxies (castings) in which the subject of this proxy is the role player.%3c/Desc\n    >%3cAdd__PropToOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="Add_proxyIdSet_PropToOverheadDict"\n    />%3cRemove__PropFromOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="Remove_proxyIdSet_PropFromOverheadDict"\n    />%3cValueIsInvalidFor__Property\n      functionModuleFilePath="propertyClasses.py"\n      functionName="ValueIsInvalidFor_x_castings_Property"\n    />%3cMerge__PropertyValues\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="Merge_proxyIdSet_PropertyValues"\n    />%3cValuesOf__PropertyInstancesAreSignificantlyDifferent\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="ValuesOf_proxyIdSet_PropertyInstancesAreSignificantlyDifferent"\n    />%3cProxiesWith__ValueNotSignificantlyDifferentFrom\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="ProxiesOfSubjectIdentifiedBy_proxyIdSet_Value"\n    />%3cUpdateProxyReferencesIn__Value\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="UpdateProxyReferencesIn_proxyIdSet_Value"\n  />%3c/PropertyClass\n\n  >%3cPropertyClass PropertyClassName="t_assertions" ValueType="proxyIdSet"\n    >%3cDesc>Refers to the a-proxies whose subjects are the relationships that are instances of the relationship type that is the subject of this t-proxy.%3c/Desc\n    >%3cAdd__PropToOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="Add_proxyIdSet_PropToOverheadDict"\n    />%3cRemove__PropFromOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="Remove_proxyIdSet_PropFromOverheadDict"\n    />%3cValueIsInvalidFor__Property\n      functionModuleFilePath="propertyClasses.py"\n      functionName="ValueIsInvalidFor_t_assertions_Property"\n    />%3cMerge__PropertyValues\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="Merge_proxyIdSet_PropertyValues"\n    />%3cValuesOf__PropertyInstancesAreSignificantlyDifferent\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="ValuesOf_proxyIdSet_PropertyInstancesAreSignificantlyDifferent"\n    />%3cContextOf__PropertyIsInvalid\n      functionModuleFilePath="propertyClasses.py"\n      functionName="ContextOf_BIGASSERT_PropertyIsInvalid"\n      functionExtraArgsString="\'t_assertions\'"\n    />%3cProxiesWith__ValueNotSignificantlyDifferentFrom\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="ProxiesOfSubjectIdentifiedBy_proxyIdSet_Value"\n    />%3cUpdateProxyReferencesIn__Value\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="UpdateProxyReferencesIn_proxyIdSet_Value"\n  />%3c/PropertyClass\n\n  >%3cPropertyClass PropertyClassName="a_type" ValueType="proxyIdSet"\n    >%3cDesc>Refers to the t-proxy whose subject is the relationship type of which the subject of this a-proxy is an instance.%3c/Desc\n    >%3cAdd__PropToOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="Add_proxyIdSet_PropToOverheadDict"\n    />%3cRemove__PropFromOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="Remove_proxyIdSet_PropFromOverheadDict"\n    />%3cValueIsInvalidFor__Property\n      functionModuleFilePath="propertyClasses.py"\n      functionName="ValueIsInvalidFor_a_type_Property"\n    />%3cMerge__PropertyValues\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="Merge_proxyIdSet_PropertyValues"\n    />%3cValuesOf__PropertyInstancesAreSignificantlyDifferent\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="ValuesOf_proxyIdSet_PropertyInstancesAreSignificantlyDifferent"\n    />%3cContextOf__PropertyIsInvalid\n      functionModuleFilePath="propertyClasses.py"\n      functionName="ContextOf_BIGASSERT_PropertyIsInvalid"\n      functionExtraArgsString="\'a_type\'"\n    />%3cProxiesWith__ValueNotSignificantlyDifferentFrom\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="ProxiesOfSubjectIdentifiedBy_proxyIdSet_Value"\n    />%3cUpdateProxyReferencesIn__Value\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="UpdateProxyReferencesIn_proxyIdSet_Value"\n  />%3c/PropertyClass\n\n  >%3cPropertyClass PropertyClassName="a_castings" ValueType="proxyIdSet"\n    >%3cDesc>Refers to the c-proxies whose subjects are the castings in which the subject of this a-proxy is the relationship.%3c/Desc\n    >%3cAdd__PropToOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="Add_proxyIdSet_PropToOverheadDict"\n    />%3cRemove__PropFromOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="Remove_proxyIdSet_PropFromOverheadDict"\n    />%3cValueIsInvalidFor__Property\n      functionModuleFilePath="propertyClasses.py"\n      functionName="ValueIsInvalidFor_a_castings_Property"\n    />%3cMerge__PropertyValues\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="Merge_proxyIdSet_PropertyValues"\n    />%3cValuesOf__PropertyInstancesAreSignificantlyDifferent\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="ValuesOf_proxyIdSet_PropertyInstancesAreSignificantlyDifferent"\n    />%3cContextOf__PropertyIsInvalid\n      functionModuleFilePath="propertyClasses.py"\n      functionName="ContextOf_BIGASSERT_PropertyIsInvalid"\n      functionExtraArgsString="\'a_castings\'"\n    />%3cProxiesWith__ValueNotSignificantlyDifferentFrom\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="ProxiesOfSubjectIdentifiedBy_proxyIdSet_Value"\n    />%3cUpdateProxyReferencesIn__Value\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="UpdateProxyReferencesIn_proxyIdSet_Value"\n  />%3c/PropertyClass\n\n>%3c/VersavantTMA>\n'%0ap1%0a.</TMAConfigFile

    ><TMAModule ModName="001_PCproxyIdList" ModSrcFileName="001_PCproxyIdList.py">S'#####################################################################\n#####################################################################\n## Copyright 2005 Steven R. Newcomb                                ##\n##                                                                 ##\n## This software is licensed under the Apache License, Version 2.0 ##\n## (the "License"); you may not use this file except in compliance ##\n## with the License.  Copies of the License are available at       ##\n##        http://www.apache.org/licenses/LICENSE-2.0               ##\n##                                                                 ##\n## Unless required by applicable law or agreed to in writing,      ##\n## software distributed under the License is distributed on an "AS ##\n## IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either ##\n## express or implied.  See the License for the specific language  ##\n## governing permissions and limitations under the License.        ##\n##                                                                 ##\n## Copies of the source code and the license are available at      ##\n##        http://www.versavant.org                                 ##\n#####################################################################\n#####################################################################\n\n####################################\ncvsRevision = "$Revision: 1.5 $" ##\n####################################\n\n\nimport sys\n\n\n#######################################\n## proxyIdList PC implementation ##\n#######################################\n\n## NOTE: use the "proxyIdSet" functions for *sets* of proxy ids.\n##       The below "proxyIdList" functions are for lists of proxy ids\n##       in which the order must be preserved.\n\n## These functions are useful as implementations of SIPs or OPs whose\n## values are lists of references to proxies.  Obviously, the name\n## "proxyIdList" only applies to these (library) functions; TMA\n## designers can use any name(s) for such properties.\n\n#######################################################\ndef Add_proxyIdList_PropToOverheadDict( vsv, propertyInstance, overheadDict):\n    value = propertyInstance._value\n    hashablePropertyValue = propertyInstance.hashablePropertyValue = tuple( value)\n\n    if overheadDict.has_key( hashablePropertyValue):\n        if propertyInstance.proxyId not in overheadDict[ hashablePropertyValue]:\n            overheadDict[ hashablePropertyValue].append( propertyInstance.proxyId)\n    else:\n        overheadDict[ hashablePropertyValue] = [ propertyInstance.proxyId]\n\n    workDict = {}\n    for member in value:\n        workDict[ member] = None\n    propertyInstance.listOfIdsOfReferencedProxies = workDict.keys()\n    vsv.addNewProxyReferencesToReferencedProxiesDict( propertyInstance)\n\n#######################################################\ndef Remove_proxyIdList_PropFromOverheadDict( vsv, propertyInstance, overheadDict):\n    hashablePropertyValue = propertyInstance.hashablePropertyValue\n    if not overheadDict.has_key( hashablePropertyValue):\n        vsv.errMsg( \'No entry in overheadDict of property class for the value (%25s) of property %25s\' %25 (\n            propertyInstance._value,\n            vsv.catKey( propertyInstance.topicMap.topicMapName, propertyInstance.propertyInstanceKey)))\n        sys.exit( 1)\n\n    if propertyInstance.proxyId not in overheadDict[ hashablePropertyValue]:\n        vsv.errMsg( \'ProxyId %25s not found in the overheadDict of property class for the value (%25s) of property %25s\' %25 (\n            propertyInstance.proxyId,\n            propertyInstance._value,\n            vsv.catKey( propertyInstance.topicMap.topicMapName, propertyInstance.propertyInstanceKey)))\n        sys.exit( 1)\n\n    overheadDict[ hashablePropertyValue].remove( propertyInstance.proxyId)\n    if not len( overheadDict[ hashablePropertyValue]):\n        del overheadDict[ hashablePropertyValue]\n\n    vsv.removeOldProxyReferencesFromReferencedProxiesDict( propertyInstance)\n\n#######################################################\ndef Merge_proxyIdList_PropertyValues( vsv, value1, value2):\n    if value1 == value2:\n        return value1\n    else:\n        return None  ## merge is unsuccessful\n\n#######################################################\ndef ValuesOf_proxyIdList_PropertyInstancesAreSignificantlyDifferent( vsv, value1, value2):\n    if value1 != value2:\n        return True\n    return False\n\n#######################################################\ndef MergeProxiesBecause_proxyIdList_PropertyInstancesSpecifySameSubject( vsv, propertyClass):\n    for key in propertyClass.overheadDict:\n        if len( propertyClass.overheadDict[ key]) > 1:\n            vsv.mergeListOfProxies( propertyClass, propertyClass.overheadDict[ key])\n\n#######################################################\ndef ProxiesOfSubjectIdentifiedBy_proxyIdList_Value( vsv, propertyClass, value):\n    hashableValue = tuple( value)\n    if propertyClass.overheadDict.has_key( hashableValue):\n        return propertyClass.overheadDict[ hashableValue]\n    else:\n        return []  ## empty list -- no match\n\n#######################################################\ndef UpdateProxyReferencesIn_proxyIdList_Value( vsv, propertyInstance, proxyIdToReplace, replacementProxyId):\n\n    oldValue = propertyInstance._value\n\n    workDict = {}\n    newList = []\n    foundProxyIdToReplace = False\n    for oldItem in oldValue:\n        if oldItem == proxyIdToReplace:\n            newList.append( replacementProxyId)\n            workDict[ replacementProxyId] = None\n            foundProxyIdToReplace = True\n        else:\n            newList.append( oldItem)\n            workDict[ oldItem] = None\n\n\n    if not foundProxyIdToReplace:\n        vsv.errMsg( \'Did not find reference to proxy %25s in propertyInstance %25s; value == %25s.\' %25 ( proxyIdToReplace, propertyInstance.propertyInstanceKey, propertyInstance._value))\n        sys.exit( 1)\n\n    propertyClass = propertyInstance.propertyClass\n\n    ## Remove old value from the "overhead" data for this property class\n    if propertyClass.Remove__PropFromOverheadDictFArgString:\n        execStr = \'propertyClass.Remove__PropFromOverheadDictF( vsv, propertyInstance, propertyClass.overheadDict, %25s)\' %25 (\n            propertyClass.Remove__PropFromOverheadDictFArgString)\n        exec execStr\n    else:\n        propertyClass.Remove__PropFromOverheadDictF( vsv, propertyInstance, propertyClass.overheadDict)\n\n    ## Replace the old value with the new one\n    del oldValue[:]\n    oldValue.extend( newList)\n        \n    ## Expose the list of proxy references that appear in the value as a list of proxyIds\n    propertyInstance.listOfIdsOfReferencedProxies = workDict.keys()\n\n    ## Add new value to the "overhead" data for this property class  (This will set propertyInstance.hashableValue, too!)\n    if propertyClass.Add__PropToOverheadDictFArgString:\n        execStr = \'propertyClass.Add__PropToOverheadDictF( vsv, propertyInstance, propertyClass.overheadDict, %25s)\' %25 (\n            propertyClass.Add__PropToOverheadDictFArgString)\n        exec execStr\n    else:\n        propertyClass.Add__PropToOverheadDictF( vsv, propertyInstance, propertyClass.overheadDict)\n\n\n\n'%0ap1%0a.</TMAModule

    ><TMAModule ModName="001_PCproxyIdSet" ModSrcFileName="001_PCproxyIdSet.py">S'#####################################################################\n#####################################################################\n## Copyright 2005 Steven R. Newcomb                                ##\n##                                                                 ##\n## This software is licensed under the Apache License, Version 2.0 ##\n## (the "License"); you may not use this file except in compliance ##\n## with the License.  Copies of the License are available at       ##\n##        http://www.apache.org/licenses/LICENSE-2.0               ##\n##                                                                 ##\n## Unless required by applicable law or agreed to in writing,      ##\n## software distributed under the License is distributed on an "AS ##\n## IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either ##\n## express or implied.  See the License for the specific language  ##\n## governing permissions and limitations under the License.        ##\n##                                                                 ##\n## Copies of the source code and the license are available at      ##\n##        http://www.versavant.org                                 ##\n#####################################################################\n#####################################################################\n\n####################################\ncvsRevision = "$Revision: 1.4 $" ##\n####################################\n\n\nimport sys\n\n\n#######################################\n## proxyIdSet PC implementation ##\n#######################################\n\n## These functions are useful as implementations of SIPs or OPs whose\n## values are lists of references to proxies.  Obviously, the name\n## "proxyIdSet" only applies to these (library) functions; TMA\n## designers can use any name(s) for such properties.\n\n#######################################################\ndef Add_proxyIdSet_PropToOverheadDict( vsv, propertyInstance, overheadDict):\n\n    workDict = {}\n    for proxyId in propertyInstance._value:\n        workDict[ proxyId] = None\n    propertyInstance.listOfIdsOfReferencedProxies = propertyInstance._value = workDict.keys()\n\n    hashablePropertyValue = propertyInstance.hashablePropertyValue = frozenset( propertyInstance._value)\n\n    if overheadDict.has_key( hashablePropertyValue):\n        if overheadDict[ hashablePropertyValue].has_key( propertyInstance.proxyId):\n            vsv.errMsg( \'ProxyId %25s is already listed in the overheadDict of property class for the value (%25s)\' %25 (\n                propertyInstance.proxyId, propertyInstance._value))\n            sys.exit( 1)\n        overheadDict[ hashablePropertyValue][ propertyInstance.proxyId] = None\n    else:\n        overheadDict[ hashablePropertyValue] = { propertyInstance.proxyId: None}\n\n    vsv.addNewProxyReferencesToReferencedProxiesDict( propertyInstance)\n\n#######################################################\ndef Remove_proxyIdSet_PropFromOverheadDict( vsv, propertyInstance, overheadDict):\n    hashablePropertyValue = propertyInstance.hashablePropertyValue\n    if not overheadDict.has_key( hashablePropertyValue):\n        vsv.errMsg( \'No entry in overheadDict of property class for the value (%25s) of property %25s\' %25 (\n            propertyInstance._value,\n            vsv.catKey( propertyInstance.topicMap.topicMapName, propertyInstance.propertyInstanceKey)))\n        sys.exit( 1)\n    if propertyInstance.proxyId not in overheadDict[ hashablePropertyValue]:\n        vsv.errMsg( \'ProxyId %25s not found in the overheadDict of property class for the value (%25s) of property %25s\' %25 (\n            propertyInstance.proxyId,\n            propertyInstance._value,\n            vsv.catKey( propertyInstance.topicMap.topicMapName, propertyInstance.propertyInstanceKey)))\n        sys.exit( 1)\n\n    del overheadDict[ hashablePropertyValue][ propertyInstance.proxyId]\n    if not len( overheadDict[ hashablePropertyValue]):\n        del overheadDict[ hashablePropertyValue]\n\n    vsv.removeOldProxyReferencesFromReferencedProxiesDict( propertyInstance)\n\n#######################################################\ndef ValueIsInvalidFor_proxyIdSet_Property( vsv, propertyValue, propertyClass, propertyInstance = None):\n    ## the value type validator does everything necessary\n    return False\n\n#######################################################\ndef Merge_proxyIdSet_PropertyValues( vsv, value1, value2):\n    newProxyIdSet = {}\n    for proxyId in value1:\n        newProxyIdSet[ proxyId] = None\n    for proxyId in value2:\n        newProxyIdSet[ proxyId] = None\n    return newProxyIdSet.keys()\n\n#######################################################\ndef ValuesOf_proxyIdSet_PropertyInstancesAreSignificantlyDifferent( vsv, value1, value2):\n    if frozenset( value1) != frozenset( value2):  ## ignore differences in sequence and ignore redundant entries\n        return True\n    return False\n\n#######################################################\ndef MergeProxiesBecause_proxyIdSet_PropertyInstancesSpecifySameSubject( vsv, propertyClass):\n    for key in propertyClass.overheadDict:\n        if len( propertyClass.overheadDict[ key]) > 1:\n            vsv.mergeListOfProxies( propertyClass, propertyClass.overheadDict[ key].keys())\n\n#######################################################\ndef ProxiesOfSubjectIdentifiedBy_proxyIdSet_Value( vsv, propertyClass, value):\n    hashablePropertyValue = frozenset( value)\n    if propertyClass.overheadDict.has_key( hashablePropertyValue):\n        return propertyClass.overheadDict[ hashablePropertyValue].keys()\n    else:\n        return []  ## empty list -- no match\n\n#######################################################\ndef UpdateProxyReferencesIn_proxyIdSet_Value( vsv, propertyInstance, proxyIdToReplace, replacementProxyId):\n    value = propertyInstance._value\n    if proxyIdToReplace not in value:\n        vsv.errMsg( \'proxyIdToReplace "%25s" not found in the value of %25s\' %25 (\n            proxyIdToReplace,\n            vsv.catKey( propertyInstance.topicMap.topicMapName, propertyInstance.propertyInstanceKey)))\n        sys.exit( 1)\n\n    propertyClass = propertyInstance.propertyClass\n    \n\n    ## Remove old value from the "overhead" data for this property class\n    if propertyClass.Remove__PropFromOverheadDictFArgString:\n        execStr = \'propertyClass.Remove__PropFromOverheadDictF( vsv, propertyInstance, propertyClass.overheadDict, %25s)\' %25 (\n            propertyClass.Remove__PropFromOverheadDictFArgString)\n        exec execStr\n    else:\n        propertyClass.Remove__PropFromOverheadDictF( vsv, propertyInstance, propertyClass.overheadDict)\n\n    ## Replace the proxyIdToReplace with the replacementProxyId\n    oldValue = value[:]\n    del value[:]\n    for proxyId in oldValue:\n        if proxyId == proxyIdToReplace:\n            proxyId = replacementProxyId\n        if proxyId not in value:\n            value.append( proxyId)\n        \n    ## Expose the list of proxy references that appear in the value as a list of proxyIds\n    propertyInstance.listOfIdsOfReferencedProxies = value\n        ## happens to be a list, so use the same list\n\n\n    ## Add new value to the "overhead" data for this property class\n    if propertyClass.Add__PropToOverheadDictFArgString:\n        execStr = \'propertyClass.Add__PropToOverheadDictF( vsv, propertyInstance, propertyClass.overheadDict, %25s)\' %25 (\n            propertyClass.Add__PropToOverheadDictFArgString)\n        exec execStr\n    else:\n        propertyClass.Add__PropToOverheadDictF( vsv, propertyInstance, propertyClass.overheadDict)\n\n'%0ap1%0a.</TMAModule

    ><TMAModule ModName="001_PCsetOfProxyRefTuples" ModSrcFileName="001_PCsetOfProxyRefTuples.py">S'#####################################################################\n#####################################################################\n## Copyright 2005 Steven R. Newcomb                                ##\n##                                                                 ##\n## This software is licensed under the Apache License, Version 2.0 ##\n## (the "License"); you may not use this file except in compliance ##\n## with the License.  Copies of the License are available at       ##\n##        http://www.apache.org/licenses/LICENSE-2.0               ##\n##                                                                 ##\n## Unless required by applicable law or agreed to in writing,      ##\n## software distributed under the License is distributed on an "AS ##\n## IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either ##\n## express or implied.  See the License for the specific language  ##\n## governing permissions and limitations under the License.        ##\n##                                                                 ##\n## Copies of the source code and the license are available at      ##\n##        http://www.versavant.org                                 ##\n#####################################################################\n#####################################################################\n\n####################################\ncvsRevision = "$Revision: 1.3 $" ##\n####################################\n\n\nimport sys\n\n\n###################################\n## setOfProxyRefTuples PC implementation ##\n###################################\n\n#######################################################\ndef Add_setOfProxyRefTuples_PropToOverheadDict( vsv, propertyInstance, overheadDict):\n\n    value = propertyInstance._value\n\n    hashablePropertyValue = propertyInstance.hashablePropertyValue = frozenset( value)\n    if overheadDict.has_key( hashablePropertyValue):\n        if propertyInstance.proxyId not in overheadDict[ hashablePropertyValue]:\n            overheadDict[ hashablePropertyValue].append( propertyInstance.proxyId)\n    else:\n        overheadDict[ hashablePropertyValue] = [ propertyInstance.proxyId]\n\n    proxyRefSet = {}\n    for tuple in value:\n        for member in tuple:\n            proxyRefSet[ member] = None\n    propertyInstance.listOfIdsOfReferencedProxies = proxyRefSet.keys()\n    vsv.addNewProxyReferencesToReferencedProxiesDict( propertyInstance)\n\n#######################################################\ndef Remove_setOfProxyRefTuples_PropFromOverheadDict( vsv, propertyInstance, overheadDict):\n    hashablePropertyValue = propertyInstance.hashablePropertyValue\n    if not overheadDict.has_key( hashablePropertyValue):\n        vsv.errMsg( \'No entry in overheadDict of property class for the value (%25s) of property %25s\' %25 (\n            propertyInstance._value,\n            vsv.catKey( propertyInstance.topicMap.topicMapName, propertyInstance.propertyInstanceKey)))\n        sys.exit( 1)\n\n    if propertyInstance.proxyId not in overheadDict[ hashablePropertyValue]:\n        vsv.errMsg( \'ProxyId %25s not found in the overheadDict of property class for the value (%25s) of property %25s\' %25 (\n            propertyInstance.proxyId,\n            propertyInstance._value,\n            vsv.catKey( propertyInstance.topicMap.topicMapName, propertyInstance.propertyInstanceKey)))\n        sys.exit( 1)\n\n    overheadDict[ hashablePropertyValue].remove( propertyInstance.proxyId)\n    if not len( overheadDict[ hashablePropertyValue]):\n        del overheadDict[ hashablePropertyValue]\n\n    vsv.removeOldProxyReferencesFromReferencedProxiesDict( propertyInstance)\n\n#######################################################\ndef Merge_setOfProxyRefTuples_PropertyValues( vsv, value1, value2):\n    newValue = {}\n    for thisTuple in value1:\n        newValue[ thisTuple] = None\n    for thisTuple in value2:\n        newValue[ thisTuple] = None\n    return newValue.keys()\n\n#######################################################\ndef ValuesOf_setOfProxyRefTuples_PropertyInstancesAreSignificantlyDifferent( vsv, value1, value2):\n    if frozenset( value1) != frozenset( value2):  ## ignore differences in sequence and ignore redundant entries\n        return True\n    return False\n\n#######################################################\ndef MergeProxiesBecause_setOfProxyRefTuples_PropertyInstancesSpecifySameSubject( vsv, propertyClass):\n    for key in propertyClass.overheadDict:\n        if len( propertyClass.overheadDict[ key]) > 1:\n            vsv.mergeListOfProxies( propertyClass, propertyClass.overheadDict[ key])\n\n#######################################################\ndef ProxiesOfSubjectIdentifiedBy_setOfProxyRefTuples_Value( vsv, propertyClass, value):\n    hashablePropertyValue = frozenset( value)\n    if propertyClass.overheadDict.has_key( hashablePropertyValue):\n        return propertyClass.overheadDict[ hashablePropertyValue]\n    else:\n        return []  ## empty list -- no match\n\n#######################################################\ndef UpdateProxyReferencesIn_setOfProxyRefTuples_Value( vsv, propertyInstance, proxyIdToReplace, replacementProxyId):\n    oldValue = propertyInstance._value\n    newValueSet = {}  ## if it turns out that two tuples wind up being the same,\n                   ## this method will make sure that only one of them\n                   ## remains.\n    proxyRefSet = {}  \n    foundProxyIdToReplace = False\n    for oldTuple in oldValue:\n        newTupleList = []\n        for oldMember in oldTuple:\n            if oldMember == proxyIdToReplace:\n                newTupleList.append( replacementProxyId)\n                proxyRefSet[ replacementProxyId] = None\n                foundProxyIdToReplace = True\n            else:\n                newTupleList.append( oldMember)\n                proxyRefSet[ oldMember] = None\n        newValueSet[ tuple( newTupleList)] = None\n\n##     CANNOT DO THIS CHECK because sometimes a proxy reference is updated multiple times in the same merge cycle.\n##     if not foundProxyIdToReplace:\n##         vsv.errMsg( \'Did not find reference to proxy %25s in propertyInstance %25s.\' %25 ( proxyIdToReplace, propertyInstance.propertyInstanceKey))\n## ###\n##         vsv.inspect( proxyId=propertyInstance.proxy.proxyId)\n## ###        \n##         sys.exit( 1)\n\n    propertyClass = propertyInstance.propertyClass\n    \n\n    ## Remove old value from the "overhead" data for this property class\n    if propertyClass.Remove__PropFromOverheadDictFArgString:\n        execStr = \'propertyClass.Remove__PropFromOverheadDictF( vsv, propertyInstance, propertyClass.overheadDict, %25s)\' %25 (\n            propertyClass.Remove__PropFromOverheadDictFArgString)\n        exec execStr\n    else:\n        propertyClass.Remove__PropFromOverheadDictF( vsv, propertyInstance, propertyClass.overheadDict)\n\n    ## Replace the old value with the new one\n    del oldValue[:]\n    oldValue.extend( newValueSet.keys())\n        \n    ## Expose the list of proxy references that appear in the value as a list of proxyIds\n    propertyInstance.listOfIdsOfReferencedProxies = proxyRefSet.keys()\n\n    ## Add new value to the "overhead" data for this property class  (this sets propertyInstance.hashablevalue)\n    if propertyClass.Add__PropToOverheadDictFArgString:\n        execStr = \'propertyClass.Add__PropToOverheadDictF( vsv, propertyInstance, propertyClass.overheadDict, %25s)\' %25 (\n            propertyClass.Add__PropToOverheadDictFArgString)\n        exec execStr\n    else:\n        propertyClass.Add__PropToOverheadDictF( vsv, propertyInstance, propertyClass.overheadDict)\n\n\n\n'%0ap1%0a.</TMAModule

    ><TMAModule ModName="001_VTproxyIdList" ModSrcFileName="001_VTproxyIdList.py">S'#####################################################################\n#####################################################################\n## Versavant Topic Map Application Bus / Subject Addressing Engine ##\n## Copyright 2005 Steven R. Newcomb                                ##\n##                                                                 ##\n## This software is licensed under the Apache License, Version 2.0 ##\n## (the "License"); you may not use this file except in compliance ##\n## with the License.  Copies of the License are available at       ##\n##        http://www.apache.org/licenses/LICENSE-2.0               ##\n##                                                                 ##\n## Unless required by applicable law or agreed to in writing,      ##\n## software distributed under the License is distributed on an "AS ##\n## IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either ##\n## express or implied.  See the License for the specific language  ##\n## governing permissions and limitations under the License.        ##\n##                                                                 ##\n## Copies of the source code and the license are available at      ##\n##        http://www.versavant.org                                 ##\n#####################################################################\n#####################################################################\n\n####################################\ncvsRevision = "$Revision: 1.5 $" ##\n####################################\n\n\n#############################################\n## "proxyIdList" value type implementation ##\n#############################################\n\n## This value type is useful for storing references to proxies,\n## regardless of whether they are treated by the property classes that\n## use this value type are lists or sets.  For example, you should use\n## this "proxyIdList" value type for both "proxyIdSet"-type property\n## classes and "proxyIdList"-type property classes.  At this level,\n## it doesn\'t matter.\n\n## Values are lists of proxyIds, i.e., proxy.proxyId values, which are\n## always strings of decimal digits that begin with two zeroes.\n\n## When you create other value types that contain proxy references,\n## you can use this implementation as a guide.  It\'s tricky to\n## manage proxy references, not only because they die when merged, but\n## also because they can\'t possibly retain their original IDs when\n## they are imported.\n\n## NOTE: During importation of instances of this value type from XML,\n## some recordkeeping is done in vsv.currentTopicMapHoldingDict[\n## \'IoMapsDict\'][ (TMA name)][ propertyClassName].  \n\nimport types, traceback\n\n#######################################################\ndef ValueIsNotOfType_proxyIdList_(vsv, propertyValue, propertyClass, propertyInstance = None, **args):\n    propertyClassName = propertyClass.propertyClassName\n    topicMap = propertyClass.topicMap\n    TMA = propertyClass.TMA\n    TMAName = TMA.TMAName\n\n    if not isinstance( propertyValue, types.ListType):\n        traceback.print_stack()\n        if propertyInstance:\n            vsv.errMsg( \'Value "%25s" of property %25s is not a list.\' %25 ( propertyValue, propertyInstance.propertyInstanceKey))\n        else:\n            vsv.errMsg( \'Value "%25s" of a prospective %25s property is not a list.\' %25 ( propertyValue, vsv.catKey( TMAName, propertyClassName)))\n        return True\n\n    for proxyId in propertyValue:\n        if not isinstance(proxyId, types.StringType):\n            if propertyInstance:\n                vsv.errMsg( \'An item ("%25s") in the value of property %25s is not a string.\' %25 ( proxyId, propertyInstance.propertyInstanceKey))\n            else:\n                vsv.errMsg( \'An item ("%25s") in the value of a presumptive %25s property is not a string.\' %25 ( proxyId, vsv.catKey( TMAName, propertyClassName)))\n            return True\n        if not vsv.proxyIdStrValidatorRE.match( proxyId):\n            if propertyInstance:\n                vsv.errMsg( \'An item ("%25s") in the value of property %25s does not look like a proxy identifier string.\' %25 ( proxyId, propertyInstance.propertyInstanceKey))\n            else:\n                vsv.errMsg( \'An item ("%25s") in the value of a presumptive %25s property does not look like a proxy identifier string.\' %25 ( proxyId, vsv.catKey( TMAName, propertyClassName)))\n            return True\n\n        proxy = vsv.isProxyId( proxyId, topicMap)\n        if not proxy:\n            if proxyId not in vsv.currentTopicMapHoldingDict[ \'IoMapsDict\'][ \'TMAs\'][ propertyInstance.TMAName][ propertyClassName]:\n                   ## We\'re probably in the process of importing a topic map, and these are\n                   ## references to proxies that don\'t exist yet because they haven\'t been imported\n                   ## yet.  The above check is supposed to calm our fears that this proxy reference\n                   ## is invalid, giving us reason to believe that it will soon be valid, even\n                   ## though it\'s not quite valid yet.\n\n                if propertyInstance:\n                    errString = \'An item ("%25s") in the list is not the ID of any proxy in topic map "%25s".\' %25 ( proxyId, propertyInstance.topicMap.topicMapName)\n                else:\n                    errString = \'An item ("%25s") in the list is not the ID of any proxy in any open topic map.\' %25 ( proxyId)\n                vsv.errMsg( errString)\n                return True\n        if proxy:\n            if proxy.forwardTo:\n                vsv.errMsg( \'An item ("%25s") in the list that is the value of property %25s is the ID of a dead proxy.  Only the IDs of living proxies are permitted.\' %25 ( proxyId, propertyInstance.topicMap.topicMapName))\n                return True\n\n    return False  ## all\'s well, presumably.                    \n\n#######################################################\ndef InstanceOf_proxyIdList_ValueTypeToXMLContentString(vsv, propertyInstance):\n    return vsv.cPickleDumpObjectAsXMLContentString( propertyInstance._value)\n\n#######################################################\ndef XMLContentStringToInstanceOf_proxyIdList_ValueType(vsv, string, propertyClass, **args):\n    ## Import a list of proxy references, adjusting them as necessary to\n    ## the new proxyIds of the imported proxies to which they refer.\n\n    oldProxyIdList = vsv.cPickleLoadObjectFromXMLContentString( string)\n\n    mem2xmlProxyIdDict = vsv.currentTopicMapHoldingDict[ \'IoMapsDict\'][ \'ProxyIds.mem2xml\']\n        ## This dictionary allows us to look up the in-xml element id of a\n        ## proxy, given the proxy\'s proxyId as it was in the topic map\n        ## from which the proxy was exported as xml.\n\n    firstImportedProxyId = vsv.firstImportedProxyId\n        ## This is an integer which, if we were to convert it into a\n        ## string of decimal digits with 2 prepended zero characters,\n        ## would be the proxyId of the first (the first, that is, not\n        ## counting the proxies created in order to register the TMAs\n        ## of the xml topic map being imported) in-memory proxy to be\n        ## imported into the being-imported-into topic map from the\n        ## xml topic map that we\'re importing.\n\n    propertyClassName = propertyClass.propertyClassName\n    TMAName = propertyClass.TMA.TMAName\n\n    newProxyIdList = []\n\n    for oldProxyId in oldProxyIdList:\n        xmlProxyNum = mem2xmlProxyIdDict[ int( oldProxyId)]\n        newProxyNum = (xmlProxyNum + firstImportedProxyId) - 1\n        newProxyId = \'00%25s\' %25 ( newProxyNum)\n        newProxyIdList.append( newProxyId)\n\n        appDict = vsv.currentTopicMapHoldingDict[ \'IoMapsDict\'][ \'TMAs\'][ TMAName]\n        if not appDict.has_key( propertyClassName):\n            appDict[ propertyClassName] = [ newProxyId]\n        else:\n            if newProxyId not in appDict[ propertyClassName]:\n                appDict[ propertyClassName].append( newProxyId)\n    ## vsv.IoMapsDict[ args[ \'TMAName\']][ propertyClassName] will be consulted by\n    ## the ValueIsNotOfType__() function in order to avoid a logical logjam over this.\n    ## The logical logjam is that we\'re referring to proxies that haven\'t been imported\n    ## yet, and the ValueIsNotOfType__() function checks to see that the proxy references are valid.\n    ## This gives the ValueIsNotOfType__() function something to fall back on, as it checks.\n    ## See that function, above, for more.\n\n    return newProxyIdList\n\n'%0ap1%0a.</TMAModule

    ><TMAModule ModName="001_VTsetOfProxyRefTuples" ModSrcFileName="001_VTsetOfProxyRefTuples.py">S'#####################################################################\n#####################################################################\n## Versavant Topic Map Application Bus / Subject Addressing Engine ##\n## Copyright 2005 Steven R. Newcomb                                ##\n##                                                                 ##\n## This software is licensed under the Apache License, Version 2.0 ##\n## (the "License"); you may not use this file except in compliance ##\n## with the License.  Copies of the License are available at       ##\n##        http://www.apache.org/licenses/LICENSE-2.0               ##\n##                                                                 ##\n## Unless required by applicable law or agreed to in writing,      ##\n## software distributed under the License is distributed on an "AS ##\n## IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either ##\n## express or implied.  See the License for the specific language  ##\n## governing permissions and limitations under the License.        ##\n##                                                                 ##\n## Copies of the source code and the license are available at      ##\n##        http://www.versavant.org                                 ##\n#####################################################################\n#####################################################################\n\n####################################\ncvsRevision = "$Revision: 1.3 $" ##\n####################################\n\n\n###################################################################\n## setOfProxyRefTuples  (for a_sip properties in BIGASSERT, and x_roles properties in TRA_assert)\n###################################################################\n\nimport types\n\n#################################################\n## implementation of                           ##\n## setOfProxyRefTuples                         ##\n#################################################\n\n#######################################################\ndef ValueIsNotOfType_setOfProxyRefTuples_( vsv, propertyValue, propertyClass, propertyInstance = None):\n    if not isinstance( propertyValue, types.ListType):\n        vsv.errMsg( \'Value "%25s" is not a list.\' %25 ( propertyValue))\n        return True\n    for tuple in propertyValue:\n        if not isinstance( tuple, types.TupleType):\n            vsv.errMsg( \'Value is a list that contains an item (%25s) that is not a tuple.\' %25 ( tuple))\n            return True\n        for member in tuple:\n            if not isinstance( member, types.StringType):\n                vsv.errMsg( \'Value is a list that contains an item that is a tuple that contains a member (%25s) that is not a string.\' %25 ( member))\n                return True\n            if not vsv.nowImporting:\n                if propertyInstance:\n                    proxy = vsv.isProxyId( member, propertyInstance.topicMap)\n                    if not proxy:\n                        vsv.errMsg( \'Value is a list that contains an item that is a tuple that contains a member (%25s) that is a string that is not a proxyId in topic map "%25s".\' %25 ( member, propertyInstance.topicMap.topicMapName))\n                        return True\n                    if proxy.forwardTo:\n                        vsv.errMsg( \'Value is a list that contains an item that is a tuple that contains a member (%25s) that is a string that is the proxyId (in topic map "%25s") of a dead proxy.  Only living proxies can be referenced.\' %25 ( member, propertyInstance.topicMap.topicMapName))\n                        return True\n                else:\n                    proxy = vsv.isProxyId( member)\n                    if not proxy:\n                        vsv.errMsg( \'Value is a list that contains an item that is a tuple that contains a member (%25s) that is a string that is not a proxyId.\' %25 ( member))\n                        return True\n                    if proxy.forwardTo:\n                        vsv.errMsg( \'Value is a list that contains an item that is a tuple that contains a member (%25s) that is a string that is the proxyId of a dead proxy.  Only living proxies can be referenced.\' %25 ( member))\n\n    return False\n\n#######################################################\ndef InstanceOf_setOfProxyRefTuples_ValueTypeToXMLContentString( vsv, propertyInstance):\n    return vsv.cPickleDumpObjectAsXMLContentString( propertyInstance._value)\n\n#######################################################\ndef XMLContentStringToInstanceOf_setOfProxyRefTuples_ValueType( vsv, string, propertyClass):\n    ## Import a list of proxy references, adjusting them as necessary to\n    ## the new proxyIds of the imported proxies to which they refer.\n\n    propertyClassName = propertyClass.propertyClassName\n    TMAName = propertyClass.TMA.TMAName\n\n    oldSetOfProxyRefTuples = vsv.cPickleLoadObjectFromXMLContentString( string)\n\n    mem2xmlProxyIdDict = vsv.currentTopicMapHoldingDict[ \'IoMapsDict\'][ \'ProxyIds.mem2xml\']\n        ## This dictionary allows us to look up the in-xml element id of a\n        ## proxy, given the proxy\'s proxyId as it was in the topic map\n        ## from which the proxy was exported as xml.\n\n    firstImportedProxyId = vsv.firstImportedProxyId\n        ## This is an integer which, if we were to convert it into a\n        ## string of decimal digits with 2 prepended zero characters,\n        ## would be the proxyId of the first (the first, that is, not\n        ## counting the proxies created in order to register the TMAs\n        ## of the xml topic map being imported) in-memory proxy to be\n        ## imported into the being-imported-into topic map from the\n        ## xml topic map that we\'re importing.\n\n    newSetOfProxyRefTuples = []\n\n    for oldTuple in oldSetOfProxyRefTuples:\n        newTupleList = []\n        for oldProxyId in oldTuple:\n            xmlProxyNum = mem2xmlProxyIdDict[ int( oldProxyId)]\n            newProxyNum = (xmlProxyNum + firstImportedProxyId) - 1\n            newProxyId = \'00%25s\' %25 ( newProxyNum)\n\n            newTupleList.append( newProxyId)\n\n            appDict = vsv.currentTopicMapHoldingDict[ \'IoMapsDict\'][ \'TMAs\'][ TMAName]\n            if not appDict.has_key( propertyClassName):\n                appDict[ propertyClassName] = [ newProxyId]\n            else:\n                if newProxyId not in appDict[ propertyClassName]:\n                    appDict[ propertyClassName].append( newProxyId)\n\n        newSetOfProxyRefTuples.append( tuple( newTupleList))\n\n    ## vsv.IoMapsDict[ args[ \'TMAName\']][ propertyClassName] will be consulted by\n    ## the ValueIsNotOfType__() function in order to avoid a logical logjam over this.\n    ## The logical logjam is that we\'re referring to proxies that haven\'t been imported\n    ## yet, and the ValueIsNotOfType__() function checks to see that the proxy references are valid.\n    ## This gives the ValueIsNotOfType__() function something to fall back on, as it checks.\n    ## See that function, above, for more.\n\n    return newSetOfProxyRefTuples\n\n'%0ap1%0a.</TMAModule

    ><TMAModule ModName="001_conferralRules" ModSrcFileName="001_conferralRules.py">S'#####################################################################\n#####################################################################\n## Copyright 2005 Steven R. Newcomb                                ##\n##                                                                 ##\n## This software is licensed under the Apache License, Version 2.0 ##\n## (the "License"); you may not use this file except in compliance ##\n## with the License.  Copies of the License are available at       ##\n##        http://www.apache.org/licenses/LICENSE-2.0               ##\n##                                                                 ##\n## Unless required by applicable law or agreed to in writing,      ##\n## software distributed under the License is distributed on an "AS ##\n## IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either ##\n## express or implied.  See the License for the specific language  ##\n## governing permissions and limitations under the License.        ##\n##                                                                 ##\n## Copies of the source code and the license are available at      ##\n##        http://www.versavant.org                                 ##\n#####################################################################\n#####################################################################\n\n\n#####################################################################\n## Implementation of the conferral rules "inferFrom_a_sip_"\n## in Topic Map Application "BIGASSERT".\n#####################################################################\n\n####################################\ncvsRevision = "$Revision: 1.4 $" ##\n####################################\n\n\nimport sys, copy\n\ndef inferFrom_a_sip_( vsv, conferralRule, **args):\n\n##         a_sip properties trigger conferrals as follows:\n\n##            - if assertionModel == \'BigAssert\' or assertionModel == \'TRA_assert\':\n##              a t-proxy, with its t_sip and t_assertions properties.\n##              The t_sip property\'s value is a list of references to the\n##              set of r-proxies (the ones that are referenced as the\n##              first member of each tuple in the a_sip property\'s\n##              value).  The t_assertions property\'s value is a list of\n##              proxy references with one item in it - a reference to\n##              the a-proxy that has this a_sip property.\n\n##            - for each tuple in the a_sip property value, the following\n##              are conferred into existence:\n\n##               . if assertionModel == \'BigAssert\':\n##                 a c-proxy, with its c_sip property.  (See c_sip,\n##                 below.)\n\n##               . if assertionModel == \'BigAssert\':\n##                 an r-proxy, with its r_type and r_castings properties,\n##                 plus an SIP that is not governed by this TMA but is\n##                 already extant.\n\n##               . if assertionModel == \'TRA_assert\':\n##                 an r-proxy, with its r_type and r_rolePlayers properties,\n##                 plus an SIP that is not governed by this TMA but is\n##                 already extant.\n\n##            - for each tuple in the a_sip property value that has two\n##              members (i.e., that has a reference to an x-proxy)\n\n##               . if assertionModel == \'BigAssert\':\n##                 an x-proxy, with its x_castings property, plus the SIP\n##                 not governed by this TMA but already extant\n\n##               . if assertionModel == \'TRA_assert\':\n##                 an x-proxy, with its x_roles property, which in\n##                 this case consists of duples, the first member of\n##                 which is a reference to an r-proxy, and the second\n##                 member of which is a reference to an a-proxy, plus\n##                 the SIP not governed by this TMA but already extant\n\n##               . if assertionModel == \'A_assert\':\n##                 an x-proxy, with its x_roles property, which in\n##                 this case consists of duples, the first member of\n##                 which is a rolename of an (unreified) role, and the second\n##                 member of which is a reference to an a-proxy, plus\n##                 the SIP not governed by this TMA but already extant\n\n##            - if assertionModel == \'BigAssert\' or assertionModel == \'TRA_assert\':\n##              an a_type property on a new a_proxy that has a copy of\n##              the triggering a_sip property.\n\n##            - if assertionModel == \'BigAssert\':\n##              an a_castings property on a new a_proxy that has a\n##              copy of the triggering a_sip property.\n\n\n    assertionModel = args[ \'assertionModel\']  ## possible values: \'BigAssert\', \'TRA_assert\', \'A_assert\'\n\n    topicMap = conferralRule.topicMap  ## make the below code less verbose (and maybe run slightly faster)\n    TMA = conferralRule.TMA  ## this is the TMA that defines this conferral rule\n    old_a_sip_overheadDict = TMA.propertyClasses[ \'a_sip\'].overheadDict\n\n    old_a_sip_hashableValueList = old_a_sip_overheadDict.keys()\n\n    for old_a_sip_hashableValue in old_a_sip_hashableValueList:\n\n        old_a_proxyIdList = old_a_sip_overheadDict[ old_a_sip_hashableValue]\n\n        for old_a_proxyId in old_a_proxyIdList:\n\n            old_a_proxy = topicMap.proxies[ old_a_proxyId]\n            old_a_sip_instance = old_a_proxy.propertyInstances[ vsv.catKey( TMA.TMAName, \'a_sip\')]\n\n            ## Don\'t be triggered by any a_sip_instance that was\n            ## output by an operation of this rule, and don\'t be\n            ## triggered by an a_sip_instance property more than once.\n            conferralRuleTriggerRoleId = vsv.catKey( conferralRule.conferralRuleKey, \'a_sip value\')\n            if old_a_sip_instance.conferralTriggerAncestry.has_key( conferralRuleTriggerRoleId) or \\\n                old_a_sip_instance.conferralsTriggered.has_key( conferralRuleTriggerRoleId):\n                continue\n\n            triggers = {}  ## new dictionary to work in\n            triggers[ \'a_sip value\'] = old_a_sip_instance.propertyInstanceKey\n            conferredValueSources = {}  ## new dictionary to work in\n            conferredValueSources[ \'a_sip value\'] = old_a_sip_instance.propertyInstanceKey\n\n            if vsv.conferralMayBeSignificant( conferralRule, triggers, conferredValueSources):\n\n                if assertionModel == \'BigAssert\' or assertionModel == \'TRA_assert\':\n                    ## new t_proxy\n                    t_proxy = vsv.newProxyObject( topicMap)\n                    r_proxyIdList = []\n                    new_c_proxyIdList = []\n\n                for currentTuple in old_a_sip_instance._value:\n\n                    if len( currentTuple) == 2: ## If there\'s a role player\n                        ## make new x_proxy\n                        old_x_proxy = topicMap.proxies[ currentTuple[ 1]]\n                        old_x_proxy_sip = vsv.SIPOfProxy( old_x_proxy)\n\n                        x_proxy = vsv.newProxyObject( topicMap)\n\n                        vsv.newPropertyInstance( x_proxy,  ## copy the x_proxy\'s SIP\n                                                 old_x_proxy_sip.propertyClass.TMA,\n                                                 old_x_proxy_sip.propertyClass.propertyClassName,\n                                                 vsv.versaCopy( old_x_proxy_sip._value),   ## important!  Must be a copy; cannot be same object.\n                                                 triggers,\n                                                 conferredValueSources)\n\n                    if assertionModel == \'BigAssert\' or assertionModel == \'TRA_assert\':\n                        r_proxyIdList.append( currentTuple[ 0])\n\n                        if assertionModel == \'BigAssert\': ## BIGASSERT, not TRA_assert\n                            ## new c_proxy\n                            c_proxy = vsv.newProxyObject( topicMap)\n                            new_c_proxyIdList.append( c_proxy.proxyId)\n\n                            if len( currentTuple) == 1:\n                                c_sip_value = [ currentTuple[ 0], old_a_proxy.proxyId]\n                            else:  ## len( currentTuple) == 2:\n                                c_sip_value = [ currentTuple[ 0], old_a_proxy.proxyId, currentTuple[ 1]]\n\n                                vsv.newPropertyInstance( x_proxy,\n                                                         conferralRule.TMA,\n                                                         \'x_castings\',\n                                                         [ c_proxy.proxyId],\n                                                         triggers,\n                                                         conferredValueSources)\n\n\n\n                            vsv.newPropertyInstance( c_proxy,\n                                                     conferralRule.TMA,\n                                                     \'c_sip\',\n                                                     c_sip_value,\n                                                     triggers,\n                                                     conferredValueSources)\n\n                        ## new r_proxy\n                        old_r_proxy = topicMap.proxies[ currentTuple[ 0]]\n                        old_r_proxy_sip = vsv.SIPOfProxy( old_r_proxy)\n\n                        r_proxy = vsv.newProxyObject( topicMap)\n\n                        vsv.newPropertyInstance( r_proxy,  ## copy the r_proxy\'s SIP, so the new proxy will merge with the old one\n                                                 old_r_proxy_sip.propertyClass.TMA,\n                                                 old_r_proxy_sip.propertyClass.propertyClassName,\n                                                 vsv.versaCopy( old_r_proxy_sip._value),  ## important that it\'s a copy, not a reference!\n                                                 triggers,\n                                                 conferredValueSources)\n\n                        vsv.newPropertyInstance( r_proxy,\n                                                 conferralRule.TMA,\n                                                 \'r_type\',\n                                                 [ t_proxy.proxyId],\n                                                 triggers,\n                                                 conferredValueSources)\n\n                        if assertionModel == \'BigAssert\': ## BIGASSERT only, not TRA_assert or A_assert\n                            vsv.newPropertyInstance( r_proxy,\n                                                     conferralRule.TMA,\n                                                     \'r_castings\',\n                                                     [ c_proxy.proxyId],\n                                                     triggers,\n                                                     conferredValueSources)\n\n                        elif assertionModel == \'TRA_assert\': ## TRA_assert only, not BIGASSERT or A_assert\n                            vsv.newPropertyInstance( r_proxy,\n                                                     conferralRule.TMA,\n                                                     \'r_rolePlayers\',\n                                                     [ x_proxy.proxyId],\n                                                     triggers,\n                                                     conferredValueSources)\n\n                    if assertionModel == \'TRA_assert\': ## TRA_assert, not BIGASSERT, nor A_assert\n                        if len( currentTuple) == 2:\n                            vsv.newPropertyInstance( x_proxy,\n                                                     conferralRule.TMA,\n                                                     \'x_roles\',\n                                                     [ tuple( [ r_proxy.proxyId, old_a_proxy.proxyId])],\n                                                     triggers,\n                                                     conferredValueSources)\n\n                    if assertionModel == \'A_assert\': ## A_assert, not BIGASSERT, nor TRA_assert\n                        currentTupleList = list( currentTuple)\n                        if len( currentTupleList) == 1:\n                            vsv.newPropertyInstance( x_proxy,\n                                                     conferralRule.TMA,\n                                                     \'x_roles\',\n                                                     [ tuple( [ currentTupleList[ 0]])],\n                                                     triggers,\n                                                     conferredValueSources)\n                        if len( currentTupleList) == 2:\n                            vsv.newPropertyInstance( x_proxy,\n                                                     conferralRule.TMA,\n                                                     \'x_roles\',\n                                                     [ tuple( [ currentTupleList[ 0], old_a_proxy.proxyId])],\n                                                     triggers,\n                                                     conferredValueSources)\n\n                if assertionModel == \'BigAssert\' or assertionModel == \'TRA_assert\':\n                    ## set t_proxy\'s properties\n                    vsv.newPropertyInstance( t_proxy,\n                                             conferralRule.TMA,\n                                             \'t_sip\',\n                                             r_proxyIdList,\n                                             triggers,\n                                             conferredValueSources)\n\n                    vsv.newPropertyInstance( t_proxy,\n                                             conferralRule.TMA,\n                                             \'t_assertions\',\n                                             [ old_a_proxyId],\n                                             triggers,\n                                             conferredValueSources)\n\n\n\n                    ## set new a_proxy\'s properties\n                    new_a_proxy = vsv.newProxyObject( topicMap)\n\n                    vsv.newPropertyInstance( new_a_proxy,  ## copy the a_proxy\'s SIP\n                                             conferralRule.TMA,\n                                             \'a_sip\',\n                                             vsv.versaCopy( old_a_sip_instance._value),\n                                             triggers,\n                                             conferredValueSources)\n\n                    vsv.newPropertyInstance( new_a_proxy,\n                                             conferralRule.TMA,\n                                             \'a_type\',\n                                             [ t_proxy.proxyId],\n                                             triggers,\n                                             conferredValueSources)\n\n                    if assertionModel == \'BigAssert\':  ## BIGASSERT, not TRA_assert or A_assert\n                        vsv.newPropertyInstance( new_a_proxy,\n                                                 conferralRule.TMA,\n                                                 \'a_castings\',\n                                                 new_c_proxyIdList,\n                                                 triggers,\n                                                 conferredValueSources)\n\n\n\ndef bridgeAcross_a_sip_Models( vsv, conferralRule, **args):\n    ## from bridgeFromTMAName,,a_sip properties, infer a_sip\n    ## properties in the conferralRule\'s TMA.  (With all that that\n    ## entails.)\n\n    bridgeFromTMAName  = args[ \'bridgeFromTMAName\']\n    bridgeFromTMAModel = args[ \'bridgeFromTMAModel\']  ## possible values: \'BigAssert\', \'TRA_assert\', \'A_assert\'\n    bridgeToTMAModel   = args[ \'bridgeToTMAModel\']    ## possible values: \'BigAssert\', \'TRA_assert\', \'A_assert\'\n    \n    ## this happens later, iff bridging to A_assert:\n    ##   bridgeFromR_ProxyTMAName = args[ \'bridgeFromR_ProxyTMAName\']\n    ##   bridgeFromR_ProxyPropertyName = args[ \'bridgeFromR_ProxyPropertyName\']\n\n    ## this happens later, iff bridging from A_assert:\n    ##   bridgeToR_ProxyTMAName = args[ \'bridgeToR_ProxyPropertyName\']\n    ##   bridgeToR_ProxyPropertyName = args[ \'bridgeToR_ProxyPropertyName\']\n    ## Note that the bridgeToR_Proxy property must be an SIP, and there must already be an instance\n    ## of it to merge with, or Versavant will refuse to honor a request to create it.  Therefore,\n    ## an up-translation may require an original population task to pre-create the r-proxies.\n\n    topicMap = conferralRule.topicMap  ## make the below code less verbose (and maybe run slightly faster)\n    TMA = conferralRule.TMA  ## this is the TMA that defines this conferral rule\n    bridgeFromTMA = topicMap.TMAs[ bridgeFromTMAName]\n    bridgeFrom_a_sip_overheadDict = bridgeFromTMA.propertyClasses[ \'a_sip\'].overheadDict\n\n    old_a_sip_hashableValueList = bridgeFrom_a_sip_overheadDict.keys()\n\n    for old_a_sip_hashableValue in old_a_sip_hashableValueList:\n\n        old_a_proxyIdList = vsv.versaCopy( bridgeFrom_a_sip_overheadDict[ old_a_sip_hashableValue])\n\n        for old_a_proxyId in old_a_proxyIdList:\n\n            old_a_proxy = topicMap.proxies[ old_a_proxyId]\n            old_a_sip_instance = old_a_proxy.propertyInstances[ vsv.catKey( bridgeFromTMA.TMAName, \'a_sip\')]\n\n            ## Don\'t be triggered by an a_sip_instance property more\n            ## than once, and don\'t be triggered by any a_sip_instance\n            ## that was output by an operation of this rule\n            conferralRuleTriggerRoleId = vsv.catKey( conferralRule.conferralRuleKey, \'a_sip value\')\n            if old_a_sip_instance.conferralTriggerAncestry.has_key( conferralRuleTriggerRoleId) or \\\n                   old_a_sip_instance.conferralsTriggered.has_key( conferralRuleTriggerRoleId):\n                continue\n\n            triggers = {}  ## new dictionary to work in\n            triggers[ \'a_sip value\'] = old_a_sip_instance.propertyInstanceKey\n            conferredValueSources = {}  ## new dictionary to work in\n            conferredValueSources[ \'a_sip value\'] = old_a_sip_instance.propertyInstanceKey\n\n            if vsv.conferralMayBeSignificant( conferralRule, triggers, conferredValueSources):\n\n                ## new a_proxy\n                a_proxy = vsv.newProxyObject( topicMap)\n\n                vsv.newPropertyInstance( a_proxy,  ## copy the existing old_a_proxy\'s a_sip\n                                         bridgeFromTMA,\n                                         \'a_sip\',\n                                         vsv.versaCopy( old_a_sip_instance._value),\n                                         triggers,\n                                         conferredValueSources)\n\n                ## calculate this TMA\'s SIP value\n\n                if bridgeFromTMAModel not in [ \'BigAssert\', \'TRA_assert\', \'A_assert\']:\n                    vsv.errMsg( \'unrecognized bridgeFromTMAModel value: "%25s"\' %25 ( bridgeFromTMAModel))\n                    sys.exit( 1)\n\n                if bridgeToTMAModel not in [ \'BigAssert\', \'TRA_assert\', \'A_assert\']:\n                    vsv.errMsg( \'unrecognized bridgeToTMAModel value: "%25s"\' %25 ( bridgeToTMAModel))\n                    sys.exit( 1)\n\n                if bridgeFromTMAModel == bridgeToTMAModel:\n                    vsv.errMsg( \'does not make sense to bridge from bridgeFromTMAModel "%25s" to bridgeToTMAModel "%25s".\' %25 ( bridgeFromTMAModel, bridgeToTMAModel))\n                    sys.exit( 1)\n\n                if ( bridgeFromTMAModel == \'BigAssert\' and bridgeToTMAModel == \'TRA_assert\') or ( bridgeFromTMAModel == \'TRA_assert\' and bridgeToTMAModel == \'BigAssert\'):\n                    ## There\'s no difference between the a_sip properties of BigAssert vs. TRA_assert.  Just duplicate it.\n                    thisTMAs_a_sip_instanceValue = old_a_sip_instance._value\n\n                elif ( bridgeFromTMAModel == \'BigAssert\' or bridgeFromTMAModel == \'TRA_assert\') and ( bridgeToTMAModel == \'A_assert\'):\n                    ## Here we need to convert each r-proxy reference (the first member of each tuple) into a string which will serve as the role name.\n                    bridgeFromR_ProxyPropertyName = args[ \'bridgeFromR_ProxyPropertyName\']\n                    bridgeFromR_ProxyTMAName = args[ \'bridgeFromR_ProxyTMAName\']\n\n                    thisTMAs_a_sip_instanceValue = []\n                    roleNames = {}\n                    for thisTuple in old_a_sip_instance._value:\n                        r_proxy = topicMap.proxies[ thisTuple[ 0]]\n                        r_proxy_sip = r_proxy.propertyInstances[ vsv.catKey( bridgeFromR_ProxyTMAName, bridgeFromR_ProxyPropertyName)]\n                        roleName = \'%25s\' %25 ( r_proxy_sip._value)\n                        if roleName in roleNames:\n                            vsv.errMsg( \'a_sip value of proxy %25s cannot be bridged from TMA %25s (model %25s) to TMA %25s (model %25s); two or more roleNames turn out to be "%25s".\' %25 ( old_a_proxyId, bridgeFromTMAName, bridgeFromTMAModel, TMA.TMAName, bridgeToTMAModel, roleName))\n                            sys.exit( 1)\n                        roleNames[ roleName] = None\n                        newTupleList = [ roleName, thisTuple[ 1]]\n                        thisTMAs_a_sip_instanceValue.append( tuple( newTupleList))\n\n                elif ( bridgeFromTMAModel == \'A_assert\') and ( bridgeToTMAModel == \'BigAssert\' or bridgeToTMAModel == \'TRA_assert\'):\n                    bridgeToR_ProxyTMAName = args[ \'bridgeToR_ProxyTMAName\']\n                    bridgeToR_ProxyPropertyName = args[ \'bridgeToR_ProxyPropertyName\']\n\n                    thisTMAs_a_sip_instanceValue = []\n                    for thisTuple in old_a_sip_instance._value:\n                        r_proxy = vsv.newProxyObject( topicMap)\n                        vsv.newPropertyInstance( r_proxy,\n                            bridgeToR_ProxyTMAName,\n                            bridgeToR_ProxyPropertyName,\n                            vsv.versaCopy( thisTuple[ 0]),  ## here is the role name that we\'re reifying with this new r-proxy\n                            triggers,\n                            conferredValueSources)\n\n                        newTupleList = [ r_proxy.proxyId, thisTuple[ 1]]  ## thisTuple[ 1] is the proxyId of the role player\n                        thisTMAs_a_sip_instanceValue.append( tuple( newTupleList))\n\n                else:\n                    vsv.errMsg( \'This should never happen.  bridgeFromTMAModel == "%25s"; bridgeToTMAModel == "%25s".\' %25 ( bridgeFromTMAModel, bridgeToTMAModel))\n                    sys.exit( 1)\n\n                vsv.newPropertyInstance( a_proxy,  ## set this TMA\'s a_sip to the same value\n                                         TMA,\n                                         \'a_sip\',\n                                         vsv.versaCopy( thisTMAs_a_sip_instanceValue),\n                                         triggers,\n                                         conferredValueSources)\n\n\ndef bridgeAcross_t_sip_Models( vsv, conferralRule, **args):\n    ## from bridgeFromTMAName,,t_sip properties, infer t_sip\n    ## properties in the conferralRule\'s TMA.  (With all that that\n    ## entails.)\n\n    bridgeFromTMAName = args[ \'bridgeFromTMAName\']\n\n    topicMap = conferralRule.topicMap  ## make the below code less verbose (and maybe run slightly faster)\n    TMA = conferralRule.TMA  ## this is the TMA that defines this conferral rule\n    bridgeFromTMA = topicMap.TMAs[ bridgeFromTMAName]\n    bridgeFrom_t_sip_overheadDict = bridgeFromTMA.propertyClasses[ \'t_sip\'].overheadDict\n\n    t_sip_hashableValueList = bridgeFrom_t_sip_overheadDict.keys()\n\n    for t_sip_hashableValue in t_sip_hashableValueList:\n\n        t_proxyIdList = vsv.versaCopy( bridgeFrom_t_sip_overheadDict[ t_sip_hashableValue])\n\n        for t_proxyId in t_proxyIdList:\n\n            t_proxy = topicMap.proxies[ t_proxyId]\n            t_sip_instance = t_proxy.propertyInstances[ vsv.catKey( bridgeFromTMA.TMAName, \'t_sip\')]\n\n            ## Don\'t be triggered by an t_sip_instance property more\n            ## than once, and don\'t be triggered by any t_sip_instance\n            ## that was output by an operation of this rule\n            conferralRuleTriggerRoleId = vsv.catKey( conferralRule.conferralRuleKey, \'t_sip value\')\n            if t_sip_instance.conferralTriggerAncestry.has_key( conferralRuleTriggerRoleId) or \\\n                   t_sip_instance.conferralsTriggered.has_key( conferralRuleTriggerRoleId):\n                continue\n\n            triggers = {}  ## new dictionary to work in\n            triggers[ \'t_sip value\'] = t_sip_instance.propertyInstanceKey\n            conferredValueSources = {}  ## new dictionary to work in\n            conferredValueSources[ \'t_sip value\'] = t_sip_instance.propertyInstanceKey\n\n            if vsv.conferralMayBeSignificant( conferralRule, triggers, conferredValueSources):\n\n                ## new t_proxy\n                t_proxy = vsv.newProxyObject( topicMap)\n\n                vsv.newPropertyInstance( t_proxy,  ## copy the existing t_proxy\'s t_sip\n                                         bridgeFromTMA,\n                                         \'t_sip\',\n                                         vsv.versaCopy( t_sip_instance._value),\n                                         triggers,\n                                         conferredValueSources)\n\n                vsv.newPropertyInstance( t_proxy,  ## set this TMA\'s t_sip to the same value\n                                         TMA,\n                                         \'t_sip\',\n                                         vsv.versaCopy( t_sip_instance._value),\n                                         triggers,\n                                         conferredValueSources)\n\n\ndef bridgeFromU_assert( vsv, conferralRule, **args):\n    ## from bridgeFromTMAName,,x_LrnRrnRrp properties, infer a_sip\n    ## properties in the conferralRule\'s TMA.  (With all that that\n    ## entails.)\n\n    u_assertTMAName = args[ \'bridgeFromTMAName\']\n    rolesTMAName = args[ \'rolesTMAName\']\n    roleNamePropertyClassName = args[ \'roleNamePropertyClassName\']\n    u_assertPropertyName = \'x_LrnRrnRrp\'\n\n    topicMap = conferralRule.topicMap\n    TMA = conferralRule.TMA  ## this is the TMA that defines this conferral rule\n    rolesTMA = topicMap.TMAs[ rolesTMAName]\n    u_assertTMA = topicMap.TMAs[ u_assertTMAName]\n    proxyIdList = u_assertTMA.propertyClasses[ u_assertPropertyName].overheadDict[ \'proxyIds\'].keys()\n    u_assertPropertyInstanceInProxyKey = vsv.catKey( u_assertTMAName, u_assertPropertyName)\n\n    existingRoleDict = rolesTMA.propertyClasses[ \'role name\'].overheadDict\n\n    for proxyId in proxyIdList:\n\n        proxy = topicMap.proxies[ proxyId]\n\n        u_assertProperty = proxy.propertyInstances[ u_assertPropertyInstanceInProxyKey]\n\n        ## Don\'t be triggered by a u_assert property more than once\n        conferralRuleTriggerRoleId = vsv.catKey( conferralRule.conferralRuleKey, \'A\')\n        if u_assertProperty.conferralTriggerAncestry.has_key( conferralRuleTriggerRoleId) or \\\n               u_assertProperty.conferralsTriggered.has_key( conferralRuleTriggerRoleId):\n            continue\n\n        triggers = {}  ## new dictionary to work in\n        triggers[ \'A\'] = u_assertProperty.propertyInstanceKey\n        conferredValueSources = {}  ## new dictionary to work in\n        conferredValueSources[ \'A\'] = u_assertProperty.propertyInstanceKey\n\n        if vsv.conferralMayBeSignificant( conferralRule, triggers, conferredValueSources):\n\n            dict1 = u_assertProperty._value\n\n            for dict1Key in dict1:\n                localRoleName = dict1Key\n                localRoleProxyId = existingRoleDict[ localRoleName][ 0]\n                dict2 = dict1[ dict1Key]\n                for dict2Key in dict2:\n                    remoteRoleName = dict2Key\n                    remoteRoleProxyId = existingRoleDict[ remoteRoleName][ 0]\n                    stringList = dict2[ dict2Key]\n                    for remoteProxyId in stringList:\n\n\n                        ## new a_proxy\n                        a_proxy = vsv.newProxyObject( topicMap)\n\n                        vsv.newPropertyInstance( a_proxy,  ## set this TMA\'s t_sip to the same value\n                                                 TMA,\n                                                 \'a_sip\',\n                                                 [ ( localRoleProxyId, proxyId), ( remoteRoleProxyId, remoteProxyId)],\n                                                 triggers,\n                                                 conferredValueSources)\n\n'%0ap1%0a.</TMAModule

    ><TMAModule ModName="001_propertyClasses" ModSrcFileName="001_propertyClasses.py">S'#####################################################################\n#####################################################################\n## Copyright 2005 Steven R. Newcomb                                ##\n##                                                                 ##\n## This software is licensed under the Apache License, Version 2.0 ##\n## (the "License"); you may not use this file except in compliance ##\n## with the License.  Copies of the License are available at       ##\n##        http://www.apache.org/licenses/LICENSE-2.0               ##\n##                                                                 ##\n## Unless required by applicable law or agreed to in writing,      ##\n## software distributed under the License is distributed on an "AS ##\n## IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either ##\n## express or implied.  See the License for the specific language  ##\n## governing permissions and limitations under the License.        ##\n##                                                                 ##\n## Copies of the source code and the license are available at      ##\n##        http://www.versavant.org                                 ##\n#####################################################################\n#####################################################################\n\n####################################\ncvsRevision = "$Revision: 1.8 $" ##\n####################################\n\n\nimport sys, traceback\n\n\n#################################################################\n## a_sip PC implementation                                     ##\n## (mostly it\'s in ${VSVEXECDIR}/Lib/PCsetOfProxyRefTuples.py) ##\n#################################################################\n\n#######################################################\ndef ValueIsInvalidFor_a_sip_Property( vsv, propertyValue, propertyClass, propertyInstance = None, **args):\n\n    r_proxy_allowed_properties = args[ \'r_proxy_allowed_properties\']\n    TMAName = propertyClass.TMA.TMAName\n    topicMap = propertyClass.topicMap\n\n    if len( propertyValue) %3c 2:\n        if propertyInstance:\n            vsv.errMsg( \'Value of %25s property contains %25d tuples; should have at least two tuples.  A relationship must have at least two roles, even if some of them are unplayed.\' %25 ( propertyInstance.propertyInstanceKey, len( propertyValue)))\n        else:\n            vsv.errMsg( \'Value of %25s presumptive property contains %25d tuples; should have at least two tuples.  A relationship must have at least two roles, even if some of them are unplayed.\' %25 ( vsv.catKey( TMAName, propertyClass), len( propertyValue)))\n        return True\n\n    rProxyDict = {}\n    foundDuple = False\n    for tuple in propertyValue:\n        memberCount = len( tuple)\n        if memberCount == 2:\n            foundDuple = True\n        elif memberCount == 1:\n            pass\n        else:\n            if propertyInstance:\n                vsv.errMsg( \'Tuple in %25s property\\\'s value has %25d members; should have 1 (an unplayed role) or 2 (a role and a role player).\' %25 ( propertyInstance.propertyInstanceKey, memberCount))\n            else:\n                vsv.errMsg( \'Tuple in presumptive %25s property\\\'s value has %25d members; should have 1 (an unplayed role) or 2 (a role and a role player).\' %25 ( vsv.catKey( TMAName, propertyClass.propertyClassName), memberCount))\n            return True\n        memberNumber = 0\n        for proxyId in tuple:\n            memberNumber += 1\n            if not vsv.nowImporting:\n                proxy = vsv.isProxyId( proxyId, topicMap)\n                if not proxy:\n                    if propertyInstance:\n                        vsv.errMsg( \'Tuple in value of %25s property has a member (%25s) that is not a proxyId.\' %25 ( propertyInstance.propertyInstanceKey, proxyId))\n                    else:\n                        vsv.errMsg( \'Tuple in value of presumptive %25s property has a member (%25s) that is not a proxyId.\' %25 ( vsv.catKey( TMAName, propertyClass.propertyClassName), proxyId))\n                    return True\n                if proxy.forwardTo:\n                    if propertyInstance:\n                        vsv.errMsg( \'Tuple in value of %25s property has a member (%25s) that is a proxyId of a dead proxy.\' %25 ( propertyInstance.propertyInstanceKey, proxyId))\n                    else:\n                        vsv.errMsg( \'Tuple in value of presumptive %25s property has a member (%25s) that is a proxyId of a dead proxy.\' %25 ( vsv.catKey( TMAName, propertyClass.propertyClassName), proxyId))\n                    return True\n                if memberNumber == 1:  ## this should be a reference to an r-proxy\n\n                    if rProxyDict.has_key( proxyId):\n                        if propertyInstance:\n                            vsv.errMsg( \'multiple references to the same r-proxy (%25s) in property %25s.  No role can be used more than once in any given assertion.\' %25 ( proxyId, propertyInstance.propertyInstanceKey))\n                        else:\n                            vsv.errMsg( \'multiple references to the same r-proxy (%25s) in presumptive property %25s.  No role can be used more than once in any given assertion.\' %25 ( proxyId, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n                        return True\n                    rProxyDict[ proxyId] = None\n\n                    for propertyInstanceKey2 in proxy.propertyInstances:\n                        tmaName, propertyClassName = vsv.parsePropertyKey2( propertyInstanceKey2)\n                        if TMAName == tmaName:\n                            if propertyClassName not in r_proxy_allowed_properties:\n                                if propertyInstance:\n                                    vsv.errMsg( \'Proxy referenced as first member of tuple "%25s" in value of %25s property value has a "%25s" property, which, as an r-proxy, it should not have.\' %25 ( tuple, propertyInstance.propertyInstanceKey, propertyClassName))\n                                else:\n                                    vsv.errMsg( \'Proxy referenced as first member of tuple "%25s" in value of presumptive %25s property value has a "%25s" property, which, as an r-proxy, it should not have.\' %25 ( tuple, vsv.catKey( TMAName, propertyClass.propertyClassName), propertyClassName))\n                                return True\n                ## else:                  ## memberNumber == 2; this should be a reference to an x-proxy\n\n    if not foundDuple:\n        if propertyInstance:\n            vsv.errMsg( \'No tuple in value of %25s property has 2 members.  There must be at least one tuple that has two members; a relationship between nothing and nothing is not a relationship.\' %25 ( propertyInstance.propertyInstanceKey))\n        else:\n            vsv.errMsg( \'No tuple in value of presumptive %25s property has 2 members.  There must be at least one tuple that has two members; a relationship between nothing and nothing is not a relationship.\' %25 ( vsv.catKey( TMAName, propertyClass.propertyClassName)))\n        return True\n\n    return False\n\n\n\n###########################################\n## t_sip PC implementation               ##\n## (mostly re-uses Lib/PCproxyIdSet.py) ##\n###########################################\n\n#######################################################\ndef ValueIsInvalidFor_t_sip_Property( vsv, propertyValue, propertyClass, propertyInstance = None, **args):\n    r_proxy_allowed_properties = args[ \'r_proxy_allowed_properties\']\n    TMAName = propertyClass.TMA.TMAName\n    topicMap = propertyClass.topicMap\n\n    rProxyDict = {}\n    for item in propertyValue:\n        rProxyDict[ item] = None\n    propertyValue = rProxyDict.keys()\n\n    if len( propertyValue) %3c 2:\n        traceback.print_stack()\n        if propertyInstance:\n            vsv.errMsg( \'Value of property %25s references only %25d different proxy/ies; it must refer to at least two.  A relationship must have at least two roles, even if one of them is unplayed.\' %25 ( propertyInstance.propertyInstanceKey, len( propertyValue)))\n        else:\n            vsv.errMsg( \'Value of presumptive %25s property references only %25d different proxies; it must refer to at least two.  A relationship must have at least two roles, even if one of them is unplayed.\' %25 ( vsv.catKey( TMAName, propertyClass.propertyClassName), len( propertyValue)))\n###\n        vsv.inspect( propertyInstanceKey = propertyInstance.propertyInstanceKey)\n###\n        return True\n\n    if vsv.nowImporting:\n        return False  ## can\'t make the rest of these checks yet\n    \n    for proxyId in propertyValue:\n        proxy = vsv.isProxyId( proxyId, topicMap)\n        if not proxy:\n            if propertyInstance:\n                vsv.errMsg( \'Value of %25s property includes something (%25s) that is not a proxyId.\' %25 ( propertyInstance.propertyInstanceKey, proxyId))\n            else:\n                vsv.errMsg( \'Value of presumptive %25s property includes something (%25s) that is not a proxyId.\' %25 ( vsv.catKey( TMAName, propertyClass.propertyClassName), proxyId))\n            return True\n        if proxy.forwardTo:  ## only living proxies are valid\n            if propertyInstance:\n                vsv.errMsg( \'Tuple in value of %25s property has a member (%25s) that is the proxyId of a dead proxy.  Only living proxies are allowed to be referenced.\' %25 ( propertyInstance.propertyInstanceKey, proxyId))\n            else:\n                vsv.errMsg( \'Tuple in value of presumptive %25s property has a member (%25s) that is the proxyId of a dead proxy.  Only living proxies are allowed to be referenced.\' %25 ( vsv.catKey( TMAName, propertyClass.propertyClassName), proxyId))\n            return True\n\n        for propertyInstanceKey2 in proxy.propertyInstances:\n            tmaName, propertyClassName = vsv.parsePropertyKey2( propertyInstanceKey2)\n            if TMAName == tmaName:\n                if propertyClassName not in r_proxy_allowed_properties:\n                    if propertyInstance:\n                        vsv.errMsg( \'Proxy %25s, referenced in %25s property value, has a "%25s" property, which, as an r-proxy, it should not have.\' %25 ( proxy.proxyId, propertyInstance.propertyInstanceKey, propertyClassName))\n                    else:\n                        vsv.errMsg( \'Proxy %25s, referenced in presumptive %25s property value, has a "%25s" property, which, as an r-proxy, it should not have.\' %25 ( proxy.proxyId, vsv.catKey( TMAName, propertyClass.propertyClassName), propertyClassName))\n                    return True\n\n    return False\n\n\n###########################################\n## c_sip PC implementation               ##\n## (mostly re-uses Lib/PCproxyIdList.py) ##\n###########################################\n\n#######################################################\ndef ValueIsInvalidFor_c_sip_Property( vsv, propertyValue, propertyClass, propertyInstance = None, **args):\n    TMAName = propertyClass.TMA.TMAName\n    topicMap = propertyClass.topicMap\n\n    itemCount = len( propertyValue)\n    if itemCount %3c 2 or itemCount > 3:\n        if propertyInstance:\n            vsv.errMsg( \'Value of c_sip property (%25s) is a list containing %25d item(s); should be 2 or 3: (1) a reference to an r-proxy, (2) a reference to an a-proxy, and, optionally, (3) a reference to an x-proxy.\' %25 ( propertyInstance.propertyInstanceKey, itemCount))\n        else:\n            vsv.errMsg( \'Presumptive c_sip property value is a list containing %25d item(s); should be 2 or 3: (1) a reference to an r-proxy, (2) a reference to an a-proxy, and, optionally, (3) a reference to an x-proxy.\' %25 ( itemCount))\n        return True\n\n    if vsv.nowImporting:\n        return False  ## can\'t make the rest of these checks yet\n    \n    itemNumber = 0\n    for proxyId in propertyValue:\n        ordinalItemNumberString = [ \'First\', \'Second\', \'Third\'][ itemNumber]\n        itemNumber += 1\n        proxy = vsv.isProxyId( proxyId, topicMap)\n        if itemNumber == 1:  ## this should be a reference to an r-proxy\n            found_r_type_property = False\n            found_r_castings_property = False\n            for propertyInstanceKey2 in proxy.propertyInstances:\n                tmaName, propertyClassName = vsv.parsePropertyKey2( propertyInstanceKey2)\n                if TMAName == tmaName:\n                    if propertyClassName not in [ \'r_type\', \'r_castings\', \'x_castings\']:\n                        if propertyInstance:\n                            vsv.errMsg( \'Proxy referenced as first item in list "%25s" in value of %25s property has a "%25s" property, which, as an r-proxy, it should not have.\' %25 ( propertyValue, propertyInstance.propertyInstanceKey, vsv.catKey( TMAName, propertyClassName)))\n                        else:\n                            vsv.errMsg( \'Proxy referenced as first item in list "%25s" in presumptive %25s property value has a "%25s" property, which, as an r-proxy, it should not have.\' %25 ( propertyValue, vsv.catKey( TMAName, propertyClass.propertyClassName), vsv.catKey( TMAName, propertyClassName)))\n                        return True\n                    if propertyClassName == \'r_type\':\n                        found_r_type_property = True\n                    if propertyClassName == \'r_castings\':\n                        found_r_castings_property = True\n            if not vsv.currentProcOperation:  ## if this is a full check, and we\'re not in the middle of building something\n                if not found_r_type_property:\n                    if propertyInstance:\n                        vsv.errMsg( \'Proxy referenced as first item in list "%25s" in value of %25s property has no r_type property, which, as an r-proxy, it should have.\' %25 ( propertyValue, propertyInstance.propertyInstanceKey))\n                    else:\n                        vsv.errMsg( \'Proxy referenced as first item in list "%25s" in presumptive %25s property value has no r_type property, which, as an r-proxy, it should have.\' %25 ( propertyValue, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n                    return True\n                if not found_r_castings_property:\n                    if propertyInstance:\n                        vsv.errMsg( \'Proxy referenced as first item in list "%25s" in value of %25s property has no r_castings property, which, as an r-proxy, it should have.\' %25 ( propertyValue, propertyInstance.propertyInstanceKey))\n                    else:\n                        vsv.errMsg( \'Proxy referenced as first item in list "%25s" in presumptive %25s property value has no r_castings property, which, as an r-proxy, it should have.\' %25 ( propertyValue, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n                    return True\n        elif itemNumber == 2:  ## this should be a reference to an a-proxy\n            found_a_sip_property = False\n            for propertyInstanceKey2 in proxy.propertyInstances:\n                tmaName, propertyClassName = vsv.parsePropertyKey2( propertyInstanceKey2)\n                if TMAName == tmaName:\n                    if propertyClassName not in [ \'a_sip\', \'a_type\', \'a_castings\', \'x_castings\']:\n                        if propertyInstance:\n                            vsv.errMsg( \'Proxy referenced as second item in list "%25s" in value of %25s property has a "%25s" property, which, as an a-proxy, it should not have.\' %25 ( propertyValue, propertyInstance.propertyInstanceKey, vsv.catKey( TMAName, propertyClassName)))\n                        else:\n                            vsv.errMsg( \'Proxy referenced as second item in list "%25s" in presumptive %25s property value has a "%25s" property, which, as an a-proxy, it should not have.\' %25 ( propertyValue, vsv.catKey( TMAName, propertyClass.propertyClassName), vsv.catKey( TMAName, propertyClassName)))\n                        return True\n                    if propertyClassName == \'a_sip\':\n                        found_a_sip_property = True\n\n            if not vsv.currentProcOperation:  ## if this is a full check, and we\'re not in the middle of building something\n                if not found_a_sip_property:\n                    if propertyInstance:\n                        vsv.errMsg( \'Proxy referenced as first item in list "%25s" in value of %25s property has no a_sip property, which, as an r-proxy, it should have.\' %25 ( propertyValue, propertyInstance.propertyInstanceKey))\n                    else:\n                        vsv.errMsg( \'Proxy referenced as first item in list "%25s" in presumptive %25s property value has no a_sip property, which, as an r-proxy, it should have.\' %25 ( propertyValue, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n                    return True\n\n    return False\n\n###########################################\n## r_type PC implementation               ##\n## (mostly re-uses Lib/PCproxyIdSet.py) ##\n###########################################\n\n#######################################################\ndef ValueIsInvalidFor_r_type_Property( vsv, propertyValue, propertyClass, propertyInstance = None, **args):\n    TMAName = propertyClass.TMA.TMAName\n    topicMap = propertyClass.topicMap\n\n    itemCount = len( propertyValue)\n    if itemCount != 1:\n        if propertyInstance:\n            vsv.errMsg( \'Value of r_type property (%25s) is a list containing %25d item(s); should be only 1.  If a single role were to appear in more than one assertion type, its proxy would have multiple subjects, which would break the cardinal rule of the subject maps paradigm.\' %25 ( propertyInstance.propertyInstanceKey, itemCount))\n        else:\n            vsv.errMsg( \'Presumptive r_type property value is a list containing %25d item(s); should be only 1.  If a single role were to appear in more than one assertion type, its proxy would have multiple subjects, which would break the cardinal rule of the subject maps paradigm.\' %25 ( itemCount))\n        return True\n\n    if vsv.nowImporting:\n        return False  ## can\'t make the rest of these checks yet\n    \n    for proxyId in propertyValue:\n        proxy = vsv.isProxyId( proxyId, topicMap)\n        if not proxy:\n            if propertyInstance:\n                vsv.errMsg( \'item (%25s) in list that is the value of the %25s property is not a proxyId.\' %25 (\n                    proxyId, vsv.catKey( TMAName, propertyInstance.propertyInstanceKey)))\n            else:\n                vsv.errMsg( \'item (%25s) in list that is the proposed value of a %25s property is not a proxyId.\' %25 (\n                    proxyId, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n            return True\n        if proxy.forwardTo:  ## only living proxies are valid\n            if propertyInstance:\n                vsv.errMsg( \'Item (%25s) in value of %25s property is the proxyId of a dead proxy.  Only living proxies are allowed to be referenced.\' %25 ( proxyId, propertyInstance.propertyInstanceKey))\n            else:\n                vsv.errMsg( \'Item (%25s) in value of presumptive %25s property is the proxyId of a dead proxy.  Only living proxies are allowed to be referenced.\' %25 ( proxyId, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n            return True\n\n        if not vsv.currentProcOperation:  ## if this is a full check, and we\'re not in the middle of building something\n            found_t_sip_property = False\n            for propertyInstanceKey2 in proxy.propertyInstances:\n                tmaName, propertyClassName = vsv.parsePropertyKey2( propertyInstanceKey2)\n                if TMAName == tmaName:\n                    if propertyClassName == \'t_sip\':\n                        found_t_sip_property = True\n                        break\n            if not found_t_sip_property:\n                if propertyInstance:\n                    vsv.errMsg( \'Proxy referenced in list "%25s" in value of %25s property has no t_sip property, which, as a t-proxy, it should have.\' %25 ( propertyValue, propertyInstance.propertyInstanceKey))\n                else:\n                    vsv.errMsg( \'Proxy referenced in list "%25s" in presumptive %25s property value has no t_sip property, which, as a t-proxy, it should have.\' %25 ( propertyValue, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n                return True\n\n    return False\n\n\n###########################################\n## a_type PC implementation               ##\n## (mostly re-uses Lib/PCproxyIdSet.py) ##\n###########################################\n\n#######################################################\ndef ValueIsInvalidFor_a_type_Property( vsv, propertyValue, propertyClass, propertyInstance = None, **args):\n    TMAName = propertyClass.TMA.TMAName\n    topicMap = propertyClass.topicMap\n\n    if not vsv.currentProcOperation:  ## if this is a full check, and we\'re not in the middle of populating, conferring, or merging something\n        itemCount = len( propertyValue)\n        if itemCount != 1:\n            if propertyInstance:\n                vsv.errMsg( \'Value of a_type property (%25s) is a list containing %25d item(s); should be only 1.  An assertion can have only one type.\' %25 ( propertyInstance.propertyInstanceKey, itemCount))\n            else:\n                vsv.errMsg( \'Presumptive a_type property value is a list containing %25d item(s); should be only 1.  An assertion can have only one type.\' %25 ( itemCount))\n            return True\n\n    if vsv.nowImporting:\n        return False  ## can\'t make the rest of these checks yet\n    \n    for proxyId in propertyValue:\n        proxy = vsv.isProxyId( proxyId, topicMap)\n        if not proxy:\n            if propertyInstance:\n                vsv.errMsg( \'item (%25s) in list that is the value of the %25s property is not a proxyId.\' %25 (\n                    proxyId, vsv.catKey( TMAName, propertyInstance.propertyInstanceKey)))\n            else:\n                vsv.errMsg( \'item (%25s) in list that is the proposed value of a %25s property is not a proxyId.\' %25 (\n                    proxyId, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n            return True\n        if proxy.forwardTo:  ## only living proxies are valid\n            if propertyInstance:\n                vsv.errMsg( \'Item (%25s) in value of %25s property is the proxyId of a dead proxy.  Only living proxies are allowed to be referenced.\' %25 ( proxyId, propertyInstance.propertyInstanceKey))\n            else:\n                vsv.errMsg( \'Item (%25s) in value of presumptive %25s property is the proxyId of a dead proxy.  Only living proxies are allowed to be referenced.\' %25 ( proxyId, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n            return True\n\n        if not vsv.currentProcOperation:  ## if this is a full check, and we\'re not in the middle of populating, conferring, or merging something\n\n            found_t_sip_property = False\n            for propertyInstanceKey2 in proxy.propertyInstances:\n                tmaName, propertyClassName = vsv.parsePropertyKey2( propertyInstanceKey2)\n                if TMAName == tmaName:\n                    if propertyClassName == \'t_sip\':\n                        found_t_sip_property = True\n                        break\n            if not found_t_sip_property:\n                if propertyInstance:\n                    vsv.errMsg( \'Proxy referenced in list "%25s" in value of %25s property has no t_sip property, which, as a t-proxy, it should have.\' %25 ( propertyValue, propertyInstance.propertyInstanceKey))\n                else:\n                    vsv.errMsg( \'Proxy referenced in list "%25s" in presumptive %25s property value has no t_sip property, which, as a t-proxy, it should have.\' %25 ( propertyValue, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n                return True\n\n\n\n    return False\n\n\n###########################################\n## r_castings PC implementation               ##\n## (mostly re-uses Lib/PCproxyIdSet.py) ##\n###########################################\n\n#######################################################\ndef ValueIsInvalidFor_r_castings_Property( vsv, propertyValue, propertyClass, propertyInstance = None, **args):\n    TMAName = propertyClass.TMA.TMAName\n    topicMap = propertyClass.topicMap\n\n    if vsv.nowImporting:\n        return False  ## can\'t make the rest of these checks yet\n    \n    for proxyId in propertyValue:\n        proxy = vsv.isProxyId( proxyId, topicMap)\n        if not proxy:\n            if propertyInstance:\n                vsv.errMsg( \'item (%25s) in list that is the value of the %25s property is not a proxyId.\' %25 (\n                    proxyId, vsv.catKey( TMAName, propertyInstance.propertyInstanceKey)))\n            else:\n                vsv.errMsg( \'item (%25s) in list that is the proposed value of a %25s property is not a proxyId.\' %25 (\n                    proxyId, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n            return True\n        if proxy.forwardTo:  ## only living proxies are valid\n            if propertyInstance:\n                vsv.errMsg( \'Item (%25s) in value of %25s property is the proxyId of a dead proxy.  Only living proxies are allowed to be referenced.\' %25 ( proxyId, propertyInstance.propertyInstanceKey))\n            else:\n                vsv.errMsg( \'Item (%25s) in value of presumptive %25s property is the proxyId of a dead proxy.  Only living proxies are allowed to be referenced.\' %25 ( proxyId, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n            return True\n\n        if not vsv.currentProcOperation:  ## if this is a full check, and we\'re not in the middle of building something\n            found_c_sip_property = False\n            for propertyInstanceKey2 in proxy.propertyInstances:\n                tmaName, propertyClassName = vsv.parsePropertyKey2( propertyInstanceKey2)\n                if TMAName == tmaName:\n                    if propertyClassName == \'c_sip\':\n                        found_c_sip_property = True\n                        break\n            if not found_c_sip_property:\n                if propertyInstance:\n                    vsv.errMsg( \'Proxy referenced in list "%25s" in value of %25s property has no c_sip property, which, as a c-proxy, it should have.\' %25 ( propertyValue, propertyInstance.propertyInstanceKey))\n                else:\n                    vsv.errMsg( \'Proxy referenced in list "%25s" in presumptive %25s property value has no c_sip property, which, as a c-proxy, it should have.\' %25 ( propertyValue, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n                return True\n\n    return False\n\n\n###########################################\n## a_castings PC implementation          ##\n## (mostly re-uses Lib/PCproxyIdSet.py)  ##\n###########################################\n\n#######################################################\ndef ValueIsInvalidFor_a_castings_Property( vsv, propertyValue, propertyClass, propertyInstance = None, **args):\n    TMAName = propertyClass.TMA.TMAName\n    topicMap = propertyClass.topicMap\n\n    if vsv.nowImporting:\n        return False  ## can\'t make the rest of these checks yet\n    \n    for proxyId in propertyValue:\n        proxy = vsv.isProxyId( proxyId, topicMap)\n        if not proxy:\n            if propertyInstance:\n                vsv.errMsg( \'item (%25s) in list that is the value of the %25s property is not a proxyId.\' %25 (\n                    proxyId, vsv.catKey( TMAName, propertyInstance.propertyInstanceKey)))\n            else:\n                vsv.errMsg( \'item (%25s) in list that is the proposed value of a %25s property is not a proxyId.\' %25 (\n                    proxyId, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n            return True\n        if proxy.forwardTo:  ## only living proxies are valid\n            if propertyInstance:\n                vsv.errMsg( \'Item (%25s) in value of %25s property is the proxyId of a dead proxy.  Only living proxies are allowed to be referenced.\' %25 ( proxyId, propertyInstance.propertyInstanceKey))\n            else:\n                vsv.errMsg( \'Item (%25s) in value of presumptive %25s property is the proxyId of a dead proxy.  Only living proxies are allowed to be referenced.\' %25 ( proxyId, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n            return True\n\n        if not vsv.currentProcOperation:  ## if this is a full check, and we\'re not in the middle of building something\n            found_c_sip_property = False\n            for propertyInstanceKey2 in proxy.propertyInstances:\n                tmaName, propertyClassName = vsv.parsePropertyKey2( propertyInstanceKey2)\n                if TMAName == tmaName:\n                    if propertyClassName == \'c_sip\':\n                        found_c_sip_property = True\n                        break\n            if not found_c_sip_property:\n                if propertyInstance:\n                    vsv.errMsg( \'Proxy referenced in list "%25s" in value of %25s property has no c_sip property, which, as a c-proxy, it should have.\' %25 ( propertyValue, propertyInstance.propertyInstanceKey))\n                else:\n                    vsv.errMsg( \'Proxy referenced in list "%25s" in presumptive %25s property value has no c_sip property, which, as a c-proxy, it should have.\' %25 ( propertyValue, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n                return True\n\n    return False\n\n\n###########################################\n## x_castings PC implementation               ##\n## (mostly re-uses Lib/PCproxyIdSet.py) ##\n###########################################\n\n#######################################################\ndef ValueIsInvalidFor_x_castings_Property( vsv, propertyValue, propertyClass, propertyInstance = None, **args):\n    TMAName = propertyClass.TMA.TMAName\n    topicMap = propertyClass.topicMap\n\n    if vsv.nowImporting:\n        return False  ## can\'t make the rest of these checks yet\n    \n    for proxyId in propertyValue:\n        proxy = vsv.isProxyId( proxyId, topicMap)\n        if not proxy:\n            if propertyInstance:\n                vsv.errMsg( \'item (%25s) in list that is the value of the %25s property is not a proxyId.\' %25 (\n                    proxyId, vsv.catKey( TMAName, propertyInstance.propertyInstanceKey)))\n            else:\n                vsv.errMsg( \'item (%25s) in list that is the proposed value of a %25s property is not a proxyId.\' %25 (\n                    proxyId, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n            return True\n        if proxy.forwardTo:  ## only living proxies are valid\n            if propertyInstance:\n                vsv.errMsg( \'Item (%25s) in value of %25s property is the proxyId of a dead proxy.  Only living proxies are allowed to be referenced.\' %25 ( proxyId, propertyInstance.propertyInstanceKey))\n            else:\n                vsv.errMsg( \'Item (%25s) in value of presumptive %25s property is the proxyId of a dead proxy.  Only living proxies are allowed to be referenced.\' %25 ( proxyId, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n            return True\n\n        if not vsv.currentProcOperation:  ## if this is a full check, and we\'re not in the middle of building something\n            found_c_sip_property = False\n            for propertyInstanceKey2 in proxy.propertyInstances:\n                tmaName, propertyClassName = vsv.parsePropertyKey2( propertyInstanceKey2)\n                if TMAName == tmaName:\n                    if propertyClassName == \'c_sip\':\n                        found_c_sip_property = True\n                        break\n            if not found_c_sip_property:\n                if propertyInstance:\n                    vsv.errMsg( \'Proxy referenced in list "%25s" in value of %25s property has no c_sip property, which, as a c-proxy, it should have.\' %25 ( propertyValue, propertyInstance.propertyInstanceKey))\n                else:\n                    vsv.errMsg( \'Proxy referenced in list "%25s" in presumptive %25s property value has no c_sip property, which, as a c-proxy, it should have.\' %25 ( propertyValue, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n                return True\n\n    return False\n\n\n###########################################\n## t_assertions PC implementation               ##\n## (mostly re-uses Lib/PCproxyIdSet.py) ##\n###########################################\n\n#######################################################\ndef ValueIsInvalidFor_t_assertions_Property( vsv, propertyValue, propertyClass, propertyInstance = None, **args):\n    TMAName = propertyClass.TMA.TMAName\n    topicMap = propertyClass.topicMap\n\n    if vsv.nowImporting:\n        return False  ## can\'t make the rest of these checks yet\n    \n    for proxyId in propertyValue:\n        proxy = vsv.isProxyId( proxyId, topicMap)\n        if not proxy:\n            if propertyInstance:\n                vsv.errMsg( \'item (%25s) in list that is the value of the %25s property is not a proxyId.\' %25 (\n                    proxyId, vsv.catKey( TMAName, propertyInstance.propertyInstanceKey)))\n            else:\n                vsv.errMsg( \'item (%25s) in list that is the proposed value of a %25s property is not a proxyId.\' %25 (\n                    proxyId, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n            return True\n        if proxy.forwardTo:  ## only living proxies are valid\n            if propertyInstance:\n                vsv.errMsg( \'Item (%25s) in value of %25s property is the proxyId of a dead proxy.  Only living proxies are allowed to be referenced.\' %25 ( proxyId, propertyInstance.propertyInstanceKey))\n            else:\n                vsv.errMsg( \'Item (%25s) in value of presumptive %25s property is the proxyId of a dead proxy.  Only living proxies are allowed to be referenced.\' %25 ( proxyId, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n            return True\n\n        if not vsv.currentProcOperation:  ## if this is a full check, and we\'re not in the middle of building something\n            found_a_sip_property = False\n            for propertyInstanceKey2 in proxy.propertyInstances:\n                tmaName, propertyClassName = vsv.parsePropertyKey2( propertyInstanceKey2)\n                if TMAName == tmaName:\n                    if propertyClassName == \'a_sip\':\n                        found_a_sip_property = True\n                        break\n            if not found_a_sip_property:\n                if propertyInstance:\n                    vsv.errMsg( \'Proxy referenced in list "%25s" in value of %25s property has no a_sip property, which, as a a-proxy, it should have.\' %25 ( propertyValue, propertyInstance.propertyInstanceKey))\n                else:\n                    vsv.errMsg( \'Proxy referenced in list "%25s" in presumptive %25s property value has no a_sip property, which, as a a-proxy, it should have.\' %25 ( propertyValue, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n                return True\n\n    return False\n\n\n\n\n\n################################################################################################################\n## Context check function for all BIGASSERT property classes except x_castings, which needs no such function. ##\n################################################################################################################\n\n#######################################################\ndef ContextOf_BIGASSERT_PropertyIsInvalid( vsv, propertyInstance, thisPropertyClassName):\n    proxy = propertyInstance.proxy\n    TMAName = propertyInstance.propertyClass.TMA.TMAName\n    if thisPropertyClassName in [ \'a_sip\', \'a_type\', \'a_castings\']:\n        allowedPropertiesInSameProxy = [ \'a_sip\', \'a_type\', \'a_castings\', \'x_castings\']\n    elif thisPropertyClassName in [ \'t_sip\', \'t_assertions\']:\n        allowedPropertiesInSameProxy = [ \'t_sip\', \'t_assertions\', \'x_castings\']\n    elif thisPropertyClassName in [\'c_sip\']:\n        allowedPropertiesInSameProxy = [ \'c_sip\', \'x_castings\']\n    elif thisPropertyClassName in [ \'r_type\', \'r_castings\']:\n        allowedPropertiesInSameProxy = [ \'r_type\', \'r_castings\', \'x_castings\']\n    else:\n        vsv.errMsg( \'unrecognized "thisPropertyClassName": %25s\' %25 ( thisPropertyClassName))\n        return True\n    for propertyInstanceKey2 in proxy.propertyInstances:\n        tmaName, propertyClassName = vsv.parsePropertyKey2( propertyInstanceKey2)\n        if tmaName == TMAName:\n            if propertyClassName not in allowedPropertiesInSameProxy:\n                vsv.errMsg( \'Proxy %25s has a "%25s" property, so it should not also have a "%25s" property, but it does.\' %25 ( proxy.proxyId, thisPropertyClassName, vsv.catKey( TMAName, propertyClassName)))\n                return True\n    return False\n\n'%0ap1%0a.</TMAModule

    ><TMAModule ModName="002_conferralRules" ModSrcFileName="002_conferralRules.py">S'#####################################################################\n#####################################################################\n## Copyright 2005 Steven R. Newcomb                                ##\n##                                                                 ##\n## This software is licensed under the Apache License, Version 2.0 ##\n## (the "License"); you may not use this file except in compliance ##\n## with the License.  Copies of the License are available at       ##\n##        http://www.apache.org/licenses/LICENSE-2.0               ##\n##                                                                 ##\n## Unless required by applicable law or agreed to in writing,      ##\n## software distributed under the License is distributed on an "AS ##\n## IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either ##\n## express or implied.  See the License for the specific language  ##\n## governing permissions and limitations under the License.        ##\n##                                                                 ##\n## Copies of the source code and the license are available at      ##\n##        http://www.versavant.org                                 ##\n#####################################################################\n#####################################################################\n\n\n#####################################################################\n## Implementation of the conferral rules "inferFrom_a_sip_"\n## in Topic Map Application "BIGASSERT".\n#####################################################################\n\n####################################\ncvsRevision = "$Revision: 1.4 $" ##\n####################################\n\n\nimport sys, copy\n\ndef inferFrom_a_sip_( vsv, conferralRule, **args):\n\n##         a_sip properties trigger conferrals as follows:\n\n##            - if assertionModel == \'BigAssert\' or assertionModel == \'TRA_assert\':\n##              a t-proxy, with its t_sip and t_assertions properties.\n##              The t_sip property\'s value is a list of references to the\n##              set of r-proxies (the ones that are referenced as the\n##              first member of each tuple in the a_sip property\'s\n##              value).  The t_assertions property\'s value is a list of\n##              proxy references with one item in it - a reference to\n##              the a-proxy that has this a_sip property.\n\n##            - for each tuple in the a_sip property value, the following\n##              are conferred into existence:\n\n##               . if assertionModel == \'BigAssert\':\n##                 a c-proxy, with its c_sip property.  (See c_sip,\n##                 below.)\n\n##               . if assertionModel == \'BigAssert\':\n##                 an r-proxy, with its r_type and r_castings properties,\n##                 plus an SIP that is not governed by this TMA but is\n##                 already extant.\n\n##               . if assertionModel == \'TRA_assert\':\n##                 an r-proxy, with its r_type and r_rolePlayers properties,\n##                 plus an SIP that is not governed by this TMA but is\n##                 already extant.\n\n##            - for each tuple in the a_sip property value that has two\n##              members (i.e., that has a reference to an x-proxy)\n\n##               . if assertionModel == \'BigAssert\':\n##                 an x-proxy, with its x_castings property, plus the SIP\n##                 not governed by this TMA but already extant\n\n##               . if assertionModel == \'TRA_assert\':\n##                 an x-proxy, with its x_roles property, which in\n##                 this case consists of duples, the first member of\n##                 which is a reference to an r-proxy, and the second\n##                 member of which is a reference to an a-proxy, plus\n##                 the SIP not governed by this TMA but already extant\n\n##               . if assertionModel == \'A_assert\':\n##                 an x-proxy, with its x_roles property, which in\n##                 this case consists of duples, the first member of\n##                 which is a rolename of an (unreified) role, and the second\n##                 member of which is a reference to an a-proxy, plus\n##                 the SIP not governed by this TMA but already extant\n\n##            - if assertionModel == \'BigAssert\' or assertionModel == \'TRA_assert\':\n##              an a_type property on a new a_proxy that has a copy of\n##              the triggering a_sip property.\n\n##            - if assertionModel == \'BigAssert\':\n##              an a_castings property on a new a_proxy that has a\n##              copy of the triggering a_sip property.\n\n\n    assertionModel = args[ \'assertionModel\']  ## possible values: \'BigAssert\', \'TRA_assert\', \'A_assert\'\n\n    topicMap = conferralRule.topicMap  ## make the below code less verbose (and maybe run slightly faster)\n    TMA = conferralRule.TMA  ## this is the TMA that defines this conferral rule\n    old_a_sip_overheadDict = TMA.propertyClasses[ \'a_sip\'].overheadDict\n\n    old_a_sip_hashableValueList = old_a_sip_overheadDict.keys()\n\n    for old_a_sip_hashableValue in old_a_sip_hashableValueList:\n\n        old_a_proxyIdList = old_a_sip_overheadDict[ old_a_sip_hashableValue]\n\n        for old_a_proxyId in old_a_proxyIdList:\n\n            old_a_proxy = topicMap.proxies[ old_a_proxyId]\n            old_a_sip_instance = old_a_proxy.propertyInstances[ vsv.catKey( TMA.TMAName, \'a_sip\')]\n\n            ## Don\'t be triggered by any a_sip_instance that was\n            ## output by an operation of this rule, and don\'t be\n            ## triggered by an a_sip_instance property more than once.\n            conferralRuleTriggerRoleId = vsv.catKey( conferralRule.conferralRuleKey, \'a_sip value\')\n            if old_a_sip_instance.conferralTriggerAncestry.has_key( conferralRuleTriggerRoleId) or \\\n                old_a_sip_instance.conferralsTriggered.has_key( conferralRuleTriggerRoleId):\n                continue\n\n            triggers = {}  ## new dictionary to work in\n            triggers[ \'a_sip value\'] = old_a_sip_instance.propertyInstanceKey\n            conferredValueSources = {}  ## new dictionary to work in\n            conferredValueSources[ \'a_sip value\'] = old_a_sip_instance.propertyInstanceKey\n\n            if vsv.conferralMayBeSignificant( conferralRule, triggers, conferredValueSources):\n\n                if assertionModel == \'BigAssert\' or assertionModel == \'TRA_assert\':\n                    ## new t_proxy\n                    t_proxy = vsv.newProxyObject( topicMap)\n                    r_proxyIdList = []\n                    new_c_proxyIdList = []\n\n                for currentTuple in old_a_sip_instance._value:\n\n                    if len( currentTuple) == 2: ## If there\'s a role player\n                        ## make new x_proxy\n                        old_x_proxy = topicMap.proxies[ currentTuple[ 1]]\n                        old_x_proxy_sip = vsv.SIPOfProxy( old_x_proxy)\n\n                        x_proxy = vsv.newProxyObject( topicMap)\n\n                        vsv.newPropertyInstance( x_proxy,  ## copy the x_proxy\'s SIP\n                                                 old_x_proxy_sip.propertyClass.TMA,\n                                                 old_x_proxy_sip.propertyClass.propertyClassName,\n                                                 vsv.versaCopy( old_x_proxy_sip._value),   ## important!  Must be a copy; cannot be same object.\n                                                 triggers,\n                                                 conferredValueSources)\n\n                    if assertionModel == \'BigAssert\' or assertionModel == \'TRA_assert\':\n                        r_proxyIdList.append( currentTuple[ 0])\n\n                        if assertionModel == \'BigAssert\': ## BIGASSERT, not TRA_assert\n                            ## new c_proxy\n                            c_proxy = vsv.newProxyObject( topicMap)\n                            new_c_proxyIdList.append( c_proxy.proxyId)\n\n                            if len( currentTuple) == 1:\n                                c_sip_value = [ currentTuple[ 0], old_a_proxy.proxyId]\n                            else:  ## len( currentTuple) == 2:\n                                c_sip_value = [ currentTuple[ 0], old_a_proxy.proxyId, currentTuple[ 1]]\n\n                                vsv.newPropertyInstance( x_proxy,\n                                                         conferralRule.TMA,\n                                                         \'x_castings\',\n                                                         [ c_proxy.proxyId],\n                                                         triggers,\n                                                         conferredValueSources)\n\n\n\n                            vsv.newPropertyInstance( c_proxy,\n                                                     conferralRule.TMA,\n                                                     \'c_sip\',\n                                                     c_sip_value,\n                                                     triggers,\n                                                     conferredValueSources)\n\n                        ## new r_proxy\n                        old_r_proxy = topicMap.proxies[ currentTuple[ 0]]\n                        old_r_proxy_sip = vsv.SIPOfProxy( old_r_proxy)\n\n                        r_proxy = vsv.newProxyObject( topicMap)\n\n                        vsv.newPropertyInstance( r_proxy,  ## copy the r_proxy\'s SIP, so the new proxy will merge with the old one\n                                                 old_r_proxy_sip.propertyClass.TMA,\n                                                 old_r_proxy_sip.propertyClass.propertyClassName,\n                                                 vsv.versaCopy( old_r_proxy_sip._value),  ## important that it\'s a copy, not a reference!\n                                                 triggers,\n                                                 conferredValueSources)\n\n                        vsv.newPropertyInstance( r_proxy,\n                                                 conferralRule.TMA,\n                                                 \'r_type\',\n                                                 [ t_proxy.proxyId],\n                                                 triggers,\n                                                 conferredValueSources)\n\n                        if assertionModel == \'BigAssert\': ## BIGASSERT only, not TRA_assert or A_assert\n                            vsv.newPropertyInstance( r_proxy,\n                                                     conferralRule.TMA,\n                                                     \'r_castings\',\n                                                     [ c_proxy.proxyId],\n                                                     triggers,\n                                                     conferredValueSources)\n\n                        elif assertionModel == \'TRA_assert\': ## TRA_assert only, not BIGASSERT or A_assert\n                            vsv.newPropertyInstance( r_proxy,\n                                                     conferralRule.TMA,\n                                                     \'r_rolePlayers\',\n                                                     [ x_proxy.proxyId],\n                                                     triggers,\n                                                     conferredValueSources)\n\n                    if assertionModel == \'TRA_assert\': ## TRA_assert, not BIGASSERT, nor A_assert\n                        if len( currentTuple) == 2:\n                            vsv.newPropertyInstance( x_proxy,\n                                                     conferralRule.TMA,\n                                                     \'x_roles\',\n                                                     [ tuple( [ r_proxy.proxyId, old_a_proxy.proxyId])],\n                                                     triggers,\n                                                     conferredValueSources)\n\n                    if assertionModel == \'A_assert\': ## A_assert, not BIGASSERT, nor TRA_assert\n                        currentTupleList = list( currentTuple)\n                        if len( currentTupleList) == 1:\n                            vsv.newPropertyInstance( x_proxy,\n                                                     conferralRule.TMA,\n                                                     \'x_roles\',\n                                                     [ tuple( [ currentTupleList[ 0]])],\n                                                     triggers,\n                                                     conferredValueSources)\n                        if len( currentTupleList) == 2:\n                            vsv.newPropertyInstance( x_proxy,\n                                                     conferralRule.TMA,\n                                                     \'x_roles\',\n                                                     [ tuple( [ currentTupleList[ 0], old_a_proxy.proxyId])],\n                                                     triggers,\n                                                     conferredValueSources)\n\n                if assertionModel == \'BigAssert\' or assertionModel == \'TRA_assert\':\n                    ## set t_proxy\'s properties\n                    vsv.newPropertyInstance( t_proxy,\n                                             conferralRule.TMA,\n                                             \'t_sip\',\n                                             r_proxyIdList,\n                                             triggers,\n                                             conferredValueSources)\n\n                    vsv.newPropertyInstance( t_proxy,\n                                             conferralRule.TMA,\n                                             \'t_assertions\',\n                                             [ old_a_proxyId],\n                                             triggers,\n                                             conferredValueSources)\n\n\n\n                    ## set new a_proxy\'s properties\n                    new_a_proxy = vsv.newProxyObject( topicMap)\n\n                    vsv.newPropertyInstance( new_a_proxy,  ## copy the a_proxy\'s SIP\n                                             conferralRule.TMA,\n                                             \'a_sip\',\n                                             vsv.versaCopy( old_a_sip_instance._value),\n                                             triggers,\n                                             conferredValueSources)\n\n                    vsv.newPropertyInstance( new_a_proxy,\n                                             conferralRule.TMA,\n                                             \'a_type\',\n                                             [ t_proxy.proxyId],\n                                             triggers,\n                                             conferredValueSources)\n\n                    if assertionModel == \'BigAssert\':  ## BIGASSERT, not TRA_assert or A_assert\n                        vsv.newPropertyInstance( new_a_proxy,\n                                                 conferralRule.TMA,\n                                                 \'a_castings\',\n                                                 new_c_proxyIdList,\n                                                 triggers,\n                                                 conferredValueSources)\n\n\n\ndef bridgeAcross_a_sip_Models( vsv, conferralRule, **args):\n    ## from bridgeFromTMAName,,a_sip properties, infer a_sip\n    ## properties in the conferralRule\'s TMA.  (With all that that\n    ## entails.)\n\n    bridgeFromTMAName  = args[ \'bridgeFromTMAName\']\n    bridgeFromTMAModel = args[ \'bridgeFromTMAModel\']  ## possible values: \'BigAssert\', \'TRA_assert\', \'A_assert\'\n    bridgeToTMAModel   = args[ \'bridgeToTMAModel\']    ## possible values: \'BigAssert\', \'TRA_assert\', \'A_assert\'\n    \n    ## this happens later, iff bridging to A_assert:\n    ##   bridgeFromR_ProxyTMAName = args[ \'bridgeFromR_ProxyTMAName\']\n    ##   bridgeFromR_ProxyPropertyName = args[ \'bridgeFromR_ProxyPropertyName\']\n\n    ## this happens later, iff bridging from A_assert:\n    ##   bridgeToR_ProxyTMAName = args[ \'bridgeToR_ProxyPropertyName\']\n    ##   bridgeToR_ProxyPropertyName = args[ \'bridgeToR_ProxyPropertyName\']\n    ## Note that the bridgeToR_Proxy property must be an SIP, and there must already be an instance\n    ## of it to merge with, or Versavant will refuse to honor a request to create it.  Therefore,\n    ## an up-translation may require an original population task to pre-create the r-proxies.\n\n    topicMap = conferralRule.topicMap  ## make the below code less verbose (and maybe run slightly faster)\n    TMA = conferralRule.TMA  ## this is the TMA that defines this conferral rule\n    bridgeFromTMA = topicMap.TMAs[ bridgeFromTMAName]\n    bridgeFrom_a_sip_overheadDict = bridgeFromTMA.propertyClasses[ \'a_sip\'].overheadDict\n\n    old_a_sip_hashableValueList = bridgeFrom_a_sip_overheadDict.keys()\n\n    for old_a_sip_hashableValue in old_a_sip_hashableValueList:\n\n        old_a_proxyIdList = vsv.versaCopy( bridgeFrom_a_sip_overheadDict[ old_a_sip_hashableValue])\n\n        for old_a_proxyId in old_a_proxyIdList:\n\n            old_a_proxy = topicMap.proxies[ old_a_proxyId]\n            old_a_sip_instance = old_a_proxy.propertyInstances[ vsv.catKey( bridgeFromTMA.TMAName, \'a_sip\')]\n\n            ## Don\'t be triggered by an a_sip_instance property more\n            ## than once, and don\'t be triggered by any a_sip_instance\n            ## that was output by an operation of this rule\n            conferralRuleTriggerRoleId = vsv.catKey( conferralRule.conferralRuleKey, \'a_sip value\')\n            if old_a_sip_instance.conferralTriggerAncestry.has_key( conferralRuleTriggerRoleId) or \\\n                   old_a_sip_instance.conferralsTriggered.has_key( conferralRuleTriggerRoleId):\n                continue\n\n            triggers = {}  ## new dictionary to work in\n            triggers[ \'a_sip value\'] = old_a_sip_instance.propertyInstanceKey\n            conferredValueSources = {}  ## new dictionary to work in\n            conferredValueSources[ \'a_sip value\'] = old_a_sip_instance.propertyInstanceKey\n\n            if vsv.conferralMayBeSignificant( conferralRule, triggers, conferredValueSources):\n\n                ## new a_proxy\n                a_proxy = vsv.newProxyObject( topicMap)\n\n                vsv.newPropertyInstance( a_proxy,  ## copy the existing old_a_proxy\'s a_sip\n                                         bridgeFromTMA,\n                                         \'a_sip\',\n                                         vsv.versaCopy( old_a_sip_instance._value),\n                                         triggers,\n                                         conferredValueSources)\n\n                ## calculate this TMA\'s SIP value\n\n                if bridgeFromTMAModel not in [ \'BigAssert\', \'TRA_assert\', \'A_assert\']:\n                    vsv.errMsg( \'unrecognized bridgeFromTMAModel value: "%25s"\' %25 ( bridgeFromTMAModel))\n                    sys.exit( 1)\n\n                if bridgeToTMAModel not in [ \'BigAssert\', \'TRA_assert\', \'A_assert\']:\n                    vsv.errMsg( \'unrecognized bridgeToTMAModel value: "%25s"\' %25 ( bridgeToTMAModel))\n                    sys.exit( 1)\n\n                if bridgeFromTMAModel == bridgeToTMAModel:\n                    vsv.errMsg( \'does not make sense to bridge from bridgeFromTMAModel "%25s" to bridgeToTMAModel "%25s".\' %25 ( bridgeFromTMAModel, bridgeToTMAModel))\n                    sys.exit( 1)\n\n                if ( bridgeFromTMAModel == \'BigAssert\' and bridgeToTMAModel == \'TRA_assert\') or ( bridgeFromTMAModel == \'TRA_assert\' and bridgeToTMAModel == \'BigAssert\'):\n                    ## There\'s no difference between the a_sip properties of BigAssert vs. TRA_assert.  Just duplicate it.\n                    thisTMAs_a_sip_instanceValue = old_a_sip_instance._value\n\n                elif ( bridgeFromTMAModel == \'BigAssert\' or bridgeFromTMAModel == \'TRA_assert\') and ( bridgeToTMAModel == \'A_assert\'):\n                    ## Here we need to convert each r-proxy reference (the first member of each tuple) into a string which will serve as the role name.\n                    bridgeFromR_ProxyPropertyName = args[ \'bridgeFromR_ProxyPropertyName\']\n                    bridgeFromR_ProxyTMAName = args[ \'bridgeFromR_ProxyTMAName\']\n\n                    thisTMAs_a_sip_instanceValue = []\n                    roleNames = {}\n                    for thisTuple in old_a_sip_instance._value:\n                        r_proxy = topicMap.proxies[ thisTuple[ 0]]\n                        r_proxy_sip = r_proxy.propertyInstances[ vsv.catKey( bridgeFromR_ProxyTMAName, bridgeFromR_ProxyPropertyName)]\n                        roleName = \'%25s\' %25 ( r_proxy_sip._value)\n                        if roleName in roleNames:\n                            vsv.errMsg( \'a_sip value of proxy %25s cannot be bridged from TMA %25s (model %25s) to TMA %25s (model %25s); two or more roleNames turn out to be "%25s".\' %25 ( old_a_proxyId, bridgeFromTMAName, bridgeFromTMAModel, TMA.TMAName, bridgeToTMAModel, roleName))\n                            sys.exit( 1)\n                        roleNames[ roleName] = None\n                        newTupleList = [ roleName, thisTuple[ 1]]\n                        thisTMAs_a_sip_instanceValue.append( tuple( newTupleList))\n\n                elif ( bridgeFromTMAModel == \'A_assert\') and ( bridgeToTMAModel == \'BigAssert\' or bridgeToTMAModel == \'TRA_assert\'):\n                    bridgeToR_ProxyTMAName = args[ \'bridgeToR_ProxyTMAName\']\n                    bridgeToR_ProxyPropertyName = args[ \'bridgeToR_ProxyPropertyName\']\n\n                    thisTMAs_a_sip_instanceValue = []\n                    for thisTuple in old_a_sip_instance._value:\n                        r_proxy = vsv.newProxyObject( topicMap)\n                        vsv.newPropertyInstance( r_proxy,\n                            bridgeToR_ProxyTMAName,\n                            bridgeToR_ProxyPropertyName,\n                            vsv.versaCopy( thisTuple[ 0]),  ## here is the role name that we\'re reifying with this new r-proxy\n                            triggers,\n                            conferredValueSources)\n\n                        newTupleList = [ r_proxy.proxyId, thisTuple[ 1]]  ## thisTuple[ 1] is the proxyId of the role player\n                        thisTMAs_a_sip_instanceValue.append( tuple( newTupleList))\n\n                else:\n                    vsv.errMsg( \'This should never happen.  bridgeFromTMAModel == "%25s"; bridgeToTMAModel == "%25s".\' %25 ( bridgeFromTMAModel, bridgeToTMAModel))\n                    sys.exit( 1)\n\n                vsv.newPropertyInstance( a_proxy,  ## set this TMA\'s a_sip to the same value\n                                         TMA,\n                                         \'a_sip\',\n                                         vsv.versaCopy( thisTMAs_a_sip_instanceValue),\n                                         triggers,\n                                         conferredValueSources)\n\n\ndef bridgeAcross_t_sip_Models( vsv, conferralRule, **args):\n    ## from bridgeFromTMAName,,t_sip properties, infer t_sip\n    ## properties in the conferralRule\'s TMA.  (With all that that\n    ## entails.)\n\n    bridgeFromTMAName = args[ \'bridgeFromTMAName\']\n\n    topicMap = conferralRule.topicMap  ## make the below code less verbose (and maybe run slightly faster)\n    TMA = conferralRule.TMA  ## this is the TMA that defines this conferral rule\n    bridgeFromTMA = topicMap.TMAs[ bridgeFromTMAName]\n    bridgeFrom_t_sip_overheadDict = bridgeFromTMA.propertyClasses[ \'t_sip\'].overheadDict\n\n    t_sip_hashableValueList = bridgeFrom_t_sip_overheadDict.keys()\n\n    for t_sip_hashableValue in t_sip_hashableValueList:\n\n        t_proxyIdList = vsv.versaCopy( bridgeFrom_t_sip_overheadDict[ t_sip_hashableValue])\n\n        for t_proxyId in t_proxyIdList:\n\n            t_proxy = topicMap.proxies[ t_proxyId]\n            t_sip_instance = t_proxy.propertyInstances[ vsv.catKey( bridgeFromTMA.TMAName, \'t_sip\')]\n\n            ## Don\'t be triggered by an t_sip_instance property more\n            ## than once, and don\'t be triggered by any t_sip_instance\n            ## that was output by an operation of this rule\n            conferralRuleTriggerRoleId = vsv.catKey( conferralRule.conferralRuleKey, \'t_sip value\')\n            if t_sip_instance.conferralTriggerAncestry.has_key( conferralRuleTriggerRoleId) or \\\n                   t_sip_instance.conferralsTriggered.has_key( conferralRuleTriggerRoleId):\n                continue\n\n            triggers = {}  ## new dictionary to work in\n            triggers[ \'t_sip value\'] = t_sip_instance.propertyInstanceKey\n            conferredValueSources = {}  ## new dictionary to work in\n            conferredValueSources[ \'t_sip value\'] = t_sip_instance.propertyInstanceKey\n\n            if vsv.conferralMayBeSignificant( conferralRule, triggers, conferredValueSources):\n\n                ## new t_proxy\n                t_proxy = vsv.newProxyObject( topicMap)\n\n                vsv.newPropertyInstance( t_proxy,  ## copy the existing t_proxy\'s t_sip\n                                         bridgeFromTMA,\n                                         \'t_sip\',\n                                         vsv.versaCopy( t_sip_instance._value),\n                                         triggers,\n                                         conferredValueSources)\n\n                vsv.newPropertyInstance( t_proxy,  ## set this TMA\'s t_sip to the same value\n                                         TMA,\n                                         \'t_sip\',\n                                         vsv.versaCopy( t_sip_instance._value),\n                                         triggers,\n                                         conferredValueSources)\n\n\ndef bridgeFromU_assert( vsv, conferralRule, **args):\n    ## from bridgeFromTMAName,,x_LrnRrnRrp properties, infer a_sip\n    ## properties in the conferralRule\'s TMA.  (With all that that\n    ## entails.)\n\n    u_assertTMAName = args[ \'bridgeFromTMAName\']\n    rolesTMAName = args[ \'rolesTMAName\']\n    roleNamePropertyClassName = args[ \'roleNamePropertyClassName\']\n    u_assertPropertyName = \'x_LrnRrnRrp\'\n\n    topicMap = conferralRule.topicMap\n    TMA = conferralRule.TMA  ## this is the TMA that defines this conferral rule\n    rolesTMA = topicMap.TMAs[ rolesTMAName]\n    u_assertTMA = topicMap.TMAs[ u_assertTMAName]\n    proxyIdList = u_assertTMA.propertyClasses[ u_assertPropertyName].overheadDict[ \'proxyIds\'].keys()\n    u_assertPropertyInstanceInProxyKey = vsv.catKey( u_assertTMAName, u_assertPropertyName)\n\n    existingRoleDict = rolesTMA.propertyClasses[ \'role name\'].overheadDict\n\n    for proxyId in proxyIdList:\n\n        proxy = topicMap.proxies[ proxyId]\n\n        u_assertProperty = proxy.propertyInstances[ u_assertPropertyInstanceInProxyKey]\n\n        ## Don\'t be triggered by a u_assert property more than once\n        conferralRuleTriggerRoleId = vsv.catKey( conferralRule.conferralRuleKey, \'A\')\n        if u_assertProperty.conferralTriggerAncestry.has_key( conferralRuleTriggerRoleId) or \\\n               u_assertProperty.conferralsTriggered.has_key( conferralRuleTriggerRoleId):\n            continue\n\n        triggers = {}  ## new dictionary to work in\n        triggers[ \'A\'] = u_assertProperty.propertyInstanceKey\n        conferredValueSources = {}  ## new dictionary to work in\n        conferredValueSources[ \'A\'] = u_assertProperty.propertyInstanceKey\n\n        if vsv.conferralMayBeSignificant( conferralRule, triggers, conferredValueSources):\n\n            dict1 = u_assertProperty._value\n\n            for dict1Key in dict1:\n                localRoleName = dict1Key\n                localRoleProxyId = existingRoleDict[ localRoleName][ 0]\n                dict2 = dict1[ dict1Key]\n                for dict2Key in dict2:\n                    remoteRoleName = dict2Key\n                    remoteRoleProxyId = existingRoleDict[ remoteRoleName][ 0]\n                    stringList = dict2[ dict2Key]\n                    for remoteProxyId in stringList:\n\n\n                        ## new a_proxy\n                        a_proxy = vsv.newProxyObject( topicMap)\n\n                        vsv.newPropertyInstance( a_proxy,  ## set this TMA\'s t_sip to the same value\n                                                 TMA,\n                                                 \'a_sip\',\n                                                 [ ( localRoleProxyId, proxyId), ( remoteRoleProxyId, remoteProxyId)],\n                                                 triggers,\n                                                 conferredValueSources)\n\n'%0ap1%0a.</TMAModule

  ></VersavantTMA


  ><VersavantTMA AppNm="JacksTMA"

    ><TMAConfigFile ConfSrcPath="tmaconf.xml">S'%3c?xml version="1.0" encoding="ASCII"?>\n%3c!-- \n\n#####################################################################\n#####################################################################\n## Copyright 2005 Steven R. Newcomb                                ##\n##                                                                 ##\n## This software is licensed under the Apache License, Version 2.0 ##\n## (the "License"); you may not use this file except in compliance ##\n## with the License.  Copies of the License are available at       ##\n##        http://www.apache.org/licenses/LICENSE-2.0               ##\n##                                                                 ##\n## Unless required by applicable law or agreed to in writing,      ##\n## software distributed under the License is distributed on an "AS ##\n## IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either ##\n## express or implied.  See the License for the specific language  ##\n## governing permissions and limitations under the License.        ##\n##                                                                 ##\n## Copies of the source code and the license are available at      ##\n##        http://www.versavant.org                                 ##\n#####################################################################\n#####################################################################\n\nSimple little TMA for providing r-proxies with SIPs called "role name", whose\nvalues are strings.\n\n-->\n%3c!-- %3c!DOCTYPE VersavantTMA SYSTEM "http://www.versavant.org/dtds/TMAConfigFile.dtd">-->\n%3c!DOCTYPE VersavantTMA SYSTEM "../versavantTMA.dtd">\n%3cVersavantTMA\nVersavantTMADTDVersion="1"\n\n  >%3cDesc>Simple demo TMA for Jack Park.%3c/Desc\n\n  >%3cValueType ValueTypeName="string"\n    >%3cDesc>General-purpose string value type.%3c/Desc\n    >%3cValueIsNotOfType__\n      functionModuleFilePath="${VSVEXECDIR}/Lib/VTstring.py"\n      functionName="ValueIsNotOfType_string_"\n    />%3cInstanceOf__ValueTypeToXMLContentString\n      functionModuleFilePath="${VSVEXECDIR}/Lib/VTstring.py"\n      functionName="InstanceOf_string_ValueTypeToXMLContentString"\n    />%3cXMLContentStringToInstanceOf__ValueType\n      functionModuleFilePath="${VSVEXECDIR}/Lib/VTstring.py"\n      functionName="XMLContentStringToInstanceOf_string_ValueType"\n  />%3c/ValueType\n\n  >%3cPropertyClass PropertyClassName="Name" ValueType="string"\n    >%3cDesc>Subject is a name, represented by a string.%3c/Desc\n    >%3cAdd__PropToOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstring.py"\n      functionName="Add_string_PropToOverheadDict"\n    />%3cRemove__PropFromOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstring.py"\n      functionName="Remove_string_PropFromOverheadDict"\n    />%3cMerge__PropertyValues\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstring.py"\n      functionName="Merge_string_PropertyValues"\n    />%3cValuesOf__PropertyInstancesAreSignificantlyDifferent\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstring.py"\n      functionName="ValuesOf_string_PropertyInstancesAreSignificantlyDifferent"\n    />%3cMergeProxiesBecause__PropertyInstancesSpecifySameSubject\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstring.py"\n      functionName="MergeProxiesBecause_string_PropertyInstancesSpecifySameSubject"\n    />%3cProxiesWith__ValueNotSignificantlyDifferentFrom\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstring.py"\n      functionName="ProxiesOfSubjectIdentifiedBy_string_Value"\n  />%3c/PropertyClass\n\n  >%3cValueType ValueTypeName="proxyIdSet"\n    >%3cDesc>General-purpose set-of-subject-proxies value type.  (Same valuetype implementation as proxyIdList.)%3c/Desc\n    >%3cValueIsNotOfType__\n      functionModuleFilePath="${VSVEXECDIR}/Lib/VTproxyIdList.py"\n      functionName="ValueIsNotOfType_proxyIdList_"\n      functionExtraArgsString="propertyClassName = propertyClass.propertyClassName"\n    />%3cInstanceOf__ValueTypeToXMLContentString\n      functionModuleFilePath="${VSVEXECDIR}/Lib/VTproxyIdList.py"\n      functionName="InstanceOf_proxyIdList_ValueTypeToXMLContentString"\n    />%3cXMLContentStringToInstanceOf__ValueType\n      functionModuleFilePath="${VSVEXECDIR}/Lib/VTproxyIdList.py"\n      functionName="XMLContentStringToInstanceOf_proxyIdList_ValueType"\n  />%3c/ValueType\n\n  >%3cPropertyClass PropertyClassName="Person Name Proxy" ValueType="proxyIdSet"\n    >%3cDesc>Subject is the human being whose name is reified by the referenced proxy.%3c/Desc\n    >%3cAdd__PropToOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="Add_proxyIdSet_PropToOverheadDict"\n    />%3cRemove__PropFromOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="Remove_proxyIdSet_PropFromOverheadDict"\n    />%3cValueIsInvalidFor__Property\n      functionModuleFilePath="propertyClasses.py"\n      functionName="ValueIsInvalidFor_Person_Name_Proxy_Property"\n    />%3cMerge__PropertyValues\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="Merge_proxyIdSet_PropertyValues"\n    />%3cValuesOf__PropertyInstancesAreSignificantlyDifferent\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="ValuesOf_proxyIdSet_PropertyInstancesAreSignificantlyDifferent"\n    />%3cMergeProxiesBecause__PropertyInstancesSpecifySameSubject\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="MergeProxiesBecause_proxyIdSet_PropertyInstancesSpecifySameSubject"\n    />%3cProxiesWith__ValueNotSignificantlyDifferentFrom\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="ProxiesOfSubjectIdentifiedBy_proxyIdSet_Value"\n    />%3cUpdateProxyReferencesIn__Value\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="UpdateProxyReferencesIn_proxyIdSet_Value"\n  />%3c/PropertyClass\n\n\n  >%3cPropertyClass PropertyClassName="Shoe Size" ValueType="string"\n    >%3cDesc>Subject is a shoe size, represented by a string.%3c/Desc\n    >%3cAdd__PropToOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstring.py"\n      functionName="Add_string_PropToOverheadDict"\n    />%3cRemove__PropFromOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstring.py"\n      functionName="Remove_string_PropFromOverheadDict"\n    />%3cMerge__PropertyValues\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstring.py"\n      functionName="Merge_string_PropertyValues"\n    />%3cValuesOf__PropertyInstancesAreSignificantlyDifferent\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstring.py"\n      functionName="ValuesOf_string_PropertyInstancesAreSignificantlyDifferent"\n    />%3cMergeProxiesBecause__PropertyInstancesSpecifySameSubject\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstring.py"\n      functionName="MergeProxiesBecause_string_PropertyInstancesSpecifySameSubject"\n    />%3cProxiesWith__ValueNotSignificantlyDifferentFrom\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstring.py"\n      functionName="ProxiesOfSubjectIdentifiedBy_string_Value"\n  />%3c/PropertyClass\n\n  >%3cPropertyClass PropertyClassName="Age" ValueType="string"\n    >%3cDesc>Subject is an age in years, represented by a string.%3c/Desc\n    >%3cAdd__PropToOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstring.py"\n      functionName="Add_string_PropToOverheadDict"\n    />%3cRemove__PropFromOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstring.py"\n      functionName="Remove_string_PropFromOverheadDict"\n    />%3cMerge__PropertyValues\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstring.py"\n      functionName="Merge_string_PropertyValues"\n    />%3cValuesOf__PropertyInstancesAreSignificantlyDifferent\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstring.py"\n      functionName="ValuesOf_string_PropertyInstancesAreSignificantlyDifferent"\n    />%3cMergeProxiesBecause__PropertyInstancesSpecifySameSubject\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstring.py"\n      functionName="MergeProxiesBecause_string_PropertyInstancesSpecifySameSubject"\n    />%3cProxiesWith__ValueNotSignificantlyDifferentFrom\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstring.py"\n      functionName="ProxiesOfSubjectIdentifiedBy_string_Value"\n  />%3c/PropertyClass\n\n  >%3cValueType ValueTypeName="proxyIdList"\n    >%3cDesc>General-purpose proxyIdList value type.%3c/Desc\n    >%3cValueIsNotOfType__\n      functionModuleFilePath="${VSVEXECDIR}/Lib/VTproxyIdList.py"\n      functionName="ValueIsNotOfType_proxyIdList_"\n    />%3cInstanceOf__ValueTypeToXMLContentString\n      functionModuleFilePath="${VSVEXECDIR}/Lib/VTproxyIdList.py"\n      functionName="InstanceOf_proxyIdList_ValueTypeToXMLContentString"\n    />%3cXMLContentStringToInstanceOf__ValueType\n      functionModuleFilePath="${VSVEXECDIR}/Lib/VTproxyIdList.py"\n      functionName="XMLContentStringToInstanceOf_proxyIdList_ValueType"\n  />%3c/ValueType\n\n  >%3cPropertyClass PropertyClassName="shoeSizeObservation" ValueType="proxyIdList"\n    >%3cDesc>Subject is the human being whose name is reified by the referenced proxy.%3c/Desc\n    >%3cAdd__PropToOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdList.py"\n      functionName="Add_proxyIdList_PropToOverheadDict"\n    />%3cRemove__PropFromOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdList.py"\n      functionName="Remove_proxyIdList_PropFromOverheadDict"\n    />%3cValueIsInvalidFor__Property\n      functionModuleFilePath="propertyClasses.py"\n      functionName="ValueIsInvalidFor_shoeSizeObservation_Property"\n    />%3cMerge__PropertyValues\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdList.py"\n      functionName="Merge_proxyIdList_PropertyValues"\n    />%3cValuesOf__PropertyInstancesAreSignificantlyDifferent\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdList.py"\n      functionName="ValuesOf_proxyIdList_PropertyInstancesAreSignificantlyDifferent"\n    />%3cMergeProxiesBecause__PropertyInstancesSpecifySameSubject\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdList.py"\n      functionName="MergeProxiesBecause_proxyIdList_PropertyInstancesSpecifySameSubject"\n    />%3cProxiesWith__ValueNotSignificantlyDifferentFrom\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdList.py"\n      functionName="ProxiesOfSubjectIdentifiedBy_proxyIdList_Value"\n    />%3cUpdateProxyReferencesIn__Value\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdList.py"\n      functionName="UpdateProxyReferencesIn_proxyIdList_Value"\n  />%3c/PropertyClass\n\n\n\n>%3c/VersavantTMA>\n'%0ap1%0a.</TMAConfigFile

    ><TMAModule ModName="001_PCproxyIdList" ModSrcFileName="001_PCproxyIdList.py">S'#####################################################################\n#####################################################################\n## Copyright 2005 Steven R. Newcomb                                ##\n##                                                                 ##\n## This software is licensed under the Apache License, Version 2.0 ##\n## (the "License"); you may not use this file except in compliance ##\n## with the License.  Copies of the License are available at       ##\n##        http://www.apache.org/licenses/LICENSE-2.0               ##\n##                                                                 ##\n## Unless required by applicable law or agreed to in writing,      ##\n## software distributed under the License is distributed on an "AS ##\n## IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either ##\n## express or implied.  See the License for the specific language  ##\n## governing permissions and limitations under the License.        ##\n##                                                                 ##\n## Copies of the source code and the license are available at      ##\n##        http://www.versavant.org                                 ##\n#####################################################################\n#####################################################################\n\n####################################\ncvsRevision = "$Revision: 1.5 $" ##\n####################################\n\n\nimport sys\n\n\n#######################################\n## proxyIdList PC implementation ##\n#######################################\n\n## NOTE: use the "proxyIdSet" functions for *sets* of proxy ids.\n##       The below "proxyIdList" functions are for lists of proxy ids\n##       in which the order must be preserved.\n\n## These functions are useful as implementations of SIPs or OPs whose\n## values are lists of references to proxies.  Obviously, the name\n## "proxyIdList" only applies to these (library) functions; TMA\n## designers can use any name(s) for such properties.\n\n#######################################################\ndef Add_proxyIdList_PropToOverheadDict( vsv, propertyInstance, overheadDict):\n    value = propertyInstance._value\n    hashablePropertyValue = propertyInstance.hashablePropertyValue = tuple( value)\n\n    if overheadDict.has_key( hashablePropertyValue):\n        if propertyInstance.proxyId not in overheadDict[ hashablePropertyValue]:\n            overheadDict[ hashablePropertyValue].append( propertyInstance.proxyId)\n    else:\n        overheadDict[ hashablePropertyValue] = [ propertyInstance.proxyId]\n\n    workDict = {}\n    for member in value:\n        workDict[ member] = None\n    propertyInstance.listOfIdsOfReferencedProxies = workDict.keys()\n    vsv.addNewProxyReferencesToReferencedProxiesDict( propertyInstance)\n\n#######################################################\ndef Remove_proxyIdList_PropFromOverheadDict( vsv, propertyInstance, overheadDict):\n    hashablePropertyValue = propertyInstance.hashablePropertyValue\n    if not overheadDict.has_key( hashablePropertyValue):\n        vsv.errMsg( \'No entry in overheadDict of property class for the value (%25s) of property %25s\' %25 (\n            propertyInstance._value,\n            vsv.catKey( propertyInstance.topicMap.topicMapName, propertyInstance.propertyInstanceKey)))\n        sys.exit( 1)\n\n    if propertyInstance.proxyId not in overheadDict[ hashablePropertyValue]:\n        vsv.errMsg( \'ProxyId %25s not found in the overheadDict of property class for the value (%25s) of property %25s\' %25 (\n            propertyInstance.proxyId,\n            propertyInstance._value,\n            vsv.catKey( propertyInstance.topicMap.topicMapName, propertyInstance.propertyInstanceKey)))\n        sys.exit( 1)\n\n    overheadDict[ hashablePropertyValue].remove( propertyInstance.proxyId)\n    if not len( overheadDict[ hashablePropertyValue]):\n        del overheadDict[ hashablePropertyValue]\n\n    vsv.removeOldProxyReferencesFromReferencedProxiesDict( propertyInstance)\n\n#######################################################\ndef Merge_proxyIdList_PropertyValues( vsv, value1, value2):\n    if value1 == value2:\n        return value1\n    else:\n        return None  ## merge is unsuccessful\n\n#######################################################\ndef ValuesOf_proxyIdList_PropertyInstancesAreSignificantlyDifferent( vsv, value1, value2):\n    if value1 != value2:\n        return True\n    return False\n\n#######################################################\ndef MergeProxiesBecause_proxyIdList_PropertyInstancesSpecifySameSubject( vsv, propertyClass):\n    for key in propertyClass.overheadDict:\n        if len( propertyClass.overheadDict[ key]) > 1:\n            vsv.mergeListOfProxies( propertyClass, propertyClass.overheadDict[ key])\n\n#######################################################\ndef ProxiesOfSubjectIdentifiedBy_proxyIdList_Value( vsv, propertyClass, value):\n    hashableValue = tuple( value)\n    if propertyClass.overheadDict.has_key( hashableValue):\n        return propertyClass.overheadDict[ hashableValue]\n    else:\n        return []  ## empty list -- no match\n\n#######################################################\ndef UpdateProxyReferencesIn_proxyIdList_Value( vsv, propertyInstance, proxyIdToReplace, replacementProxyId):\n\n    oldValue = propertyInstance._value\n\n    workDict = {}\n    newList = []\n    foundProxyIdToReplace = False\n    for oldItem in oldValue:\n        if oldItem == proxyIdToReplace:\n            newList.append( replacementProxyId)\n            workDict[ replacementProxyId] = None\n            foundProxyIdToReplace = True\n        else:\n            newList.append( oldItem)\n            workDict[ oldItem] = None\n\n\n    if not foundProxyIdToReplace:\n        vsv.errMsg( \'Did not find reference to proxy %25s in propertyInstance %25s; value == %25s.\' %25 ( proxyIdToReplace, propertyInstance.propertyInstanceKey, propertyInstance._value))\n        sys.exit( 1)\n\n    propertyClass = propertyInstance.propertyClass\n\n    ## Remove old value from the "overhead" data for this property class\n    if propertyClass.Remove__PropFromOverheadDictFArgString:\n        execStr = \'propertyClass.Remove__PropFromOverheadDictF( vsv, propertyInstance, propertyClass.overheadDict, %25s)\' %25 (\n            propertyClass.Remove__PropFromOverheadDictFArgString)\n        exec execStr\n    else:\n        propertyClass.Remove__PropFromOverheadDictF( vsv, propertyInstance, propertyClass.overheadDict)\n\n    ## Replace the old value with the new one\n    del oldValue[:]\n    oldValue.extend( newList)\n        \n    ## Expose the list of proxy references that appear in the value as a list of proxyIds\n    propertyInstance.listOfIdsOfReferencedProxies = workDict.keys()\n\n    ## Add new value to the "overhead" data for this property class  (This will set propertyInstance.hashableValue, too!)\n    if propertyClass.Add__PropToOverheadDictFArgString:\n        execStr = \'propertyClass.Add__PropToOverheadDictF( vsv, propertyInstance, propertyClass.overheadDict, %25s)\' %25 (\n            propertyClass.Add__PropToOverheadDictFArgString)\n        exec execStr\n    else:\n        propertyClass.Add__PropToOverheadDictF( vsv, propertyInstance, propertyClass.overheadDict)\n\n\n\n'%0ap1%0a.</TMAModule

    ><TMAModule ModName="001_PCproxyIdSet" ModSrcFileName="001_PCproxyIdSet.py">S'#####################################################################\n#####################################################################\n## Copyright 2005 Steven R. Newcomb                                ##\n##                                                                 ##\n## This software is licensed under the Apache License, Version 2.0 ##\n## (the "License"); you may not use this file except in compliance ##\n## with the License.  Copies of the License are available at       ##\n##        http://www.apache.org/licenses/LICENSE-2.0               ##\n##                                                                 ##\n## Unless required by applicable law or agreed to in writing,      ##\n## software distributed under the License is distributed on an "AS ##\n## IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either ##\n## express or implied.  See the License for the specific language  ##\n## governing permissions and limitations under the License.        ##\n##                                                                 ##\n## Copies of the source code and the license are available at      ##\n##        http://www.versavant.org                                 ##\n#####################################################################\n#####################################################################\n\n####################################\ncvsRevision = "$Revision: 1.4 $" ##\n####################################\n\n\nimport sys\n\n\n#######################################\n## proxyIdSet PC implementation ##\n#######################################\n\n## These functions are useful as implementations of SIPs or OPs whose\n## values are lists of references to proxies.  Obviously, the name\n## "proxyIdSet" only applies to these (library) functions; TMA\n## designers can use any name(s) for such properties.\n\n#######################################################\ndef Add_proxyIdSet_PropToOverheadDict( vsv, propertyInstance, overheadDict):\n\n    workDict = {}\n    for proxyId in propertyInstance._value:\n        workDict[ proxyId] = None\n    propertyInstance.listOfIdsOfReferencedProxies = propertyInstance._value = workDict.keys()\n\n    hashablePropertyValue = propertyInstance.hashablePropertyValue = frozenset( propertyInstance._value)\n\n    if overheadDict.has_key( hashablePropertyValue):\n        if overheadDict[ hashablePropertyValue].has_key( propertyInstance.proxyId):\n            vsv.errMsg( \'ProxyId %25s is already listed in the overheadDict of property class for the value (%25s)\' %25 (\n                propertyInstance.proxyId, propertyInstance._value))\n            sys.exit( 1)\n        overheadDict[ hashablePropertyValue][ propertyInstance.proxyId] = None\n    else:\n        overheadDict[ hashablePropertyValue] = { propertyInstance.proxyId: None}\n\n    vsv.addNewProxyReferencesToReferencedProxiesDict( propertyInstance)\n\n#######################################################\ndef Remove_proxyIdSet_PropFromOverheadDict( vsv, propertyInstance, overheadDict):\n    hashablePropertyValue = propertyInstance.hashablePropertyValue\n    if not overheadDict.has_key( hashablePropertyValue):\n        vsv.errMsg( \'No entry in overheadDict of property class for the value (%25s) of property %25s\' %25 (\n            propertyInstance._value,\n            vsv.catKey( propertyInstance.topicMap.topicMapName, propertyInstance.propertyInstanceKey)))\n        sys.exit( 1)\n    if propertyInstance.proxyId not in overheadDict[ hashablePropertyValue]:\n        vsv.errMsg( \'ProxyId %25s not found in the overheadDict of property class for the value (%25s) of property %25s\' %25 (\n            propertyInstance.proxyId,\n            propertyInstance._value,\n            vsv.catKey( propertyInstance.topicMap.topicMapName, propertyInstance.propertyInstanceKey)))\n        sys.exit( 1)\n\n    del overheadDict[ hashablePropertyValue][ propertyInstance.proxyId]\n    if not len( overheadDict[ hashablePropertyValue]):\n        del overheadDict[ hashablePropertyValue]\n\n    vsv.removeOldProxyReferencesFromReferencedProxiesDict( propertyInstance)\n\n#######################################################\ndef ValueIsInvalidFor_proxyIdSet_Property( vsv, propertyValue, propertyClass, propertyInstance = None):\n    ## the value type validator does everything necessary\n    return False\n\n#######################################################\ndef Merge_proxyIdSet_PropertyValues( vsv, value1, value2):\n    newProxyIdSet = {}\n    for proxyId in value1:\n        newProxyIdSet[ proxyId] = None\n    for proxyId in value2:\n        newProxyIdSet[ proxyId] = None\n    return newProxyIdSet.keys()\n\n#######################################################\ndef ValuesOf_proxyIdSet_PropertyInstancesAreSignificantlyDifferent( vsv, value1, value2):\n    if frozenset( value1) != frozenset( value2):  ## ignore differences in sequence and ignore redundant entries\n        return True\n    return False\n\n#######################################################\ndef MergeProxiesBecause_proxyIdSet_PropertyInstancesSpecifySameSubject( vsv, propertyClass):\n    for key in propertyClass.overheadDict:\n        if len( propertyClass.overheadDict[ key]) > 1:\n            vsv.mergeListOfProxies( propertyClass, propertyClass.overheadDict[ key].keys())\n\n#######################################################\ndef ProxiesOfSubjectIdentifiedBy_proxyIdSet_Value( vsv, propertyClass, value):\n    hashablePropertyValue = frozenset( value)\n    if propertyClass.overheadDict.has_key( hashablePropertyValue):\n        return propertyClass.overheadDict[ hashablePropertyValue].keys()\n    else:\n        return []  ## empty list -- no match\n\n#######################################################\ndef UpdateProxyReferencesIn_proxyIdSet_Value( vsv, propertyInstance, proxyIdToReplace, replacementProxyId):\n    value = propertyInstance._value\n    if proxyIdToReplace not in value:\n        vsv.errMsg( \'proxyIdToReplace "%25s" not found in the value of %25s\' %25 (\n            proxyIdToReplace,\n            vsv.catKey( propertyInstance.topicMap.topicMapName, propertyInstance.propertyInstanceKey)))\n        sys.exit( 1)\n\n    propertyClass = propertyInstance.propertyClass\n    \n\n    ## Remove old value from the "overhead" data for this property class\n    if propertyClass.Remove__PropFromOverheadDictFArgString:\n        execStr = \'propertyClass.Remove__PropFromOverheadDictF( vsv, propertyInstance, propertyClass.overheadDict, %25s)\' %25 (\n            propertyClass.Remove__PropFromOverheadDictFArgString)\n        exec execStr\n    else:\n        propertyClass.Remove__PropFromOverheadDictF( vsv, propertyInstance, propertyClass.overheadDict)\n\n    ## Replace the proxyIdToReplace with the replacementProxyId\n    oldValue = value[:]\n    del value[:]\n    for proxyId in oldValue:\n        if proxyId == proxyIdToReplace:\n            proxyId = replacementProxyId\n        if proxyId not in value:\n            value.append( proxyId)\n        \n    ## Expose the list of proxy references that appear in the value as a list of proxyIds\n    propertyInstance.listOfIdsOfReferencedProxies = value\n        ## happens to be a list, so use the same list\n\n\n    ## Add new value to the "overhead" data for this property class\n    if propertyClass.Add__PropToOverheadDictFArgString:\n        execStr = \'propertyClass.Add__PropToOverheadDictF( vsv, propertyInstance, propertyClass.overheadDict, %25s)\' %25 (\n            propertyClass.Add__PropToOverheadDictFArgString)\n        exec execStr\n    else:\n        propertyClass.Add__PropToOverheadDictF( vsv, propertyInstance, propertyClass.overheadDict)\n\n'%0ap1%0a.</TMAModule

    ><TMAModule ModName="001_PCstring" ModSrcFileName="001_PCstring.py">S'#####################################################################\n#####################################################################\n## Versavant Topic Map Application Bus / Subject Addressing Engine ##\n## Copyright 2005 Steven R. Newcomb                                ##\n##                                                                 ##\n## This software is licensed under the Apache License, Version 2.0 ##\n## (the "License"); you may not use this file except in compliance ##\n## with the License.  Copies of the License are available at       ##\n##        http://www.apache.org/licenses/LICENSE-2.0               ##\n##                                                                 ##\n## Unless required by applicable law or agreed to in writing,      ##\n## software distributed under the License is distributed on an "AS ##\n## IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either ##\n## express or implied.  See the License for the specific language  ##\n## governing permissions and limitations under the License.        ##\n##                                                                 ##\n## Copies of the source code and the license are available at      ##\n##        http://www.versavant.org                                 ##\n#####################################################################\n#####################################################################\n\n####################################\ncvsRevision = "$Revision: 1.3 $" ##\n####################################\n\n######################################################################################\n## A simple property class implementation for properties whose values are strings.  ##\n######################################################################################\n\n#######################################################\ndef Add_string_PropToOverheadDict( vsv, propertyInstance, overheadDict):\n    valueHash = propertyInstance.hashablePropertyValue = propertyInstance._value\n    if overheadDict.has_key( valueHash):\n        overheadDict[ valueHash].append( propertyInstance.proxyId)\n    else:\n        overheadDict[ valueHash] = [ propertyInstance.proxyId]\n\n\n#######################################################\ndef Remove_string_PropFromOverheadDict( vsv, propertyInstance, overheadDict):\n    valueHash = propertyInstance.hashablePropertyValue\n    overheadDict[ valueHash].remove( propertyInstance.proxyId)\n    if not len( overheadDict[ valueHash]):\n        del overheadDict[ valueHash]  ## be a good citizen and clean up after yourself\n\n\n#######################################################\ndef Merge_string_PropertyValues( vsv, value1, value2):\n    if value1 == value2:\n        return value1\n    else:\n        return None  ## the merge failed.\n\n#######################################################\ndef ValuesOf_string_PropertyInstancesAreSignificantlyDifferent( vsv, value1, value2):\n    if value1 == value2:\n        return False\n    else:\n        return True  \n\n#######################################################\ndef ProxiesOfSubjectIdentifiedBy_string_Value( vsv, propertyClass, value):\n    if propertyClass.overheadDict.has_key( value):\n        return propertyClass.overheadDict[ value]\n    else:\n        return []  ## empty list -- no match\n\n#######################################################\ndef MergeProxiesBecause_string_PropertyInstancesSpecifySameSubject( vsv, propertyClass):\n    ## Declare this one if and only if your property class is for SIPs\n    ## (subject identity properties).\n    for hashablePropertyValue in propertyClass.overheadDict:\n        if len( propertyClass.overheadDict[ hashablePropertyValue]) > 1:\n            vsv.mergeListOfProxies( propertyClass, propertyClass.overheadDict[ hashablePropertyValue])\n    \n'%0ap1%0a.</TMAModule

    ><TMAModule ModName="001_VTproxyIdList" ModSrcFileName="001_VTproxyIdList.py">S'#####################################################################\n#####################################################################\n## Versavant Topic Map Application Bus / Subject Addressing Engine ##\n## Copyright 2005 Steven R. Newcomb                                ##\n##                                                                 ##\n## This software is licensed under the Apache License, Version 2.0 ##\n## (the "License"); you may not use this file except in compliance ##\n## with the License.  Copies of the License are available at       ##\n##        http://www.apache.org/licenses/LICENSE-2.0               ##\n##                                                                 ##\n## Unless required by applicable law or agreed to in writing,      ##\n## software distributed under the License is distributed on an "AS ##\n## IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either ##\n## express or implied.  See the License for the specific language  ##\n## governing permissions and limitations under the License.        ##\n##                                                                 ##\n## Copies of the source code and the license are available at      ##\n##        http://www.versavant.org                                 ##\n#####################################################################\n#####################################################################\n\n####################################\ncvsRevision = "$Revision: 1.5 $" ##\n####################################\n\n\n#############################################\n## "proxyIdList" value type implementation ##\n#############################################\n\n## This value type is useful for storing references to proxies,\n## regardless of whether they are treated by the property classes that\n## use this value type are lists or sets.  For example, you should use\n## this "proxyIdList" value type for both "proxyIdSet"-type property\n## classes and "proxyIdList"-type property classes.  At this level,\n## it doesn\'t matter.\n\n## Values are lists of proxyIds, i.e., proxy.proxyId values, which are\n## always strings of decimal digits that begin with two zeroes.\n\n## When you create other value types that contain proxy references,\n## you can use this implementation as a guide.  It\'s tricky to\n## manage proxy references, not only because they die when merged, but\n## also because they can\'t possibly retain their original IDs when\n## they are imported.\n\n## NOTE: During importation of instances of this value type from XML,\n## some recordkeeping is done in vsv.currentTopicMapHoldingDict[\n## \'IoMapsDict\'][ (TMA name)][ propertyClassName].  \n\nimport types, traceback\n\n#######################################################\ndef ValueIsNotOfType_proxyIdList_(vsv, propertyValue, propertyClass, propertyInstance = None, **args):\n    propertyClassName = propertyClass.propertyClassName\n    topicMap = propertyClass.topicMap\n    TMA = propertyClass.TMA\n    TMAName = TMA.TMAName\n\n    if not isinstance( propertyValue, types.ListType):\n        traceback.print_stack()\n        if propertyInstance:\n            vsv.errMsg( \'Value "%25s" of property %25s is not a list.\' %25 ( propertyValue, propertyInstance.propertyInstanceKey))\n        else:\n            vsv.errMsg( \'Value "%25s" of a prospective %25s property is not a list.\' %25 ( propertyValue, vsv.catKey( TMAName, propertyClassName)))\n        return True\n\n    for proxyId in propertyValue:\n        if not isinstance(proxyId, types.StringType):\n            if propertyInstance:\n                vsv.errMsg( \'An item ("%25s") in the value of property %25s is not a string.\' %25 ( proxyId, propertyInstance.propertyInstanceKey))\n            else:\n                vsv.errMsg( \'An item ("%25s") in the value of a presumptive %25s property is not a string.\' %25 ( proxyId, vsv.catKey( TMAName, propertyClassName)))\n            return True\n        if not vsv.proxyIdStrValidatorRE.match( proxyId):\n            if propertyInstance:\n                vsv.errMsg( \'An item ("%25s") in the value of property %25s does not look like a proxy identifier string.\' %25 ( proxyId, propertyInstance.propertyInstanceKey))\n            else:\n                vsv.errMsg( \'An item ("%25s") in the value of a presumptive %25s property does not look like a proxy identifier string.\' %25 ( proxyId, vsv.catKey( TMAName, propertyClassName)))\n            return True\n\n        proxy = vsv.isProxyId( proxyId, topicMap)\n        if not proxy:\n            if proxyId not in vsv.currentTopicMapHoldingDict[ \'IoMapsDict\'][ \'TMAs\'][ propertyInstance.TMAName][ propertyClassName]:\n                   ## We\'re probably in the process of importing a topic map, and these are\n                   ## references to proxies that don\'t exist yet because they haven\'t been imported\n                   ## yet.  The above check is supposed to calm our fears that this proxy reference\n                   ## is invalid, giving us reason to believe that it will soon be valid, even\n                   ## though it\'s not quite valid yet.\n\n                if propertyInstance:\n                    errString = \'An item ("%25s") in the list is not the ID of any proxy in topic map "%25s".\' %25 ( proxyId, propertyInstance.topicMap.topicMapName)\n                else:\n                    errString = \'An item ("%25s") in the list is not the ID of any proxy in any open topic map.\' %25 ( proxyId)\n                vsv.errMsg( errString)\n                return True\n        if proxy:\n            if proxy.forwardTo:\n                vsv.errMsg( \'An item ("%25s") in the list that is the value of property %25s is the ID of a dead proxy.  Only the IDs of living proxies are permitted.\' %25 ( proxyId, propertyInstance.topicMap.topicMapName))\n                return True\n\n    return False  ## all\'s well, presumably.                    \n\n#######################################################\ndef InstanceOf_proxyIdList_ValueTypeToXMLContentString(vsv, propertyInstance):\n    return vsv.cPickleDumpObjectAsXMLContentString( propertyInstance._value)\n\n#######################################################\ndef XMLContentStringToInstanceOf_proxyIdList_ValueType(vsv, string, propertyClass, **args):\n    ## Import a list of proxy references, adjusting them as necessary to\n    ## the new proxyIds of the imported proxies to which they refer.\n\n    oldProxyIdList = vsv.cPickleLoadObjectFromXMLContentString( string)\n\n    mem2xmlProxyIdDict = vsv.currentTopicMapHoldingDict[ \'IoMapsDict\'][ \'ProxyIds.mem2xml\']\n        ## This dictionary allows us to look up the in-xml element id of a\n        ## proxy, given the proxy\'s proxyId as it was in the topic map\n        ## from which the proxy was exported as xml.\n\n    firstImportedProxyId = vsv.firstImportedProxyId\n        ## This is an integer which, if we were to convert it into a\n        ## string of decimal digits with 2 prepended zero characters,\n        ## would be the proxyId of the first (the first, that is, not\n        ## counting the proxies created in order to register the TMAs\n        ## of the xml topic map being imported) in-memory proxy to be\n        ## imported into the being-imported-into topic map from the\n        ## xml topic map that we\'re importing.\n\n    propertyClassName = propertyClass.propertyClassName\n    TMAName = propertyClass.TMA.TMAName\n\n    newProxyIdList = []\n\n    for oldProxyId in oldProxyIdList:\n        xmlProxyNum = mem2xmlProxyIdDict[ int( oldProxyId)]\n        newProxyNum = (xmlProxyNum + firstImportedProxyId) - 1\n        newProxyId = \'00%25s\' %25 ( newProxyNum)\n        newProxyIdList.append( newProxyId)\n\n        appDict = vsv.currentTopicMapHoldingDict[ \'IoMapsDict\'][ \'TMAs\'][ TMAName]\n        if not appDict.has_key( propertyClassName):\n            appDict[ propertyClassName] = [ newProxyId]\n        else:\n            if newProxyId not in appDict[ propertyClassName]:\n                appDict[ propertyClassName].append( newProxyId)\n    ## vsv.IoMapsDict[ args[ \'TMAName\']][ propertyClassName] will be consulted by\n    ## the ValueIsNotOfType__() function in order to avoid a logical logjam over this.\n    ## The logical logjam is that we\'re referring to proxies that haven\'t been imported\n    ## yet, and the ValueIsNotOfType__() function checks to see that the proxy references are valid.\n    ## This gives the ValueIsNotOfType__() function something to fall back on, as it checks.\n    ## See that function, above, for more.\n\n    return newProxyIdList\n\n'%0ap1%0a.</TMAModule

    ><TMAModule ModName="001_VTstring" ModSrcFileName="001_VTstring.py">S'#####################################################################\n#####################################################################\n## Versavant Topic Map Application Bus / Subject Addressing Engine ##\n## Copyright 2005 Steven R. Newcomb                                ##\n##                                                                 ##\n## This software is licensed under the Apache License, Version 2.0 ##\n## (the "License"); you may not use this file except in compliance ##\n## with the License.  Copies of the License are available at       ##\n##        http://www.apache.org/licenses/LICENSE-2.0               ##\n##                                                                 ##\n## Unless required by applicable law or agreed to in writing,      ##\n## software distributed under the License is distributed on an "AS ##\n## IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either ##\n## express or implied.  See the License for the specific language  ##\n## governing permissions and limitations under the License.        ##\n##                                                                 ##\n## Copies of the source code and the license are available at      ##\n##        http://www.versavant.org                                 ##\n#####################################################################\n#####################################################################\n\n####################################\ncvsRevision = "$Revision: 1.3 $" ##\n####################################\n\n\n############################################\n## This simple value type is for strings. ##\n############################################\n\nimport types\n\n#######################################################\ndef ValueIsNotOfType_string_( vsv, propertyValue, propertyClass, propertyInstance = None):\n    if not isinstance( propertyValue, types.StringType):\n        vsv.errMsg( \'Value "%25s" is not a string.\' %25 ( propertyValue))\n        return True\n    return False\n\n#######################################################\ndef InstanceOf_string_ValueTypeToXMLContentString( vsv, propertyInstance):\n    return vsv.cPickleDumpObjectAsXMLContentString( propertyInstance._value)\n\n#######################################################\ndef XMLContentStringToInstanceOf_string_ValueType( vsv, string, propertyClass):\n    return vsv.cPickleLoadObjectFromXMLContentString( string)\n\n'%0ap1%0a.</TMAModule

    ><TMAModule ModName="001_propertyClasses" ModSrcFileName="001_propertyClasses.py">S'#####################################################################\n#####################################################################\n## Copyright 2005 Steven R. Newcomb                                ##\n##                                                                 ##\n## This software is licensed under the Apache License, Version 2.0 ##\n## (the "License"); you may not use this file except in compliance ##\n## with the License.  Copies of the License are available at       ##\n##        http://www.apache.org/licenses/LICENSE-2.0               ##\n##                                                                 ##\n## Unless required by applicable law or agreed to in writing,      ##\n## software distributed under the License is distributed on an "AS ##\n## IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either ##\n## express or implied.  See the License for the specific language  ##\n## governing permissions and limitations under the License.        ##\n##                                                                 ##\n## Copies of the source code and the license are available at      ##\n##        http://www.versavant.org                                 ##\n#####################################################################\n#####################################################################\n\n\nimport sys\n\n\n###################################\n## "Person Name Proxy" PC implementation ##\n## (most of the stuff is in Lib/PCproxyIdSet.py)\n###################################\n\n#######################################################\ndef ValueIsInvalidFor_Person_Name_Proxy_Property( vsv, propertyValue, propertyClass, propertyInstance = None, **args):\n    TMAName = propertyClass.TMA.TMAName\n    topicMap = propertyClass.topicMap\n\n    if len( propertyValue) != 1:\n        if propertyInstance:\n            vsv.errMsg( \'Every person should have exactly one name, but %25s contains %25s references to proxies.\' %25 ( propertyInstance.propertyInstanceKey, len( propertyValue)))\n        else:\n            vsv.errMsg( \'Every person should have exactly one name, but proposed value (%25s) for a %25s property contains %25s references to proxies.\' %25 ( propertyValue, vsv.catKey( TMAName, propertyClass.propertyClassName), len( propertyValue)))\n        return True\n\n    if vsv.nowImporting:\n        return False  ## can\'t make the rest of these checks yet\n\n    for proxyId in propertyValue:\n        proxy = vsv.isProxyId( proxyId, topicMap)\n\n        foundNameSIPInstance = False\n        for propertyInstanceKey2 in proxy.propertyInstances:\n            tmaName, propertyClassName = vsv.parsePropertyKey2( propertyInstanceKey2)\n            if TMAName == tmaName:\n                if propertyClassName == \'Name\':\n                    foundNameSIPInstance = True\n                    break\n                \n        if not foundNameSIPInstance:\n            if propertyInstance:\n                vsv.errMsg( \'Proxy referenced in the value of property %25s does not have a %25s property, but it should.\' %25 ( propertyInstance.propertyInstanceKey, vsv.catKey( TMAName, \'Name\')))\n            else:\n                vsv.errMsg( \'Proxy referenced in the proposed value of a %25s property does not have a %25s property, but it should.\' %25 ( vsv.catKey( TMAName, propertyClass.propertyClassName), vsv.catKey( TMAName, \'Name\')))\n            return True\n        \n    return False\n\n#######################################################\ndef ValueIsInvalidFor_shoeSizeObservation_Property( vsv, propertyValue, propertyClass, propertyInstance = None, **args):\n    TMAName = propertyClass.TMA.TMAName\n    topicMap = propertyClass.topicMap\n\n    if len( propertyValue) != 2:\n        if propertyInstance:\n            vsv.errMsg( \'Every shoe size observation should consist of two proxyIds, but %25s contains %25s references to proxies.\' %25 ( propertyInstance.propertyInstanceKey, len( propertyValue)))\n        else:\n            vsv.errMsg( \'Every shoe size observation should consist of two proxyIds, but the proposed value (%25s) for a %25s property contains %25s references to proxies.\' %25 ( propertyValue, vsv.catKey( TMAName, propertyClass.propertyClassName), len( propertyValue)))\n        return True\n\n    if vsv.nowImporting:\n        return False  ## can\'t make the rest of these checks yet\n    \n    proxyIdCount = -1\n    for proxyId in propertyValue:\n        proxyIdCount += 1\n        propertyClassList = [ None, None]\n        proxy = vsv.isProxyId( proxyId, topicMap)\n        for propertyInstanceKey2 in proxy.propertyInstances:\n            tmaName, propertyClassName = vsv.parsePropertyKey2( propertyInstanceKey2)\n            if TMAName == tmaName:\n                if propertyClassName == \'Shoe Size\' or propertyClassName == \'Age\':\n                    propertyClassList[ proxyIdCount] = propertyClassName\n                    break\n                \n    if not propertyClassList != [ \'Shoe Size\', \'Age\']:\n        if propertyInstance:\n            vsv.errMsg( \'The two proxies referenced by the value of property %25s should have a "%25s" and a "%25s" property, respectively, and at least one of them does not meet this criterion (check list == "%25s").\' %25 ( propertyInstance.propertyInstanceKey, vsv.catKey( TMAName, \'Shoe Size\'), vsv.catKey( TMAName, \'Age\'), propertyClassList))\n        else:\n            vsv.errMsg( \'The two proxies referenced by the value of property %25s should have a "%25s" and a "%25s" property, respectively, and at least one of them does not meet this criterion (check list == "%25s").\' %25 ( vsv.catKey( TMAName, propertyClass.propertyClassName), vsv.catKey( TMAName, \'Shoe Size\'), vsv.catKey( TMAName, \'Age\'), propertyClassList))\n        return True\n        \n    return False\n\n'%0ap1%0a.</TMAModule

  ></VersavantTMA


  ><VersavantTMA AppNm="Roles"

    ><TMAConfigFile ConfSrcPath="tmaconf.xml">S'%3c?xml version="1.0" encoding="ASCII"?>\n%3c!-- \n\n#####################################################################\n#####################################################################\n## Copyright 2005 Steven R. Newcomb                                ##\n##                                                                 ##\n## This software is licensed under the Apache License, Version 2.0 ##\n## (the "License"); you may not use this file except in compliance ##\n## with the License.  Copies of the License are available at       ##\n##        http://www.apache.org/licenses/LICENSE-2.0               ##\n##                                                                 ##\n## Unless required by applicable law or agreed to in writing,      ##\n## software distributed under the License is distributed on an "AS ##\n## IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either ##\n## express or implied.  See the License for the specific language  ##\n## governing permissions and limitations under the License.        ##\n##                                                                 ##\n## Copies of the source code and the license are available at      ##\n##        http://www.versavant.org                                 ##\n#####################################################################\n#####################################################################\n\n####################################\ncvsRevision = "$Revision: 1.5 $" ##\n####################################\n\nSimple little TMA for providing r-proxies with SIPs called "role name", whose\nvalues are strings.\n\n-->\n%3c!-- %3c!DOCTYPE VersavantTMA SYSTEM "http://www.versavant.org/dtds/TMAConfigFile.dtd">-->\n%3c!DOCTYPE VersavantTMA SYSTEM "../versavantTMA.dtd">\n%3cVersavantTMA\nVersavantTMADTDVersion="1"\n\n  >%3cDesc>Simple little SMV for providing r-proxies with SIPs called "role name", whose values are strings.%3c/Desc\n\n  >%3cValueType ValueTypeName="string"\n    >%3cDesc>General-purpose string value type.%3c/Desc\n    >%3cValueIsNotOfType__\n      functionModuleFilePath="${VSVEXECDIR}/Lib/VTstring.py"\n      functionName="ValueIsNotOfType_string_"\n    />%3cInstanceOf__ValueTypeToXMLContentString\n      functionModuleFilePath="${VSVEXECDIR}/Lib/VTstring.py"\n      functionName="InstanceOf_string_ValueTypeToXMLContentString"\n    />%3cXMLContentStringToInstanceOf__ValueType\n      functionModuleFilePath="${VSVEXECDIR}/Lib/VTstring.py"\n      functionName="XMLContentStringToInstanceOf_string_ValueType"\n  />%3c/ValueType\n\n  >%3cPropertyClass PropertyClassName="role name" ValueType="string"\n    >%3cDesc>Subject is a role whose unique name is the value.%3c/Desc\n    >%3cAdd__PropToOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstring.py"\n      functionName="Add_string_PropToOverheadDict"\n    />%3cRemove__PropFromOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstring.py"\n      functionName="Remove_string_PropFromOverheadDict"\n    />%3cValueIsInvalidFor__Property\n      functionModuleFilePath="propertyClasses.py"\n      functionName="ValueIsInvalidFor_role_name_Property"\n    />%3cMerge__PropertyValues\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstring.py"\n      functionName="Merge_string_PropertyValues"\n    />%3cValuesOf__PropertyInstancesAreSignificantlyDifferent\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstring.py"\n      functionName="ValuesOf_string_PropertyInstancesAreSignificantlyDifferent"\n    />%3cMergeProxiesBecause__PropertyInstancesSpecifySameSubject\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstring.py"\n      functionName="MergeProxiesBecause_string_PropertyInstancesSpecifySameSubject"\n    />%3cProxiesWith__ValueNotSignificantlyDifferentFrom\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstring.py"\n      functionName="ProxiesOfSubjectIdentifiedBy_string_Value"\n  />%3c/PropertyClass\n\n  >%3cConferralRule ConferralRuleName="reifyRolesIn_A_assert_a_sips"\n      functionModuleFilePath="conferralRules.py"\n      functionName="reifyRolesIn_A_assert_a_sips"\n      functionExtraArgsString="bridgeFromTMAName = \'A_assert\'"\n    >%3cDesc>From each A_assert,,a_sip property, confer a "role name" property whose value is the first member of each tuple.%3c/Desc\n  >%3c/ConferralRule\n\n  >%3cConferralRule ConferralRuleName="reifyRolesIn_U_assert_properties"\n      functionModuleFilePath="conferralRules.py"\n      functionName="reifyRolesIn_U_assert_properties"\n      functionExtraArgsString="bridgeFromTMAName = \'U_assert\'"\n    >%3cDesc>From each U_assert,,x_LrnRrnRrp property, confer a "role name" property for each local and remote role name.%3c/Desc\n  >%3c/ConferralRule\n\n>%3c/VersavantTMA>\n'%0ap1%0a.</TMAConfigFile

    ><TMAModule ModName="001_PCstring" ModSrcFileName="001_PCstring.py">S'#####################################################################\n#####################################################################\n## Versavant Topic Map Application Bus / Subject Addressing Engine ##\n## Copyright 2005 Steven R. Newcomb                                ##\n##                                                                 ##\n## This software is licensed under the Apache License, Version 2.0 ##\n## (the "License"); you may not use this file except in compliance ##\n## with the License.  Copies of the License are available at       ##\n##        http://www.apache.org/licenses/LICENSE-2.0               ##\n##                                                                 ##\n## Unless required by applicable law or agreed to in writing,      ##\n## software distributed under the License is distributed on an "AS ##\n## IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either ##\n## express or implied.  See the License for the specific language  ##\n## governing permissions and limitations under the License.        ##\n##                                                                 ##\n## Copies of the source code and the license are available at      ##\n##        http://www.versavant.org                                 ##\n#####################################################################\n#####################################################################\n\n####################################\ncvsRevision = "$Revision: 1.3 $" ##\n####################################\n\n######################################################################################\n## A simple property class implementation for properties whose values are strings.  ##\n######################################################################################\n\n#######################################################\ndef Add_string_PropToOverheadDict( vsv, propertyInstance, overheadDict):\n    valueHash = propertyInstance.hashablePropertyValue = propertyInstance._value\n    if overheadDict.has_key( valueHash):\n        overheadDict[ valueHash].append( propertyInstance.proxyId)\n    else:\n        overheadDict[ valueHash] = [ propertyInstance.proxyId]\n\n\n#######################################################\ndef Remove_string_PropFromOverheadDict( vsv, propertyInstance, overheadDict):\n    valueHash = propertyInstance.hashablePropertyValue\n    overheadDict[ valueHash].remove( propertyInstance.proxyId)\n    if not len( overheadDict[ valueHash]):\n        del overheadDict[ valueHash]  ## be a good citizen and clean up after yourself\n\n\n#######################################################\ndef Merge_string_PropertyValues( vsv, value1, value2):\n    if value1 == value2:\n        return value1\n    else:\n        return None  ## the merge failed.\n\n#######################################################\ndef ValuesOf_string_PropertyInstancesAreSignificantlyDifferent( vsv, value1, value2):\n    if value1 == value2:\n        return False\n    else:\n        return True  \n\n#######################################################\ndef ProxiesOfSubjectIdentifiedBy_string_Value( vsv, propertyClass, value):\n    if propertyClass.overheadDict.has_key( value):\n        return propertyClass.overheadDict[ value]\n    else:\n        return []  ## empty list -- no match\n\n#######################################################\ndef MergeProxiesBecause_string_PropertyInstancesSpecifySameSubject( vsv, propertyClass):\n    ## Declare this one if and only if your property class is for SIPs\n    ## (subject identity properties).\n    for hashablePropertyValue in propertyClass.overheadDict:\n        if len( propertyClass.overheadDict[ hashablePropertyValue]) > 1:\n            vsv.mergeListOfProxies( propertyClass, propertyClass.overheadDict[ hashablePropertyValue])\n    \n'%0ap1%0a.</TMAModule

    ><TMAModule ModName="001_VTstring" ModSrcFileName="001_VTstring.py">S'#####################################################################\n#####################################################################\n## Versavant Topic Map Application Bus / Subject Addressing Engine ##\n## Copyright 2005 Steven R. Newcomb                                ##\n##                                                                 ##\n## This software is licensed under the Apache License, Version 2.0 ##\n## (the "License"); you may not use this file except in compliance ##\n## with the License.  Copies of the License are available at       ##\n##        http://www.apache.org/licenses/LICENSE-2.0               ##\n##                                                                 ##\n## Unless required by applicable law or agreed to in writing,      ##\n## software distributed under the License is distributed on an "AS ##\n## IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either ##\n## express or implied.  See the License for the specific language  ##\n## governing permissions and limitations under the License.        ##\n##                                                                 ##\n## Copies of the source code and the license are available at      ##\n##        http://www.versavant.org                                 ##\n#####################################################################\n#####################################################################\n\n####################################\ncvsRevision = "$Revision: 1.3 $" ##\n####################################\n\n\n############################################\n## This simple value type is for strings. ##\n############################################\n\nimport types\n\n#######################################################\ndef ValueIsNotOfType_string_( vsv, propertyValue, propertyClass, propertyInstance = None):\n    if not isinstance( propertyValue, types.StringType):\n        vsv.errMsg( \'Value "%25s" is not a string.\' %25 ( propertyValue))\n        return True\n    return False\n\n#######################################################\ndef InstanceOf_string_ValueTypeToXMLContentString( vsv, propertyInstance):\n    return vsv.cPickleDumpObjectAsXMLContentString( propertyInstance._value)\n\n#######################################################\ndef XMLContentStringToInstanceOf_string_ValueType( vsv, string, propertyClass):\n    return vsv.cPickleLoadObjectFromXMLContentString( string)\n\n'%0ap1%0a.</TMAModule

    ><TMAModule ModName="001_conferralRules" ModSrcFileName="001_conferralRules.py">S'#####################################################################\n#####################################################################\n## Copyright 2005 Steven R. Newcomb                                ##\n##                                                                 ##\n## This software is licensed under the Apache License, Version 2.0 ##\n## (the "License"); you may not use this file except in compliance ##\n## with the License.  Copies of the License are available at       ##\n##        http://www.apache.org/licenses/LICENSE-2.0               ##\n##                                                                 ##\n## Unless required by applicable law or agreed to in writing,      ##\n## software distributed under the License is distributed on an "AS ##\n## IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either ##\n## express or implied.  See the License for the specific language  ##\n## governing permissions and limitations under the License.        ##\n##                                                                 ##\n## Copies of the source code and the license are available at      ##\n##        http://www.versavant.org                                 ##\n#####################################################################\n#####################################################################\n\n####################################\ncvsRevision = "$Revision: 1.2 $" ##\n####################################\n\n\n#####################################################################\n## Implementation of the conferral rules "inferFrom_a_sip_"\n## in Topic Map Application "BIGASSERT".\n#####################################################################\n\n\nimport sys, copy\n\ndef reifyRolesIn_A_assert_a_sips( vsv, conferralRule, **args):\n    ## from bridgeFromTMAName,,a_sip properties, infer a_sip\n    ## properties in the conferralRule\'s TMA.  (With all that that\n    ## entails.)\n\n    bridgeFromTMAName  = args[ \'bridgeFromTMAName\']\n    \n    topicMap = conferralRule.topicMap  ## make the below code less verbose (and maybe run slightly faster)\n    TMA = conferralRule.TMA  ## this is the TMA that defines this conferral rule\n    bridgeFromTMA = topicMap.TMAs[ bridgeFromTMAName]\n    bridgeFrom_a_sip_overheadDict = bridgeFromTMA.propertyClasses[ \'a_sip\'].overheadDict\n\n    old_a_sip_hashableValueList = bridgeFrom_a_sip_overheadDict.keys()\n\n    for old_a_sip_hashableValue in old_a_sip_hashableValueList:\n\n        old_a_proxyIdList = copy.copy( bridgeFrom_a_sip_overheadDict[ old_a_sip_hashableValue])\n\n        for old_a_proxyId in old_a_proxyIdList:\n\n            old_a_proxy = topicMap.proxies[ old_a_proxyId]\n            old_a_sip_instance = old_a_proxy.propertyInstances[ vsv.catKey( bridgeFromTMA.TMAName, \'a_sip\')]\n\n            ## Don\'t be triggered by an a_sip_instance property more\n            ## than once, and don\'t be triggered by any a_sip_instance\n            ## that was output by an operation of this rule\n            conferralRuleTriggerRoleId = vsv.catKey( conferralRule.conferralRuleKey, \'a_sip value\')\n            if old_a_sip_instance.conferralTriggerAncestry.has_key( conferralRuleTriggerRoleId) or \\\n                   old_a_sip_instance.conferralsTriggered.has_key( conferralRuleTriggerRoleId):\n                continue\n\n            triggers = {}  ## new dictionary to work in\n            triggers[ \'a_sip value\'] = old_a_sip_instance.propertyInstanceKey\n            conferredValueSources = {}  ## new dictionary to work in\n            conferredValueSources[ \'a_sip value\'] = old_a_sip_instance.propertyInstanceKey\n\n            if vsv.conferralMayBeSignificant( conferralRule, triggers, conferredValueSources):\n\n                    ## Here we need to convert each r-proxy reference\n                    ## (the first member of each tuple) into a string\n                    ## which will serve as the role name.\n\n                    roleNames = {}\n                    for thisTuple in old_a_sip_instance._value:\n\n                        new_r_proxy = vsv.newProxyObject()\n\n                        roleName = thisTuple[ 0]\n                        vsv.newPropertyInstance( new_r_proxy,\n                            TMA.TMAName,\n                            \'role name\',\n                            vsv.versaCopy( roleName),\n                            triggers,\n                            conferredValueSources)         \n\n                        if roleName in roleNames:\n                            vsv.errMsg( \'%25s value cannot be bridged to %25s: two or more roleNames turn out to be "%25s".\' %25 ( old_a_sip_instance.propertyInstanceKey, vsv.catKey( TMA.TMAName, \'role name\'), roleName))\n                            sys.exit( 1)\n                        roleNames[ roleName] = None\n\n#######################################################\ndef reifyRolesIn_U_assert_properties( vsv, conferralRule, **args):\n    ## from bridgeFromTMAName,,x_LrnRrnRrp properties, infer a_sip\n    ## properties in the conferralRule\'s TMA.  (With all that that\n    ## entails.)\n\n    u_assertTMAName = args[ \'bridgeFromTMAName\']\n    u_assertPropertyName = \'x_LrnRrnRrp\'\n\n    topicMap = conferralRule.topicMap\n    TMA = conferralRule.TMA  ## this is the TMA that defines this conferral rule\n    u_assertTMA = topicMap.TMAs[ u_assertTMAName]\n    proxyIdList = u_assertTMA.propertyClasses[ u_assertPropertyName].overheadDict[ \'proxyIds\'].keys()\n    u_assertPropertyInstanceInProxyKey = vsv.catKey( u_assertTMAName, u_assertPropertyName)\n\n    existingRoleDict = TMA.propertyClasses[ \'role name\'].overheadDict\n\n    for proxyId in proxyIdList:\n\n        proxy = topicMap.proxies[ proxyId]\n\n        u_assertProperty = proxy.propertyInstances[ u_assertPropertyInstanceInProxyKey]\n\n        ## Don\'t be triggered by a u_assert property more than once\n        conferralRuleTriggerRoleId = vsv.catKey( conferralRule.conferralRuleKey, \'A\')\n        if u_assertProperty.conferralTriggerAncestry.has_key( conferralRuleTriggerRoleId) or \\\n               u_assertProperty.conferralsTriggered.has_key( conferralRuleTriggerRoleId):\n            continue\n\n        triggers = {}  ## new dictionary to work in\n        triggers[ \'A\'] = u_assertProperty.propertyInstanceKey\n        conferredValueSources = {}  ## new dictionary to work in\n        conferredValueSources[ \'A\'] = u_assertProperty.propertyInstanceKey\n\n        if vsv.conferralMayBeSignificant( conferralRule, triggers, conferredValueSources):\n\n            dict1 = u_assertProperty._value\n\n            for dict1Key in dict1:\n                localRoleName = dict1Key\n                if localRoleName not in existingRoleDict:\n                    newProxy = vsv.newProxyObject( topicMap)\n                    vsv.newPropertyInstance( newProxy,\n                                             TMA,\n                                             \'role name\',\n                                             vsv.versaCopy( localRoleName),\n                                             triggers,\n                                             conferredValueSources)\n\n                dict2 = dict1[ dict1Key]\n                for dict2Key in dict2:\n                    remoteRoleName = dict2Key\n                    if remoteRoleName not in existingRoleDict:\n                        newProxy = vsv.newProxyObject( topicMap)\n                        vsv.newPropertyInstance( newProxy,\n                                                 TMA,\n                                                 \'role name\',\n                                                 vsv.versaCopy( remoteRoleName),\n                                                 triggers,\n                                                 conferredValueSources)\n\n'%0ap1%0a.</TMAModule

    ><TMAModule ModName="001_propertyClasses" ModSrcFileName="001_propertyClasses.py">S'#####################################################################\n#####################################################################\n## Copyright 2005 Steven R. Newcomb                                ##\n##                                                                 ##\n## This software is licensed under the Apache License, Version 2.0 ##\n## (the "License"); you may not use this file except in compliance ##\n## with the License.  Copies of the License are available at       ##\n##        http://www.apache.org/licenses/LICENSE-2.0               ##\n##                                                                 ##\n## Unless required by applicable law or agreed to in writing,      ##\n## software distributed under the License is distributed on an "AS ##\n## IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either ##\n## express or implied.  See the License for the specific language  ##\n## governing permissions and limitations under the License.        ##\n##                                                                 ##\n## Copies of the source code and the license are available at      ##\n##        http://www.versavant.org                                 ##\n#####################################################################\n#####################################################################\n\n####################################\ncvsRevision = "$Revision: 1.2 $" ##\n####################################\n\n\nimport sys\n\n\n#######################################################\ndef ValueIsInvalidFor_role_name_Property( vsv, propertyValue, propertyClass, propertyInstance = None, **args):\n    if vsv.looksLikeProxyId( propertyValue):\n        bool, proxyIdLookalikeREString = vsv.looksLikeProxyId( propertyValue)\n        if propertyInstance:\n            vsv.errMsg( \'value ("%25s") of %25s property is bad because it looks like a proxyId.  Role names cannot match the regular expression "%25s".\' %25 ( propertyValue, propertyInstance.propertyInstanceKey, proxyIdLookalikeREString))\n        else:\n            vsv.errMsg( \'presumptive value ("%25s") of %25s property is bad because it looks like a proxyId.  Role names cannot match the regular expression "%25s".\' %25 ( propertyValue, vsv.catKey( propertyClass.TMA.TMAName, propertyClass.propertyClassName), proxyIdLookalikeREString))\n        return True\n    return False\n'%0ap1%0a.</TMAModule

  ></VersavantTMA


  ><VersavantTMA AppNm="TRA_assert"

    ><TMAConfigFile ConfSrcPath="tmaconf.xml">S'%3c?xml version="1.0" encoding="ASCII"?>\n%3c!-- \n\n#####################################################################\n#####################################################################\n## Copyright 2005 Steven R. Newcomb                                ##\n##                                                                 ##\n## This software is licensed under the Apache License, Version 2.0 ##\n## (the "License"); you may not use this file except in compliance ##\n## with the License.  Copies of the License are available at       ##\n##        http://www.apache.org/licenses/LICENSE-2.0               ##\n##                                                                 ##\n## Unless required by applicable law or agreed to in writing,      ##\n## software distributed under the License is distributed on an "AS ##\n## IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either ##\n## express or implied.  See the License for the specific language  ##\n## governing permissions and limitations under the License.        ##\n##                                                                 ##\n## Copies of the source code and the license are available at      ##\n##        http://www.versavant.org                                 ##\n#####################################################################\n#####################################################################\n\n####################################\ncvsRevision = "$Revision: 1.4 $" ##\n####################################\n\n"TRA_assert" (type-role-assertion) assertions:\n_____________________________________________\n\nThese are like BigAssert, but without casting nodes.\n\nAssumptions (same as BigAssert):\n\n* An assertion can only be created by uttering an a_sip property.\n  Everything else will be conferred into existence (but, of course,\n  that doesn\'t prevent the other parts of the assertion from *also*\n  being created manually).  \n\n* You can\'t create an assertion if its r-proxies and x-proxies don\'t\n  already exist.  Those r-proxies and x-proxies must already have one\n  or more SIPs.  (Because conferral operations can\'t duplicate SIPs\n  that don\'t exist.)\n\n* An a_sip property consists of a set of tuples, one for each playable\n  role.  Each tuple may have a single member, in which case that\n  member is an unplayed role.  The tuple may have two members, in\n  which case the first member is the role and the second is the role\n  player.  The set of playable roles becomes the t_sip of the t-proxy.\n  No two tuples can have the same first member.\n\n* The SIPs of r-proxies and x-proxies are outside the scope of this\n  TMA.  They cannot be conferred into existence by uttering an a_sip.\n\n* The constraint that no r-proxy can appear in more than one t-proxy\n  is a constraint on the value of the r_type property.\n\nproperties of a-proxies\n\n    a_sip  (almost identical to BigAssert)\n  \n        Property value type: \n\n           setOfProxyRefTuples.  Each member of each tuple must be a\n           proxy reference.\n\n        Property value constraints:\n\n           There must be at least two tuples.\n\n           At least one of the tuples must have two members.\n\n           (The first member will be regarded as a reference to an\n           r-proxy, while the second member, if there is one, will be\n           regarded as a reference to an x-proxy.)\n\n           No proxy can be referenced as an r-proxy more than once\n           (i.e., by more than one tuple)\n\n           Proxies referenced as r-proxies cannot have any properties\n           governed by this TMA other than r_type, r_rolePlayers, and\n           x_roles.\n\n        Context constraints:\n\n           Proxies that have a_sip properties cannot have any\n           properties governed by this TMA other than a_sip, a_type,\n           and x_roles.  (Difference from BigAssert: no a_castings.)\n\n        Proxies with a_sip properties merge when:\n\n           ...the lists of tuples, considered as sets, match.\n\n        The result of merging two or more a_sip properties will be:\n\n           ...the same as any one of them.\n\n        a_sip property values are significantly different if:\n\n           ...the lists of tuples, considered as sets, don\'t match\n\n        a_sip properties trigger conferrals as follows:\n\n           - a t-proxy, with its t_sip and t_assertions properties.\n             The t_sip property\'s value is a list of references to the\n             set of r-proxies (the ones that are referenced as the\n             first member of each tuple in the a_sip property\'s\n             value).  The t_assertions property\'s value is a list of\n             proxy references with one item in it - a reference to\n             the a-proxy that has this a_sip property.\n\n           - for each tuple in the a_sip property value, the following\n             are conferred into existence:\n\n              . an r-proxy, with its r_type and r_rolePlayers property,\n                plus an SIP that is not governed by this TMA but is\n                already extant.\n\n              (Difference from BigAssert: no c-proxy is conferred into\n              existence.)\n\n           - for each tuple in the a_sip property value that has two\n             members (i.e., that has a reference to an x-proxy)\n\n              . an x-proxy, with its x_roles property, plus the SIP\n                that may be, but is not necessarily, governed by this\n                TMA but already extant\n\n              (Differences from BigAssert: instead of an x_castings\n              property, an x_roles property is conferred.)\n\n           - an a_type property on the same proxy in which the a_sip\n             property appears\n\n           (Difference from BigAssert: no a_castings is conferred.\n\n    a_type\n\n        Property value type: \n\n           List of proxy references.\n\n        Property value constraints:\n\n           There must be at least one proxy reference.  (During a\n           merging cycle, there may temporarily be more than one.)\n\n           Proxies referenced cannot have any properties governed by\n           this TMA other than t_sip, t_assertions, and x_roles.\n\n        Context constraints:\n\n           Proxies that have a_type properties cannot have any\n           properties governed by this TMA other than a_sip,\n           a_type, and x_roles.\n\n        Proxies merge when:\n\n           (not applicable; this property is not an SIP)\n\n        The result of merging two or more a_type properties will be:\n\n           ...the union of their sets of proxy references\n\n        a_type property values are significantly different if:\n\n           Their lists of proxy references, considered as sets, don\'t match.\n\n        a_type properties trigger conferrals as follows:\n\n           (no conferrals)\n\n\nproperties of r-proxies\n\n    (sip not governed by this TMA)\n\n    r_type\n\n        Property value type: \n\n           List of proxy references.\n\n        Property value constraints:\n\n           There must be at least one proxy reference.  (During a\n           merging cycle, there may temporarily be more than one.)\n\n           Proxies referenced cannot have any properties governed by\n           this TMA other than t_sip, t_assertions, and x_roles.\n\n        Context constraints:\n\n           Proxies that have r_type properties cannot have any\n           properties governed by this TMA other than r_type,\n           r_rolePlayers, and x_roles.\n\n        Proxies merge when:\n\n           (not applicable; this property is not an SIP)\n\n        The result of merging two or more r_type properties will be:\n\n           ...the union of their sets of proxy references\n\n        r_type property values are significantly different if:\n\n           their lists of proxy references, considered as sets, don\'t match.\n\n        r_type properties trigger conferrals as follows:\n\n           (no conferrals)\n\n\n    r_rolePlayers    \n\n        Property value type: \n\n           List of proxy references.\n\n        Property value constraints:\n\n           Proxies referenced must have x_roles properties that\n           include references to \n           this TMA other than x_roles.\n\n        Context constraints:\n\n           Proxies that have r_rolePlayers properties cannot have any\n           properties governed by this TMA other than r_type,\n           r_rolePlayers, and x_roles.\n\n        Proxies merge when:\n\n           (not applicable; this property is not an SIP)\n\n        The result of merging two or more r_rolePlayers properties will be:\n\n           ...the union of their sets of proxy references\n\n        r_rolePlayers property values are significantly different if:\n\n           Their lists of proxy references, considered as sets, don\'t match.\n\n        r_rolePlayers properties trigger conferrals as follows:\n\n           (no conferrals)\n\n\nproperties of t-proxies\n\n    t_sip\n\n        Property value type: \n\n           List of proxy references.\n\n        Property value constraints:\n\n           There must be at least two proxy references, and no two\n           references can be to the same proxy.\n\n           No referenced proxy can have any properties governed by\n           this TMA other than r_type, r_rolePlayers, and x_roles.\n\n        Context constraints:\n\n           Proxies that have t_sip properties cannot have any\n           properties governed by this TMA other than t_sip, \n           t_assertions, and x_roles.\n\n        Proxies merge when:\n\n           Any two t_sip values are references to the same set of\n           r-proxies.\n\n        The result of merging two or more t_sip properties will be:\n\n           ...the same as any one of them\n\n        t_sip property values are significantly different if:\n\n           The lists of referenced r-proxies are not the same.\n\n    t_assertions\n\n        Property value type: \n\n           List of proxy references.\n\n        Property value constraints:\n\n           No referenced proxy can have any properties governed by\n           this TMA other than a_sip, a_type, and x_roles.\n\n        Context constraints:\n\n           Proxies that have t_assertions properties cannot have any\n           properties governed by this TMA other than t_sip,\n           t_assertions, and x_roles.\n\n        Proxies merge when:\n\n           (not applicable; this property is not an SIP)\n\n        The result of merging two or more t_assertions properties will be:\n\n           ...the union of their values\n\n        t_assertions property values are significantly different if:\n\n           the sets of a-proxies that they reference are not the same\n\n\nproperties of x-proxies\n\n    (sip not governed by this TMA)\n\n    x_roles    \n\n        Property value type: \n\n           setOfProxyRefTuples.  Each member of each tuple must be a\n           proxy reference.\n\n\n        Property value constraints:\n\n           Each tuple must have two members.\n\n           (The first member will be regarded as a reference to an\n           r-proxy.  The second member will be regarded as a reference\n           to an a-proxy.)\n\n           Proxies referenced as r-proxies cannot have any properties\n           governed by this TMA other than r_type, r_rolePlayers, and\n           x_roles.\n\n           Proxies referenced as a-proxies cannot have any properties\n           governed by this TMA other than a_sip, a_type, and x_roles.\n\n        Context constraints:\n\n           (none)\n\n        Proxies merge when:\n\n           (not applicable; this property is not an SIP)\n\n        The result of merging two or more x_roles properties will be:\n\n           ...the union of the sets of tuples that are their values.\n\n        x_roles property values are significantly different if:\n\n           the sets of tuples that are their values are not the same\n\n-->\n%3c!-- %3c!DOCTYPE VersavantTMA SYSTEM "http://www.versavant.org/dtds/TMAConfigFile.dtd">-->\n%3c!DOCTYPE VersavantTMA SYSTEM "../versavantTMA.dtd">\n%3cVersavantTMA\nVersavantTMADTDVersion="1"\n\n  >%3cDesc>TMA for assertions that reify types, roles, and relationships (assertions), but not castings.%3c/Desc\n\n  >%3cValueType ValueTypeName="setOfProxyRefTuples"\n    >%3cDesc>Value type for a_sip class.%3c/Desc\n    >%3cValueIsNotOfType__\n      functionModuleFilePath="${VSVEXECDIR}/Lib/VTsetOfProxyRefTuples.py"\n      functionName="ValueIsNotOfType_setOfProxyRefTuples_"\n    />%3cInstanceOf__ValueTypeToXMLContentString\n      functionModuleFilePath="${VSVEXECDIR}/Lib/VTsetOfProxyRefTuples.py"\n      functionName="InstanceOf_setOfProxyRefTuples_ValueTypeToXMLContentString"\n    />%3cXMLContentStringToInstanceOf__ValueType\n      functionModuleFilePath="${VSVEXECDIR}/Lib/VTsetOfProxyRefTuples.py"\n      functionName="XMLContentStringToInstanceOf_setOfProxyRefTuples_ValueType"\n  />%3c/ValueType\n\n  >%3cValueType ValueTypeName="proxyIdSet"\n    >%3cDesc>General-purpose set-of-subject-proxies value type.  (Same valuetype implementation as proxyIdList.)%3c/Desc\n    >%3cValueIsNotOfType__\n      functionModuleFilePath="${VSVEXECDIR}/Lib/VTproxyIdList.py"\n      functionName="ValueIsNotOfType_proxyIdList_"\n      functionExtraArgsString="propertyClassName = propertyClass.propertyClassName"\n    />%3cInstanceOf__ValueTypeToXMLContentString\n      functionModuleFilePath="${VSVEXECDIR}/Lib/VTproxyIdList.py"\n      functionName="InstanceOf_proxyIdList_ValueTypeToXMLContentString"\n    />%3cXMLContentStringToInstanceOf__ValueType\n      functionModuleFilePath="${VSVEXECDIR}/Lib/VTproxyIdList.py"\n      functionName="XMLContentStringToInstanceOf_proxyIdList_ValueType"\n  />%3c/ValueType\n\n  >%3cPropertyClass PropertyClassName="a_sip" ValueType="setOfProxyRefTuples"\n    >%3cDesc>SIP of this a-proxy; subject is a relationship.%3c/Desc\n    >%3cAdd__PropToOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCsetOfProxyRefTuples.py"\n      functionName="Add_setOfProxyRefTuples_PropToOverheadDict"\n    />%3cRemove__PropFromOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCsetOfProxyRefTuples.py"\n      functionName="Remove_setOfProxyRefTuples_PropFromOverheadDict"\n\n    />%3cValueIsInvalidFor__Property\n      functionModuleFilePath="${VSVEXECDIR}/Lib/BIGASSERT/propertyClasses.py"\n      functionName="ValueIsInvalidFor_a_sip_Property"\n      functionExtraArgsString="r_proxy_allowed_properties = [ \'r_type\', \'r_rolePlayers\', \'x_roles\']"\n\n    />%3cMerge__PropertyValues\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCsetOfProxyRefTuples.py"\n      functionName="Merge_setOfProxyRefTuples_PropertyValues"\n    />%3cValuesOf__PropertyInstancesAreSignificantlyDifferent\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCsetOfProxyRefTuples.py"\n      functionName="ValuesOf_setOfProxyRefTuples_PropertyInstancesAreSignificantlyDifferent"\n\n    />%3cContextOf__PropertyIsInvalid\n      functionModuleFilePath="propertyClasses.py"\n      functionName="ContextOf_TRA_assert_PropertyIsInvalid"\n      functionExtraArgsString="\'a_sip\'"\n\n    />%3cMergeProxiesBecause__PropertyInstancesSpecifySameSubject\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCsetOfProxyRefTuples.py"\n      functionName="MergeProxiesBecause_setOfProxyRefTuples_PropertyInstancesSpecifySameSubject"\n    />%3cProxiesWith__ValueNotSignificantlyDifferentFrom\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCsetOfProxyRefTuples.py"\n      functionName="ProxiesOfSubjectIdentifiedBy_setOfProxyRefTuples_Value"\n    />%3cUpdateProxyReferencesIn__Value\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCsetOfProxyRefTuples.py"\n      functionName="UpdateProxyReferencesIn_setOfProxyRefTuples_Value"\n  />%3c/PropertyClass\n\n  >%3cConferralRule ConferralRuleName="inferFrom_a_sip_"\n      functionModuleFilePath="${VSVEXECDIR}/Lib/BIGASSERT/conferralRules.py"\n      functionName="inferFrom_a_sip_"\n      functionExtraArgsString="assertionModel = \'TRA_assert\'"\n    >%3cDesc>From each a_sip property, confers a_type, r_type, r_rolePlayers, t_sip, t_assertions, and x_roles properties.%3c/Desc\n  >%3c/ConferralRule\n\n  >%3cConferralRule ConferralRuleName="bridge_A_assert_a_sip_to_TRA_assert_a_sip"\n      functionModuleFilePath="${VSVEXECDIR}/Lib/BIGASSERT/conferralRules.py"\n      functionName="bridgeAcross_a_sip_Models"\n      functionExtraArgsString="bridgeFromTMAName = \'A_assert\', \n                               bridgeFromTMAModel = \'A_assert\', \n                               bridgeToTMAModel = \'TRA_assert\', \n                               bridgeToR_ProxyPropertyName = \'role name\', \n                               bridgeToR_ProxyTMAName = \'Roles\'"\n    >%3cDesc>For each a_sip property in the TMA named in the bridgeFromTMAName keyword argument, confers an a_sip property in this TMA.%3c/Desc\n  >%3c/ConferralRule\n\n  >%3cConferralRule ConferralRuleName="bridge_BigAssert_a_sip_to_TRA_assert_a_sip"\n      functionModuleFilePath="${VSVEXECDIR}/Lib/BIGASSERT/conferralRules.py"\n      functionName="bridgeAcross_a_sip_Models"\n      functionExtraArgsString="bridgeFromTMAName = \'BigAssert\', \n                               bridgeFromTMAModel = \'BigAssert\', \n                               bridgeToTMAModel = \'TRA_assert\'"\n    >%3cDesc>For each a_sip property in the TMA named in the bridgeFromTMAName keyword argument, confers an a_sip property in this TMA.%3c/Desc\n  >%3c/ConferralRule\n\n  >%3cConferralRule ConferralRuleName="bridgeAcross_t_sip_Models"\n      functionModuleFilePath="${VSVEXECDIR}/Lib/BIGASSERT/conferralRules.py"\n      functionName="bridgeAcross_t_sip_Models"\n      functionExtraArgsString="bridgeFromTMAName = \'BigAssert\'"\n    >%3cDesc>For each t_sip property in the TMA named in the bridgeFromTMAName keyword argument, confers a t_sip property in this TMA.%3c/Desc\n  >%3c/ConferralRule\n\n  >%3cPropertyClass PropertyClassName="t_sip" ValueType="proxyIdSet"\n    >%3cDesc>SIP of this t-proxy; subject is a relationship type.%3c/Desc\n    >%3cAdd__PropToOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="Add_proxyIdSet_PropToOverheadDict"\n    />%3cRemove__PropFromOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="Remove_proxyIdSet_PropFromOverheadDict"\n    />%3cValueIsInvalidFor__Property\n      functionModuleFilePath="${VSVEXECDIR}/Lib/BIGASSERT/propertyClasses.py"\n      functionName="ValueIsInvalidFor_t_sip_Property"\n      functionExtraArgsString="r_proxy_allowed_properties = [ \'r_type\', \'r_rolePlayers\', \'x_roles\']"\n    />%3cMerge__PropertyValues\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="Merge_proxyIdSet_PropertyValues"\n    />%3cValuesOf__PropertyInstancesAreSignificantlyDifferent\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="ValuesOf_proxyIdSet_PropertyInstancesAreSignificantlyDifferent"\n    />%3cContextOf__PropertyIsInvalid\n      functionModuleFilePath="propertyClasses.py"\n      functionName="ContextOf_TRA_assert_PropertyIsInvalid"\n      functionExtraArgsString="\'t_sip\'"\n    />%3cMergeProxiesBecause__PropertyInstancesSpecifySameSubject\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="MergeProxiesBecause_proxyIdSet_PropertyInstancesSpecifySameSubject"\n    />%3cProxiesWith__ValueNotSignificantlyDifferentFrom\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="ProxiesOfSubjectIdentifiedBy_proxyIdSet_Value"\n    />%3cUpdateProxyReferencesIn__Value\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="UpdateProxyReferencesIn_proxyIdSet_Value"\n  />%3c/PropertyClass\n\n  >%3cPropertyClass PropertyClassName="r_type" ValueType="proxyIdSet"\n    >%3cDesc>Refers to the t-proxy whose subject is the relationship type in which the subject of this r-proxy is one of the roles.%3c/Desc\n    >%3cAdd__PropToOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="Add_proxyIdSet_PropToOverheadDict"\n    />%3cRemove__PropFromOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="Remove_proxyIdSet_PropFromOverheadDict"\n    />%3cValueIsInvalidFor__Property\n      functionModuleFilePath="${VSVEXECDIR}/Lib/BIGASSERT/propertyClasses.py"\n      functionName="ValueIsInvalidFor_r_type_Property"\n    />%3cMerge__PropertyValues\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="Merge_proxyIdSet_PropertyValues"\n    />%3cValuesOf__PropertyInstancesAreSignificantlyDifferent\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="ValuesOf_proxyIdSet_PropertyInstancesAreSignificantlyDifferent"\n    />%3cContextOf__PropertyIsInvalid\n      functionModuleFilePath="propertyClasses.py"\n      functionName="ContextOf_TRA_assert_PropertyIsInvalid"\n      functionExtraArgsString="\'r_type\'"\n    />%3cProxiesWith__ValueNotSignificantlyDifferentFrom\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="ProxiesOfSubjectIdentifiedBy_proxyIdSet_Value"\n    />%3cUpdateProxyReferencesIn__Value\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="UpdateProxyReferencesIn_proxyIdSet_Value"\n  />%3c/PropertyClass\n\n  >%3cPropertyClass PropertyClassName="r_rolePlayers" ValueType="proxyIdSet"\n    >%3cDesc>Refers to the x-proxies whose subjects are the roleplayers of the role that is the subject of this r-proxy.%3c/Desc\n    >%3cAdd__PropToOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="Add_proxyIdSet_PropToOverheadDict"\n    />%3cRemove__PropFromOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="Remove_proxyIdSet_PropFromOverheadDict"\n    />%3cValueIsInvalidFor__Property\n      functionModuleFilePath="propertyClasses.py"\n      functionName="ValueIsInvalidFor_r_rolePlayers_Property"\n    />%3cMerge__PropertyValues\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="Merge_proxyIdSet_PropertyValues"\n    />%3cValuesOf__PropertyInstancesAreSignificantlyDifferent\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="ValuesOf_proxyIdSet_PropertyInstancesAreSignificantlyDifferent"\n    />%3cContextOf__PropertyIsInvalid\n      functionModuleFilePath="propertyClasses.py"\n      functionName="ContextOf_TRA_assert_PropertyIsInvalid"\n      functionExtraArgsString="\'r_rolePlayers\'"\n    />%3cProxiesWith__ValueNotSignificantlyDifferentFrom\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="ProxiesOfSubjectIdentifiedBy_proxyIdSet_Value"\n    />%3cUpdateProxyReferencesIn__Value\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="UpdateProxyReferencesIn_proxyIdSet_Value"\n  />%3c/PropertyClass\n\n  >%3cPropertyClass PropertyClassName="x_roles" ValueType="setOfProxyRefTuples"\n    >%3cDesc>Refers to a set of r-proxy/a-proxy pairs that specify the roles/assertions in which the subject of this proxy is the role player.%3c/Desc\n    >%3cAdd__PropToOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCsetOfProxyRefTuples.py"\n      functionName="Add_setOfProxyRefTuples_PropToOverheadDict"\n    />%3cRemove__PropFromOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCsetOfProxyRefTuples.py"\n      functionName="Remove_setOfProxyRefTuples_PropFromOverheadDict"\n    />%3cValueIsInvalidFor__Property\n      functionModuleFilePath="propertyClasses.py"\n      functionName="ValueIsInvalidFor_x_roles_Property"\n      functionExtraArgsString="r_proxy_allowed_properties = [ \'r_type\', \'r_rolePlayers\', \'x_roles\'], a_proxy_allowed_properties = [ \'a_type\', \'a_sip\', \'x_roles\']"\n    />%3cMerge__PropertyValues\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCsetOfProxyRefTuples.py"\n      functionName="Merge_setOfProxyRefTuples_PropertyValues"\n    />%3cValuesOf__PropertyInstancesAreSignificantlyDifferent\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCsetOfProxyRefTuples.py"\n      functionName="ValuesOf_setOfProxyRefTuples_PropertyInstancesAreSignificantlyDifferent"\n    />%3cProxiesWith__ValueNotSignificantlyDifferentFrom\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCsetOfProxyRefTuples.py"\n      functionName="ProxiesOfSubjectIdentifiedBy_setOfProxyRefTuples_Value"\n    />%3cUpdateProxyReferencesIn__Value\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCsetOfProxyRefTuples.py"\n      functionName="UpdateProxyReferencesIn_setOfProxyRefTuples_Value"\n  />%3c/PropertyClass\n\n  >%3cPropertyClass PropertyClassName="t_assertions" ValueType="proxyIdSet"\n    >%3cDesc>Refers to the a-proxies whose subjects are the relationships that are instances of the relationship type that is the subject of this t-proxy.%3c/Desc\n    >%3cAdd__PropToOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="Add_proxyIdSet_PropToOverheadDict"\n    />%3cRemove__PropFromOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="Remove_proxyIdSet_PropFromOverheadDict"\n    />%3cValueIsInvalidFor__Property\n      functionModuleFilePath="${VSVEXECDIR}/Lib/BIGASSERT/propertyClasses.py"\n      functionName="ValueIsInvalidFor_t_assertions_Property"\n    />%3cMerge__PropertyValues\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="Merge_proxyIdSet_PropertyValues"\n    />%3cValuesOf__PropertyInstancesAreSignificantlyDifferent\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="ValuesOf_proxyIdSet_PropertyInstancesAreSignificantlyDifferent"\n    />%3cContextOf__PropertyIsInvalid\n      functionModuleFilePath="propertyClasses.py"\n      functionName="ContextOf_TRA_assert_PropertyIsInvalid"\n      functionExtraArgsString="\'t_assertions\'"\n    />%3cProxiesWith__ValueNotSignificantlyDifferentFrom\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="ProxiesOfSubjectIdentifiedBy_proxyIdSet_Value"\n    />%3cUpdateProxyReferencesIn__Value\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="UpdateProxyReferencesIn_proxyIdSet_Value"\n  />%3c/PropertyClass\n\n  >%3cPropertyClass PropertyClassName="a_type" ValueType="proxyIdSet"\n    >%3cDesc>Refers to the t-proxy whose subject is the relationship type of which the subject of this a-proxy is an instance.%3c/Desc\n    >%3cAdd__PropToOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="Add_proxyIdSet_PropToOverheadDict"\n    />%3cRemove__PropFromOverheadDict\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="Remove_proxyIdSet_PropFromOverheadDict"\n    />%3cValueIsInvalidFor__Property\n      functionModuleFilePath="${VSVEXECDIR}/Lib/BIGASSERT/propertyClasses.py"\n      functionName="ValueIsInvalidFor_a_type_Property"\n    />%3cMerge__PropertyValues\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="Merge_proxyIdSet_PropertyValues"\n    />%3cValuesOf__PropertyInstancesAreSignificantlyDifferent\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="ValuesOf_proxyIdSet_PropertyInstancesAreSignificantlyDifferent"\n    />%3cContextOf__PropertyIsInvalid\n      functionModuleFilePath="propertyClasses.py"\n      functionName="ContextOf_TRA_assert_PropertyIsInvalid"\n      functionExtraArgsString="\'a_type\'"\n    />%3cProxiesWith__ValueNotSignificantlyDifferentFrom\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="ProxiesOfSubjectIdentifiedBy_proxyIdSet_Value"\n    />%3cUpdateProxyReferencesIn__Value\n      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"\n      functionName="UpdateProxyReferencesIn_proxyIdSet_Value"\n  />%3c/PropertyClass\n\n>%3c/VersavantTMA>\n'%0ap1%0a.</TMAConfigFile

    ><TMAModule ModName="001_PCproxyIdSet" ModSrcFileName="001_PCproxyIdSet.py">S'#####################################################################\n#####################################################################\n## Copyright 2005 Steven R. Newcomb                                ##\n##                                                                 ##\n## This software is licensed under the Apache License, Version 2.0 ##\n## (the "License"); you may not use this file except in compliance ##\n## with the License.  Copies of the License are available at       ##\n##        http://www.apache.org/licenses/LICENSE-2.0               ##\n##                                                                 ##\n## Unless required by applicable law or agreed to in writing,      ##\n## software distributed under the License is distributed on an "AS ##\n## IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either ##\n## express or implied.  See the License for the specific language  ##\n## governing permissions and limitations under the License.        ##\n##                                                                 ##\n## Copies of the source code and the license are available at      ##\n##        http://www.versavant.org                                 ##\n#####################################################################\n#####################################################################\n\n####################################\ncvsRevision = "$Revision: 1.4 $" ##\n####################################\n\n\nimport sys\n\n\n#######################################\n## proxyIdSet PC implementation ##\n#######################################\n\n## These functions are useful as implementations of SIPs or OPs whose\n## values are lists of references to proxies.  Obviously, the name\n## "proxyIdSet" only applies to these (library) functions; TMA\n## designers can use any name(s) for such properties.\n\n#######################################################\ndef Add_proxyIdSet_PropToOverheadDict( vsv, propertyInstance, overheadDict):\n\n    workDict = {}\n    for proxyId in propertyInstance._value:\n        workDict[ proxyId] = None\n    propertyInstance.listOfIdsOfReferencedProxies = propertyInstance._value = workDict.keys()\n\n    hashablePropertyValue = propertyInstance.hashablePropertyValue = frozenset( propertyInstance._value)\n\n    if overheadDict.has_key( hashablePropertyValue):\n        if overheadDict[ hashablePropertyValue].has_key( propertyInstance.proxyId):\n            vsv.errMsg( \'ProxyId %25s is already listed in the overheadDict of property class for the value (%25s)\' %25 (\n                propertyInstance.proxyId, propertyInstance._value))\n            sys.exit( 1)\n        overheadDict[ hashablePropertyValue][ propertyInstance.proxyId] = None\n    else:\n        overheadDict[ hashablePropertyValue] = { propertyInstance.proxyId: None}\n\n    vsv.addNewProxyReferencesToReferencedProxiesDict( propertyInstance)\n\n#######################################################\ndef Remove_proxyIdSet_PropFromOverheadDict( vsv, propertyInstance, overheadDict):\n    hashablePropertyValue = propertyInstance.hashablePropertyValue\n    if not overheadDict.has_key( hashablePropertyValue):\n        vsv.errMsg( \'No entry in overheadDict of property class for the value (%25s) of property %25s\' %25 (\n            propertyInstance._value,\n            vsv.catKey( propertyInstance.topicMap.topicMapName, propertyInstance.propertyInstanceKey)))\n        sys.exit( 1)\n    if propertyInstance.proxyId not in overheadDict[ hashablePropertyValue]:\n        vsv.errMsg( \'ProxyId %25s not found in the overheadDict of property class for the value (%25s) of property %25s\' %25 (\n            propertyInstance.proxyId,\n            propertyInstance._value,\n            vsv.catKey( propertyInstance.topicMap.topicMapName, propertyInstance.propertyInstanceKey)))\n        sys.exit( 1)\n\n    del overheadDict[ hashablePropertyValue][ propertyInstance.proxyId]\n    if not len( overheadDict[ hashablePropertyValue]):\n        del overheadDict[ hashablePropertyValue]\n\n    vsv.removeOldProxyReferencesFromReferencedProxiesDict( propertyInstance)\n\n#######################################################\ndef ValueIsInvalidFor_proxyIdSet_Property( vsv, propertyValue, propertyClass, propertyInstance = None):\n    ## the value type validator does everything necessary\n    return False\n\n#######################################################\ndef Merge_proxyIdSet_PropertyValues( vsv, value1, value2):\n    newProxyIdSet = {}\n    for proxyId in value1:\n        newProxyIdSet[ proxyId] = None\n    for proxyId in value2:\n        newProxyIdSet[ proxyId] = None\n    return newProxyIdSet.keys()\n\n#######################################################\ndef ValuesOf_proxyIdSet_PropertyInstancesAreSignificantlyDifferent( vsv, value1, value2):\n    if frozenset( value1) != frozenset( value2):  ## ignore differences in sequence and ignore redundant entries\n        return True\n    return False\n\n#######################################################\ndef MergeProxiesBecause_proxyIdSet_PropertyInstancesSpecifySameSubject( vsv, propertyClass):\n    for key in propertyClass.overheadDict:\n        if len( propertyClass.overheadDict[ key]) > 1:\n            vsv.mergeListOfProxies( propertyClass, propertyClass.overheadDict[ key].keys())\n\n#######################################################\ndef ProxiesOfSubjectIdentifiedBy_proxyIdSet_Value( vsv, propertyClass, value):\n    hashablePropertyValue = frozenset( value)\n    if propertyClass.overheadDict.has_key( hashablePropertyValue):\n        return propertyClass.overheadDict[ hashablePropertyValue].keys()\n    else:\n        return []  ## empty list -- no match\n\n#######################################################\ndef UpdateProxyReferencesIn_proxyIdSet_Value( vsv, propertyInstance, proxyIdToReplace, replacementProxyId):\n    value = propertyInstance._value\n    if proxyIdToReplace not in value:\n        vsv.errMsg( \'proxyIdToReplace "%25s" not found in the value of %25s\' %25 (\n            proxyIdToReplace,\n            vsv.catKey( propertyInstance.topicMap.topicMapName, propertyInstance.propertyInstanceKey)))\n        sys.exit( 1)\n\n    propertyClass = propertyInstance.propertyClass\n    \n\n    ## Remove old value from the "overhead" data for this property class\n    if propertyClass.Remove__PropFromOverheadDictFArgString:\n        execStr = \'propertyClass.Remove__PropFromOverheadDictF( vsv, propertyInstance, propertyClass.overheadDict, %25s)\' %25 (\n            propertyClass.Remove__PropFromOverheadDictFArgString)\n        exec execStr\n    else:\n        propertyClass.Remove__PropFromOverheadDictF( vsv, propertyInstance, propertyClass.overheadDict)\n\n    ## Replace the proxyIdToReplace with the replacementProxyId\n    oldValue = value[:]\n    del value[:]\n    for proxyId in oldValue:\n        if proxyId == proxyIdToReplace:\n            proxyId = replacementProxyId\n        if proxyId not in value:\n            value.append( proxyId)\n        \n    ## Expose the list of proxy references that appear in the value as a list of proxyIds\n    propertyInstance.listOfIdsOfReferencedProxies = value\n        ## happens to be a list, so use the same list\n\n\n    ## Add new value to the "overhead" data for this property class\n    if propertyClass.Add__PropToOverheadDictFArgString:\n        execStr = \'propertyClass.Add__PropToOverheadDictF( vsv, propertyInstance, propertyClass.overheadDict, %25s)\' %25 (\n            propertyClass.Add__PropToOverheadDictFArgString)\n        exec execStr\n    else:\n        propertyClass.Add__PropToOverheadDictF( vsv, propertyInstance, propertyClass.overheadDict)\n\n'%0ap1%0a.</TMAModule

    ><TMAModule ModName="001_PCsetOfProxyRefTuples" ModSrcFileName="001_PCsetOfProxyRefTuples.py">S'#####################################################################\n#####################################################################\n## Copyright 2005 Steven R. Newcomb                                ##\n##                                                                 ##\n## This software is licensed under the Apache License, Version 2.0 ##\n## (the "License"); you may not use this file except in compliance ##\n## with the License.  Copies of the License are available at       ##\n##        http://www.apache.org/licenses/LICENSE-2.0               ##\n##                                                                 ##\n## Unless required by applicable law or agreed to in writing,      ##\n## software distributed under the License is distributed on an "AS ##\n## IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either ##\n## express or implied.  See the License for the specific language  ##\n## governing permissions and limitations under the License.        ##\n##                                                                 ##\n## Copies of the source code and the license are available at      ##\n##        http://www.versavant.org                                 ##\n#####################################################################\n#####################################################################\n\n####################################\ncvsRevision = "$Revision: 1.3 $" ##\n####################################\n\n\nimport sys\n\n\n###################################\n## setOfProxyRefTuples PC implementation ##\n###################################\n\n#######################################################\ndef Add_setOfProxyRefTuples_PropToOverheadDict( vsv, propertyInstance, overheadDict):\n\n    value = propertyInstance._value\n\n    hashablePropertyValue = propertyInstance.hashablePropertyValue = frozenset( value)\n    if overheadDict.has_key( hashablePropertyValue):\n        if propertyInstance.proxyId not in overheadDict[ hashablePropertyValue]:\n            overheadDict[ hashablePropertyValue].append( propertyInstance.proxyId)\n    else:\n        overheadDict[ hashablePropertyValue] = [ propertyInstance.proxyId]\n\n    proxyRefSet = {}\n    for tuple in value:\n        for member in tuple:\n            proxyRefSet[ member] = None\n    propertyInstance.listOfIdsOfReferencedProxies = proxyRefSet.keys()\n    vsv.addNewProxyReferencesToReferencedProxiesDict( propertyInstance)\n\n#######################################################\ndef Remove_setOfProxyRefTuples_PropFromOverheadDict( vsv, propertyInstance, overheadDict):\n    hashablePropertyValue = propertyInstance.hashablePropertyValue\n    if not overheadDict.has_key( hashablePropertyValue):\n        vsv.errMsg( \'No entry in overheadDict of property class for the value (%25s) of property %25s\' %25 (\n            propertyInstance._value,\n            vsv.catKey( propertyInstance.topicMap.topicMapName, propertyInstance.propertyInstanceKey)))\n        sys.exit( 1)\n\n    if propertyInstance.proxyId not in overheadDict[ hashablePropertyValue]:\n        vsv.errMsg( \'ProxyId %25s not found in the overheadDict of property class for the value (%25s) of property %25s\' %25 (\n            propertyInstance.proxyId,\n            propertyInstance._value,\n            vsv.catKey( propertyInstance.topicMap.topicMapName, propertyInstance.propertyInstanceKey)))\n        sys.exit( 1)\n\n    overheadDict[ hashablePropertyValue].remove( propertyInstance.proxyId)\n    if not len( overheadDict[ hashablePropertyValue]):\n        del overheadDict[ hashablePropertyValue]\n\n    vsv.removeOldProxyReferencesFromReferencedProxiesDict( propertyInstance)\n\n#######################################################\ndef Merge_setOfProxyRefTuples_PropertyValues( vsv, value1, value2):\n    newValue = {}\n    for thisTuple in value1:\n        newValue[ thisTuple] = None\n    for thisTuple in value2:\n        newValue[ thisTuple] = None\n    return newValue.keys()\n\n#######################################################\ndef ValuesOf_setOfProxyRefTuples_PropertyInstancesAreSignificantlyDifferent( vsv, value1, value2):\n    if frozenset( value1) != frozenset( value2):  ## ignore differences in sequence and ignore redundant entries\n        return True\n    return False\n\n#######################################################\ndef MergeProxiesBecause_setOfProxyRefTuples_PropertyInstancesSpecifySameSubject( vsv, propertyClass):\n    for key in propertyClass.overheadDict:\n        if len( propertyClass.overheadDict[ key]) > 1:\n            vsv.mergeListOfProxies( propertyClass, propertyClass.overheadDict[ key])\n\n#######################################################\ndef ProxiesOfSubjectIdentifiedBy_setOfProxyRefTuples_Value( vsv, propertyClass, value):\n    hashablePropertyValue = frozenset( value)\n    if propertyClass.overheadDict.has_key( hashablePropertyValue):\n        return propertyClass.overheadDict[ hashablePropertyValue]\n    else:\n        return []  ## empty list -- no match\n\n#######################################################\ndef UpdateProxyReferencesIn_setOfProxyRefTuples_Value( vsv, propertyInstance, proxyIdToReplace, replacementProxyId):\n    oldValue = propertyInstance._value\n    newValueSet = {}  ## if it turns out that two tuples wind up being the same,\n                   ## this method will make sure that only one of them\n                   ## remains.\n    proxyRefSet = {}  \n    foundProxyIdToReplace = False\n    for oldTuple in oldValue:\n        newTupleList = []\n        for oldMember in oldTuple:\n            if oldMember == proxyIdToReplace:\n                newTupleList.append( replacementProxyId)\n                proxyRefSet[ replacementProxyId] = None\n                foundProxyIdToReplace = True\n            else:\n                newTupleList.append( oldMember)\n                proxyRefSet[ oldMember] = None\n        newValueSet[ tuple( newTupleList)] = None\n\n##     CANNOT DO THIS CHECK because sometimes a proxy reference is updated multiple times in the same merge cycle.\n##     if not foundProxyIdToReplace:\n##         vsv.errMsg( \'Did not find reference to proxy %25s in propertyInstance %25s.\' %25 ( proxyIdToReplace, propertyInstance.propertyInstanceKey))\n## ###\n##         vsv.inspect( proxyId=propertyInstance.proxy.proxyId)\n## ###        \n##         sys.exit( 1)\n\n    propertyClass = propertyInstance.propertyClass\n    \n\n    ## Remove old value from the "overhead" data for this property class\n    if propertyClass.Remove__PropFromOverheadDictFArgString:\n        execStr = \'propertyClass.Remove__PropFromOverheadDictF( vsv, propertyInstance, propertyClass.overheadDict, %25s)\' %25 (\n            propertyClass.Remove__PropFromOverheadDictFArgString)\n        exec execStr\n    else:\n        propertyClass.Remove__PropFromOverheadDictF( vsv, propertyInstance, propertyClass.overheadDict)\n\n    ## Replace the old value with the new one\n    del oldValue[:]\n    oldValue.extend( newValueSet.keys())\n        \n    ## Expose the list of proxy references that appear in the value as a list of proxyIds\n    propertyInstance.listOfIdsOfReferencedProxies = proxyRefSet.keys()\n\n    ## Add new value to the "overhead" data for this property class  (this sets propertyInstance.hashablevalue)\n    if propertyClass.Add__PropToOverheadDictFArgString:\n        execStr = \'propertyClass.Add__PropToOverheadDictF( vsv, propertyInstance, propertyClass.overheadDict, %25s)\' %25 (\n            propertyClass.Add__PropToOverheadDictFArgString)\n        exec execStr\n    else:\n        propertyClass.Add__PropToOverheadDictF( vsv, propertyInstance, propertyClass.overheadDict)\n\n\n\n'%0ap1%0a.</TMAModule

    ><TMAModule ModName="001_VTproxyIdList" ModSrcFileName="001_VTproxyIdList.py">S'#####################################################################\n#####################################################################\n## Versavant Topic Map Application Bus / Subject Addressing Engine ##\n## Copyright 2005 Steven R. Newcomb                                ##\n##                                                                 ##\n## This software is licensed under the Apache License, Version 2.0 ##\n## (the "License"); you may not use this file except in compliance ##\n## with the License.  Copies of the License are available at       ##\n##        http://www.apache.org/licenses/LICENSE-2.0               ##\n##                                                                 ##\n## Unless required by applicable law or agreed to in writing,      ##\n## software distributed under the License is distributed on an "AS ##\n## IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either ##\n## express or implied.  See the License for the specific language  ##\n## governing permissions and limitations under the License.        ##\n##                                                                 ##\n## Copies of the source code and the license are available at      ##\n##        http://www.versavant.org                                 ##\n#####################################################################\n#####################################################################\n\n####################################\ncvsRevision = "$Revision: 1.5 $" ##\n####################################\n\n\n#############################################\n## "proxyIdList" value type implementation ##\n#############################################\n\n## This value type is useful for storing references to proxies,\n## regardless of whether they are treated by the property classes that\n## use this value type are lists or sets.  For example, you should use\n## this "proxyIdList" value type for both "proxyIdSet"-type property\n## classes and "proxyIdList"-type property classes.  At this level,\n## it doesn\'t matter.\n\n## Values are lists of proxyIds, i.e., proxy.proxyId values, which are\n## always strings of decimal digits that begin with two zeroes.\n\n## When you create other value types that contain proxy references,\n## you can use this implementation as a guide.  It\'s tricky to\n## manage proxy references, not only because they die when merged, but\n## also because they can\'t possibly retain their original IDs when\n## they are imported.\n\n## NOTE: During importation of instances of this value type from XML,\n## some recordkeeping is done in vsv.currentTopicMapHoldingDict[\n## \'IoMapsDict\'][ (TMA name)][ propertyClassName].  \n\nimport types, traceback\n\n#######################################################\ndef ValueIsNotOfType_proxyIdList_(vsv, propertyValue, propertyClass, propertyInstance = None, **args):\n    propertyClassName = propertyClass.propertyClassName\n    topicMap = propertyClass.topicMap\n    TMA = propertyClass.TMA\n    TMAName = TMA.TMAName\n\n    if not isinstance( propertyValue, types.ListType):\n        traceback.print_stack()\n        if propertyInstance:\n            vsv.errMsg( \'Value "%25s" of property %25s is not a list.\' %25 ( propertyValue, propertyInstance.propertyInstanceKey))\n        else:\n            vsv.errMsg( \'Value "%25s" of a prospective %25s property is not a list.\' %25 ( propertyValue, vsv.catKey( TMAName, propertyClassName)))\n        return True\n\n    for proxyId in propertyValue:\n        if not isinstance(proxyId, types.StringType):\n            if propertyInstance:\n                vsv.errMsg( \'An item ("%25s") in the value of property %25s is not a string.\' %25 ( proxyId, propertyInstance.propertyInstanceKey))\n            else:\n                vsv.errMsg( \'An item ("%25s") in the value of a presumptive %25s property is not a string.\' %25 ( proxyId, vsv.catKey( TMAName, propertyClassName)))\n            return True\n        if not vsv.proxyIdStrValidatorRE.match( proxyId):\n            if propertyInstance:\n                vsv.errMsg( \'An item ("%25s") in the value of property %25s does not look like a proxy identifier string.\' %25 ( proxyId, propertyInstance.propertyInstanceKey))\n            else:\n                vsv.errMsg( \'An item ("%25s") in the value of a presumptive %25s property does not look like a proxy identifier string.\' %25 ( proxyId, vsv.catKey( TMAName, propertyClassName)))\n            return True\n\n        proxy = vsv.isProxyId( proxyId, topicMap)\n        if not proxy:\n            if proxyId not in vsv.currentTopicMapHoldingDict[ \'IoMapsDict\'][ \'TMAs\'][ propertyInstance.TMAName][ propertyClassName]:\n                   ## We\'re probably in the process of importing a topic map, and these are\n                   ## references to proxies that don\'t exist yet because they haven\'t been imported\n                   ## yet.  The above check is supposed to calm our fears that this proxy reference\n                   ## is invalid, giving us reason to believe that it will soon be valid, even\n                   ## though it\'s not quite valid yet.\n\n                if propertyInstance:\n                    errString = \'An item ("%25s") in the list is not the ID of any proxy in topic map "%25s".\' %25 ( proxyId, propertyInstance.topicMap.topicMapName)\n                else:\n                    errString = \'An item ("%25s") in the list is not the ID of any proxy in any open topic map.\' %25 ( proxyId)\n                vsv.errMsg( errString)\n                return True\n        if proxy:\n            if proxy.forwardTo:\n                vsv.errMsg( \'An item ("%25s") in the list that is the value of property %25s is the ID of a dead proxy.  Only the IDs of living proxies are permitted.\' %25 ( proxyId, propertyInstance.topicMap.topicMapName))\n                return True\n\n    return False  ## all\'s well, presumably.                    \n\n#######################################################\ndef InstanceOf_proxyIdList_ValueTypeToXMLContentString(vsv, propertyInstance):\n    return vsv.cPickleDumpObjectAsXMLContentString( propertyInstance._value)\n\n#######################################################\ndef XMLContentStringToInstanceOf_proxyIdList_ValueType(vsv, string, propertyClass, **args):\n    ## Import a list of proxy references, adjusting them as necessary to\n    ## the new proxyIds of the imported proxies to which they refer.\n\n    oldProxyIdList = vsv.cPickleLoadObjectFromXMLContentString( string)\n\n    mem2xmlProxyIdDict = vsv.currentTopicMapHoldingDict[ \'IoMapsDict\'][ \'ProxyIds.mem2xml\']\n        ## This dictionary allows us to look up the in-xml element id of a\n        ## proxy, given the proxy\'s proxyId as it was in the topic map\n        ## from which the proxy was exported as xml.\n\n    firstImportedProxyId = vsv.firstImportedProxyId\n        ## This is an integer which, if we were to convert it into a\n        ## string of decimal digits with 2 prepended zero characters,\n        ## would be the proxyId of the first (the first, that is, not\n        ## counting the proxies created in order to register the TMAs\n        ## of the xml topic map being imported) in-memory proxy to be\n        ## imported into the being-imported-into topic map from the\n        ## xml topic map that we\'re importing.\n\n    propertyClassName = propertyClass.propertyClassName\n    TMAName = propertyClass.TMA.TMAName\n\n    newProxyIdList = []\n\n    for oldProxyId in oldProxyIdList:\n        xmlProxyNum = mem2xmlProxyIdDict[ int( oldProxyId)]\n        newProxyNum = (xmlProxyNum + firstImportedProxyId) - 1\n        newProxyId = \'00%25s\' %25 ( newProxyNum)\n        newProxyIdList.append( newProxyId)\n\n        appDict = vsv.currentTopicMapHoldingDict[ \'IoMapsDict\'][ \'TMAs\'][ TMAName]\n        if not appDict.has_key( propertyClassName):\n            appDict[ propertyClassName] = [ newProxyId]\n        else:\n            if newProxyId not in appDict[ propertyClassName]:\n                appDict[ propertyClassName].append( newProxyId)\n    ## vsv.IoMapsDict[ args[ \'TMAName\']][ propertyClassName] will be consulted by\n    ## the ValueIsNotOfType__() function in order to avoid a logical logjam over this.\n    ## The logical logjam is that we\'re referring to proxies that haven\'t been imported\n    ## yet, and the ValueIsNotOfType__() function checks to see that the proxy references are valid.\n    ## This gives the ValueIsNotOfType__() function something to fall back on, as it checks.\n    ## See that function, above, for more.\n\n    return newProxyIdList\n\n'%0ap1%0a.</TMAModule

    ><TMAModule ModName="001_VTsetOfProxyRefTuples" ModSrcFileName="001_VTsetOfProxyRefTuples.py">S'#####################################################################\n#####################################################################\n## Versavant Topic Map Application Bus / Subject Addressing Engine ##\n## Copyright 2005 Steven R. Newcomb                                ##\n##                                                                 ##\n## This software is licensed under the Apache License, Version 2.0 ##\n## (the "License"); you may not use this file except in compliance ##\n## with the License.  Copies of the License are available at       ##\n##        http://www.apache.org/licenses/LICENSE-2.0               ##\n##                                                                 ##\n## Unless required by applicable law or agreed to in writing,      ##\n## software distributed under the License is distributed on an "AS ##\n## IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either ##\n## express or implied.  See the License for the specific language  ##\n## governing permissions and limitations under the License.        ##\n##                                                                 ##\n## Copies of the source code and the license are available at      ##\n##        http://www.versavant.org                                 ##\n#####################################################################\n#####################################################################\n\n####################################\ncvsRevision = "$Revision: 1.3 $" ##\n####################################\n\n\n###################################################################\n## setOfProxyRefTuples  (for a_sip properties in BIGASSERT, and x_roles properties in TRA_assert)\n###################################################################\n\nimport types\n\n#################################################\n## implementation of                           ##\n## setOfProxyRefTuples                         ##\n#################################################\n\n#######################################################\ndef ValueIsNotOfType_setOfProxyRefTuples_( vsv, propertyValue, propertyClass, propertyInstance = None):\n    if not isinstance( propertyValue, types.ListType):\n        vsv.errMsg( \'Value "%25s" is not a list.\' %25 ( propertyValue))\n        return True\n    for tuple in propertyValue:\n        if not isinstance( tuple, types.TupleType):\n            vsv.errMsg( \'Value is a list that contains an item (%25s) that is not a tuple.\' %25 ( tuple))\n            return True\n        for member in tuple:\n            if not isinstance( member, types.StringType):\n                vsv.errMsg( \'Value is a list that contains an item that is a tuple that contains a member (%25s) that is not a string.\' %25 ( member))\n                return True\n            if not vsv.nowImporting:\n                if propertyInstance:\n                    proxy = vsv.isProxyId( member, propertyInstance.topicMap)\n                    if not proxy:\n                        vsv.errMsg( \'Value is a list that contains an item that is a tuple that contains a member (%25s) that is a string that is not a proxyId in topic map "%25s".\' %25 ( member, propertyInstance.topicMap.topicMapName))\n                        return True\n                    if proxy.forwardTo:\n                        vsv.errMsg( \'Value is a list that contains an item that is a tuple that contains a member (%25s) that is a string that is the proxyId (in topic map "%25s") of a dead proxy.  Only living proxies can be referenced.\' %25 ( member, propertyInstance.topicMap.topicMapName))\n                        return True\n                else:\n                    proxy = vsv.isProxyId( member)\n                    if not proxy:\n                        vsv.errMsg( \'Value is a list that contains an item that is a tuple that contains a member (%25s) that is a string that is not a proxyId.\' %25 ( member))\n                        return True\n                    if proxy.forwardTo:\n                        vsv.errMsg( \'Value is a list that contains an item that is a tuple that contains a member (%25s) that is a string that is the proxyId of a dead proxy.  Only living proxies can be referenced.\' %25 ( member))\n\n    return False\n\n#######################################################\ndef InstanceOf_setOfProxyRefTuples_ValueTypeToXMLContentString( vsv, propertyInstance):\n    return vsv.cPickleDumpObjectAsXMLContentString( propertyInstance._value)\n\n#######################################################\ndef XMLContentStringToInstanceOf_setOfProxyRefTuples_ValueType( vsv, string, propertyClass):\n    ## Import a list of proxy references, adjusting them as necessary to\n    ## the new proxyIds of the imported proxies to which they refer.\n\n    propertyClassName = propertyClass.propertyClassName\n    TMAName = propertyClass.TMA.TMAName\n\n    oldSetOfProxyRefTuples = vsv.cPickleLoadObjectFromXMLContentString( string)\n\n    mem2xmlProxyIdDict = vsv.currentTopicMapHoldingDict[ \'IoMapsDict\'][ \'ProxyIds.mem2xml\']\n        ## This dictionary allows us to look up the in-xml element id of a\n        ## proxy, given the proxy\'s proxyId as it was in the topic map\n        ## from which the proxy was exported as xml.\n\n    firstImportedProxyId = vsv.firstImportedProxyId\n        ## This is an integer which, if we were to convert it into a\n        ## string of decimal digits with 2 prepended zero characters,\n        ## would be the proxyId of the first (the first, that is, not\n        ## counting the proxies created in order to register the TMAs\n        ## of the xml topic map being imported) in-memory proxy to be\n        ## imported into the being-imported-into topic map from the\n        ## xml topic map that we\'re importing.\n\n    newSetOfProxyRefTuples = []\n\n    for oldTuple in oldSetOfProxyRefTuples:\n        newTupleList = []\n        for oldProxyId in oldTuple:\n            xmlProxyNum = mem2xmlProxyIdDict[ int( oldProxyId)]\n            newProxyNum = (xmlProxyNum + firstImportedProxyId) - 1\n            newProxyId = \'00%25s\' %25 ( newProxyNum)\n\n            newTupleList.append( newProxyId)\n\n            appDict = vsv.currentTopicMapHoldingDict[ \'IoMapsDict\'][ \'TMAs\'][ TMAName]\n            if not appDict.has_key( propertyClassName):\n                appDict[ propertyClassName] = [ newProxyId]\n            else:\n                if newProxyId not in appDict[ propertyClassName]:\n                    appDict[ propertyClassName].append( newProxyId)\n\n        newSetOfProxyRefTuples.append( tuple( newTupleList))\n\n    ## vsv.IoMapsDict[ args[ \'TMAName\']][ propertyClassName] will be consulted by\n    ## the ValueIsNotOfType__() function in order to avoid a logical logjam over this.\n    ## The logical logjam is that we\'re referring to proxies that haven\'t been imported\n    ## yet, and the ValueIsNotOfType__() function checks to see that the proxy references are valid.\n    ## This gives the ValueIsNotOfType__() function something to fall back on, as it checks.\n    ## See that function, above, for more.\n\n    return newSetOfProxyRefTuples\n\n'%0ap1%0a.</TMAModule

    ><TMAModule ModName="001_conferralRules" ModSrcFileName="001_conferralRules.py">S'#####################################################################\n#####################################################################\n## Copyright 2005 Steven R. Newcomb                                ##\n##                                                                 ##\n## This software is licensed under the Apache License, Version 2.0 ##\n## (the "License"); you may not use this file except in compliance ##\n## with the License.  Copies of the License are available at       ##\n##        http://www.apache.org/licenses/LICENSE-2.0               ##\n##                                                                 ##\n## Unless required by applicable law or agreed to in writing,      ##\n## software distributed under the License is distributed on an "AS ##\n## IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either ##\n## express or implied.  See the License for the specific language  ##\n## governing permissions and limitations under the License.        ##\n##                                                                 ##\n## Copies of the source code and the license are available at      ##\n##        http://www.versavant.org                                 ##\n#####################################################################\n#####################################################################\n\n\n#####################################################################\n## Implementation of the conferral rules "inferFrom_a_sip_"\n## in Topic Map Application "BIGASSERT".\n#####################################################################\n\n####################################\ncvsRevision = "$Revision: 1.4 $" ##\n####################################\n\n\nimport sys, copy\n\ndef inferFrom_a_sip_( vsv, conferralRule, **args):\n\n##         a_sip properties trigger conferrals as follows:\n\n##            - if assertionModel == \'BigAssert\' or assertionModel == \'TRA_assert\':\n##              a t-proxy, with its t_sip and t_assertions properties.\n##              The t_sip property\'s value is a list of references to the\n##              set of r-proxies (the ones that are referenced as the\n##              first member of each tuple in the a_sip property\'s\n##              value).  The t_assertions property\'s value is a list of\n##              proxy references with one item in it - a reference to\n##              the a-proxy that has this a_sip property.\n\n##            - for each tuple in the a_sip property value, the following\n##              are conferred into existence:\n\n##               . if assertionModel == \'BigAssert\':\n##                 a c-proxy, with its c_sip property.  (See c_sip,\n##                 below.)\n\n##               . if assertionModel == \'BigAssert\':\n##                 an r-proxy, with its r_type and r_castings properties,\n##                 plus an SIP that is not governed by this TMA but is\n##                 already extant.\n\n##               . if assertionModel == \'TRA_assert\':\n##                 an r-proxy, with its r_type and r_rolePlayers properties,\n##                 plus an SIP that is not governed by this TMA but is\n##                 already extant.\n\n##            - for each tuple in the a_sip property value that has two\n##              members (i.e., that has a reference to an x-proxy)\n\n##               . if assertionModel == \'BigAssert\':\n##                 an x-proxy, with its x_castings property, plus the SIP\n##                 not governed by this TMA but already extant\n\n##               . if assertionModel == \'TRA_assert\':\n##                 an x-proxy, with its x_roles property, which in\n##                 this case consists of duples, the first member of\n##                 which is a reference to an r-proxy, and the second\n##                 member of which is a reference to an a-proxy, plus\n##                 the SIP not governed by this TMA but already extant\n\n##               . if assertionModel == \'A_assert\':\n##                 an x-proxy, with its x_roles property, which in\n##                 this case consists of duples, the first member of\n##                 which is a rolename of an (unreified) role, and the second\n##                 member of which is a reference to an a-proxy, plus\n##                 the SIP not governed by this TMA but already extant\n\n##            - if assertionModel == \'BigAssert\' or assertionModel == \'TRA_assert\':\n##              an a_type property on a new a_proxy that has a copy of\n##              the triggering a_sip property.\n\n##            - if assertionModel == \'BigAssert\':\n##              an a_castings property on a new a_proxy that has a\n##              copy of the triggering a_sip property.\n\n\n    assertionModel = args[ \'assertionModel\']  ## possible values: \'BigAssert\', \'TRA_assert\', \'A_assert\'\n\n    topicMap = conferralRule.topicMap  ## make the below code less verbose (and maybe run slightly faster)\n    TMA = conferralRule.TMA  ## this is the TMA that defines this conferral rule\n    old_a_sip_overheadDict = TMA.propertyClasses[ \'a_sip\'].overheadDict\n\n    old_a_sip_hashableValueList = old_a_sip_overheadDict.keys()\n\n    for old_a_sip_hashableValue in old_a_sip_hashableValueList:\n\n        old_a_proxyIdList = old_a_sip_overheadDict[ old_a_sip_hashableValue]\n\n        for old_a_proxyId in old_a_proxyIdList:\n\n            old_a_proxy = topicMap.proxies[ old_a_proxyId]\n            old_a_sip_instance = old_a_proxy.propertyInstances[ vsv.catKey( TMA.TMAName, \'a_sip\')]\n\n            ## Don\'t be triggered by any a_sip_instance that was\n            ## output by an operation of this rule, and don\'t be\n            ## triggered by an a_sip_instance property more than once.\n            conferralRuleTriggerRoleId = vsv.catKey( conferralRule.conferralRuleKey, \'a_sip value\')\n            if old_a_sip_instance.conferralTriggerAncestry.has_key( conferralRuleTriggerRoleId) or \\\n                old_a_sip_instance.conferralsTriggered.has_key( conferralRuleTriggerRoleId):\n                continue\n\n            triggers = {}  ## new dictionary to work in\n            triggers[ \'a_sip value\'] = old_a_sip_instance.propertyInstanceKey\n            conferredValueSources = {}  ## new dictionary to work in\n            conferredValueSources[ \'a_sip value\'] = old_a_sip_instance.propertyInstanceKey\n\n            if vsv.conferralMayBeSignificant( conferralRule, triggers, conferredValueSources):\n\n                if assertionModel == \'BigAssert\' or assertionModel == \'TRA_assert\':\n                    ## new t_proxy\n                    t_proxy = vsv.newProxyObject( topicMap)\n                    r_proxyIdList = []\n                    new_c_proxyIdList = []\n\n                for currentTuple in old_a_sip_instance._value:\n\n                    if len( currentTuple) == 2: ## If there\'s a role player\n                        ## make new x_proxy\n                        old_x_proxy = topicMap.proxies[ currentTuple[ 1]]\n                        old_x_proxy_sip = vsv.SIPOfProxy( old_x_proxy)\n\n                        x_proxy = vsv.newProxyObject( topicMap)\n\n                        vsv.newPropertyInstance( x_proxy,  ## copy the x_proxy\'s SIP\n                                                 old_x_proxy_sip.propertyClass.TMA,\n                                                 old_x_proxy_sip.propertyClass.propertyClassName,\n                                                 vsv.versaCopy( old_x_proxy_sip._value),   ## important!  Must be a copy; cannot be same object.\n                                                 triggers,\n                                                 conferredValueSources)\n\n                    if assertionModel == \'BigAssert\' or assertionModel == \'TRA_assert\':\n                        r_proxyIdList.append( currentTuple[ 0])\n\n                        if assertionModel == \'BigAssert\': ## BIGASSERT, not TRA_assert\n                            ## new c_proxy\n                            c_proxy = vsv.newProxyObject( topicMap)\n                            new_c_proxyIdList.append( c_proxy.proxyId)\n\n                            if len( currentTuple) == 1:\n                                c_sip_value = [ currentTuple[ 0], old_a_proxy.proxyId]\n                            else:  ## len( currentTuple) == 2:\n                                c_sip_value = [ currentTuple[ 0], old_a_proxy.proxyId, currentTuple[ 1]]\n\n                                vsv.newPropertyInstance( x_proxy,\n                                                         conferralRule.TMA,\n                                                         \'x_castings\',\n                                                         [ c_proxy.proxyId],\n                                                         triggers,\n                                                         conferredValueSources)\n\n\n\n                            vsv.newPropertyInstance( c_proxy,\n                                                     conferralRule.TMA,\n                                                     \'c_sip\',\n                                                     c_sip_value,\n                                                     triggers,\n                                                     conferredValueSources)\n\n                        ## new r_proxy\n                        old_r_proxy = topicMap.proxies[ currentTuple[ 0]]\n                        old_r_proxy_sip = vsv.SIPOfProxy( old_r_proxy)\n\n                        r_proxy = vsv.newProxyObject( topicMap)\n\n                        vsv.newPropertyInstance( r_proxy,  ## copy the r_proxy\'s SIP, so the new proxy will merge with the old one\n                                                 old_r_proxy_sip.propertyClass.TMA,\n                                                 old_r_proxy_sip.propertyClass.propertyClassName,\n                                                 vsv.versaCopy( old_r_proxy_sip._value),  ## important that it\'s a copy, not a reference!\n                                                 triggers,\n                                                 conferredValueSources)\n\n                        vsv.newPropertyInstance( r_proxy,\n                                                 conferralRule.TMA,\n                                                 \'r_type\',\n                                                 [ t_proxy.proxyId],\n                                                 triggers,\n                                                 conferredValueSources)\n\n                        if assertionModel == \'BigAssert\': ## BIGASSERT only, not TRA_assert or A_assert\n                            vsv.newPropertyInstance( r_proxy,\n                                                     conferralRule.TMA,\n                                                     \'r_castings\',\n                                                     [ c_proxy.proxyId],\n                                                     triggers,\n                                                     conferredValueSources)\n\n                        elif assertionModel == \'TRA_assert\': ## TRA_assert only, not BIGASSERT or A_assert\n                            vsv.newPropertyInstance( r_proxy,\n                                                     conferralRule.TMA,\n                                                     \'r_rolePlayers\',\n                                                     [ x_proxy.proxyId],\n                                                     triggers,\n                                                     conferredValueSources)\n\n                    if assertionModel == \'TRA_assert\': ## TRA_assert, not BIGASSERT, nor A_assert\n                        if len( currentTuple) == 2:\n                            vsv.newPropertyInstance( x_proxy,\n                                                     conferralRule.TMA,\n                                                     \'x_roles\',\n                                                     [ tuple( [ r_proxy.proxyId, old_a_proxy.proxyId])],\n                                                     triggers,\n                                                     conferredValueSources)\n\n                    if assertionModel == \'A_assert\': ## A_assert, not BIGASSERT, nor TRA_assert\n                        currentTupleList = list( currentTuple)\n                        if len( currentTupleList) == 1:\n                            vsv.newPropertyInstance( x_proxy,\n                                                     conferralRule.TMA,\n                                                     \'x_roles\',\n                                                     [ tuple( [ currentTupleList[ 0]])],\n                                                     triggers,\n                                                     conferredValueSources)\n                        if len( currentTupleList) == 2:\n                            vsv.newPropertyInstance( x_proxy,\n                                                     conferralRule.TMA,\n                                                     \'x_roles\',\n                                                     [ tuple( [ currentTupleList[ 0], old_a_proxy.proxyId])],\n                                                     triggers,\n                                                     conferredValueSources)\n\n                if assertionModel == \'BigAssert\' or assertionModel == \'TRA_assert\':\n                    ## set t_proxy\'s properties\n                    vsv.newPropertyInstance( t_proxy,\n                                             conferralRule.TMA,\n                                             \'t_sip\',\n                                             r_proxyIdList,\n                                             triggers,\n                                             conferredValueSources)\n\n                    vsv.newPropertyInstance( t_proxy,\n                                             conferralRule.TMA,\n                                             \'t_assertions\',\n                                             [ old_a_proxyId],\n                                             triggers,\n                                             conferredValueSources)\n\n\n\n                    ## set new a_proxy\'s properties\n                    new_a_proxy = vsv.newProxyObject( topicMap)\n\n                    vsv.newPropertyInstance( new_a_proxy,  ## copy the a_proxy\'s SIP\n                                             conferralRule.TMA,\n                                             \'a_sip\',\n                                             vsv.versaCopy( old_a_sip_instance._value),\n                                             triggers,\n                                             conferredValueSources)\n\n                    vsv.newPropertyInstance( new_a_proxy,\n                                             conferralRule.TMA,\n                                             \'a_type\',\n                                             [ t_proxy.proxyId],\n                                             triggers,\n                                             conferredValueSources)\n\n                    if assertionModel == \'BigAssert\':  ## BIGASSERT, not TRA_assert or A_assert\n                        vsv.newPropertyInstance( new_a_proxy,\n                                                 conferralRule.TMA,\n                                                 \'a_castings\',\n                                                 new_c_proxyIdList,\n                                                 triggers,\n                                                 conferredValueSources)\n\n\n\ndef bridgeAcross_a_sip_Models( vsv, conferralRule, **args):\n    ## from bridgeFromTMAName,,a_sip properties, infer a_sip\n    ## properties in the conferralRule\'s TMA.  (With all that that\n    ## entails.)\n\n    bridgeFromTMAName  = args[ \'bridgeFromTMAName\']\n    bridgeFromTMAModel = args[ \'bridgeFromTMAModel\']  ## possible values: \'BigAssert\', \'TRA_assert\', \'A_assert\'\n    bridgeToTMAModel   = args[ \'bridgeToTMAModel\']    ## possible values: \'BigAssert\', \'TRA_assert\', \'A_assert\'\n    \n    ## this happens later, iff bridging to A_assert:\n    ##   bridgeFromR_ProxyTMAName = args[ \'bridgeFromR_ProxyTMAName\']\n    ##   bridgeFromR_ProxyPropertyName = args[ \'bridgeFromR_ProxyPropertyName\']\n\n    ## this happens later, iff bridging from A_assert:\n    ##   bridgeToR_ProxyTMAName = args[ \'bridgeToR_ProxyPropertyName\']\n    ##   bridgeToR_ProxyPropertyName = args[ \'bridgeToR_ProxyPropertyName\']\n    ## Note that the bridgeToR_Proxy property must be an SIP, and there must already be an instance\n    ## of it to merge with, or Versavant will refuse to honor a request to create it.  Therefore,\n    ## an up-translation may require an original population task to pre-create the r-proxies.\n\n    topicMap = conferralRule.topicMap  ## make the below code less verbose (and maybe run slightly faster)\n    TMA = conferralRule.TMA  ## this is the TMA that defines this conferral rule\n    bridgeFromTMA = topicMap.TMAs[ bridgeFromTMAName]\n    bridgeFrom_a_sip_overheadDict = bridgeFromTMA.propertyClasses[ \'a_sip\'].overheadDict\n\n    old_a_sip_hashableValueList = bridgeFrom_a_sip_overheadDict.keys()\n\n    for old_a_sip_hashableValue in old_a_sip_hashableValueList:\n\n        old_a_proxyIdList = vsv.versaCopy( bridgeFrom_a_sip_overheadDict[ old_a_sip_hashableValue])\n\n        for old_a_proxyId in old_a_proxyIdList:\n\n            old_a_proxy = topicMap.proxies[ old_a_proxyId]\n            old_a_sip_instance = old_a_proxy.propertyInstances[ vsv.catKey( bridgeFromTMA.TMAName, \'a_sip\')]\n\n            ## Don\'t be triggered by an a_sip_instance property more\n            ## than once, and don\'t be triggered by any a_sip_instance\n            ## that was output by an operation of this rule\n            conferralRuleTriggerRoleId = vsv.catKey( conferralRule.conferralRuleKey, \'a_sip value\')\n            if old_a_sip_instance.conferralTriggerAncestry.has_key( conferralRuleTriggerRoleId) or \\\n                   old_a_sip_instance.conferralsTriggered.has_key( conferralRuleTriggerRoleId):\n                continue\n\n            triggers = {}  ## new dictionary to work in\n            triggers[ \'a_sip value\'] = old_a_sip_instance.propertyInstanceKey\n            conferredValueSources = {}  ## new dictionary to work in\n            conferredValueSources[ \'a_sip value\'] = old_a_sip_instance.propertyInstanceKey\n\n            if vsv.conferralMayBeSignificant( conferralRule, triggers, conferredValueSources):\n\n                ## new a_proxy\n                a_proxy = vsv.newProxyObject( topicMap)\n\n                vsv.newPropertyInstance( a_proxy,  ## copy the existing old_a_proxy\'s a_sip\n                                         bridgeFromTMA,\n                                         \'a_sip\',\n                                         vsv.versaCopy( old_a_sip_instance._value),\n                                         triggers,\n                                         conferredValueSources)\n\n                ## calculate this TMA\'s SIP value\n\n                if bridgeFromTMAModel not in [ \'BigAssert\', \'TRA_assert\', \'A_assert\']:\n                    vsv.errMsg( \'unrecognized bridgeFromTMAModel value: "%25s"\' %25 ( bridgeFromTMAModel))\n                    sys.exit( 1)\n\n                if bridgeToTMAModel not in [ \'BigAssert\', \'TRA_assert\', \'A_assert\']:\n                    vsv.errMsg( \'unrecognized bridgeToTMAModel value: "%25s"\' %25 ( bridgeToTMAModel))\n                    sys.exit( 1)\n\n                if bridgeFromTMAModel == bridgeToTMAModel:\n                    vsv.errMsg( \'does not make sense to bridge from bridgeFromTMAModel "%25s" to bridgeToTMAModel "%25s".\' %25 ( bridgeFromTMAModel, bridgeToTMAModel))\n                    sys.exit( 1)\n\n                if ( bridgeFromTMAModel == \'BigAssert\' and bridgeToTMAModel == \'TRA_assert\') or ( bridgeFromTMAModel == \'TRA_assert\' and bridgeToTMAModel == \'BigAssert\'):\n                    ## There\'s no difference between the a_sip properties of BigAssert vs. TRA_assert.  Just duplicate it.\n                    thisTMAs_a_sip_instanceValue = old_a_sip_instance._value\n\n                elif ( bridgeFromTMAModel == \'BigAssert\' or bridgeFromTMAModel == \'TRA_assert\') and ( bridgeToTMAModel == \'A_assert\'):\n                    ## Here we need to convert each r-proxy reference (the first member of each tuple) into a string which will serve as the role name.\n                    bridgeFromR_ProxyPropertyName = args[ \'bridgeFromR_ProxyPropertyName\']\n                    bridgeFromR_ProxyTMAName = args[ \'bridgeFromR_ProxyTMAName\']\n\n                    thisTMAs_a_sip_instanceValue = []\n                    roleNames = {}\n                    for thisTuple in old_a_sip_instance._value:\n                        r_proxy = topicMap.proxies[ thisTuple[ 0]]\n                        r_proxy_sip = r_proxy.propertyInstances[ vsv.catKey( bridgeFromR_ProxyTMAName, bridgeFromR_ProxyPropertyName)]\n                        roleName = \'%25s\' %25 ( r_proxy_sip._value)\n                        if roleName in roleNames:\n                            vsv.errMsg( \'a_sip value of proxy %25s cannot be bridged from TMA %25s (model %25s) to TMA %25s (model %25s); two or more roleNames turn out to be "%25s".\' %25 ( old_a_proxyId, bridgeFromTMAName, bridgeFromTMAModel, TMA.TMAName, bridgeToTMAModel, roleName))\n                            sys.exit( 1)\n                        roleNames[ roleName] = None\n                        newTupleList = [ roleName, thisTuple[ 1]]\n                        thisTMAs_a_sip_instanceValue.append( tuple( newTupleList))\n\n                elif ( bridgeFromTMAModel == \'A_assert\') and ( bridgeToTMAModel == \'BigAssert\' or bridgeToTMAModel == \'TRA_assert\'):\n                    bridgeToR_ProxyTMAName = args[ \'bridgeToR_ProxyTMAName\']\n                    bridgeToR_ProxyPropertyName = args[ \'bridgeToR_ProxyPropertyName\']\n\n                    thisTMAs_a_sip_instanceValue = []\n                    for thisTuple in old_a_sip_instance._value:\n                        r_proxy = vsv.newProxyObject( topicMap)\n                        vsv.newPropertyInstance( r_proxy,\n                            bridgeToR_ProxyTMAName,\n                            bridgeToR_ProxyPropertyName,\n                            vsv.versaCopy( thisTuple[ 0]),  ## here is the role name that we\'re reifying with this new r-proxy\n                            triggers,\n                            conferredValueSources)\n\n                        newTupleList = [ r_proxy.proxyId, thisTuple[ 1]]  ## thisTuple[ 1] is the proxyId of the role player\n                        thisTMAs_a_sip_instanceValue.append( tuple( newTupleList))\n\n                else:\n                    vsv.errMsg( \'This should never happen.  bridgeFromTMAModel == "%25s"; bridgeToTMAModel == "%25s".\' %25 ( bridgeFromTMAModel, bridgeToTMAModel))\n                    sys.exit( 1)\n\n                vsv.newPropertyInstance( a_proxy,  ## set this TMA\'s a_sip to the same value\n                                         TMA,\n                                         \'a_sip\',\n                                         vsv.versaCopy( thisTMAs_a_sip_instanceValue),\n                                         triggers,\n                                         conferredValueSources)\n\n\ndef bridgeAcross_t_sip_Models( vsv, conferralRule, **args):\n    ## from bridgeFromTMAName,,t_sip properties, infer t_sip\n    ## properties in the conferralRule\'s TMA.  (With all that that\n    ## entails.)\n\n    bridgeFromTMAName = args[ \'bridgeFromTMAName\']\n\n    topicMap = conferralRule.topicMap  ## make the below code less verbose (and maybe run slightly faster)\n    TMA = conferralRule.TMA  ## this is the TMA that defines this conferral rule\n    bridgeFromTMA = topicMap.TMAs[ bridgeFromTMAName]\n    bridgeFrom_t_sip_overheadDict = bridgeFromTMA.propertyClasses[ \'t_sip\'].overheadDict\n\n    t_sip_hashableValueList = bridgeFrom_t_sip_overheadDict.keys()\n\n    for t_sip_hashableValue in t_sip_hashableValueList:\n\n        t_proxyIdList = vsv.versaCopy( bridgeFrom_t_sip_overheadDict[ t_sip_hashableValue])\n\n        for t_proxyId in t_proxyIdList:\n\n            t_proxy = topicMap.proxies[ t_proxyId]\n            t_sip_instance = t_proxy.propertyInstances[ vsv.catKey( bridgeFromTMA.TMAName, \'t_sip\')]\n\n            ## Don\'t be triggered by an t_sip_instance property more\n            ## than once, and don\'t be triggered by any t_sip_instance\n            ## that was output by an operation of this rule\n            conferralRuleTriggerRoleId = vsv.catKey( conferralRule.conferralRuleKey, \'t_sip value\')\n            if t_sip_instance.conferralTriggerAncestry.has_key( conferralRuleTriggerRoleId) or \\\n                   t_sip_instance.conferralsTriggered.has_key( conferralRuleTriggerRoleId):\n                continue\n\n            triggers = {}  ## new dictionary to work in\n            triggers[ \'t_sip value\'] = t_sip_instance.propertyInstanceKey\n            conferredValueSources = {}  ## new dictionary to work in\n            conferredValueSources[ \'t_sip value\'] = t_sip_instance.propertyInstanceKey\n\n            if vsv.conferralMayBeSignificant( conferralRule, triggers, conferredValueSources):\n\n                ## new t_proxy\n                t_proxy = vsv.newProxyObject( topicMap)\n\n                vsv.newPropertyInstance( t_proxy,  ## copy the existing t_proxy\'s t_sip\n                                         bridgeFromTMA,\n                                         \'t_sip\',\n                                         vsv.versaCopy( t_sip_instance._value),\n                                         triggers,\n                                         conferredValueSources)\n\n                vsv.newPropertyInstance( t_proxy,  ## set this TMA\'s t_sip to the same value\n                                         TMA,\n                                         \'t_sip\',\n                                         vsv.versaCopy( t_sip_instance._value),\n                                         triggers,\n                                         conferredValueSources)\n\n\ndef bridgeFromU_assert( vsv, conferralRule, **args):\n    ## from bridgeFromTMAName,,x_LrnRrnRrp properties, infer a_sip\n    ## properties in the conferralRule\'s TMA.  (With all that that\n    ## entails.)\n\n    u_assertTMAName = args[ \'bridgeFromTMAName\']\n    rolesTMAName = args[ \'rolesTMAName\']\n    roleNamePropertyClassName = args[ \'roleNamePropertyClassName\']\n    u_assertPropertyName = \'x_LrnRrnRrp\'\n\n    topicMap = conferralRule.topicMap\n    TMA = conferralRule.TMA  ## this is the TMA that defines this conferral rule\n    rolesTMA = topicMap.TMAs[ rolesTMAName]\n    u_assertTMA = topicMap.TMAs[ u_assertTMAName]\n    proxyIdList = u_assertTMA.propertyClasses[ u_assertPropertyName].overheadDict[ \'proxyIds\'].keys()\n    u_assertPropertyInstanceInProxyKey = vsv.catKey( u_assertTMAName, u_assertPropertyName)\n\n    existingRoleDict = rolesTMA.propertyClasses[ \'role name\'].overheadDict\n\n    for proxyId in proxyIdList:\n\n        proxy = topicMap.proxies[ proxyId]\n\n        u_assertProperty = proxy.propertyInstances[ u_assertPropertyInstanceInProxyKey]\n\n        ## Don\'t be triggered by a u_assert property more than once\n        conferralRuleTriggerRoleId = vsv.catKey( conferralRule.conferralRuleKey, \'A\')\n        if u_assertProperty.conferralTriggerAncestry.has_key( conferralRuleTriggerRoleId) or \\\n               u_assertProperty.conferralsTriggered.has_key( conferralRuleTriggerRoleId):\n            continue\n\n        triggers = {}  ## new dictionary to work in\n        triggers[ \'A\'] = u_assertProperty.propertyInstanceKey\n        conferredValueSources = {}  ## new dictionary to work in\n        conferredValueSources[ \'A\'] = u_assertProperty.propertyInstanceKey\n\n        if vsv.conferralMayBeSignificant( conferralRule, triggers, conferredValueSources):\n\n            dict1 = u_assertProperty._value\n\n            for dict1Key in dict1:\n                localRoleName = dict1Key\n                localRoleProxyId = existingRoleDict[ localRoleName][ 0]\n                dict2 = dict1[ dict1Key]\n                for dict2Key in dict2:\n                    remoteRoleName = dict2Key\n                    remoteRoleProxyId = existingRoleDict[ remoteRoleName][ 0]\n                    stringList = dict2[ dict2Key]\n                    for remoteProxyId in stringList:\n\n\n                        ## new a_proxy\n                        a_proxy = vsv.newProxyObject( topicMap)\n\n                        vsv.newPropertyInstance( a_proxy,  ## set this TMA\'s t_sip to the same value\n                                                 TMA,\n                                                 \'a_sip\',\n                                                 [ ( localRoleProxyId, proxyId), ( remoteRoleProxyId, remoteProxyId)],\n                                                 triggers,\n                                                 conferredValueSources)\n\n'%0ap1%0a.</TMAModule

    ><TMAModule ModName="001_propertyClasses" ModSrcFileName="001_propertyClasses.py">S'#####################################################################\n#####################################################################\n## Copyright 2005 Steven R. Newcomb                                ##\n##                                                                 ##\n## This software is licensed under the Apache License, Version 2.0 ##\n## (the "License"); you may not use this file except in compliance ##\n## with the License.  Copies of the License are available at       ##\n##        http://www.apache.org/licenses/LICENSE-2.0               ##\n##                                                                 ##\n## Unless required by applicable law or agreed to in writing,      ##\n## software distributed under the License is distributed on an "AS ##\n## IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either ##\n## express or implied.  See the License for the specific language  ##\n## governing permissions and limitations under the License.        ##\n##                                                                 ##\n## Copies of the source code and the license are available at      ##\n##        http://www.versavant.org                                 ##\n#####################################################################\n#####################################################################\n\n####################################\ncvsRevision = "$Revision: 1.8 $" ##\n####################################\n\n\nimport sys, traceback\n\n\n#################################################################\n## a_sip PC implementation                                     ##\n## (mostly it\'s in ${VSVEXECDIR}/Lib/PCsetOfProxyRefTuples.py) ##\n#################################################################\n\n#######################################################\ndef ValueIsInvalidFor_a_sip_Property( vsv, propertyValue, propertyClass, propertyInstance = None, **args):\n\n    r_proxy_allowed_properties = args[ \'r_proxy_allowed_properties\']\n    TMAName = propertyClass.TMA.TMAName\n    topicMap = propertyClass.topicMap\n\n    if len( propertyValue) %3c 2:\n        if propertyInstance:\n            vsv.errMsg( \'Value of %25s property contains %25d tuples; should have at least two tuples.  A relationship must have at least two roles, even if some of them are unplayed.\' %25 ( propertyInstance.propertyInstanceKey, len( propertyValue)))\n        else:\n            vsv.errMsg( \'Value of %25s presumptive property contains %25d tuples; should have at least two tuples.  A relationship must have at least two roles, even if some of them are unplayed.\' %25 ( vsv.catKey( TMAName, propertyClass), len( propertyValue)))\n        return True\n\n    rProxyDict = {}\n    foundDuple = False\n    for tuple in propertyValue:\n        memberCount = len( tuple)\n        if memberCount == 2:\n            foundDuple = True\n        elif memberCount == 1:\n            pass\n        else:\n            if propertyInstance:\n                vsv.errMsg( \'Tuple in %25s property\\\'s value has %25d members; should have 1 (an unplayed role) or 2 (a role and a role player).\' %25 ( propertyInstance.propertyInstanceKey, memberCount))\n            else:\n                vsv.errMsg( \'Tuple in presumptive %25s property\\\'s value has %25d members; should have 1 (an unplayed role) or 2 (a role and a role player).\' %25 ( vsv.catKey( TMAName, propertyClass.propertyClassName), memberCount))\n            return True\n        memberNumber = 0\n        for proxyId in tuple:\n            memberNumber += 1\n            if not vsv.nowImporting:\n                proxy = vsv.isProxyId( proxyId, topicMap)\n                if not proxy:\n                    if propertyInstance:\n                        vsv.errMsg( \'Tuple in value of %25s property has a member (%25s) that is not a proxyId.\' %25 ( propertyInstance.propertyInstanceKey, proxyId))\n                    else:\n                        vsv.errMsg( \'Tuple in value of presumptive %25s property has a member (%25s) that is not a proxyId.\' %25 ( vsv.catKey( TMAName, propertyClass.propertyClassName), proxyId))\n                    return True\n                if proxy.forwardTo:\n                    if propertyInstance:\n                        vsv.errMsg( \'Tuple in value of %25s property has a member (%25s) that is a proxyId of a dead proxy.\' %25 ( propertyInstance.propertyInstanceKey, proxyId))\n                    else:\n                        vsv.errMsg( \'Tuple in value of presumptive %25s property has a member (%25s) that is a proxyId of a dead proxy.\' %25 ( vsv.catKey( TMAName, propertyClass.propertyClassName), proxyId))\n                    return True\n                if memberNumber == 1:  ## this should be a reference to an r-proxy\n\n                    if rProxyDict.has_key( proxyId):\n                        if propertyInstance:\n                            vsv.errMsg( \'multiple references to the same r-proxy (%25s) in property %25s.  No role can be used more than once in any given assertion.\' %25 ( proxyId, propertyInstance.propertyInstanceKey))\n                        else:\n                            vsv.errMsg( \'multiple references to the same r-proxy (%25s) in presumptive property %25s.  No role can be used more than once in any given assertion.\' %25 ( proxyId, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n                        return True\n                    rProxyDict[ proxyId] = None\n\n                    for propertyInstanceKey2 in proxy.propertyInstances:\n                        tmaName, propertyClassName = vsv.parsePropertyKey2( propertyInstanceKey2)\n                        if TMAName == tmaName:\n                            if propertyClassName not in r_proxy_allowed_properties:\n                                if propertyInstance:\n                                    vsv.errMsg( \'Proxy referenced as first member of tuple "%25s" in value of %25s property value has a "%25s" property, which, as an r-proxy, it should not have.\' %25 ( tuple, propertyInstance.propertyInstanceKey, propertyClassName))\n                                else:\n                                    vsv.errMsg( \'Proxy referenced as first member of tuple "%25s" in value of presumptive %25s property value has a "%25s" property, which, as an r-proxy, it should not have.\' %25 ( tuple, vsv.catKey( TMAName, propertyClass.propertyClassName), propertyClassName))\n                                return True\n                ## else:                  ## memberNumber == 2; this should be a reference to an x-proxy\n\n    if not foundDuple:\n        if propertyInstance:\n            vsv.errMsg( \'No tuple in value of %25s property has 2 members.  There must be at least one tuple that has two members; a relationship between nothing and nothing is not a relationship.\' %25 ( propertyInstance.propertyInstanceKey))\n        else:\n            vsv.errMsg( \'No tuple in value of presumptive %25s property has 2 members.  There must be at least one tuple that has two members; a relationship between nothing and nothing is not a relationship.\' %25 ( vsv.catKey( TMAName, propertyClass.propertyClassName)))\n        return True\n\n    return False\n\n\n\n###########################################\n## t_sip PC implementation               ##\n## (mostly re-uses Lib/PCproxyIdSet.py) ##\n###########################################\n\n#######################################################\ndef ValueIsInvalidFor_t_sip_Property( vsv, propertyValue, propertyClass, propertyInstance = None, **args):\n    r_proxy_allowed_properties = args[ \'r_proxy_allowed_properties\']\n    TMAName = propertyClass.TMA.TMAName\n    topicMap = propertyClass.topicMap\n\n    rProxyDict = {}\n    for item in propertyValue:\n        rProxyDict[ item] = None\n    propertyValue = rProxyDict.keys()\n\n    if len( propertyValue) %3c 2:\n        traceback.print_stack()\n        if propertyInstance:\n            vsv.errMsg( \'Value of property %25s references only %25d different proxy/ies; it must refer to at least two.  A relationship must have at least two roles, even if one of them is unplayed.\' %25 ( propertyInstance.propertyInstanceKey, len( propertyValue)))\n        else:\n            vsv.errMsg( \'Value of presumptive %25s property references only %25d different proxies; it must refer to at least two.  A relationship must have at least two roles, even if one of them is unplayed.\' %25 ( vsv.catKey( TMAName, propertyClass.propertyClassName), len( propertyValue)))\n###\n        vsv.inspect( propertyInstanceKey = propertyInstance.propertyInstanceKey)\n###\n        return True\n\n    if vsv.nowImporting:\n        return False  ## can\'t make the rest of these checks yet\n    \n    for proxyId in propertyValue:\n        proxy = vsv.isProxyId( proxyId, topicMap)\n        if not proxy:\n            if propertyInstance:\n                vsv.errMsg( \'Value of %25s property includes something (%25s) that is not a proxyId.\' %25 ( propertyInstance.propertyInstanceKey, proxyId))\n            else:\n                vsv.errMsg( \'Value of presumptive %25s property includes something (%25s) that is not a proxyId.\' %25 ( vsv.catKey( TMAName, propertyClass.propertyClassName), proxyId))\n            return True\n        if proxy.forwardTo:  ## only living proxies are valid\n            if propertyInstance:\n                vsv.errMsg( \'Tuple in value of %25s property has a member (%25s) that is the proxyId of a dead proxy.  Only living proxies are allowed to be referenced.\' %25 ( propertyInstance.propertyInstanceKey, proxyId))\n            else:\n                vsv.errMsg( \'Tuple in value of presumptive %25s property has a member (%25s) that is the proxyId of a dead proxy.  Only living proxies are allowed to be referenced.\' %25 ( vsv.catKey( TMAName, propertyClass.propertyClassName), proxyId))\n            return True\n\n        for propertyInstanceKey2 in proxy.propertyInstances:\n            tmaName, propertyClassName = vsv.parsePropertyKey2( propertyInstanceKey2)\n            if TMAName == tmaName:\n                if propertyClassName not in r_proxy_allowed_properties:\n                    if propertyInstance:\n                        vsv.errMsg( \'Proxy %25s, referenced in %25s property value, has a "%25s" property, which, as an r-proxy, it should not have.\' %25 ( proxy.proxyId, propertyInstance.propertyInstanceKey, propertyClassName))\n                    else:\n                        vsv.errMsg( \'Proxy %25s, referenced in presumptive %25s property value, has a "%25s" property, which, as an r-proxy, it should not have.\' %25 ( proxy.proxyId, vsv.catKey( TMAName, propertyClass.propertyClassName), propertyClassName))\n                    return True\n\n    return False\n\n\n###########################################\n## c_sip PC implementation               ##\n## (mostly re-uses Lib/PCproxyIdList.py) ##\n###########################################\n\n#######################################################\ndef ValueIsInvalidFor_c_sip_Property( vsv, propertyValue, propertyClass, propertyInstance = None, **args):\n    TMAName = propertyClass.TMA.TMAName\n    topicMap = propertyClass.topicMap\n\n    itemCount = len( propertyValue)\n    if itemCount %3c 2 or itemCount > 3:\n        if propertyInstance:\n            vsv.errMsg( \'Value of c_sip property (%25s) is a list containing %25d item(s); should be 2 or 3: (1) a reference to an r-proxy, (2) a reference to an a-proxy, and, optionally, (3) a reference to an x-proxy.\' %25 ( propertyInstance.propertyInstanceKey, itemCount))\n        else:\n            vsv.errMsg( \'Presumptive c_sip property value is a list containing %25d item(s); should be 2 or 3: (1) a reference to an r-proxy, (2) a reference to an a-proxy, and, optionally, (3) a reference to an x-proxy.\' %25 ( itemCount))\n        return True\n\n    if vsv.nowImporting:\n        return False  ## can\'t make the rest of these checks yet\n    \n    itemNumber = 0\n    for proxyId in propertyValue:\n        ordinalItemNumberString = [ \'First\', \'Second\', \'Third\'][ itemNumber]\n        itemNumber += 1\n        proxy = vsv.isProxyId( proxyId, topicMap)\n        if itemNumber == 1:  ## this should be a reference to an r-proxy\n            found_r_type_property = False\n            found_r_castings_property = False\n            for propertyInstanceKey2 in proxy.propertyInstances:\n                tmaName, propertyClassName = vsv.parsePropertyKey2( propertyInstanceKey2)\n                if TMAName == tmaName:\n                    if propertyClassName not in [ \'r_type\', \'r_castings\', \'x_castings\']:\n                        if propertyInstance:\n                            vsv.errMsg( \'Proxy referenced as first item in list "%25s" in value of %25s property has a "%25s" property, which, as an r-proxy, it should not have.\' %25 ( propertyValue, propertyInstance.propertyInstanceKey, vsv.catKey( TMAName, propertyClassName)))\n                        else:\n                            vsv.errMsg( \'Proxy referenced as first item in list "%25s" in presumptive %25s property value has a "%25s" property, which, as an r-proxy, it should not have.\' %25 ( propertyValue, vsv.catKey( TMAName, propertyClass.propertyClassName), vsv.catKey( TMAName, propertyClassName)))\n                        return True\n                    if propertyClassName == \'r_type\':\n                        found_r_type_property = True\n                    if propertyClassName == \'r_castings\':\n                        found_r_castings_property = True\n            if not vsv.currentProcOperation:  ## if this is a full check, and we\'re not in the middle of building something\n                if not found_r_type_property:\n                    if propertyInstance:\n                        vsv.errMsg( \'Proxy referenced as first item in list "%25s" in value of %25s property has no r_type property, which, as an r-proxy, it should have.\' %25 ( propertyValue, propertyInstance.propertyInstanceKey))\n                    else:\n                        vsv.errMsg( \'Proxy referenced as first item in list "%25s" in presumptive %25s property value has no r_type property, which, as an r-proxy, it should have.\' %25 ( propertyValue, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n                    return True\n                if not found_r_castings_property:\n                    if propertyInstance:\n                        vsv.errMsg( \'Proxy referenced as first item in list "%25s" in value of %25s property has no r_castings property, which, as an r-proxy, it should have.\' %25 ( propertyValue, propertyInstance.propertyInstanceKey))\n                    else:\n                        vsv.errMsg( \'Proxy referenced as first item in list "%25s" in presumptive %25s property value has no r_castings property, which, as an r-proxy, it should have.\' %25 ( propertyValue, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n                    return True\n        elif itemNumber == 2:  ## this should be a reference to an a-proxy\n            found_a_sip_property = False\n            for propertyInstanceKey2 in proxy.propertyInstances:\n                tmaName, propertyClassName = vsv.parsePropertyKey2( propertyInstanceKey2)\n                if TMAName == tmaName:\n                    if propertyClassName not in [ \'a_sip\', \'a_type\', \'a_castings\', \'x_castings\']:\n                        if propertyInstance:\n                            vsv.errMsg( \'Proxy referenced as second item in list "%25s" in value of %25s property has a "%25s" property, which, as an a-proxy, it should not have.\' %25 ( propertyValue, propertyInstance.propertyInstanceKey, vsv.catKey( TMAName, propertyClassName)))\n                        else:\n                            vsv.errMsg( \'Proxy referenced as second item in list "%25s" in presumptive %25s property value has a "%25s" property, which, as an a-proxy, it should not have.\' %25 ( propertyValue, vsv.catKey( TMAName, propertyClass.propertyClassName), vsv.catKey( TMAName, propertyClassName)))\n                        return True\n                    if propertyClassName == \'a_sip\':\n                        found_a_sip_property = True\n\n            if not vsv.currentProcOperation:  ## if this is a full check, and we\'re not in the middle of building something\n                if not found_a_sip_property:\n                    if propertyInstance:\n                        vsv.errMsg( \'Proxy referenced as first item in list "%25s" in value of %25s property has no a_sip property, which, as an r-proxy, it should have.\' %25 ( propertyValue, propertyInstance.propertyInstanceKey))\n                    else:\n                        vsv.errMsg( \'Proxy referenced as first item in list "%25s" in presumptive %25s property value has no a_sip property, which, as an r-proxy, it should have.\' %25 ( propertyValue, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n                    return True\n\n    return False\n\n###########################################\n## r_type PC implementation               ##\n## (mostly re-uses Lib/PCproxyIdSet.py) ##\n###########################################\n\n#######################################################\ndef ValueIsInvalidFor_r_type_Property( vsv, propertyValue, propertyClass, propertyInstance = None, **args):\n    TMAName = propertyClass.TMA.TMAName\n    topicMap = propertyClass.topicMap\n\n    itemCount = len( propertyValue)\n    if itemCount != 1:\n        if propertyInstance:\n            vsv.errMsg( \'Value of r_type property (%25s) is a list containing %25d item(s); should be only 1.  If a single role were to appear in more than one assertion type, its proxy would have multiple subjects, which would break the cardinal rule of the subject maps paradigm.\' %25 ( propertyInstance.propertyInstanceKey, itemCount))\n        else:\n            vsv.errMsg( \'Presumptive r_type property value is a list containing %25d item(s); should be only 1.  If a single role were to appear in more than one assertion type, its proxy would have multiple subjects, which would break the cardinal rule of the subject maps paradigm.\' %25 ( itemCount))\n        return True\n\n    if vsv.nowImporting:\n        return False  ## can\'t make the rest of these checks yet\n    \n    for proxyId in propertyValue:\n        proxy = vsv.isProxyId( proxyId, topicMap)\n        if not proxy:\n            if propertyInstance:\n                vsv.errMsg( \'item (%25s) in list that is the value of the %25s property is not a proxyId.\' %25 (\n                    proxyId, vsv.catKey( TMAName, propertyInstance.propertyInstanceKey)))\n            else:\n                vsv.errMsg( \'item (%25s) in list that is the proposed value of a %25s property is not a proxyId.\' %25 (\n                    proxyId, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n            return True\n        if proxy.forwardTo:  ## only living proxies are valid\n            if propertyInstance:\n                vsv.errMsg( \'Item (%25s) in value of %25s property is the proxyId of a dead proxy.  Only living proxies are allowed to be referenced.\' %25 ( proxyId, propertyInstance.propertyInstanceKey))\n            else:\n                vsv.errMsg( \'Item (%25s) in value of presumptive %25s property is the proxyId of a dead proxy.  Only living proxies are allowed to be referenced.\' %25 ( proxyId, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n            return True\n\n        if not vsv.currentProcOperation:  ## if this is a full check, and we\'re not in the middle of building something\n            found_t_sip_property = False\n            for propertyInstanceKey2 in proxy.propertyInstances:\n                tmaName, propertyClassName = vsv.parsePropertyKey2( propertyInstanceKey2)\n                if TMAName == tmaName:\n                    if propertyClassName == \'t_sip\':\n                        found_t_sip_property = True\n                        break\n            if not found_t_sip_property:\n                if propertyInstance:\n                    vsv.errMsg( \'Proxy referenced in list "%25s" in value of %25s property has no t_sip property, which, as a t-proxy, it should have.\' %25 ( propertyValue, propertyInstance.propertyInstanceKey))\n                else:\n                    vsv.errMsg( \'Proxy referenced in list "%25s" in presumptive %25s property value has no t_sip property, which, as a t-proxy, it should have.\' %25 ( propertyValue, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n                return True\n\n    return False\n\n\n###########################################\n## a_type PC implementation               ##\n## (mostly re-uses Lib/PCproxyIdSet.py) ##\n###########################################\n\n#######################################################\ndef ValueIsInvalidFor_a_type_Property( vsv, propertyValue, propertyClass, propertyInstance = None, **args):\n    TMAName = propertyClass.TMA.TMAName\n    topicMap = propertyClass.topicMap\n\n    if not vsv.currentProcOperation:  ## if this is a full check, and we\'re not in the middle of populating, conferring, or merging something\n        itemCount = len( propertyValue)\n        if itemCount != 1:\n            if propertyInstance:\n                vsv.errMsg( \'Value of a_type property (%25s) is a list containing %25d item(s); should be only 1.  An assertion can have only one type.\' %25 ( propertyInstance.propertyInstanceKey, itemCount))\n            else:\n                vsv.errMsg( \'Presumptive a_type property value is a list containing %25d item(s); should be only 1.  An assertion can have only one type.\' %25 ( itemCount))\n            return True\n\n    if vsv.nowImporting:\n        return False  ## can\'t make the rest of these checks yet\n    \n    for proxyId in propertyValue:\n        proxy = vsv.isProxyId( proxyId, topicMap)\n        if not proxy:\n            if propertyInstance:\n                vsv.errMsg( \'item (%25s) in list that is the value of the %25s property is not a proxyId.\' %25 (\n                    proxyId, vsv.catKey( TMAName, propertyInstance.propertyInstanceKey)))\n            else:\n                vsv.errMsg( \'item (%25s) in list that is the proposed value of a %25s property is not a proxyId.\' %25 (\n                    proxyId, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n            return True\n        if proxy.forwardTo:  ## only living proxies are valid\n            if propertyInstance:\n                vsv.errMsg( \'Item (%25s) in value of %25s property is the proxyId of a dead proxy.  Only living proxies are allowed to be referenced.\' %25 ( proxyId, propertyInstance.propertyInstanceKey))\n            else:\n                vsv.errMsg( \'Item (%25s) in value of presumptive %25s property is the proxyId of a dead proxy.  Only living proxies are allowed to be referenced.\' %25 ( proxyId, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n            return True\n\n        if not vsv.currentProcOperation:  ## if this is a full check, and we\'re not in the middle of populating, conferring, or merging something\n\n            found_t_sip_property = False\n            for propertyInstanceKey2 in proxy.propertyInstances:\n                tmaName, propertyClassName = vsv.parsePropertyKey2( propertyInstanceKey2)\n                if TMAName == tmaName:\n                    if propertyClassName == \'t_sip\':\n                        found_t_sip_property = True\n                        break\n            if not found_t_sip_property:\n                if propertyInstance:\n                    vsv.errMsg( \'Proxy referenced in list "%25s" in value of %25s property has no t_sip property, which, as a t-proxy, it should have.\' %25 ( propertyValue, propertyInstance.propertyInstanceKey))\n                else:\n                    vsv.errMsg( \'Proxy referenced in list "%25s" in presumptive %25s property value has no t_sip property, which, as a t-proxy, it should have.\' %25 ( propertyValue, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n                return True\n\n\n\n    return False\n\n\n###########################################\n## r_castings PC implementation               ##\n## (mostly re-uses Lib/PCproxyIdSet.py) ##\n###########################################\n\n#######################################################\ndef ValueIsInvalidFor_r_castings_Property( vsv, propertyValue, propertyClass, propertyInstance = None, **args):\n    TMAName = propertyClass.TMA.TMAName\n    topicMap = propertyClass.topicMap\n\n    if vsv.nowImporting:\n        return False  ## can\'t make the rest of these checks yet\n    \n    for proxyId in propertyValue:\n        proxy = vsv.isProxyId( proxyId, topicMap)\n        if not proxy:\n            if propertyInstance:\n                vsv.errMsg( \'item (%25s) in list that is the value of the %25s property is not a proxyId.\' %25 (\n                    proxyId, vsv.catKey( TMAName, propertyInstance.propertyInstanceKey)))\n            else:\n                vsv.errMsg( \'item (%25s) in list that is the proposed value of a %25s property is not a proxyId.\' %25 (\n                    proxyId, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n            return True\n        if proxy.forwardTo:  ## only living proxies are valid\n            if propertyInstance:\n                vsv.errMsg( \'Item (%25s) in value of %25s property is the proxyId of a dead proxy.  Only living proxies are allowed to be referenced.\' %25 ( proxyId, propertyInstance.propertyInstanceKey))\n            else:\n                vsv.errMsg( \'Item (%25s) in value of presumptive %25s property is the proxyId of a dead proxy.  Only living proxies are allowed to be referenced.\' %25 ( proxyId, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n            return True\n\n        if not vsv.currentProcOperation:  ## if this is a full check, and we\'re not in the middle of building something\n            found_c_sip_property = False\n            for propertyInstanceKey2 in proxy.propertyInstances:\n                tmaName, propertyClassName = vsv.parsePropertyKey2( propertyInstanceKey2)\n                if TMAName == tmaName:\n                    if propertyClassName == \'c_sip\':\n                        found_c_sip_property = True\n                        break\n            if not found_c_sip_property:\n                if propertyInstance:\n                    vsv.errMsg( \'Proxy referenced in list "%25s" in value of %25s property has no c_sip property, which, as a c-proxy, it should have.\' %25 ( propertyValue, propertyInstance.propertyInstanceKey))\n                else:\n                    vsv.errMsg( \'Proxy referenced in list "%25s" in presumptive %25s property value has no c_sip property, which, as a c-proxy, it should have.\' %25 ( propertyValue, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n                return True\n\n    return False\n\n\n###########################################\n## a_castings PC implementation          ##\n## (mostly re-uses Lib/PCproxyIdSet.py)  ##\n###########################################\n\n#######################################################\ndef ValueIsInvalidFor_a_castings_Property( vsv, propertyValue, propertyClass, propertyInstance = None, **args):\n    TMAName = propertyClass.TMA.TMAName\n    topicMap = propertyClass.topicMap\n\n    if vsv.nowImporting:\n        return False  ## can\'t make the rest of these checks yet\n    \n    for proxyId in propertyValue:\n        proxy = vsv.isProxyId( proxyId, topicMap)\n        if not proxy:\n            if propertyInstance:\n                vsv.errMsg( \'item (%25s) in list that is the value of the %25s property is not a proxyId.\' %25 (\n                    proxyId, vsv.catKey( TMAName, propertyInstance.propertyInstanceKey)))\n            else:\n                vsv.errMsg( \'item (%25s) in list that is the proposed value of a %25s property is not a proxyId.\' %25 (\n                    proxyId, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n            return True\n        if proxy.forwardTo:  ## only living proxies are valid\n            if propertyInstance:\n                vsv.errMsg( \'Item (%25s) in value of %25s property is the proxyId of a dead proxy.  Only living proxies are allowed to be referenced.\' %25 ( proxyId, propertyInstance.propertyInstanceKey))\n            else:\n                vsv.errMsg( \'Item (%25s) in value of presumptive %25s property is the proxyId of a dead proxy.  Only living proxies are allowed to be referenced.\' %25 ( proxyId, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n            return True\n\n        if not vsv.currentProcOperation:  ## if this is a full check, and we\'re not in the middle of building something\n            found_c_sip_property = False\n            for propertyInstanceKey2 in proxy.propertyInstances:\n                tmaName, propertyClassName = vsv.parsePropertyKey2( propertyInstanceKey2)\n                if TMAName == tmaName:\n                    if propertyClassName == \'c_sip\':\n                        found_c_sip_property = True\n                        break\n            if not found_c_sip_property:\n                if propertyInstance:\n                    vsv.errMsg( \'Proxy referenced in list "%25s" in value of %25s property has no c_sip property, which, as a c-proxy, it should have.\' %25 ( propertyValue, propertyInstance.propertyInstanceKey))\n                else:\n                    vsv.errMsg( \'Proxy referenced in list "%25s" in presumptive %25s property value has no c_sip property, which, as a c-proxy, it should have.\' %25 ( propertyValue, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n                return True\n\n    return False\n\n\n###########################################\n## x_castings PC implementation               ##\n## (mostly re-uses Lib/PCproxyIdSet.py) ##\n###########################################\n\n#######################################################\ndef ValueIsInvalidFor_x_castings_Property( vsv, propertyValue, propertyClass, propertyInstance = None, **args):\n    TMAName = propertyClass.TMA.TMAName\n    topicMap = propertyClass.topicMap\n\n    if vsv.nowImporting:\n        return False  ## can\'t make the rest of these checks yet\n    \n    for proxyId in propertyValue:\n        proxy = vsv.isProxyId( proxyId, topicMap)\n        if not proxy:\n            if propertyInstance:\n                vsv.errMsg( \'item (%25s) in list that is the value of the %25s property is not a proxyId.\' %25 (\n                    proxyId, vsv.catKey( TMAName, propertyInstance.propertyInstanceKey)))\n            else:\n                vsv.errMsg( \'item (%25s) in list that is the proposed value of a %25s property is not a proxyId.\' %25 (\n                    proxyId, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n            return True\n        if proxy.forwardTo:  ## only living proxies are valid\n            if propertyInstance:\n                vsv.errMsg( \'Item (%25s) in value of %25s property is the proxyId of a dead proxy.  Only living proxies are allowed to be referenced.\' %25 ( proxyId, propertyInstance.propertyInstanceKey))\n            else:\n                vsv.errMsg( \'Item (%25s) in value of presumptive %25s property is the proxyId of a dead proxy.  Only living proxies are allowed to be referenced.\' %25 ( proxyId, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n            return True\n\n        if not vsv.currentProcOperation:  ## if this is a full check, and we\'re not in the middle of building something\n            found_c_sip_property = False\n            for propertyInstanceKey2 in proxy.propertyInstances:\n                tmaName, propertyClassName = vsv.parsePropertyKey2( propertyInstanceKey2)\n                if TMAName == tmaName:\n                    if propertyClassName == \'c_sip\':\n                        found_c_sip_property = True\n                        break\n            if not found_c_sip_property:\n                if propertyInstance:\n                    vsv.errMsg( \'Proxy referenced in list "%25s" in value of %25s property has no c_sip property, which, as a c-proxy, it should have.\' %25 ( propertyValue, propertyInstance.propertyInstanceKey))\n                else:\n                    vsv.errMsg( \'Proxy referenced in list "%25s" in presumptive %25s property value has no c_sip property, which, as a c-proxy, it should have.\' %25 ( propertyValue, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n                return True\n\n    return False\n\n\n###########################################\n## t_assertions PC implementation               ##\n## (mostly re-uses Lib/PCproxyIdSet.py) ##\n###########################################\n\n#######################################################\ndef ValueIsInvalidFor_t_assertions_Property( vsv, propertyValue, propertyClass, propertyInstance = None, **args):\n    TMAName = propertyClass.TMA.TMAName\n    topicMap = propertyClass.topicMap\n\n    if vsv.nowImporting:\n        return False  ## can\'t make the rest of these checks yet\n    \n    for proxyId in propertyValue:\n        proxy = vsv.isProxyId( proxyId, topicMap)\n        if not proxy:\n            if propertyInstance:\n                vsv.errMsg( \'item (%25s) in list that is the value of the %25s property is not a proxyId.\' %25 (\n                    proxyId, vsv.catKey( TMAName, propertyInstance.propertyInstanceKey)))\n            else:\n                vsv.errMsg( \'item (%25s) in list that is the proposed value of a %25s property is not a proxyId.\' %25 (\n                    proxyId, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n            return True\n        if proxy.forwardTo:  ## only living proxies are valid\n            if propertyInstance:\n                vsv.errMsg( \'Item (%25s) in value of %25s property is the proxyId of a dead proxy.  Only living proxies are allowed to be referenced.\' %25 ( proxyId, propertyInstance.propertyInstanceKey))\n            else:\n                vsv.errMsg( \'Item (%25s) in value of presumptive %25s property is the proxyId of a dead proxy.  Only living proxies are allowed to be referenced.\' %25 ( proxyId, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n            return True\n\n        if not vsv.currentProcOperation:  ## if this is a full check, and we\'re not in the middle of building something\n            found_a_sip_property = False\n            for propertyInstanceKey2 in proxy.propertyInstances:\n                tmaName, propertyClassName = vsv.parsePropertyKey2( propertyInstanceKey2)\n                if TMAName == tmaName:\n                    if propertyClassName == \'a_sip\':\n                        found_a_sip_property = True\n                        break\n            if not found_a_sip_property:\n                if propertyInstance:\n                    vsv.errMsg( \'Proxy referenced in list "%25s" in value of %25s property has no a_sip property, which, as a a-proxy, it should have.\' %25 ( propertyValue, propertyInstance.propertyInstanceKey))\n                else:\n                    vsv.errMsg( \'Proxy referenced in list "%25s" in presumptive %25s property value has no a_sip property, which, as a a-proxy, it should have.\' %25 ( propertyValue, vsv.catKey( TMAName, propertyClass.propertyClassName)))\n                return True\n\n    return False\n\n\n\n\n\n################################################################################################################\n## Context check function for all BIGASSERT property classes except x_castings, which needs no such function. ##\n################################################################################################################\n\n#######################################################\ndef ContextOf_BIGASSERT_PropertyIsInvalid( vsv, propertyInstance, thisPropertyClassName):\n    proxy = propertyInstance.proxy\n    TMAName = propertyInstance.propertyClass.TMA.TMAName\n    if thisPropertyClassName in [ \'a_sip\', \'a_type\', \'a_castings\']:\n        allowedPropertiesInSameProxy = [ \'a_sip\', \'a_type\', \'a_castings\', \'x_castings\']\n    elif thisPropertyClassName in [ \'t_sip\', \'t_assertions\']:\n        allowedPropertiesInSameProxy = [ \'t_sip\', \'t_assertions\', \'x_castings\']\n    elif thisPropertyClassName in [\'c_sip\']:\n        allowedPropertiesInSameProxy = [ \'c_sip\', \'x_castings\']\n    elif thisPropertyClassName in [ \'r_type\', \'r_castings\']:\n        allowedPropertiesInSameProxy = [ \'r_type\', \'r_castings\', \'x_castings\']\n    else:\n        vsv.errMsg( \'unrecognized "thisPropertyClassName": %25s\' %25 ( thisPropertyClassName))\n        return True\n    for propertyInstanceKey2 in proxy.propertyInstances:\n        tmaName, propertyClassName = vsv.parsePropertyKey2( propertyInstanceKey2)\n        if tmaName == TMAName:\n            if propertyClassName not in allowedPropertiesInSameProxy:\n                vsv.errMsg( \'Proxy %25s has a "%25s" property, so it should not also have a "%25s" property, but it does.\' %25 ( proxy.proxyId, thisPropertyClassName, vsv.catKey( TMAName, propertyClassName)))\n                return True\n    return False\n\n'%0ap1%0a.</TMAModule

    ><TMAModule ModName="002_propertyClasses" ModSrcFileName="002_propertyClasses.py">S'#####################################################################\n#####################################################################\n## Copyright 2005 Steven R. Newcomb                                ##\n##                                                                 ##\n## This software is licensed under the Apache License, Version 2.0 ##\n## (the "License"); you may not use this file except in compliance ##\n## with the License.  Copies of the License are available at       ##\n##        http://www.apache.org/licenses/LICENSE-2.0               ##\n##                                                                 ##\n## Unless required by applicable law or agreed to in writing,      ##\n## software distributed under the License is distributed on an "AS ##\n## IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either ##\n## express or implied.  See the License for the specific language  ##\n## governing permissions and limitations under the License.        ##\n##                                                                 ##\n## Copies of the source code and the license are available at      ##\n##        http://www.versavant.org                                 ##\n#####################################################################\n#####################################################################\n\n####################################\ncvsRevision = "$Revision: 1.3 $" ##\n####################################\n\n\nimport sys\n\n#################################################################\n## a_sip PC implementation                                     ##\n## (mostly it\'s in ${VSVEXECDIR}/Lib/PCsetOfProxyRefTuples.py, ##\n## and ValueIsInvalidFor_a_sip_Property() is recycled from     ##\n## ${VSVEXECDIR}/Lib/BIGASSERT/propertyClasses.py.)            ##\n#################################################################\n\n###########################################\n## t_sip PC implementation               ##\n## (mostly re-uses Lib/PCproxyIdSet.py,\n## and ValueIsInvalidFor_t_sip_Property() is\n## recycled from ${VSVEXECDIR}/Lib/BIGASSERT/propertyClasses.py.) ##\n###########################################\n\n###########################################\n## r_type PC implementation               ##\n## (mostly re-uses Lib/PCproxyIdSet.py) ##\n## and ValueIsInvalidFor_r_type_Property() is\n## recycled from ${VSVEXECDIR}/Lib/BIGASSERT/propertyClasses.py.) ##\n###########################################\n\n###########################################\n## a_type PC implementation               ##\n## (mostly re-uses Lib/PCproxyIdSet.py) ##\n## and ValueIsInvalidFor_a_type_Property() is\n## recycled from ${VSVEXECDIR}/Lib/BIGASSERT/propertyClasses.py.) ##\n###########################################\n\n#################################################################\n## r_rolePlayers PC implementation                                     ##\n## (mostly it\'s in ${VSVEXECDIR}/Lib/PCsetOfProxyRefTuples.py) ##\n#################################################################\n\n#######################################################\ndef ValueIsInvalidFor_r_rolePlayers_Property( vsv, propertyValue, propertyClass, propertyInstance = None, **args):\n    ## There is really nothing to be done here, except possibly to doublecheck the reverse\n    ## references, but we\'re not doing that anywhere else yet, so why here?\n    return False\n\n\n###########################################\n## x_roles PC implementation               ##\n## (mostly re-uses ${VSVEXECDIR}/Lib/PCsetOfProxyRefTuples) ##\n###########################################\n\n#######################################################\ndef ValueIsInvalidFor_x_roles_Property( vsv, propertyValue, propertyClass, propertyInstance = None, **args):\n    r_proxy_allowed_properties = args[ \'r_proxy_allowed_properties\']\n    a_proxy_allowed_properties = args[ \'a_proxy_allowed_properties\']\n    TMAName = propertyClass.TMA.TMAName\n    topicMap = propertyClass.topicMap\n\n    for tuple in propertyValue:\n        memberCount = len( tuple)\n        if memberCount != 2:\n            if propertyInstance:\n                vsv.errMsg( \'Tuple in %25s property\\\'s value has %25d members; should have 2 (a role and a relationship).\' %25 ( propertyInstance.propertyInstanceKey, memberCount))\n            else:\n                vsv.errMsg( \'Tuple in presumptive %25s property\\\'s value has %25d members; should have 2 (a role and a relationship).\' %25 ( vsv.catKey( TMAName, propertyClass.propertyClassName), memberCount))\n            return True\n        memberNumber = 0\n        for proxyId in tuple:\n            memberNumber += 1\n            if not vsv.nowImporting:\n                proxy = vsv.isProxyId( proxyId, topicMap)\n                if not proxy:\n                    if propertyInstance:\n                        vsv.errMsg( \'Tuple in value of %25s property has a member (%25s) that is not a proxyId.\' %25 ( propertyInstance.propertyInstanceKey, proxyId))\n                    else:\n                        vsv.errMsg( \'Tuple in value of presumptive %25s property has a member (%25s) that is not a proxyId.\' %25 ( vsv.catKey( TMAName, propertyClass.propertyClassName), proxyId))\n                    return True\n\n                if memberNumber == 1:  ## this should be a reference to an r-proxy\n                    for propertyInstanceKey2 in proxy.propertyInstances:\n                        tmaName, propertyClassName = vsv.parsePropertyKey2( propertyInstanceKey2)\n                        if TMAName == tmaName:\n                            if propertyClassName not in r_proxy_allowed_properties:\n                                if propertyInstance:\n                                    vsv.errMsg( \'Proxy referenced as first member of tuple "%25s" in value of %25s property value has a "%25s" property, which, as an r-proxy, it should not have.\' %25 ( tuple, propertyInstance.propertyInstanceKey, propertyClassName))\n                                else:\n                                    vsv.errMsg( \'Proxy referenced as first member of tuple "%25s" in value of presumptive %25s property value has a "%25s" property, which, as an r-proxy, it should not have.\' %25 ( tuple, vsv.catKey( TMAName, propertyClass.propertyClassName), propertyClassName))\n                                return True\n                else:                  ## memberNumber == 2; this should be a reference to an a-proxy\n                    for propertyInstanceKey2 in proxy.propertyInstances:\n                        tmaName, propertyClassName = vsv.parsePropertyKey2( propertyInstanceKey2)\n                        if TMAName == tmaName:\n                            if propertyClassName not in a_proxy_allowed_properties:\n                                if propertyInstance:\n                                    vsv.errMsg( \'Proxy referenced as second member of tuple "%25s" in value of %25s property value has a "%25s" property, which, as an a-proxy, it should not have.\' %25 ( tuple, propertyInstance.propertyInstanceKey, propertyClassName))\n                                else:\n                                    vsv.errMsg( \'Proxy referenced as second member of tuple "%25s" in value of presumptive %25s property value has a "%25s" property, which, as an a-proxy, it should not have.\' %25 ( tuple, vsv.catKey( TMAName, propertyClass.propertyClassName), propertyClassName))\n                                return True\n\n    return False\n\n\n\n###########################################\n## t_assertions PC implementation               ##\n## (mostly re-uses Lib/PCproxyIdSet.py) ##\n## and ValueIsInvalidFor_t_assertions_Property() is\n## recycled from ${VSVEXECDIR}/Lib/BIGASSERT/propertyClasses.py.) ##\n###########################################\n\n\n\n################################################################################################################\n## Context check function for all TRA_assert property classes except x_roles, which needs no such function. ##\n################################################################################################################\n\n#######################################################\ndef ContextOf_TRA_assert_PropertyIsInvalid( vsv, propertyInstance, thisPropertyClassName):\n    proxy = propertyInstance.proxy\n    TMAName = propertyInstance.propertyClass.TMA.TMAName\n    if thisPropertyClassName in [ \'a_sip\', \'a_type\']:\n        allowedPropertiesInSameProxy = [ \'a_sip\', \'a_type\', \'x_roles\']\n    elif thisPropertyClassName in [ \'t_sip\', \'t_assertions\']:\n        allowedPropertiesInSameProxy = [ \'t_sip\', \'t_assertions\', \'x_roles\']\n    elif thisPropertyClassName in [ \'r_type\', \'r_rolePlayers\']:\n        allowedPropertiesInSameProxy = [ \'r_type\', \'r_rolePlayers\', \'x_roles\']\n    else:\n        vsv.errMsg( \'unrecognized "thisPropertyClassName": %25s\' %25 ( thisPropertyClassName))\n        return True\n    for propertyInstanceKey2 in proxy.propertyInstances:\n        tmaName, propertyClassName = vsv.parsePropertyKey2( propertyInstanceKey2)\n        if tmaName == TMAName:\n            if propertyClassName not in allowedPropertiesInSameProxy:\n                vsv.errMsg( \'Proxy %25s has a "%25s" property, so it should not also have a "%25s" property, but it does.\' %25 ( proxy.proxyId, thisPropertyClassName, vsv.catKey( TMAName, propertyClassName)))\n                return True\n    return False\n\n'%0ap1%0a.</TMAModule

  ></VersavantTMA


  ><VersavantTMA AppNm="U_assert"

    ><TMAConfigFile ConfSrcPath="tmaconf.xml">S'%3c?xml version="1.0" encoding="ASCII"?>\n%3c!-- \n\n#####################################################################\n#####################################################################\n## Copyright 2005 Steven R. Newcomb                                ##\n##                                                                 ##\n## This software is licensed under the Apache License, Version 2.0 ##\n## (the "License"); you may not use this file except in compliance ##\n## with the License.  Copies of the License are available at       ##\n##        http://www.apache.org/licenses/LICENSE-2.0               ##\n##                                                                 ##\n## Unless required by applicable law or agreed to in writing,      ##\n## software distributed under the License is distributed on an "AS ##\n## IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either ##\n## express or implied.  See the License for the specific language  ##\n## governing permissions and limitations under the License.        ##\n##                                                                 ##\n## Copies of the source code and the license are available at      ##\n##        http://www.versavant.org                                 ##\n#####################################################################\n#####################################################################\n\n####################################\ncvsRevision = "$Revision: 1.2 $" ##\n####################################\n\n"U_assert" (Unreified) assertions:\n_____________________________________________\n\nThese are quite unlike BigAssert, TRA_assert, or A_assert, because the\nonly thing about the assertion that\'s reified is the role players (the\nx-proxies).  There are no proxies for the relationship (a-proxies), no\ncasting proxies (c-proxies), no role proxies (r-proxies), and no\nassertion type proxies (t-proxies).  The roles are identified by\nstrings.\n\nAssumptions:\n\n      ____role...>_____           "U_assert" _- unreified assertion\n     x1                x2         Suggest: "unreified mutual relationship"\n      ___%3c...role______           \n\n* An unreified assertion-like relationship is created by uttering an x_LrnRrnRrp property, and\n  adding it to the role player of the local role.  All other\n  properties will be conferred into existence, including those of the\n  other role players.\n\n* From U_assert properties, it cannot be known how many assertions\n  there are, nor which roles go with which assertions, unless somehow\n  it is known that all assertions are two-role assertions.  U_assert\n  properties really don\'t represent assertions at all!  All they show\n  is rolename-pair relations between pairs of roleplayers.\n\n* You can\'t create an x_LrnRrnRrp property unless the x-proxy it\n  refers to already already exists.  That x-proxy must already have\n  one or more SIPs.  (Because conferral operations can\'t duplicate\n  SIPs that don\'t exist.)  The SIPs of x-proxies are outside the scope\n  of this TMA.\n\nproperties of x-proxies\n_______________________\n\n*     6 properties on each roleplayer:\n\n(1) x_LrnRrnRrp\n(2) x_LrnRrpRrn\n(3) x_RrnRrpLrn\n(4) x_RrnLrnRrp\n(5) x_RrpLrnRrn\n(6) x_RrpRrnLrn\n\n  Each of the six property classes consists of a dictionary whose\n  keys (which are strings) have values that are dictionaries whose\n  keys (which are strings) have values that are lists of strings.\n  \n  All of the six property classes have essentially the same\n  constraints, most of which are enforced by the valueType\n  implementation.  Their values must be non-empty dictionaries, whose\n  keys must be strings, whose values must be non-empty dictionaries,\n  whose keys must be strings, whose values must be non-empty lists,\n  whose items must be strings.  At one of the three levels, the\n  strings must be valid proxyIds of living proxies.  At the other two\n  levels, in any particular case, the strings must not match, and they\n  must not look like proxyIds.\n\n  The property-class-specific value checking checks\n  the other 11 properties for consistency with itself.\n\n  (1) x_localRoleName_remoteRoleName_remoteRolePlayer (x_LrnRrnRrp)\n      keys are roleNames played by this rolePlayer; value is a dict in which\n        keys are roleNames played by remote rolePlayers with respect to this rolePlayer, and\n        values are references to remote rolePlayers\n\n      Property value type:\n        stringKeyDictOfStringKeyDictsWithStringListValues3 \n          The \'3\' means that levelAtWhichProxyReferenceAppears ==\n          \'third\', i.e., the string list values are proxyIds, while\n          the keys of the first- and second-level dictionaries are\n          role names.\n\n  (2) x_localRoleName_remoteRolePlayer_remoteRoleName (x_LrnRrpRrn)\n      keys are roleNames played by this rolePlayer; value is a dict in which\n        keys are references to remote rolePlayers, and\n        values are roleNames played by remote rolePlayers with respect to this rolePlayer\n\n      Property value type:\n        stringKeyDictOfStringKeyDictsWithStringListValues2 \n\n  (3) x_remoteRoleNames_remoteRolePlayer_localRoleNames (x_RrnRrpLrn)\n      keys are roleNames played by remote rolePlayers with respect to this rolePlayer; value is a dict in which\n        keys are references to remote rolePlayers, and\n        values are roleNames played by this rolePlayer\n\n      Property value type:\n        stringKeyDictOfStringKeyDictsWithStringListValues2\n\n  (4) x_remoteRoleNames_localRoleNames_remoteRolePlayer (x_RrnLrnRrp)\n      keys are roleNames played by remote rolePlayers with respect to this rolePlayer; value is a dict in which\n        keys are roleNames played by this rolePlayer, andn\n        values are references to remote rolePlayers\n\n      Property value type:\n        stringKeyDictOfStringKeyDictsWithStringListValues3\n\n  (5) x_remoteRolePlayer_localRoleNames_remoteRoleNames (x_RrpLrnRrn)\n      keys are references to remote rolePlayers; value is a dict in which\n        keys are roleNames played by this rolePlayer, and\n        values are roleNames played by remote rolePlayers with respect to this rolePlayer\n\n      Property value type:\n        stringKeyDictOfStringKeyDictsWithStringListValues1\n\n  (6) x_remoteRolePlayer_remoteRoleNames_localRoleNames (x_RrpRrnLrn)\n      keys are references to remote rolePlayers; value is a dict in which\n        keys are roleNames played by remote rolePlayers with respect to this rolePlayer, and\n        keys are roleNames played by this rolePlayer\n\n      Property value type:\n        stringKeyDictOfStringKeyDictsWithStringListValues1\n\n-->\n%3c!-- %3c!DOCTYPE VersavantTMA SYSTEM "http://www.versavant.org/dtds/TMAConfigFile.dtd">-->\n%3c!DOCTYPE VersavantTMA SYSTEM "../versavantTMA.dtd">\n%3cVersavantTMA\nVersavantTMADTDVersion="1"\n\n  >%3cDesc>TMA for unreified relationships with role names.%3c/Desc\n\n  >%3cValueType ValueTypeName="stringKeyDictOfStringKeyDictsWithStringListValues1"\n    >%3cDesc>Value type for U_Assert properties whose first-level dictionary keys are proxyIds.%3c/Desc\n    >%3cValueIsNotOfType__\n      functionModuleFilePath="valueTypes.py"\n      functionName="ValueIsNotOfType_stringKeyDictOfStringKeyDictsWithStringListValues_"\n      functionExtraArgsString="levelAtWhichProxyReferenceAppears = \'first\'"\n    />%3cInstanceOf__ValueTypeToXMLContentString\n      functionModuleFilePath="valueTypes.py"\n      functionName="InstanceOf_stringKeyDictOfStringKeyDictsWithStringListValues_ValueTypeToXMLContentString"\n    />%3cXMLContentStringToInstanceOf__ValueType\n      functionModuleFilePath="valueTypes.py"\n      functionName="XMLContentStringToInstanceOf_stringKeyDictOfStringKeyDictsWithStringListValues_ValueType"\n      functionExtraArgsString="levelAtWhichProxyReferenceAppears = \'first\'"\n  />%3c/ValueType\n\n  >%3cValueType ValueTypeName="stringKeyDictOfStringKeyDictsWithStringListValues2"\n    >%3cDesc>Value type for U_Assert properties whose second-level dictionary keys are proxyIds.%3c/Desc\n    >%3cValueIsNotOfType__\n      functionModuleFilePath="valueTypes.py"\n      functionName="ValueIsNotOfType_stringKeyDictOfStringKeyDictsWithStringListValues_"\n      functionExtraArgsString="levelAtWhichProxyReferenceAppears = \'second\'"\n    />%3cInstanceOf__ValueTypeToXMLContentString\n      functionModuleFilePath="valueTypes.py"\n      functionName="InstanceOf_stringKeyDictOfStringKeyDictsWithStringListValues_ValueTypeToXMLContentString"\n    />%3cXMLContentStringToInstanceOf__ValueType\n      functionModuleFilePath="valueTypes.py"\n      functionName="XMLContentStringToInstanceOf_stringKeyDictOfStringKeyDictsWithStringListValues_ValueType"\n      functionExtraArgsString="levelAtWhichProxyReferenceAppears = \'second\'"\n  />%3c/ValueType\n\n  >%3cValueType ValueTypeName="stringKeyDictOfStringKeyDictsWithStringListValues3"\n    >%3cDesc>Value type for U_Assert properties whose third-level list items are proxyIds.%3c/Desc\n    >%3cValueIsNotOfType__\n      functionModuleFilePath="valueTypes.py"\n      functionName="ValueIsNotOfType_stringKeyDictOfStringKeyDictsWithStringListValues_"\n      functionExtraArgsString="levelAtWhichProxyReferenceAppears = \'third\'"\n    />%3cInstanceOf__ValueTypeToXMLContentString\n      functionModuleFilePath="valueTypes.py"\n      functionName="InstanceOf_stringKeyDictOfStringKeyDictsWithStringListValues_ValueTypeToXMLContentString"\n    />%3cXMLContentStringToInstanceOf__ValueType\n      functionModuleFilePath="valueTypes.py"\n      functionName="XMLContentStringToInstanceOf_stringKeyDictOfStringKeyDictsWithStringListValues_ValueType"\n      functionExtraArgsString="levelAtWhichProxyReferenceAppears = \'third\'"\n  />%3c/ValueType\n\n  >%3cPropertyClass PropertyClassName="x_LrnRrnRrp" ValueType="stringKeyDictOfStringKeyDictsWithStringListValues3"\n    >%3cDesc>x_localRoleName_remoteRoleName_remoteRolePlayer (x_LrnRrnRrp)%3c/Desc\n    >%3cAdd__PropToOverheadDict\n      functionModuleFilePath="propertyClasses.py"\n      functionName="Add_U_assert_PropToOverheadDict"\n      functionExtraArgsString="levelAtWhichProxyReferenceAppears = \'third\'"\n    />%3cRemove__PropFromOverheadDict\n      functionModuleFilePath="propertyClasses.py"\n      functionName="Remove_U_assert_PropFromOverheadDict"\n\n    />%3cValueIsInvalidFor__Property\n      functionModuleFilePath="propertyClasses.py"\n      functionName="ValueIsInvalidFor_U_assert_Property"\n\n    />%3cMerge__PropertyValues\n      functionModuleFilePath="propertyClasses.py"\n      functionName="Merge_U_assert_PropertyValues"\n      functionExtraArgsString="workingValueSourceListOfPropertyInstances = workingValueSourceListOfPropertyInstances, propertyInstanceToMerge = propertyInstanceToMerge"\n    />%3cValuesOf__PropertyInstancesAreSignificantlyDifferent\n      functionModuleFilePath="propertyClasses.py"\n      functionName="ValuesOf_U_assert_PropertyInstancesAreSignificantlyDifferent"\n      functionExtraArgsString="propertyInstance1 = propertyInstance1, propertyInstance2 = propertyInstance2, workingValueSourceListOfPropertyInstances = workingValueSourceListOfPropertyInstances, propertyInstanceToMerge = propertyInstanceToMerge"\n\n    />%3cUpdateProxyReferencesIn__Value\n      functionModuleFilePath="propertyClasses.py"\n      functionName="UpdateProxyReferencesIn_U_assert_Value"\n      functionExtraArgsString="levelAtWhichProxyReferenceAppears = \'third\'"\n  />%3c/PropertyClass\n\n  >%3cPropertyClass PropertyClassName="x_LrnRrpRrn" ValueType="stringKeyDictOfStringKeyDictsWithStringListValues2"\n    >%3cDesc>x_localRoleName_remoteRolePlayer_remoteRoleName (x_LrnRrpRrn)%3c/Desc\n    >%3cAdd__PropToOverheadDict\n      functionModuleFilePath="propertyClasses.py"\n      functionName="Add_U_assert_PropToOverheadDict"\n      functionExtraArgsString="levelAtWhichProxyReferenceAppears = \'second\'"\n    />%3cRemove__PropFromOverheadDict\n      functionModuleFilePath="propertyClasses.py"\n      functionName="Remove_U_assert_PropFromOverheadDict"\n\n    />%3cValueIsInvalidFor__Property\n      functionModuleFilePath="propertyClasses.py"\n      functionName="ValueIsInvalidFor_U_assert_Property"\n\n    />%3cMerge__PropertyValues\n      functionModuleFilePath="propertyClasses.py"\n      functionName="Merge_U_assert_PropertyValues"\n      functionExtraArgsString="workingValueSourceListOfPropertyInstances = workingValueSourceListOfPropertyInstances, propertyInstanceToMerge = propertyInstanceToMerge"\n    />%3cValuesOf__PropertyInstancesAreSignificantlyDifferent\n      functionModuleFilePath="propertyClasses.py"\n      functionName="ValuesOf_U_assert_PropertyInstancesAreSignificantlyDifferent"\n      functionExtraArgsString="propertyInstance1 = propertyInstance1, propertyInstance2 = propertyInstance2, workingValueSourceListOfPropertyInstances = workingValueSourceListOfPropertyInstances, propertyInstanceToMerge = propertyInstanceToMerge"\n\n    />%3cUpdateProxyReferencesIn__Value\n      functionModuleFilePath="propertyClasses.py"\n      functionName="UpdateProxyReferencesIn_U_assert_Value"\n      functionExtraArgsString="levelAtWhichProxyReferenceAppears = \'second\'"\n  />%3c/PropertyClass\n\n  >%3cPropertyClass PropertyClassName="x_RrnRrpLrn" ValueType="stringKeyDictOfStringKeyDictsWithStringListValues2"\n    >%3cDesc>x_remoteRoleNames_remoteRolePlayer_localRoleNames (x_RrnRrpLrn)%3c/Desc\n    >%3cAdd__PropToOverheadDict\n      functionModuleFilePath="propertyClasses.py"\n      functionName="Add_U_assert_PropToOverheadDict"\n      functionExtraArgsString="levelAtWhichProxyReferenceAppears = \'second\'"\n    />%3cRemove__PropFromOverheadDict\n      functionModuleFilePath="propertyClasses.py"\n      functionName="Remove_U_assert_PropFromOverheadDict"\n\n    />%3cValueIsInvalidFor__Property\n      functionModuleFilePath="propertyClasses.py"\n      functionName="ValueIsInvalidFor_U_assert_Property"\n\n    />%3cMerge__PropertyValues\n      functionModuleFilePath="propertyClasses.py"\n      functionName="Merge_U_assert_PropertyValues"\n      functionExtraArgsString="workingValueSourceListOfPropertyInstances = workingValueSourceListOfPropertyInstances, propertyInstanceToMerge = propertyInstanceToMerge"\n    />%3cValuesOf__PropertyInstancesAreSignificantlyDifferent\n      functionModuleFilePath="propertyClasses.py"\n      functionName="ValuesOf_U_assert_PropertyInstancesAreSignificantlyDifferent"\n      functionExtraArgsString="propertyInstance1 = propertyInstance1, propertyInstance2 = propertyInstance2, workingValueSourceListOfPropertyInstances = workingValueSourceListOfPropertyInstances, propertyInstanceToMerge = propertyInstanceToMerge"\n\n    />%3cUpdateProxyReferencesIn__Value\n      functionModuleFilePath="propertyClasses.py"\n      functionName="UpdateProxyReferencesIn_U_assert_Value"\n      functionExtraArgsString="levelAtWhichProxyReferenceAppears = \'second\'"\n  />%3c/PropertyClass\n\n  >%3cPropertyClass PropertyClassName="x_RrnLrnRrp" ValueType="stringKeyDictOfStringKeyDictsWithStringListValues3"\n    >%3cDesc>x_remoteRoleNames_localRoleNames_remoteRolePlayer (x_RrnLrnRrp)%3c/Desc\n    >%3cAdd__PropToOverheadDict\n      functionModuleFilePath="propertyClasses.py"\n      functionName="Add_U_assert_PropToOverheadDict"\n      functionExtraArgsString="levelAtWhichProxyReferenceAppears = \'third\'"\n    />%3cRemove__PropFromOverheadDict\n      functionModuleFilePath="propertyClasses.py"\n      functionName="Remove_U_assert_PropFromOverheadDict"\n\n    />%3cValueIsInvalidFor__Property\n      functionModuleFilePath="propertyClasses.py"\n      functionName="ValueIsInvalidFor_U_assert_Property"\n\n    />%3cMerge__PropertyValues\n      functionModuleFilePath="propertyClasses.py"\n      functionName="Merge_U_assert_PropertyValues"\n      functionExtraArgsString="workingValueSourceListOfPropertyInstances = workingValueSourceListOfPropertyInstances, propertyInstanceToMerge = propertyInstanceToMerge"\n    />%3cValuesOf__PropertyInstancesAreSignificantlyDifferent\n      functionModuleFilePath="propertyClasses.py"\n      functionName="ValuesOf_U_assert_PropertyInstancesAreSignificantlyDifferent"\n      functionExtraArgsString="propertyInstance1 = propertyInstance1, propertyInstance2 = propertyInstance2, workingValueSourceListOfPropertyInstances = workingValueSourceListOfPropertyInstances, propertyInstanceToMerge = propertyInstanceToMerge"\n\n    />%3cUpdateProxyReferencesIn__Value\n      functionModuleFilePath="propertyClasses.py"\n      functionName="UpdateProxyReferencesIn_U_assert_Value"\n      functionExtraArgsString="levelAtWhichProxyReferenceAppears = \'third\'"\n  />%3c/PropertyClass\n\n  >%3cPropertyClass PropertyClassName="x_RrpLrnRrn" ValueType="stringKeyDictOfStringKeyDictsWithStringListValues1"\n    >%3cDesc>x_remoteRolePlayer_localRoleNames_remoteRoleNames (x_RrpLrnRrn)%3c/Desc\n    >%3cAdd__PropToOverheadDict\n      functionModuleFilePath="propertyClasses.py"\n      functionName="Add_U_assert_PropToOverheadDict"\n      functionExtraArgsString="levelAtWhichProxyReferenceAppears = \'first\'"\n    />%3cRemove__PropFromOverheadDict\n      functionModuleFilePath="propertyClasses.py"\n      functionName="Remove_U_assert_PropFromOverheadDict"\n\n    />%3cValueIsInvalidFor__Property\n      functionModuleFilePath="propertyClasses.py"\n      functionName="ValueIsInvalidFor_U_assert_Property"\n\n    />%3cMerge__PropertyValues\n      functionModuleFilePath="propertyClasses.py"\n      functionName="Merge_U_assert_PropertyValues"\n      functionExtraArgsString="workingValueSourceListOfPropertyInstances = workingValueSourceListOfPropertyInstances, propertyInstanceToMerge = propertyInstanceToMerge"\n    />%3cValuesOf__PropertyInstancesAreSignificantlyDifferent\n      functionModuleFilePath="propertyClasses.py"\n      functionName="ValuesOf_U_assert_PropertyInstancesAreSignificantlyDifferent"\n      functionExtraArgsString="propertyInstance1 = propertyInstance1, propertyInstance2 = propertyInstance2, workingValueSourceListOfPropertyInstances = workingValueSourceListOfPropertyInstances, propertyInstanceToMerge = propertyInstanceToMerge"\n\n    />%3cUpdateProxyReferencesIn__Value\n      functionModuleFilePath="propertyClasses.py"\n      functionName="UpdateProxyReferencesIn_U_assert_Value"\n      functionExtraArgsString="levelAtWhichProxyReferenceAppears = \'first\'"\n  />%3c/PropertyClass\n\n  >%3cPropertyClass PropertyClassName="x_RrpRrnLrn" ValueType="stringKeyDictOfStringKeyDictsWithStringListValues1"\n    >%3cDesc>x_remoteRolePlayer_remoteRoleNames_localRoleNames (x_RrpRrnLrn)%3c/Desc\n    >%3cAdd__PropToOverheadDict\n      functionModuleFilePath="propertyClasses.py"\n      functionName="Add_U_assert_PropToOverheadDict"\n      functionExtraArgsString="levelAtWhichProxyReferenceAppears = \'first\'"\n    />%3cRemove__PropFromOverheadDict\n      functionModuleFilePath="propertyClasses.py"\n      functionName="Remove_U_assert_PropFromOverheadDict"\n\n    />%3cValueIsInvalidFor__Property\n      functionModuleFilePath="propertyClasses.py"\n      functionName="ValueIsInvalidFor_U_assert_Property"\n\n    />%3cMerge__PropertyValues\n      functionModuleFilePath="propertyClasses.py"\n      functionName="Merge_U_assert_PropertyValues"\n      functionExtraArgsString="workingValueSourceListOfPropertyInstances = workingValueSourceListOfPropertyInstances, propertyInstanceToMerge = propertyInstanceToMerge"\n    />%3cValuesOf__PropertyInstancesAreSignificantlyDifferent\n      functionModuleFilePath="propertyClasses.py"\n      functionName="ValuesOf_U_assert_PropertyInstancesAreSignificantlyDifferent"\n      functionExtraArgsString="propertyInstance1 = propertyInstance1, propertyInstance2 = propertyInstance2, workingValueSourceListOfPropertyInstances = workingValueSourceListOfPropertyInstances, propertyInstanceToMerge = propertyInstanceToMerge"\n\n    />%3cUpdateProxyReferencesIn__Value\n      functionModuleFilePath="propertyClasses.py"\n      functionName="UpdateProxyReferencesIn_U_assert_Value"\n      functionExtraArgsString="levelAtWhichProxyReferenceAppears = \'first\'"\n  />%3c/PropertyClass\n\n  >%3cConferralRule ConferralRuleName="infer_U_assert_properties_from_U_assert_properties"\n      functionModuleFilePath="conferralRules.py"\n      functionName="infer_U_assert_properties_from_U_assert_properties"\n    >%3cDesc>From each U_assert property, confer all other U_assert properties.%3c/Desc\n  >%3c/ConferralRule\n\n  >%3cConferralRule ConferralRuleName="bridgeFrom_A_assert_modelTo_U_assert"\n      functionModuleFilePath="conferralRules.py"\n      functionName="bridgeFrom_a_sip_modelTo_U_assert"\n      functionExtraArgsString="bridgeFromTMAName = \'A_assert\',\n                               rolesTMAName = \'Roles\',\n                               roleNamePropertyClassName = \'role name\',\n                               assertionModel = \'A_assert\'"\n    >%3cDesc>From each A_assert,,a_sip property, confer an x_LrnRrnRrp property on each of its role players.%3c/Desc\n  >%3c/ConferralRule\n\n>%3c/VersavantTMA>\n'%0ap1%0a.</TMAConfigFile

    ><TMAModule ModName="001_conferralRules" ModSrcFileName="001_conferralRules.py">S'#####################################################################\n#####################################################################\n## Copyright 2005 Steven R. Newcomb                                ##\n##                                                                 ##\n## This software is licensed under the Apache License, Version 2.0 ##\n## (the "License"); you may not use this file except in compliance ##\n## with the License.  Copies of the License are available at       ##\n##        http://www.apache.org/licenses/LICENSE-2.0               ##\n##                                                                 ##\n## Unless required by applicable law or agreed to in writing,      ##\n## software distributed under the License is distributed on an "AS ##\n## IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either ##\n## express or implied.  See the License for the specific language  ##\n## governing permissions and limitations under the License.        ##\n##                                                                 ##\n## Copies of the source code and the license are available at      ##\n##        http://www.versavant.org                                 ##\n#####################################################################\n#####################################################################\n\n\n#####################################################################\n## Implementation of the conferral rule\n## "infer_U_assert_properties_from_U_assert_properties"\n## in Topic Map Application "U_assert".\n#####################################################################\n\n####################################\ncvsRevision = "$Revision: 1.2 $" ##\n####################################\n\nimport re, copy\n\npropNameParseREString = \'(^x_)([RL]r[np])([RL]r[np])([RL]r[np]$)\'\npropNameParseRE = re.compile( propNameParseREString)\n\n\n## globals\nlocalRoleName = None     ## name of role played by subject of local proxy\nlocalRolePlayerProxyId = None   ## proxyId of local proxy\nremoteRoleName = None    ## name of role played by subject of remote proxy\nremoteRolePlayerProxyId = None  ## proxyId of remote proxy\ncurrentProxyId2NewProxyMap = {}  ## map of proxies that are good to add\n                                 ## properties to within the same ProcOp\nlevelDict = {                    ## level at which roleplayer\'s proxyId appears\n    \'x_LrnRrnRrp\': \'third\',\n    \'x_LrnRrpRrn\': \'second\',\n    \'x_RrnRrpLrn\': \'second\',\n    \'x_RrnLrnRrp\': \'third\',\n    \'x_RrpLrnRrn\': \'first\',\n    \'x_RrpRrnLrn\': \'first\'\n}\n\n\n\n\ndef infer_U_assert_properties_from_U_assert_properties( vsv, conferralRule, **args):\n\n    global localRoleName, localRolePlayerProxyId, remoteRoleName, remoteRolePlayerProxyId, currentProxyId2NewProxyMap\n\n\n    topicMap = conferralRule.topicMap  ## make the below code less verbose (and maybe run slightly faster)\n    TMA = conferralRule.TMA  ## this is the TMA that defines this conferral rule\n\n    U_assert_propertyClassNameList = [ \'x_LrnRrnRrp\',\n                                  \'x_LrnRrpRrn\',\n                                  \'x_RrnRrpLrn\',\n                                  \'x_RrnLrnRrp\',\n                                  \'x_RrpLrnRrn\',\n                                  \'x_RrpRrnLrn\']\n\n    for currentTriggeringPropertyClassName in U_assert_propertyClassNameList:\n        matchObj = propNameParseRE.match( currentTriggeringPropertyClassName)\n        dict1Code = matchObj.group(2)       ## \'Lrn\', \'Rrn\', or \'Rrp\'\n        dict2Code = matchObj.group(3)       ## \'Lrn\', \'Rrn\', or \'Rrp\'\n        stringListCode = matchObj.group(4)  ## \'Lrn\', \'Rrn\', or \'Rrp\'\n\n\n        currentPropertyInProxyKey = vsv.catKey( TMA.TMAName, currentTriggeringPropertyClassName)\n\n        currentProxyIdList = TMA.propertyClasses[ currentTriggeringPropertyClassName].overheadDict[ \'proxyIds\'].keys()\n        for currentProxyId in currentProxyIdList:\n            currentProxy = topicMap.proxies[ currentProxyId]\n            currentTriggeringPropertyInstance = currentProxy.propertyInstances[ currentPropertyInProxyKey]\n            \n            ## Don\'t be triggered by any propertyInstance that was\n            ## output by an operation of this rule, and don\'t be\n            ## triggered by a propertyInstance more than once.\n            conferralRuleTriggerRoleId = vsv.catKey( conferralRule.conferralRuleKey, \'A\')\n            if currentTriggeringPropertyInstance.conferralTriggerAncestry.has_key( conferralRuleTriggerRoleId) or \\\n                currentTriggeringPropertyInstance.conferralsTriggered.has_key( conferralRuleTriggerRoleId):\n                continue\n\n            triggers = {}  ## new dictionary to work in\n            triggers[ \'A\'] = currentTriggeringPropertyInstance.propertyInstanceKey\n            conferredValueSources = {}  ## new dictionary to work in\n            conferredValueSources[ \'A\'] = currentTriggeringPropertyInstance.propertyInstanceKey\n\n            if not vsv.conferralMayBeSignificant( conferralRule, triggers, conferredValueSources):\n                continue\n\n            currentProxyId2NewProxyMap.clear()\n\n            xLocalRolePlayerProxyId = currentTriggeringPropertyInstance.proxyId\n            dict1 = currentTriggeringPropertyInstance._value\n            for dict1Key in dict1:\n                dict2 = dict1[ dict1Key]\n                if dict1Code == \'Lrn\':\n                    xLocalRoleName = dict1Key\n                elif dict1Code == \'Rrn\':\n                    xRemoteRoleName = dict1Key\n                else: ## dict1Code == \'Rrp\':\n                    xRemoteRolePlayerProxyId = dict1Key\n                for dict2Key in dict2:\n                    stringList = dict2[ dict2Key]\n                    if dict2Code == \'Lrn\':\n                        xLocalRoleName = dict2Key\n                    elif dict2Code == \'Rrn\':\n                        xRemoteRoleName = dict2Key\n                    else: ## dict2Code == \'Rrp\':\n                        xRemoteRolePlayerProxyId = dict2Key\n                    for string in stringList:\n                        if stringListCode == \'Lrn\':\n                            xLocalRoleName = string\n                        elif stringListCode == \'Rrn\':\n                            xRemoteRoleName = string\n                        else: ## stringListCode == \'Rrp\':\n                            xRemoteRolePlayerProxyId = string\n\n                        ## Now, the question is: does this proxy have\n                        ## the other properties that it needs to have,\n                        ## and do those other properties have the\n                        ## values they need to have, in order to\n                        ## correspond to this one\'s value(s)?\n\n                        ## confer on a proxy for the local\n                        ## role-playing subject, if necessary.\n                        ## set globals:\n                        localRoleName    = xLocalRoleName\n                        localRolePlayerProxyId  = xLocalRolePlayerProxyId\n                        remoteRoleName   = xRemoteRoleName\n                        remoteRolePlayerProxyId = xRemoteRolePlayerProxyId\n                        conferUAssertPropertiesInProxy( vsv, triggers, conferredValueSources, topicMap, TMA)\n\n                        ## confer on a proxy for the remote\n                        ## role-playing subject, if necessary (reverse\n                        ## local and remote).\n                        ## set globals:\n                        localRoleName    = xRemoteRoleName\n                        localRolePlayerProxyId  = xRemoteRolePlayerProxyId\n                        remoteRoleName   = xLocalRoleName\n                        remoteRolePlayerProxyId = xLocalRolePlayerProxyId\n                        conferUAssertPropertiesInProxy( vsv, triggers, conferredValueSources, topicMap, TMA)\n\n\n#######################################################\ndef conferUAssertPropertiesInProxy( vsv, triggers, conferredValueSources, topicMap, TMA):\n    \n    global localRoleName, localRolePlayerProxyId, remoteRoleName, remoteRolePlayerProxyId, currentProxyId2NewProxyMap\n\n    uaExistingPropDict = {\n        \'x_LrnRrnRrp\': None,\n        \'x_LrnRrpRrn\': None,\n        \'x_RrnRrpLrn\': None,\n        \'x_RrnLrnRrp\': None,\n        \'x_RrpLrnRrn\': None,\n        \'x_RrpRrnLrn\': None\n    }\n    localProxy = topicMap.proxies[ localRolePlayerProxyId]\n    for xPropertyInstanceKey in localProxy.propertyInstances:\n        xPropertyInstance = localProxy.propertyInstances[ xPropertyInstanceKey]\n        xPropertyClassName = xPropertyInstance.propertyClass.propertyClassName\n        if xPropertyClassName in uaExistingPropDict:\n            uaExistingPropDict[ xPropertyClassName] = xPropertyInstance\n\n    uaPotentialNewPropDict = {\n        \'x_LrnRrnRrp\': [ localRoleName, remoteRoleName, remoteRolePlayerProxyId],\n        \'x_LrnRrpRrn\': [ localRoleName, remoteRolePlayerProxyId, remoteRoleName],\n        \'x_RrnRrpLrn\': [ remoteRoleName, remoteRolePlayerProxyId, localRoleName],\n        \'x_RrnLrnRrp\': [ remoteRoleName, localRoleName, remoteRolePlayerProxyId],\n        \'x_RrpLrnRrn\': [ remoteRolePlayerProxyId, localRoleName, remoteRoleName],\n        \'x_RrpRrnLrn\': [ remoteRolePlayerProxyId, remoteRoleName, localRoleName]\n    }\n\n    for uaPropName in uaExistingPropDict:\n        \n\n        uaPropertyInstance = uaExistingPropDict[ uaPropName]\n        if not uaPropertyInstance:\n            setOrTweakUAssertProperty( vsv, topicMap, TMA, uaPropName, triggers, conferredValueSources, uaPotentialNewPropDict)\n\n        else:\n            uaPropVal = uaPropertyInstance._value                        \n            if uaPropName == \'x_LrnRrnRrp\':\n                if localRoleName not in uaPropVal:\n                    setOrTweakUAssertProperty( vsv, topicMap, TMA, uaPropName, triggers, conferredValueSources, uaPotentialNewPropDict)\n                elif remoteRoleName not in uaPropVal[ localRoleName]:\n                    setOrTweakUAssertProperty( vsv, topicMap, TMA, uaPropName, triggers, conferredValueSources, uaPotentialNewPropDict)\n                elif remoteRolePlayerProxyId not in uaPropVal[ localRoleName][ remoteRoleName]:\n                    setOrTweakUAssertProperty( vsv, topicMap, TMA, uaPropName, triggers, conferredValueSources, uaPotentialNewPropDict)\n\n            elif uaPropName == \'x_LrnRrpRrn\':\n                if localRoleName not in uaPropVal:\n                    setOrTweakUAssertProperty( vsv, topicMap, TMA, uaPropName, triggers, conferredValueSources, uaPotentialNewPropDict)\n                elif remoteRolePlayerProxyId not in uaPropVal[ localRoleName]:\n                    setOrTweakUAssertProperty( vsv, topicMap, TMA, uaPropName, triggers, conferredValueSources, uaPotentialNewPropDict)\n                elif remoteRoleName not in uaPropVal[ localRoleName][ remoteRolePlayerProxyId]:\n                    setOrTweakUAssertProperty( vsv, topicMap, TMA, uaPropName, triggers, conferredValueSources, uaPotentialNewPropDict)\n\n            elif uaPropName == \'x_RrnRrpLrn\':\n                if remoteRoleName not in uaPropVal:\n                    setOrTweakUAssertProperty( vsv, topicMap, TMA, uaPropName, triggers, conferredValueSources, uaPotentialNewPropDict)\n                elif remoteRolePlayerProxyId not in uaPropVal[ remoteRoleName]:\n                    setOrTweakUAssertProperty( vsv, topicMap, TMA, uaPropName, triggers, conferredValueSources, uaPotentialNewPropDict)\n                elif localRoleName not in uaPropVal[ remoteRoleName][ remoteRolePlayerProxyId]:\n                    setOrTweakUAssertProperty( vsv, topicMap, TMA, uaPropName, triggers, conferredValueSources, uaPotentialNewPropDict)\n\n            elif uaPropName == \'x_RrnLrnRrp\':\n                if remoteRoleName not in uaPropVal:\n                    setOrTweakUAssertProperty( vsv, topicMap, TMA, uaPropName, triggers, conferredValueSources, uaPotentialNewPropDict)\n                elif localRoleName not in uaPropVal[ remoteRoleName]:\n                    setOrTweakUAssertProperty( vsv, topicMap, TMA, uaPropName, triggers, conferredValueSources, uaPotentialNewPropDict)\n                elif remoteRolePlayerProxyId not in uaPropVal[ remoteRoleName][ localRoleName]:\n                    setOrTweakUAssertProperty( vsv, topicMap, TMA, uaPropName, triggers, conferredValueSources, uaPotentialNewPropDict)\n\n            elif uaPropName == \'x_RrpLrnRrn\':\n                if remoteRolePlayerProxyId not in uaPropVal:\n                    setOrTweakUAssertProperty( vsv, topicMap, TMA, uaPropName, triggers, conferredValueSources, uaPotentialNewPropDict)\n                elif localRoleName not in uaPropVal[ remoteRolePlayerProxyId]:\n                    setOrTweakUAssertProperty( vsv, topicMap, TMA, uaPropName, triggers, conferredValueSources, uaPotentialNewPropDict)\n                elif remoteRoleName not in uaPropVal[ remoteRolePlayerProxyId][ localRoleName]:\n                    setOrTweakUAssertProperty( vsv, topicMap, TMA, uaPropName, triggers, conferredValueSources, uaPotentialNewPropDict)\n\n            else: ## uaPropName == \'x_RrpRrnLrn\'\n                if remoteRolePlayerProxyId not in uaPropVal:\n                    setOrTweakUAssertProperty( vsv, topicMap, TMA, uaPropName, triggers, conferredValueSources, uaPotentialNewPropDict)\n                elif remoteRoleName not in uaPropVal[ remoteRolePlayerProxyId]:\n                    setOrTweakUAssertProperty( vsv, topicMap, TMA, uaPropName, triggers, conferredValueSources, uaPotentialNewPropDict)\n                elif localRoleName not in uaPropVal[ remoteRolePlayerProxyId][ remoteRoleName]:\n                    setOrTweakUAssertProperty( vsv, topicMap, TMA, uaPropName, triggers, conferredValueSources, uaPotentialNewPropDict)\n\n\n#######################################################\ndef setOrTweakUAssertProperty( vsv, topicMap, TMA, uaPropName, triggers, conferredValueSources, uaPotentialNewPropDict):\n    \n    global localRoleName, localRolePlayerProxyId, remoteRoleName, remoteRolePlayerProxyId, currentProxyId2NewProxyMap, levelDict\n\n    dict1Key, dict2Key, string = uaPotentialNewPropDict[ uaPropName]\n\n    nowLivingLocalRolePlayerProxy = vsv.liveProxy(  vsv.isProxyId( localRolePlayerProxyId))\n\n    if nowLivingLocalRolePlayerProxy.proxyId in currentProxyId2NewProxyMap:\n        newProxy = currentProxyId2NewProxyMap[ nowLivingLocalRolePlayerProxy.proxyId]\n    else:\n        newProxy = currentProxyId2NewProxyMap[ nowLivingLocalRolePlayerProxy.proxyId] = vsv.newProxyObject( topicMap)\n        nowLivingLocalRolePlayerProxySIP = vsv.SIPOfProxy( nowLivingLocalRolePlayerProxy)\n        vsv.newPropertyInstance( newProxy,\n                                 nowLivingLocalRolePlayerProxySIP.TMAName,\n                                 nowLivingLocalRolePlayerProxySIP.propertyClass.propertyClassName,\n                                 vsv.versaCopy( nowLivingLocalRolePlayerProxySIP._value),  ## must copy! can\'t refer!\n                                 triggers,\n                                 conferredValueSources)\n    uaPropertyInProxyKey = vsv.catKey( TMA.TMAName, uaPropName)\n    if uaPropertyInProxyKey in newProxy.propertyInstances:\n        uaPropertyInstance = newProxy.propertyInstances[ uaPropertyInProxyKey]\n        propertyClass = uaPropertyInstance.propertyClass\n                ## Remove old value from the "overhead" data for this property class\n        if propertyClass.Remove__PropFromOverheadDictFArgString:\n            execStr = \'propertyClass.Remove__PropFromOverheadDictF( vsv, uaPropertyInstance, propertyClass.overheadDict, %25s)\' %25 (\n                propertyClass.Remove__PropFromOverheadDictFArgString)\n            exec execStr\n        else:\n            propertyClass.Remove__PropFromOverheadDictF( vsv, uaPropertyInstance, propertyClass.overheadDict)\n\n            ## add the new stuff to the value\n        dict1 = uaPropertyInstance._value\n        if dict1Key not in dict1:\n            dict1[ dict1Key] = { dict2Key: [ string]}\n        else:\n            dict2 = dict1[ dict1Key]\n            if dict2Key not in dict2:\n                dict2[ dict2Key] = [ string]\n            else:\n                stringList = dict2[ dict2Key]\n                if string not in stringList:\n                    stringList.append( string)\n\n            ## Expose the list of proxy references that appear in the value as a list of proxyIds in the value of uaPropertyInstance.listOfIdsOfReferencedProxies\n        workDict = {}\n        levelAtWhichProxyReferenceAppears = levelDict[ uaPropName]\n        for dict1Key in dict1:\n            if levelAtWhichProxyReferenceAppears == \'first\':\n                workDict[ dict1Key] = None\n                continue\n            dict2 = dict1[ dict1Key]\n            for dict2Key in dict2:\n                if levelAtWhichProxyReferenceAppears == \'second\':\n                    workDict[ dict2Key] = None\n                    continue\n                stringList = dict2[ dict2Key]\n                for string in stringList:\n                    workDict[ string] = None  ## levelAtWhichProxyReferenceAppears == \'third\'\n        uaPropertyInstance.listOfIdsOfReferencedProxies = workDict.keys()\n            \n                ## Add new value to the "overhead" data for this property class  (This will set uaPropertyInstance.hashableValue, too!)\n        if propertyClass.Add__PropToOverheadDictFArgString:\n            execStr = \'propertyClass.Add__PropToOverheadDictF( vsv, uaPropertyInstance, propertyClass.overheadDict, %25s)\' %25 (\n                propertyClass.Add__PropToOverheadDictFArgString)\n            exec execStr\n        else:\n            propertyClass.Add__PropToOverheadDictF( vsv, uaPropertyInstance, propertyClass.overheadDict)\n\n\n    else:  ## uaProperty not already present in newProxy\n        vsv.newPropertyInstance( newProxy,\n                                 TMA,\n                                 uaPropName,\n                                 { dict1Key: { dict2Key: [ string]}},\n                                 triggers,\n                                 conferredValueSources)\n\n\n\n\ndef bridgeFrom_a_sip_modelTo_U_assert( vsv, conferralRule, **args):\n    ## from bridgeFromTMAName,,x_LrnRrnRrp properties, infer a_sip\n    ## properties in the conferralRule\'s TMA.  (With all that that\n    ## entails.)\n\n    bridgeFromTMAName = args[ \'bridgeFromTMAName\']\n    a_sipPropertyInstanceInProxyKey = vsv.catKey( bridgeFromTMAName, \'a_sip\')\n    assertionModel = args[ \'assertionModel\']\n\n    rolesTMAName = args[ \'rolesTMAName\']\n    roleNamePropertyClassName = args[ \'roleNamePropertyClassName\']\n    roleNamePropertyInstanceInProxyKey = vsv.catKey( rolesTMAName, roleNamePropertyClassName)\n\n    topicMap = conferralRule.topicMap\n    TMA = conferralRule.TMA  ## this is the TMA that defines this conferral rule\n    rolesTMA = topicMap.TMAs[ rolesTMAName]\n\n    existingRoleDict = rolesTMA.propertyClasses[ \'role name\'].overheadDict\n\n    bridgeFromTMA = topicMap.TMAs[ bridgeFromTMAName]\n    hashableValueDict = bridgeFromTMA.propertyClasses[ \'a_sip\'].overheadDict\n    hashableValueList = hashableValueDict.keys()\n\n    for hashableValue in hashableValueList:\n        proxyIdList = hashableValueDict[ hashableValue]\n        for proxyId in proxyIdList:\n            proxy = topicMap.proxies[ proxyId]\n            a_sipProperty = proxy.propertyInstances[ a_sipPropertyInstanceInProxyKey]\n\n            ## Don\'t be triggered by a u_assert property more than once\n            conferralRuleTriggerRoleId = vsv.catKey( conferralRule.conferralRuleKey, \'A\')\n            if a_sipProperty.conferralTriggerAncestry.has_key( conferralRuleTriggerRoleId) or \\\n                   a_sipProperty.conferralsTriggered.has_key( conferralRuleTriggerRoleId):\n                continue\n\n            triggers = {}  ## new dictionary to work in\n            triggers[ \'A\'] = a_sipProperty.propertyInstanceKey\n            conferredValueSources = {}  ## new dictionary to work in\n            conferredValueSources[ \'A\'] = a_sipProperty.propertyInstanceKey\n\n            if vsv.conferralMayBeSignificant( conferralRule, triggers, conferredValueSources):\n\n                a_sipValue = a_sipProperty._value\n                for outerLoopCounter in range( 0, len( a_sipValue) - 1):\n                    for innerLoopCounter in range( outerLoopCounter + 1, len( a_sipValue)):\n                        thisOne = a_sipValue[ outerLoopCounter]\n                        thatOne = a_sipValue[ innerLoopCounter]\n                        if assertionModel == \'BigAssert\' or assertionModel == \'TRA_assert\':\n                            thisRoleProxyId = existingRoleDict[ thisOne[ 0]][0]\n                            thisRoleProxy = vsv.isProxyId[ thisRoleProxyId, topicMap]\n                            thisRoleName = thisRoleProxy.propertyInstances[ roleNamePropertyInstanceInProxyKey]\n\n                            thatRoleProxyId = existingRoleDict[ thatOne[ 0]][0]\n                            thatRoleProxy = vsv.isProxyId[ thatRoleProxyId, topicMap]\n                            thatRoleName = thatRoleProxy.propertyInstances[ roleNamePropertyInstanceInProxyKey]\n\n                        else:  ## assertionModel == \'A_assert\'\n                            thisRoleName = thisOne[ 0]\n                            thatRoleName = thatOne[ 0]\n\n                        thisRolePlayerProxyId = thisOne[ 1]\n                        thisRolePlayerProxy = vsv.isProxyId( thisRolePlayerProxyId, topicMap)\n                        thisRolePlayerProxySIP = vsv.SIPOfProxy( thisRolePlayerProxy)\n                        thisNewRolePlayerProxy = vsv.newProxyObject( topicMap)\n                        vsv.newPropertyInstance( thisNewRolePlayerProxy,\n                                                 thisRolePlayerProxySIP.propertyClass.TMA.TMAName,\n                                                 thisRolePlayerProxySIP.propertyClass.propertyClassName,\n                                                 vsv.versaCopy( thisRolePlayerProxySIP._value),\n                                                 triggers,\n                                                 conferredValueSources)\n\n                        thatRolePlayerProxyId = thatOne[ 1]\n                        vsv.newPropertyInstance( thisNewRolePlayerProxy,\n                                                 TMA.TMAName,\n                                                 \'x_LrnRrnRrp\',\n                                                 { thisRoleName: { thatRoleName: [ thatRolePlayerProxyId]}},\n                                                 triggers,\n                                                 conferredValueSources)\n\n                        \n'%0ap1%0a.</TMAModule

    ><TMAModule ModName="001_defaults" ModSrcFileName="001_defaults.py">S'#####################################################################\n#####################################################################\n## Versavant Topic Map Application Bus / Subject Addressing Engine ##\n## Copyright 2005 Steven R. Newcomb                                ##\n##                                                                 ##\n## This software is licensed under the Apache License, Version 2.0 ##\n## (the "License"); you may not use this file except in compliance ##\n## with the License.  Copies of the License are available at       ##\n##        http://www.apache.org/licenses/LICENSE-2.0               ##\n##                                                                 ##\n## Unless required by applicable law or agreed to in writing,      ##\n## software distributed under the License is distributed on an "AS ##\n## IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either ##\n## express or implied.  See the License for the specific language  ##\n## governing permissions and limitations under the License.        ##\n##                                                                 ##\n## Copies of the source code and the license are available at      ##\n##        http://www.versavant.org                                 ##\n#####################################################################\n#####################################################################\n\n####################################\ncvsRevision = "$Revision: 1.6 $" ##\n####################################\n\n#################################################\n## Default value type implementation functions ##\n## (Default assumes values will be strings.)   ##\n#################################################\n\nimport types\n\n#######################################################\ndef DefaultValueIsNotOfType__( vsv, propertyValue, propertyClass, propertyInstance = None):\n    if not isinstance(propertyValue, types.StringType):\n        vsv.errMsg( \'Value "%25s" is not a string.\' %25 propertyValue)\n        return True\n    return False\n\n#######################################################\ndef DefaultInstanceOf__ValueTypeToXMLContentString(vsv, propertyInstance):\n    return vsv.cPickleDumpObjectAsXMLContentString( propertyInstance._value)\n\n\n#######################################################\ndef DefaultXMLContentStringToInstanceOf__ValueType(vsv, string, propertyClass):\n    return vsv.cPickleLoadObjectFromXMLContentString( string)\n\n\n\n#####################################################\n## Default property class implementation functions ##\n#####################################################\n\n\n#######################################################\ndef DefaultAdd__PropToOverheadDict( vsv, propertyInstance, overheadDict):\n    if not isinstance( propertyInstance._value, types.StringType):\n        vsv.errMsg( \'The DefaultAdd__PropToOverheadDict() function cannot be used with values other than strings.  propertyInstance._value == "%25s", propertyClass = "%25s", property instance = "%25s"\' %25 (\n            propertyInstance._value,\n            propertyInstance.propertyClass.propertyClassName,\n            vsv.catKey( propertyInstance.topicMap.topicMapName, propertyInstance.propertyInstanceKey)\n            ))\n\n    if overheadDict.has_key( propertyInstance._value):\n        overheadDict[ propertyInstance._value].append( propertyInstance.proxyId)\n    else:\n        overheadDict[ propertyInstance._value] = [ propertyInstance.proxyId]\n\n\n#######################################################\ndef DefaultRemove__PropFromOverheadDict( vsv, propertyInstance, overheadDict):\n    if not isinstance( propertyInstance._value, types.StringType):\n        vsv.errMsg( \'The DefaultRemove__PropToOverheadDict() function cannot be used with values other than strings.  propertyInstance._value == "%25s", propertyClass = "%25s", property instance = "%25s"\' %25 (\n            propertyInstance._value,\n            propertyInstance.propertyClass.propertyClassName,\n            vsv.catKey( propertyInstance.topicMap.topicMapName, propertyInstance.propertyInstanceKey)\n            ))\n\n    overheadDict[ propertyInstance._value].remove( propertyInstance.proxyId)\n    if not len( overheadDict[ propertyInstance._value]):\n        del overheadDict[ propertyInstance._value]\n\n\n#######################################################\ndef DefaultMerge__PropertyValues( vsv, value1, value2):\n    if isinstance( value1, types.StringType) and isinstance( value2, types.StringType):\n        if value1 == value2:\n            return value1\n        else:\n            return None  ## the merge failed.\n    elif isinstance( value1, types.ListType) and isinstance( value2, types.ListType):\n        returnValue = value1[:]\n        returnValue.extend( value2)\n        return returnValue\n    else:\n        return None ## the merge failed.\n\n#######################################################\ndef DefaultValuesOf__PropertyInstancesAreSignificantlyDifferent( vsv, value1, value2):\n    if isinstance( value1, types.StringType) and isinstance( value2, types.StringType):\n        if value1 != value2:\n            return True\n        return False\n    elif isinstance( value1, types.ListType) and isinstance( value2, types.ListType):\n        if len( value1) != len( value2):\n            return True\n        for j in range( len( value1)):\n            if value1[ j] != value2[ j]:\n                return True\n        return False\n    else:\n        return True  \n\n#######################################################\ndef DefaultProxiesWith__ValueNotSignificantlyDifferentFrom( vsv, propertyClass, value):\n    if not isinstance( value, types.StringType):\n        vsv.errMsg( \'The DefaultProxiesWith__ValueNotSignificantlyDifferentFrom() function cannot be used with values other than strings.  value == "%25s", propertyClass = "%25s"\' %25 (\n            value,\n            propertyClass.propertyClassName,\n            ))\n\n    if propertyClass.overheadDict.has_key( value):\n        return propertyClass.overheadDict[ value]\n    else:\n        return []  ## empty list -- no match\n\n\n###########\n## Misc. ##\n###########\n\n## The following really isn\'t a default function, because if you want\n## to use it, you must refer to it explicitly in the TMA configuration\n## file.  It can\'t be a default in the usual sense, because if it\n## were, all properties would be SIPs.  (The difference between an SIP\n## and an OP is that SIP classes have\n## MergeProxiesBecause__PropertyInstancesSpecifySameSubject()\n## functions, while OPs don\'t.)  The below function works nicely with\n## the default functions listed above; if they will work for you,\n## this probably will too.\n\n#######################################################\ndef DefaultMergeProxiesBecause__PropertyInstancesSpecifySameSubject( vsv, propertyClass):\n    for hashablePropertyValue in propertyClass.overheadDict:\n        if len( propertyClass.overheadDict[ hashablePropertyValue]) > 1:\n            vsv.mergeListOfProxies( propertyClass, propertyClass.overheadDict[ hashablePropertyValue])\n    \n\n'%0ap1%0a.</TMAModule

    ><TMAModule ModName="001_propertyClasses" ModSrcFileName="001_propertyClasses.py">S'#####################################################################\n#####################################################################\n## Copyright 2005 Steven R. Newcomb                                ##\n##                                                                 ##\n## This software is licensed under the Apache License, Version 2.0 ##\n## (the "License"); you may not use this file except in compliance ##\n## with the License.  Copies of the License are available at       ##\n##        http://www.apache.org/licenses/LICENSE-2.0               ##\n##                                                                 ##\n## Unless required by applicable law or agreed to in writing,      ##\n## software distributed under the License is distributed on an "AS ##\n## IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either ##\n## express or implied.  See the License for the specific language  ##\n## governing permissions and limitations under the License.        ##\n##                                                                 ##\n## Copies of the source code and the license are available at      ##\n##        http://www.versavant.org                                 ##\n#####################################################################\n#####################################################################\n\n####################################\ncvsRevision = "$Revision: 1.2 $" ##\n####################################\n\nimport sys, re, copy, traceback\n\npropNameParseREString = \'(^x_)([RL]r[np])([RL]r[np])([RL]r[np]$)\'\npropNameParseRE = re.compile( propNameParseREString)\n\n\n###########################\n## U_assert properties implementation\n###########################\n\n#######################################################\ndef Add_U_assert_PropToOverheadDict( vsv, propertyInstance, overheadDict, **args):\n    levelAtWhichProxyReferenceAppears = args[ \'levelAtWhichProxyReferenceAppears\'] ## \'first\', \'second\', or \'third\'\n\n    ## calculate hashable value, which will be used later by ValuesOf__PropertyInstancesAreSignificantlyDifferent()\n    ## (The hashable value will not be used in the overhead dictionary because, since none of the U_assert properties\n    ## are SIPs, we don\'t need the overhead dictionary for determining sameness.)\n    propertyInstance.hashablePropertyValue = hashable_U_assert_PropertyValue( vsv, propertyInstance._value)\n\n    ## In order to support the\n    ## "infer_U_assert_properties_from_U_assert_properties" conferral\n    ## rule, all we need is a list of proxyIds for each U_assert\n    ## property class.  But we use only one key in the overheadDict for that purpose: \'proxyIds\'\n    if overheadDict.has_key( \'proxyIds\'):\n        if propertyInstance.proxyId not in overheadDict[ \'proxyIds\']:\n            overheadDict[ \'proxyIds\'][ propertyInstance.proxyId] = None\n    else:\n        overheadDict[ \'proxyIds\'] = { propertyInstance.proxyId: None}\n\n\n    ## register the references to proxies\n    workDict = {}\n    dict1 = propertyInstance._value\n    for dict1Key in dict1:\n        if levelAtWhichProxyReferenceAppears == \'first\':\n            workDict[ dict1Key] = None\n            continue\n        dict2 = dict1[ dict1Key]\n        for dict2Key in dict2:\n            if levelAtWhichProxyReferenceAppears == \'second\':\n                workDict[ dict2Key] = None\n                continue\n            stringList = dict2[ dict2Key]\n            for string in stringList:\n                workDict[ string] = None  ## levelAtWhichProxyReferenceAppears == \'third\'\n    propertyInstance.listOfIdsOfReferencedProxies = workDict.keys()\n\n    vsv.addNewProxyReferencesToReferencedProxiesDict( propertyInstance)\n\n#######################################################\ndef Remove_U_assert_PropFromOverheadDict( vsv, propertyInstance, overheadDict):\n    proxyIdDict = overheadDict[ \'proxyIds\']\n    if proxyIdDict.has_key( propertyInstance.proxyId):\n        del proxyIdDict[ propertyInstance.proxyId]\n    else:\n        vsv.errMsg( \'No entry in overheadDict of property class for the proxyId (%25s) of property %25s\' %25 (\n            propertyInstance.proxyId,\n            vsv.catKey( propertyInstance.topicMap.topicMapName, propertyInstance.propertyInstanceKey)))\n        sys.exit( 1)\n\n    vsv.removeOldProxyReferencesFromReferencedProxiesDict( propertyInstance)\n\n#######################################################\ndef ValueIsInvalidFor_U_assert_Property( vsv, propertyValue, propertyClass, propertyInstance = None, **args):\n    TMAName = propertyClass.TMA.TMAName\n    topicMap = propertyClass.topicMap\n\n    propertyClassName = propertyClass.propertyClassName\n\n    matchObj = propNameParseRE.match( propertyClassName)\n    dict1Code = matchObj.group(2)       ## \'Lrn\', \'Rrn\', or \'Rrp\'\n    dict2Code = matchObj.group(3)       ## \'Lrn\', \'Rrn\', or \'Rrp\'\n    stringListCode = matchObj.group(4)  ## \'Lrn\', \'Rrn\', or \'Rrp\'\n\n    ## The property class name must be one of:\n    ## (1) x_LrnRrnRrp\n    ## (2) x_LrnRrpRrn\n    ## (3) x_RrnRrpLrn\n    ## (4) x_RrnLrnRrp\n    ## (5) x_RrpLrnRrn\n    ## (6) x_RrpRrnLrn\n\n    if vsv.currentProcOperation:  ## can\'t do these checks if we\'re in the middle of anything\n        return False\n\n    localRolePlayerProxy = propertyInstance.proxy\n    localRolePlayerProxyId = localRolePlayerProxy.proxyId\n    dict1 = propertyValue\n    for dict1Key in dict1:\n        localRoleName = remoteRoleName = remoteRolePlayerProxyId = None\n        dict2 = dict1[ dict1Key]\n        if dict1Code == \'Lrn\':\n            localRoleName = dict1Key\n        elif dict1Code == \'Rrn\':\n            remoteRoleName = dict1Key\n        else: ## dict1Code == \'Rrp\':\n            remoteRolePlayerProxyId = dict1Key\n        for dict2Key in dict2:\n            stringList = dict2[ dict2Key]\n            if dict2Code == \'Lrn\':\n                localRoleName = dict2Key\n            elif dict2Code == \'Rrn\':\n                remoteRoleName = dict2Key\n            else: ## dict2Code == \'Rrp\':\n                remoteRolePlayerProxyId = dict2Key\n            for string in stringList:\n                if stringListCode == \'Lrn\':\n                    localRoleName = string\n                elif stringListCode == \'Rrn\':\n                    remoteRoleName = string\n                else: ## stringListCode == \'Rrp\':\n                    remoteRolePlayerProxyId = string\n\n                if localRolePlayerProxy.forwardTo:\n                    vsv.errMsg( \'property %25s is in a dead proxy!\' %25 ( propertyInstance.propertyInstanceKey))\n                    sys.exit( 1)\n\n                remoteRolePlayerProxy = vsv.isProxyId( remoteRolePlayerProxyId)                    \n                if remoteRolePlayerProxy.forwardTo:\n                    vsv.errMsg( \'remoteRolePlayerProxy %25s referenced by %25s ("%25s") is a dead proxy!\' %25 ( remoteRolePlayerProxy.proxyId, propertyInstance.propertyInstanceKey, propertyInstance._value))\n                    sys.exit( 1)\n                    \n\n                ## check properties of this proxy\n                checkUAssertPropertiesInProxy( vsv, topicMap, TMAName, localRolePlayerProxyId, localRoleName, remoteRolePlayerProxyId, remoteRoleName)\n\n                ## check properties of remote proxy\n                checkUAssertPropertiesInProxy( vsv, topicMap, TMAName, remoteRolePlayerProxyId, remoteRoleName, localRolePlayerProxyId, localRoleName)\n   \n\n\n#######################################################\ndef checkUAssertPropertiesInProxy( vsv, topicMap, TMAName, localProxyId, localRoleName, remoteProxyId, remoteRoleName):\n    localProxy = topicMap.proxies[ localProxyId]\n    uaPropDict = {\n        \'x_LrnRrnRrp\': None,\n        \'x_LrnRrpRrn\': None,\n        \'x_RrnRrpLrn\': None,\n        \'x_RrnLrnRrp\': None,\n        \'x_RrpLrnRrn\': None,\n        \'x_RrpRrnLrn\': None\n    }\n    for xPropertyInstanceKey in localProxy.propertyInstances:\n        xPropertyInstance = localProxy.propertyInstances[ xPropertyInstanceKey]\n        xPropertyClassName = xPropertyInstance.propertyClass.propertyClassName\n        if xPropertyClassName in uaPropDict:\n            uaPropDict[ xPropertyClassName] = xPropertyInstance\n\n    for uaPropName in uaPropDict:\n        uaPropertyInstance = uaPropDict[ uaPropName]\n        if uaPropertyInstance == None:\n            traceback.print_stack()\n            vsv.errMsg( \'No %25s property was found in proxy %25s.\' %25 ( vsv.catKey( TMAName, uaPropName), localProxy.proxyId))\n            vsv.inspect( proxyId = localProxy.proxyId)\n            sys.exit( 1)\n        uaPropVal = uaPropertyInstance._value                        \n        if uaPropName == \'x_LrnRrnRrp\':\n            if localRoleName not in uaPropVal:\n                vsv.errMsg( \'When checking property %25s, localRoleName "%25s" was not found in %25s property of proxy %25s.\' %25 ( vsv.catKey( topicMap.topicMapName, TMAName, uaPropertyInstance.propertyInstanceKey), localRoleName, vsv.catKey( TMAName, uaPropName), localProxy.proxyId))\n                sys.exit( 1)\n            if remoteRoleName not in uaPropVal[ localRoleName]:\n                vsv.errMsg( \'When checking property %25s, remoteRoleName "%25s" was not found in the [ \\\'%25s\\\'] dictionary of the %25s property of proxy %25s.\' %25 ( vsv.catKey( topicMap.topicMapName, TMAName, uaPropertyInstance.propertyInstanceKey), remoteRoleName, localRoleName, vsv.catKey( TMAName, uaPropName), localProxy.proxyId))\n                sys.exit( 1)\n            if remoteProxyId not in uaPropVal[ localRoleName][ remoteRoleName]:\n                vsv.errMsg( \'When checking property %25s, remoteProxyId "%25s" was not found in the [ \\\'%25s\\\'][ \\\'%25s\\\'] list of the %25s property of proxy %25s.\' %25 ( vsv.catKey( topicMap.topicMapName, TMAName, uaPropertyInstance.propertyInstanceKey), remoteProxyId, remoteRoleName, localRoleName, vsv.catKey( TMAName, uaPropName), localProxy.proxyId))\n                sys.exit( 1)\n\n        elif uaPropName == \'x_LrnRrpRrn\':\n            if localRoleName not in uaPropVal:\n                vsv.errMsg( \'When checking property %25s, localRoleName "%25s" was not found in %25s property of proxy %25s.\' %25 ( vsv.catKey( topicMap.topicMapName, TMAName, uaPropertyInstance.propertyInstanceKey), localRoleName, vsv.catKey( TMAName, uaPropName), localProxy.proxyId))\n                sys.exit( 1)\n            if remoteProxyId not in uaPropVal[ localRoleName]:\n                vsv.errMsg( \'When checking property %25s, remoteProxyId "%25s" was not found in the [ \\\'%25s\\\'] dictionary of the %25s property of proxy %25s.\' %25 ( vsv.catKey( topicMap.topicMapName, TMAName, uaPropertyInstance.propertyInstanceKey), remoteProxyId, localRoleName, vsv.catKey( TMAName, uaPropName), localProxy.proxyId))\n                sys.exit( 1)\n            if remoteRoleName not in uaPropVal[ localRoleName][ remoteProxyId]:\n                vsv.errMsg( \'When checking property %25s, remoteRoleName "%25s" was not found in the [ \\\'%25s\\\'][ \\\'%25s\\\'] list of the %25s property of proxy %25s.\' %25 ( vsv.catKey( topicMap.topicMapName, TMAName, uaPropertyInstance.propertyInstanceKey), remoteRoleName, remoteProxyId, localRoleName, vsv.catKey( TMAName, uaPropName), localProxy.proxyId))\n                sys.exit( 1)\n\n        elif uaPropName == \'x_RrnRrpLrn\':\n            if remoteRoleName not in uaPropVal:\n                vsv.errMsg( \'When checking property %25s, remoteRoleName "%25s" was not found in %25s property of proxy %25s.\' %25 ( vsv.catKey( topicMap.topicMapName, TMAName, uaPropertyInstance.propertyInstanceKey), remoteRoleName, vsv.catKey( TMAName, uaPropName), localProxy.proxyId))\n                sys.exit( 1)\n            if remoteProxyId not in uaPropVal[ remoteRoleName]:\n                vsv.errMsg( \'When checking property %25s, remoteProxyId "%25s" was not found in the [ \\\'%25s\\\'] dictionary of the %25s property of proxy %25s.\' %25 ( vsv.catKey( topicMap.topicMapName, TMAName, uaPropertyInstance.propertyInstanceKey), remoteProxyId, remoteRoleName, vsv.catKey( TMAName, uaPropName), localProxy.proxyId))\n                sys.exit( 1)\n            if localRoleName not in uaPropVal[ remoteRoleName][ remoteProxyId]:\n                vsv.errMsg( \'When checking property %25s, localRoleName "%25s" was not found in the [ \\\'%25s\\\'][ \\\'%25s\\\'] list of the %25s property of proxy %25s.\' %25 ( vsv.catKey( topicMap.topicMapName, TMAName, uaPropertyInstance.propertyInstanceKey), localRoleName, remoteRoleName, remoteProxyId, vsv.catKey( TMAName, uaPropName), localProxy.proxyId))\n\n        elif uaPropName == \'x_RrnLrnRrp\':\n            if remoteRoleName not in uaPropVal:\n                vsv.errMsg( \'When checking property %25s, remoteRoleName "%25s" was not found in %25s property of proxy %25s.\' %25 ( vsv.catKey( topicMap.topicMapName, TMAName, uaPropertyInstance.propertyInstanceKey), remoteRoleName, vsv.catKey( TMAName, uaPropName), localProxy.proxyId))\n                sys.exit( 1)\n            if localRoleName not in uaPropVal[ remoteRoleName]:\n                vsv.errMsg( \'When checking property %25s, localRoleName "%25s" was not found in the [ \\\'%25s\\\'] dictionary of the %25s property of proxy %25s.\' %25 ( vsv.catKey( topicMap.topicMapName, TMAName, uaPropertyInstance.propertyInstanceKey), localRoleName, remoteRoleName, vsv.catKey( TMAName, uaPropName), localProxy.proxyId))\n                sys.exit( 1)\n            if remoteProxyId not in uaPropVal[ remoteRoleName][ localRoleName]:\n                vsv.errMsg( \'When checking property %25s, remoteProxyId "%25s" was not found in the [ \\\'%25s\\\'][ \\\'%25s\\\'] list of the %25s property of proxy %25s.\' %25 ( vsv.catKey( topicMap.topicMapName, TMAName, uaPropertyInstance.propertyInstanceKey), remoteProxyId, remoteRoleName, localRoleName, vsv.catKey( TMAName, uaPropName), localProxy.proxyId))\n\n        elif uaPropName == \'x_RrpLrnRrn\':\n            if remoteProxyId not in uaPropVal:\n                vsv.errMsg( \'When checking property %25s, remoteProxyId "%25s" was not found in %25s property of proxy %25s.\' %25 ( vsv.catKey( topicMap.topicMapName, TMAName, uaPropertyInstance.propertyInstanceKey), remoteProxyId, vsv.catKey( TMAName, uaPropName), localProxy.proxyId))\n                sys.exit( 1)\n            if localRoleName not in uaPropVal[ remoteProxyId]:\n                vsv.errMsg( \'When checking property %25s, localRoleName "%25s" was not found in the [ \\\'%25s\\\'] dictionary of the %25s property of proxy %25s.\' %25 ( vsv.catKey( topicMap.topicMapName, TMAName, uaPropertyInstance.propertyInstanceKey), localRoleName, remoteProxyId, vsv.catKey( TMAName, uaPropName), localProxy.proxyId))\n                sys.exit( 1)\n            if remoteRoleName not in uaPropVal[ remoteProxyId][ localRoleName]:\n                vsv.errMsg( \'When checking property %25s, remoteRoleName "%25s" was not found in the [ \\\'%25s\\\'][ \\\'%25s\\\'] list of the %25s property of proxy %25s.\' %25 ( vsv.catKey( topicMap.topicMapName, TMAName, uaPropertyInstance.propertyInstanceKey), remoteRoleName, remoteProxyId, localRoleName, vsv.catKey( TMAName, uaPropName), localProxy.proxyId))\n\n        else: ## uaPropName == \'x_RrpRrnLrn\':\n            if remoteProxyId not in uaPropVal:\n                vsv.errMsg( \'When checking property %25s, remoteProxyId "%25s" was not found in %25s property of proxy %25s.\' %25 ( vsv.catKey( topicMap.topicMapName, TMAName, uaPropertyInstance.propertyInstanceKey), remoteProxyId, vsv.catKey( TMAName, uaPropName), localProxy.proxyId))\n                sys.exit( 1)\n            if remoteRoleName not in uaPropVal[ remoteProxyId]:\n                vsv.errMsg( \'When checking property %25s, remoteRoleName "%25s" was not found in the [ \\\'%25s\\\'] dictionary of the %25s property of proxy %25s.\' %25 ( vsv.catKey( topicMap.topicMapName, TMAName, uaPropertyInstance.propertyInstanceKey), remoteRoleName, remoteProxyId, vsv.catKey( TMAName, uaPropName), localProxy.proxyId))\n                sys.exit( 1)\n            if localRoleName not in uaPropVal[ remoteProxyId][ remoteRoleName]:\n                vsv.errMsg( \'When checking property %25s, localRoleName "%25s" was not found in the [ \\\'%25s\\\'][ \\\'%25s\\\'] list of the %25s property of proxy %25s.\' %25 ( vsv.catKey( topicMap.topicMapName, TMAName, uaPropertyInstance.propertyInstanceKey), localRoleName, remoteProxyId, remoteRoleName, vsv.catKey( TMAName, uaPropName), localProxy.proxyId))\n\n#######################################################\ndef Merge_U_assert_PropertyValues( vsv, val1dict1, val2dict1, **args):\n\n    newDict1 = {}\n\n    for dictNum in range( 1, 3):  ## weird, eh?  range( 1, 3) == [ 1, 2]\n        if dictNum == 1:\n            dict1 = val1dict1\n        else:\n            dict1 = val2dict1\n\n        for dict1Key in dict1:\n\n            dict2 = dict1[ dict1Key]\n\n            if not newDict1.has_key( dict1Key):\n                newDict2 = newDict1[ dict1Key] = {}\n            else:\n                newDict2 = newDict1[ dict1Key]\n\n            for dict2Key in dict2:\n\n                stringList = dict2[ dict2Key]\n\n                if not newDict2.has_key( dict2Key):\n                    newStringList = newDict2[ dict2Key] = []\n                else:\n                    newStringList = newDict2[ dict2Key]\n\n                for string in stringList:\n                    if string not in newStringList:\n                        newStringList.append( string)\n                \n\n    return newDict1\n\n\n#######################################################\ndef ValuesOf_U_assert_PropertyInstancesAreSignificantlyDifferent( vsv, value1, value2, **args):\n\n    propertyInstance1 = args[ \'propertyInstance1\']\n    propertyInstance2 = args[ \'propertyInstance2\']\n\n    hashableValue1 = propertyInstance1.hashablePropertyValue\n    if propertyInstance2:\n        hashableValue2 = propertyInstance2.hashablePropertyValue\n    else:\n        hashableValue2 = hashable_U_assert_PropertyValue( vsv, value2)\n\n    if hashableValue1 != hashableValue2:\n        return True\n    return False\n\n\n#######################################################\ndef UpdateProxyReferencesIn_U_assert_Value( vsv, propertyInstance, proxyIdToReplace, replacementProxyId, **args):\n\n    levelAtWhichProxyReferenceAppears = args[ \'levelAtWhichProxyReferenceAppears\'] ## \'first\', \'second\', or \'third\'\n    foundProxyIdToReplace = False\n    dict1 = propertyInstance._value\n    newDict1 = {}\n    workDict = {}  ## make a list of proxyIds here\n\n\n    for dict1Key in dict1:\n\n        dict2 = dict1[ dict1Key]\n\n        if levelAtWhichProxyReferenceAppears == \'first\':\n            if dict1Key == proxyIdToReplace:\n                newDict1Key = replacementProxyId\n                foundProxyIdToReplace = True\n            else:\n                newDict1Key = dict1Key\n            workDict[ newDict1Key] = None\n        else:\n            newDict1Key = dict1Key\n\n\n        if newDict1Key not in newDict1:\n            newDict2 = newDict1[ newDict1Key] = {}\n        else:\n            newDict2 = newDict1[ newDict1Key]\n\n        for dict2Key in dict2:\n\n            stringList = dict2[ dict2Key]\n\n            if levelAtWhichProxyReferenceAppears == \'second\':\n                if dict2Key == proxyIdToReplace:\n                    newDict2Key = replacementProxyId\n                    foundProxyIdToReplace = True\n                else:\n                    newDict2Key = dict2Key\n                workDict[ newDict2Key] = None\n            else:\n                newDict2Key = dict2Key\n\n\n            if newDict2Key not in newDict2:\n                newStringList = newDict2[ newDict2Key] = []\n            else:\n                newStringList = newDict2[ newDict2Key]\n\n            for string in stringList:\n\n                if levelAtWhichProxyReferenceAppears == \'third\':\n                    if string == proxyIdToReplace:\n                        newString = replacementProxyId\n                        foundProxyIdToReplace = True\n                    else:\n                        newString = string\n                    workDict[ newString] = None\n                else:\n                    newString = string\n\n                if newString not in newStringList:\n                    newStringList.append( newString)\n\n\n    if not foundProxyIdToReplace:\n        vsv.errMsg( \'Did not find reference to proxy %25s in propertyInstance %25s.\' %25 ( proxyIdToReplace, propertyInstance.propertyInstanceKey))\n        sys.exit( 1)\n\n    propertyClass = propertyInstance.propertyClass\n\n    ## Remove old value from the "overhead" data for this property class\n    if propertyClass.Remove__PropFromOverheadDictFArgString:\n        execStr = \'propertyClass.Remove__PropFromOverheadDictF( vsv, propertyInstance, propertyClass.overheadDict, %25s)\' %25 (\n            propertyClass.Remove__PropFromOverheadDictFArgString)\n        exec execStr\n    else:\n        propertyClass.Remove__PropFromOverheadDictF( vsv, propertyInstance, propertyClass.overheadDict)\n\n    ## Replace the old value with the new one\n    dict1.clear()\n    dict1.update( newDict1)\n        \n    ## Expose the list of proxy references that appear in the value as a list of proxyIds\n    propertyInstance.listOfIdsOfReferencedProxies = workDict.keys()\n\n###\n##     if \'00556\' in propertyInstance.listOfIdsOfReferencedProxies:\n##         vsv.errMsg( \'\\n%25s: %25s\' %25 ( propertyInstance.propertyInstanceKey, propertyInstance.listOfIdsOfReferencedProxies))\n##         if propertyInstance.topicMap.proxies[ \'00556\'].forwardTo:\n##             traceback.print_stack()\n##             vsv.errMsg( \'00556 is dead; proxyIdToReplace == "%25s", replacementProxyId == "%25s"; propertyInstance = %25s\' %25 ( proxyIdToReplace, replacementProxyId, propertyInstance.propertyInstanceKey))\n##             sys.exit( 1)\n###    \n\n    ## Add new value to the "overhead" data for this property class  (This will set propertyInstance.hashableValue, too!)\n    if propertyClass.Add__PropToOverheadDictFArgString:\n        execStr = \'propertyClass.Add__PropToOverheadDictF( vsv, propertyInstance, propertyClass.overheadDict, %25s)\' %25 (\n            propertyClass.Add__PropToOverheadDictFArgString)\n        exec execStr\n    else:\n        propertyClass.Add__PropToOverheadDictF( vsv, propertyInstance, propertyClass.overheadDict)\n\n\n#######################################################\ndef hashable_U_assert_PropertyValue( vsv, dict1):\n    ## Calculate the hashable value of a U_assert property value.\n    ## helper function for Add_U_assert_PropToOverheadDict() and\n    ## ValuesOf_U_assert_PropertyInstancesAreSignificantlyDifferent().\n\n    dict1List = []\n    for dict1Key in dict1:\n\n        dict2 = dict1[ dict1Key]\n        dict2List = []\n        for dict2Key in dict2:\n            dict2List.append( tuple( [ dict2Key, frozenset( dict2[ dict2Key])]))\n\n        dict1List.append( tuple( [ dict1Key, tuple( dict2List)]))\n    return tuple( dict1List)\n    ## return a tuple of key/value duples in each of which the second member is a\n    ## tuple of duples in each of which the second member is a frozenset.\n\n            \n'%0ap1%0a.</TMAModule

    ><TMAModule ModName="001_valueTypes" ModSrcFileName="001_valueTypes.py">S'#####################################################################\n#####################################################################\n## Versavant Topic Map Application Bus / Subject Addressing Engine ##\n## Copyright 2005 Steven R. Newcomb                                ##\n##                                                                 ##\n## This software is licensed under the Apache License, Version 2.0 ##\n## (the "License"); you may not use this file except in compliance ##\n## with the License.  Copies of the License are available at       ##\n##        http://www.apache.org/licenses/LICENSE-2.0               ##\n##                                                                 ##\n## Unless required by applicable law or agreed to in writing,      ##\n## software distributed under the License is distributed on an "AS ##\n## IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either ##\n## express or implied.  See the License for the specific language  ##\n## governing permissions and limitations under the License.        ##\n##                                                                 ##\n## Copies of the source code and the license are available at      ##\n##        http://www.versavant.org                                 ##\n#####################################################################\n#####################################################################\n\n####################################\ncvsRevision = "$Revision: 1.3 $" ##\n####################################\n\nimport types\n\n#################################################\n## implementation of                           ##\n## stringKeyDictOfStringKeyDictsWithStringListValues                         ##\n## (for all U_assert property classes)\n#################################################\n\n#######################################################\ndef ValueIsNotOfType_stringKeyDictOfStringKeyDictsWithStringListValues_( vsv, propertyValue, propertyClass, propertyInstance = None, **args):\n\n    topicMap = propertyClass.topicMap\n    levelAtWhichProxyReferenceAppears = args[ \'levelAtWhichProxyReferenceAppears\'] ## \'first\', \'second\', or \'third\'\n\n    if not isinstance( propertyValue, types.DictType):\n        if propertyInstance:\n            vsv.errMsg( \'Value of property %25s ("%25s") is not a dictionary.\' %25 ( propertyInstance.propertyInstanceKey, propertyValue))\n        else:\n            vsv.errMsg( \'Value of presumptive %25s property ("%25s") is not a dictionary.\' %25 ( vsv.catKey( propertyClass.TMA.TMAName, propertyClass.propertyClassName), propertyValue))\n        return True\n\n    if not len( propertyValue):\n        if propertyInstance:\n            vsv.errMsg( \'Value of property %25s ("%25s") is a dictionary with no keys in it.\' %25 ( propertyInstance.propertyInstanceKey, propertyValue))\n        else:\n            vsv.errMsg( \'Value of presumptive %25s property ("%25s") is a dictionary with no keys in it.\' %25 ( vsv.catKey( propertyClass.TMA.TMAName, propertyClass.propertyClassName), propertyValue))\n        return True\n\n    for dict1Key in propertyValue:\n        if not isinstance( dict1Key, types.StringType):\n            if propertyInstance:\n                vsv.errMsg( \'Key "%25s" in the dictionary that is the value of property %25s is not a string.\' %25 ( dict1Key, propertyInstance.propertyInstanceKey))\n            else:\n                vsv.errMsg( \'Key "%25s" in the dictionary that is the presumptive value of a %25s property is not a string.\' %25 ( dict1Key, vsv.catKey( propertyClass.TMA.TMAName, propertyClass.propertyClassName)))\n            return True\n\n        dict2 = propertyValue[ dict1Key]\n\n        if not isinstance( dict2, types.DictType):\n            if propertyInstance:\n                vsv.errMsg( \'Value of key "%25s" in the dictionary that is the value of property %25s ("%25s") is not a dictionary.\' %25 ( dict1Key, propertyInstance.propertyInstanceKey, dict2))\n            else:\n                vsv.errMsg( \'Value of key "%25s" in the dictionary that is the presumptive value of a %25s property ("%25s") is not a dictionary.\' %25 ( dict1Key, vsv.catKey( propertyClass.TMA.TMAName, dict2)))\n            return True\n\n        if not len( dict2):\n            if propertyInstance:\n                vsv.errMsg( \'Value of property %25s is a dictionary with key "%25s" whose value is a dictionary with no keys in it.\' %25 ( propertyInstance.propertyInstanceKey, dict1Key))\n            else:\n                vsv.errMsg( \'Value of presumptive %25s property is a dictionary with key "%25s" whose value is a dictionary with no keys in it.\' %25 ( vsv.catKey( propertyClass.TMA.TMAName, propertyClass.propertyClassName), dict1Key))\n            return True\n\n        if levelAtWhichProxyReferenceAppears == \'first\':\n            if proxyIdIsBad( vsv, dict1Key, levelAtWhichProxyReferenceAppears, propertyInstance, propertyClass):\n                return True\n        else:\n            if vsv.looksLikeProxyId( dict1Key):\n                bool, proxyIdLookalikeREString = vsv.looksLikeProxyId( dict1Key)\n                if propertyInstance:\n                    vsv.errMsg( \'Value of property %25s is a dictionary with a key ("%25s") that is bad because it looks like a proxyId.  Role names cannot match the regular expression "%25s".\' %25 ( propertyInstance.propertyInstanceKey, dict1Key, proxyIdLookalikeREString))\n                else:\n                    vsv.errMsg( \'Value of presumptive %25s property is a dictionary with a key ("%25s") that is bad because it looks like a proxyId.  Role names cannot match the regular expression "%25s".\' %25 ( vsv.catKey( propertyClass.TMA.TMAName, propertyClass.propertyClassName), dict1Key, proxyIdLookalikeREString))\n                return True\n\n        for dict2Key in dict2:\n            if not isinstance( dict2Key, types.StringType):\n                if propertyInstance:\n                    vsv.errMsg( \'Key "%25s" in the dictionary that is the value of key "%25s" in the dictionary that is the value of property %25s is not a string.\' %25 ( dict2Key, dict1Key, propertyInstance.propertyInstanceKey))\n                else:\n                    vsv.errMsg( \'Key "%25s" in the dictionary that is the value of key "%25s" in the dictionary that is the presumptive value of a %25s property is not a string.\' %25 ( dict2Key, dict1Key, vsv.catKey( propertyClass.TMA.TMAName, propertyClass.propertyClassName)))\n                return True\n\n            if levelAtWhichProxyReferenceAppears == \'second\':\n                if proxyIdIsBad( vsv, dict2Key, levelAtWhichProxyReferenceAppears, propertyInstance, propertyClass):\n                    return True\n            else:\n                if vsv.looksLikeProxyId( dict2Key):\n                    bool, proxyIdLookalikeREString = vsv.looksLikeProxyId( dict2Key)\n                    if propertyInstance:\n                        vsv.errMsg( \'Value of property %25s is a dictionary with a key ("%25s") whose value is a dictionary with a key ("%25s") that is bad because it looks like a proxyId.  Role names cannot match the regular expression "%25s".\' %25 ( propertyInstance.propertyInstanceKey, dict1Key, dict2Key, proxyIdLookalikeREString))\n                    else:\n                        vsv.errMsg( \'Value of presumptive %25s property is a dictionary with a key ("%25s") whose value is a dictionary with a key ("%25s") that is bad because it looks like a proxyId.  Role names cannot match the regular expression "%25s".\' %25 ( vsv.catKey( propertyClass.TMA.TMAName, propertyClass.propertyClassName), dict1Key, dict2Key, proxyIdLookalikeREString))\n                    return True\n\n            stringList = dict2[ dict2Key]\n\n            if not isinstance( stringList, types.ListType):\n                if propertyInstance:\n                    vsv.errMsg( \'Value of key "%25s" in the dictionary that is the value of key "%25s" in the dictionary that is the value of property %25s is not a list.\' %25 ( dict2Key, dict1Key, propertyInstance.propertyInstanceKey))\n                else:\n                    vsv.errMsg( \'Value of key "%25s" in the dictionary that is the value of key "%25s" in the dictionary that is the presumptive value of a %25s property is not a list.\' %25 ( dict2Key, dict1Key, vsv.catKey( propertyClass.TMA.TMAName, propertyClass.propertyClassName)))\n                return True\n\n            if not len( stringList):\n                if propertyInstance:\n                    vsv.errMsg( \'Value of property %25s is a dictionary with key "%25s" whose value is a dictionary with key "%25s" whose value is a list with no items in it.\' %25 ( propertyInstance.propertyInstanceKey, dict1Key, dict2Key))\n                else:\n                    vsv.errMsg( \'Value of presumptive %25s property is a dictionary with key "%25s" whose value is a dictionary with key "%25s" whose value is a list with no items in it.\' %25 ( vsv.catKey( propertyClass.TMA.TMAName, propertyClass.propertyClassName), dict1Key, dict2Key))\n                return True\n\n            if levelAtWhichProxyReferenceAppears == \'third\':\n                if dict1Key == dict2Key:\n                    if propertyInstance:\n                        vsv.errMsg( \'Value of property %25s specifies a relationship in which two role players play roles which have the same name.  Each role in a relationship must have a different name.  dict1Key == "%25s"; dict2Key == "%25s".\' %25 ( propertyInstance.propertyInstanceKey, dict1Key, dict2Key))\n                    else:\n                        vsv.errMsg( \'Value of presumptive %25s property specifies a relationship in which two role players play roles which have the same name.  Each role in a relationship must have a different name.  dict1Key == "%25s"; dict2Key == "%25s".\' %25 ( vsv.catKey( propertyClass.TMA.TMAName, propertyClass.propertyClassName), dict1Key, dict2Key))\n                    return True\n\n            for string in stringList:\n                if not isinstance( string, types.StringType):\n                    if propertyInstance:\n                        vsv.errMsg( \'Item ("%25s") in the list that is the value of key "%25s" in the dictionary that is the value of key "%25s" in the dictionary that is the value of property %25s is not a list.\' %25 ( string, dict2Key, dict1Key, propertyInstance.propertyInstanceKey))\n                        return True\n                    else:\n                        vsv.errMsg( \'Item ("%25s") in the list that is the value of key "%25s" in the dictionary that is the value of key "%25s" in the dictionary that is the presumptive value of a %25s property is not a list.\' %25 ( string, dict2Key, dict1Key, vsv.catKey( propertyClass.TMA.TMAName, propertyClass.propertyClassName)))\n                        return True\n                if levelAtWhichProxyReferenceAppears == \'third\':\n                    if proxyIdIsBad( vsv, string, levelAtWhichProxyReferenceAppears, propertyInstance, propertyClass):\n                        return True\n                else:\n                    if levelAtWhichProxyReferenceAppears == \'first\':\n                        if dict2Key == string:\n                            if propertyInstance:\n                                vsv.errMsg( \'Value of property %25s specifies a relationship in which two role players play roles which have the same name.  Each role in a relationship must have a different name.  dict2Key == "%25s"; string == "%25s".\' %25 ( propertyInstance.propertyInstanceKey, dict2Key, string))\n                            else:\n                                vsv.errMsg( \'Value of presumptive %25s property specifies a relationship in which two role players play roles which have the same name.  Each role in a relationship must have a different name.  dict2Key == "%25s"; string == "%25s".\' %25 ( vsv.catKey( propertyClass.TMA.TMAName, propertyClass.propertyClassName), dict2Key, string))\n                            return True\n                            \n                    if levelAtWhichProxyReferenceAppears == \'second\':\n                        if dict1Key == string:\n                            if propertyInstance:\n                                vsv.errMsg( \'Value of property %25s specifies a relationship in which two role players play roles which have the same name.  Each role in a relationship must have a different name.  dict1Key == "%25s"; string == "%25s".\' %25 ( propertyInstance.propertyInstanceKey, dict1Key, string))\n                            else:\n                                vsv.errMsg( \'Value of presumptive %25s property specifies a relationship in which two role players play roles which have the same name.  Each role in a relationship must have a different name.  dict1Key == "%25s"; string == "%25s".\' %25 ( vsv.catKey( propertyClass.TMA.TMAName, propertyClass.propertyClassName), dict1Key, string))\n                            return True\n                        \n                    if vsv.looksLikeProxyId( string):\n                        bool, proxyIdLookalikeREString = vsv.looksLikeProxyId( string)\n                        if propertyInstance:\n                            vsv.errMsg( \'Value of property %25s is a dictionary with a key ("%25s") whose value is a dictionary with a key ("%25s") whose value is a string list that contains a string ("%25s") that is bad because it looks like a proxyId.  Role names cannot match the regular expression "%25s".\' %25 ( propertyInstance.propertyInstanceKey, dict1Key, dict2Key, string, proxyIdLookalikeREString))\n                        else:\n                            vsv.errMsg( \'Value of presumptive %25s property is a dictionary with a key ("%25s") whose value is a dictionary with a key ("%25s") whose value is a string list that contains a string ("%25s") that is bad because it looks like a proxyId.  Role names cannot match the regular expression "%25s".\' %25 ( vsv.catKey( propertyClass.TMA.TMAName, propertyClass.propertyClassName), dict1Key, dict2Key, string, proxyIdLookalikeREString))\n                        return True\n            \n    return False\n\n#######################################################\ndef InstanceOf_stringKeyDictOfStringKeyDictsWithStringListValues_ValueTypeToXMLContentString( vsv, propertyInstance):\n    return vsv.cPickleDumpObjectAsXMLContentString( propertyInstance._value)\n\n#######################################################\ndef XMLContentStringToInstanceOf_stringKeyDictOfStringKeyDictsWithStringListValues_ValueType( vsv, string, propertyClass, **args):\n    ## Import a stringKeyDictOfStringKeyDictsWithStringListValues, adjusting the proxyIds as necessary to\n    ## the new proxyIds of the imported proxies to which they refer.\n\n    propertyClassName = propertyClass.propertyClassName\n    TMAName = propertyClass.TMA.TMAName\n\n    levelAtWhichProxyReferenceAppears = args[ \'levelAtWhichProxyReferenceAppears\'] ## \'first\', \'second\', or \'third\'\n\n    oldDict1 = vsv.cPickleLoadObjectFromXMLContentString( string)\n\n    mem2xmlProxyIdDict = vsv.currentTopicMapHoldingDict[ \'IoMapsDict\'][ \'ProxyIds.mem2xml\']\n        ## This dictionary allows us to look up the in-xml element id of a\n        ## proxy, given the proxy\'s proxyId as it was in the topic map\n        ## from which the proxy was exported as xml.\n\n    firstImportedProxyId = vsv.firstImportedProxyId\n        ## This is an integer which, if we were to convert it into a\n        ## string of decimal digits with 2 prepended zero characters,\n        ## would be the proxyId of the first (the first, that is, not\n        ## counting the proxies created in order to register the TMAs\n        ## of the xml topic map being imported) in-memory proxy to be\n        ## imported into the being-imported-into topic map from the\n        ## xml topic map that we\'re importing.\n\n\n    newDict1 = {}\n\n    for oldDict1Key in oldDict1:\n        oldDict2 = oldDict1[ oldDict1Key]\n        \n        if levelAtWhichProxyReferenceAppears == \'first\':\n            ## key is a proxyId that needs to be replaced\n            \n            newDict1Key = newProxyIdForOld( vsv, oldDict1Key, mem2xmlProxyIdDict, firstImportedProxyId, propertyClassName, TMAName)\n                ## convert the old proxyId (the one it had in the XML file\n                ## being imported) into its new proxyId in the topic map into\n                ## which it\'s being imported.\n\n        else:\n            ## key is not a proxyId\n            newDict1Key = oldDict1Key\n\n        if newDict1.has_key( newDict1Key):\n            import traceback\n            traceback.print_stack()\n            vsv.errMsg( \'This should never happen.  newDict1Key == %25s\' %25 ( newDict1Key))\n            sys.exit( 1)\n\n        newDict2 = newDict1[ newDict1Key] = {}\n\n        for oldDict2Key in oldDict2:\n            oldList3 = oldDict2[ oldDict2Key]\n            \n            if levelAtWhichProxyReferenceAppears == \'second\':\n                ## key is a proxyId that needs to be replaced\n\n                newDict2Key = newProxyIdForOld( vsv, oldDict2Key, mem2xmlProxyIdDict, firstImportedProxyId, propertyClassName, TMAName)\n                    ## convert the old proxyId (the one it had in the XML file\n                    ## being imported) into its new proxyId in the topic map into\n                    ## which it\'s being imported.\n\n            else:\n                ## key is not a proxyId\n                newDict2Key = oldDict2Key\n\n            if newDict1[ newDict1Key].has_key( newDict2Key):\n                import traceback\n                traceback.print_stack()\n                vsv.errMsg( \'This should never happen.  newDict2Key == %25s\' %25 ( newDict2Key))\n                sys.exit( 1)\n\n            newList3 = newDict1[ newDict1Key][ newDict2Key] = []\n\n            for oldListItem in oldList3:\n\n                if levelAtWhichProxyReferenceAppears == \'third\':\n                    ## list item is a proxyId that needs to be replaced\n\n                    newListItem = newProxyIdForOld( vsv, oldListItem, mem2xmlProxyIdDict, firstImportedProxyId, propertyClassName, TMAName)\n                        ## convert the old proxyId (the one it had in the XML file\n                        ## being imported) into its new proxyId in the topic map into\n                        ## which it\'s being imported.\n\n                else:\n                    ## list item is not a proxyId\n                    newListItem = oldListItem\n\n                if newListItem in newList3:\n                    import traceback\n                    traceback.print_stack()\n                    vsv.errMsg( \'This should never happen.  newListItem == %25s\' %25 ( newListItem))\n                    sys.exit( 1)\n\n                newList3.append( newListItem)\n\n\n\n    ## vsv.currentTopicMapHoldingDict[ \'IoMapsDict\'][ \'TMAs\'][ args[ \'TMAName\']][ propertyClassName]\n    ## will be consulted by the ValueIsNotOfType__() function in order\n    ## to avoid a logical logjam over this.  The logical logjam is\n    ## that we\'re referring to proxies that haven\'t been imported yet,\n    ## and the ValueIsNotOfType__() function checks to see that the\n    ## proxy references are valid.  This gives the\n    ## ValueIsNotOfType__() function a basis on which to give a free\n    ## pass to proxy references that aren\'t yet valid.  (See\n    ## proxyIdIsBad(), below.)\n\n    return newDict1\n\n\n#######################################################\ndef newProxyIdForOld( vsv, proxyIdAsImported, mem2xmlProxyIdDict, firstImportedProxyId, propertyClassName, TMAName):\n    ## Helper function for XMLContentStringToInstanceOf_stringKeyDictOfStringKeyDictsWithStringListValues_ValueType()\n    ## convert the old proxyId (the one it had in the XML file\n    ## being imported) into its new proxyId in the topic map into\n    ## which it\'s being imported.\n\n    xmlProxyNum = mem2xmlProxyIdDict[ int( proxyIdAsImported)]\n    newProxyNum = (xmlProxyNum + firstImportedProxyId) - 1\n    newProxyId = \'00%25s\' %25 ( newProxyNum)\n\n    appDict = vsv.currentTopicMapHoldingDict[ \'IoMapsDict\'][ \'TMAs\'][ TMAName]\n    if not appDict.has_key( propertyClassName):\n        appDict[ propertyClassName] = [ newProxyId]\n    else:\n        if newProxyId not in appDict[ propertyClassName]:\n            appDict[ propertyClassName].append( newProxyId)\n    return newProxyId\n\n\n#######################################################\ndef proxyIdIsBad( vsv, proxyId, levelAtWhichProxyReferenceAppears, propertyInstance, propertyClass):\n    ## helper function for ValueIsNotOfType_stringKeyDictOfStringKeyDictsWithStringListValues_()\n\n    topicMap = propertyClass.topicMap\n\n    if levelAtWhichProxyReferenceAppears == \'first\' or levelAtWhichProxyReferenceAppears == \'second\':\n        levelIdentifyingString = \'%25s-level dictionary\' %25 ( levelAtWhichProxyReferenceAppears)\n    elif levelAtWhichProxyReferenceAppears == \'third\':\n        levelIdentifyingString = \'%25s-level list of strings\' %25 ( levelAtWhichProxyReferenceAppears)\n    else:\n        vsv.errMsg( \'Unrecognized levelAtWhichProxyReferenceAppears ("%25s")\' %25 ( levelAtWhichProxyReferenceAppears))\n        return True\n\n    if not vsv.proxyIdStrValidatorRE.match( proxyId):\n        if propertyInstance:\n            vsv.errMsg( \'Key "%25s" in the %25s that is the value of property %25s is not a proxy identifier string (a proxyId).\' %25 ( proxyId, levelIdentifyingString, propertyInstance.propertyInstanceKey))\n        else:\n            vsv.errMsg( \'Key "%25s" in the %25s that is the presumptive value of a %25s property is not a proxy identifier string (a proxyId).\' %25 ( proxyId, levelIdentifyingString, vsv.catKey( propertyClass.TMA.TMAName, propertyClass.propertyClassName)))\n        return True\n\n    proxy = vsv.isProxyId( proxyId, topicMap)\n    if not proxy:\n        if proxyId not in vsv.currentTopicMapHoldingDict[ \'IoMapsDict\'][ \'TMAs\'][ propertyInstance.TMAName][ propertyClass.propertyClassName]:\n               ## We\'re probably in the process of importing a topic map, and these are\n               ## references to proxies that don\'t exist yet because they haven\'t been imported\n               ## yet.  The above check is supposed to calm our fears that this proxy reference\n               ## is invalid, giving us reason to believe that it will soon be valid, even\n               ## though it\'s not quite valid yet.\n\n            if propertyInstance:\n                vsv.errMsg( \'proxyId "%25s" in the %25s that is the value of property %25s is not the ID of any proxy in topic map "%25s".\' %25 ( proxyId, levelIdentifyingString, propertyInstance.propertyInstanceKey, propertyInstance.topicMap.topicMapName))\n            else:\n                vsv.errMsg( \'proxyId "%25s" in the %25s that is the presumptive value of a %25s property is not the ID of any proxy in topic map "%25s".\' %25 ( proxyId, levelIdentifyingString, vsv.catKey( propertyClass.TMA.TMAName, propertyClass.propertyClassName), topicMap.topicMapName))\n            return True\n    if proxy:\n        if proxy.forwardTo:\n            if propertyInstance:\n                vsv.errMsg( \'proxyId "%25s" in the %25s that is the value of property %25s is the ID of a dead proxy.  Only the IDs of living proxies are permitted.\' %25 ( proxyId, levelIdentifyingString, propertyInstance.propertyInstanceKey))\n            else:\n                vsv.errMsg( \'proxyId "%25s" in the %25s that is the value of property %25s is the ID of a dead proxy.  Only the IDs of living proxies are permitted.\' %25 ( proxyId, levelIdentifyingString, vsv.catKey( propertyClass.TMA.TMAName, propertyClass.propertyClassName)))\n            return True\n        \n    return False\n'%0ap1%0a.</TMAModule

  ></VersavantTMA


  ><VersavantTMA AppNm="Vsys"

    ><TMAConfigFile ConfSrcPath="">S''%0a.</TMAConfigFile

  ></VersavantTMA


  ><ProxyObject id="o1" proxyId="00124"
    ><Property PAppNm="Vsys" PClass="TMAName" IsSIP="Y">S'Roles'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="TMAConfFile" IsSIP="N">S'tmaconf.xml'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="TMADesc" IsSIP="N">S'Simple little SMV for providing r-proxies with SIPs called "role name", whose values are strings.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="TMAObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRules" IsSIP="N">(dp1%0aS'reifyRolesIn_A_assert_a_sips'%0ap2%0aNsS'reifyRolesIn_U_assert_properties'%0ap3%0aNs.</Property
    ><Property PAppNm="Vsys" PClass="propClasses" IsSIP="N">(dp1%0aS'role name'%0ap2%0aNs.</Property
    ><Property PAppNm="Vsys" PClass="pythonModules" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="valueTypes" IsSIP="N">(dp1%0aS'string'%0ap2%0aNs.</Property
  ></ProxyObject

  ><ProxyObject id="o2" proxyId="00125"
    ><Property PAppNm="Vsys" PClass="valueType" IsSIP="Y">S'Roles,,string'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFMF" IsSIP="N">S'001_VTstring.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFMN" IsSIP="N">S'001_VTstring'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFN" IsSIP="N">S'InstanceOf_string_ValueTypeToXMLContentString'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="VTDesc" IsSIP="N">S'General-purpose string value type.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="VTName" IsSIP="N">S'string'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="VTTMAName" IsSIP="N">S'Roles'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__F" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FMF" IsSIP="N">S'001_VTstring.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FMN" IsSIP="N">S'001_VTstring'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FN" IsSIP="N">S'ValueIsNotOfType_string_'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFMF" IsSIP="N">S'001_VTstring.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFMN" IsSIP="N">S'001_VTstring'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFN" IsSIP="N">S'XMLContentStringToInstanceOf_string_ValueType'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o3" proxyId="00126"
    ><Property PAppNm="Vsys" PClass="propClass" IsSIP="Y">S'Roles,,role name'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMF" IsSIP="N">S'001_PCstring.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMN" IsSIP="N">S'001_PCstring'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFN" IsSIP="N">S'Add_string_PropToOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFMF" IsSIP="N">S'001_PCstring.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFMN" IsSIP="N">S'001_PCstring'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFN" IsSIP="N">S'MergeProxiesBecause_string_PropertyInstancesSpecifySameSubject'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMF" IsSIP="N">S'001_PCstring.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMN" IsSIP="N">S'001_PCstring'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFN" IsSIP="N">S'Merge_string_PropertyValues'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCDesc" IsSIP="N">S'Subject is a role whose unique name is the value.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCValueType" IsSIP="N">S'string'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMF" IsSIP="N">S'001_PCstring.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMN" IsSIP="N">S'001_PCstring'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFN" IsSIP="N">S'ProxiesOfSubjectIdentifiedBy_string_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMF" IsSIP="N">S'001_PCstring.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMN" IsSIP="N">S'001_PCstring'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFN" IsSIP="N">S'Remove_string_PropFromOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFN" IsSIP="N">S'ValueIsInvalidFor_role_name_Property'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMF" IsSIP="N">S'001_PCstring.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMN" IsSIP="N">S'001_PCstring'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFN" IsSIP="N">S'ValuesOf_string_PropertyInstancesAreSignificantlyDifferent'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="overheadDict" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassName" IsSIP="N">S'role name'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="propClassObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassProcOps" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassTMAName" IsSIP="N">S'Roles'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="propInstancesMerged" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="proxiesKilled" IsSIP="N">N.</Property
  ></ProxyObject

  ><ProxyObject id="o4" proxyId="00127"
    ><Property PAppNm="Vsys" PClass="confRule" IsSIP="Y">S'Roles,,reifyRolesIn_A_assert_a_sips'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleDesc" IsSIP="N">S'From each A_assert,,a_sip property, confer a "role name" property whose value is the first member of each tuple.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleName" IsSIP="N">S'reifyRolesIn_A_assert_a_sips'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleProcOps" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleTMAName" IsSIP="N">S'Roles'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleTrigRoles" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleValSrcRoles" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFArgString" IsSIP="N">S"bridgeFromTMAName = 'A_assert'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFMF" IsSIP="N">S'001_conferralRules.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFMN" IsSIP="N">S'001_conferralRules'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFN" IsSIP="N">S'reifyRolesIn_A_assert_a_sips'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o5" proxyId="00128"
    ><Property PAppNm="Vsys" PClass="confRule" IsSIP="Y">S'Roles,,reifyRolesIn_U_assert_properties'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleDesc" IsSIP="N">S'From each U_assert,,x_LrnRrnRrp property, confer a "role name" property for each local and remote role name.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleName" IsSIP="N">S'reifyRolesIn_U_assert_properties'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleProcOps" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleTMAName" IsSIP="N">S'Roles'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleTrigRoles" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleValSrcRoles" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFArgString" IsSIP="N">S"bridgeFromTMAName = 'U_assert'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFMF" IsSIP="N">S'001_conferralRules.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFMN" IsSIP="N">S'001_conferralRules'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFN" IsSIP="N">S'reifyRolesIn_U_assert_properties'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o6" proxyId="00129"
    ><Property PAppNm="Vsys" PClass="TMAName" IsSIP="Y">S'BigAssert'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="TMAConfFile" IsSIP="N">S'tmaconf.xml'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="TMADesc" IsSIP="N">S'TMA for fully-reified assertions pretty much along the lines of the model found in version 3.10 of the Topic Maps Reference Model (http://www.isotopicmaps.org/tmrm/TMRM-3.10/TMRM-3.10.html).'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="TMAObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRules" IsSIP="N">(dp1%0aS'inferFrom_a_sip_'%0ap2%0aNsS'bridgeAcross_t_sip_Models'%0ap3%0aNsS'bridgeFromU_assert'%0ap4%0aNsS'bridge_TRA_assert_a_sip_to_BigAssert_a_sip'%0ap5%0aNsS'bridge_A_assert_a_sip_to_BigAssert_a_sip'%0ap6%0aNs.</Property
    ><Property PAppNm="Vsys" PClass="propClasses" IsSIP="N">(dp1%0aS't_sip'%0ap2%0aNsS'a_sip'%0ap3%0aNsS't_assertions'%0ap4%0aNsS'r_type'%0ap5%0aNsS'x_castings'%0ap6%0aNsS'r_castings'%0ap7%0aNsS'a_type'%0ap8%0aNsS'a_castings'%0ap9%0aNsS'c_sip'%0ap10%0aNs.</Property
    ><Property PAppNm="Vsys" PClass="pythonModules" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="valueTypes" IsSIP="N">(dp1%0aS'proxyIdList'%0ap2%0aNsS'proxyIdSet'%0ap3%0aNsS'setOfProxyRefTuples'%0ap4%0aNs.</Property
  ></ProxyObject

  ><ProxyObject id="o7" proxyId="00130"
    ><Property PAppNm="Vsys" PClass="valueType" IsSIP="Y">S'BigAssert,,setOfProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFMF" IsSIP="N">S'001_VTsetOfProxyRefTuples.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFMN" IsSIP="N">S'001_VTsetOfProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFN" IsSIP="N">S'InstanceOf_setOfProxyRefTuples_ValueTypeToXMLContentString'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="VTDesc" IsSIP="N">S'Value type for a_sip class.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="VTName" IsSIP="N">S'setOfProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="VTTMAName" IsSIP="N">S'BigAssert'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__F" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FMF" IsSIP="N">S'001_VTsetOfProxyRefTuples.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FMN" IsSIP="N">S'001_VTsetOfProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FN" IsSIP="N">S'ValueIsNotOfType_setOfProxyRefTuples_'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFMF" IsSIP="N">S'001_VTsetOfProxyRefTuples.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFMN" IsSIP="N">S'001_VTsetOfProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFN" IsSIP="N">S'XMLContentStringToInstanceOf_setOfProxyRefTuples_ValueType'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o8" proxyId="00131"
    ><Property PAppNm="Vsys" PClass="valueType" IsSIP="Y">S'BigAssert,,proxyIdList'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFMF" IsSIP="N">S'001_VTproxyIdList.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFMN" IsSIP="N">S'001_VTproxyIdList'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFN" IsSIP="N">S'InstanceOf_proxyIdList_ValueTypeToXMLContentString'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="VTDesc" IsSIP="N">S'General-purpose list-of-subject-proxies value type.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="VTName" IsSIP="N">S'proxyIdList'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="VTTMAName" IsSIP="N">S'BigAssert'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__F" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FMF" IsSIP="N">S'001_VTproxyIdList.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FMN" IsSIP="N">S'001_VTproxyIdList'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FN" IsSIP="N">S'ValueIsNotOfType_proxyIdList_'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFMF" IsSIP="N">S'001_VTproxyIdList.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFMN" IsSIP="N">S'001_VTproxyIdList'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFN" IsSIP="N">S'XMLContentStringToInstanceOf_proxyIdList_ValueType'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o9" proxyId="00132"
    ><Property PAppNm="Vsys" PClass="valueType" IsSIP="Y">S'BigAssert,,proxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFMF" IsSIP="N">S'001_VTproxyIdList.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFMN" IsSIP="N">S'001_VTproxyIdList'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFN" IsSIP="N">S'InstanceOf_proxyIdList_ValueTypeToXMLContentString'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="VTDesc" IsSIP="N">S'General-purpose set-of-subject-proxies value type.  (Same valuetype implementation as proxyIdList.)'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="VTName" IsSIP="N">S'proxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="VTTMAName" IsSIP="N">S'BigAssert'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__F" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FMF" IsSIP="N">S'001_VTproxyIdList.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FMN" IsSIP="N">S'001_VTproxyIdList'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FN" IsSIP="N">S'ValueIsNotOfType_proxyIdList_'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFMF" IsSIP="N">S'001_VTproxyIdList.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFMN" IsSIP="N">S'001_VTproxyIdList'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFN" IsSIP="N">S'XMLContentStringToInstanceOf_proxyIdList_ValueType'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o10" proxyId="00133"
    ><Property PAppNm="Vsys" PClass="propClass" IsSIP="Y">S'BigAssert,,a_sip'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMF" IsSIP="N">S'001_PCsetOfProxyRefTuples.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMN" IsSIP="N">S'001_PCsetOfProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFN" IsSIP="N">S'Add_setOfProxyRefTuples_PropToOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFArgString" IsSIP="N">S"'a_sip'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFN" IsSIP="N">S'ContextOf_BIGASSERT_PropertyIsInvalid'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFMF" IsSIP="N">S'001_PCsetOfProxyRefTuples.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFMN" IsSIP="N">S'001_PCsetOfProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFN" IsSIP="N">S'MergeProxiesBecause_setOfProxyRefTuples_PropertyInstancesSpecifySameSubject'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMF" IsSIP="N">S'001_PCsetOfProxyRefTuples.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMN" IsSIP="N">S'001_PCsetOfProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFN" IsSIP="N">S'Merge_setOfProxyRefTuples_PropertyValues'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCDesc" IsSIP="N">S'SIP of this a-proxy; subject is a relationship.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCValueType" IsSIP="N">S'setOfProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMF" IsSIP="N">S'001_PCsetOfProxyRefTuples.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMN" IsSIP="N">S'001_PCsetOfProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFN" IsSIP="N">S'ProxiesOfSubjectIdentifiedBy_setOfProxyRefTuples_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMF" IsSIP="N">S'001_PCsetOfProxyRefTuples.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMN" IsSIP="N">S'001_PCsetOfProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFN" IsSIP="N">S'Remove_setOfProxyRefTuples_PropFromOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMF" IsSIP="N">S'001_PCsetOfProxyRefTuples.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMN" IsSIP="N">S'001_PCsetOfProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFN" IsSIP="N">S'UpdateProxyReferencesIn_setOfProxyRefTuples_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFArgString" IsSIP="N">S"r_proxy_allowed_properties = [ 'r_type', 'r_castings', 'x_castings']"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFN" IsSIP="N">S'ValueIsInvalidFor_a_sip_Property'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMF" IsSIP="N">S'001_PCsetOfProxyRefTuples.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMN" IsSIP="N">S'001_PCsetOfProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFN" IsSIP="N">S'ValuesOf_setOfProxyRefTuples_PropertyInstancesAreSignificantlyDifferent'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="overheadDict" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassName" IsSIP="N">S'a_sip'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="propClassObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassProcOps" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassTMAName" IsSIP="N">S'BigAssert'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="propInstancesMerged" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="proxiesKilled" IsSIP="N">N.</Property
  ></ProxyObject

  ><ProxyObject id="o11" proxyId="00134"
    ><Property PAppNm="Vsys" PClass="propClass" IsSIP="Y">S'BigAssert,,t_sip'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFN" IsSIP="N">S'Add_proxyIdSet_PropToOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFArgString" IsSIP="N">S"'t_sip'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFN" IsSIP="N">S'ContextOf_BIGASSERT_PropertyIsInvalid'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFN" IsSIP="N">S'MergeProxiesBecause_proxyIdSet_PropertyInstancesSpecifySameSubject'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFN" IsSIP="N">S'Merge_proxyIdSet_PropertyValues'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCDesc" IsSIP="N">S'SIP of this t-proxy; subject is a relationship type.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCValueType" IsSIP="N">S'proxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFN" IsSIP="N">S'ProxiesOfSubjectIdentifiedBy_proxyIdSet_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFN" IsSIP="N">S'Remove_proxyIdSet_PropFromOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFN" IsSIP="N">S'UpdateProxyReferencesIn_proxyIdSet_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFArgString" IsSIP="N">S"r_proxy_allowed_properties = [ 'r_type', 'r_castings', 'x_castings']"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFN" IsSIP="N">S'ValueIsInvalidFor_t_sip_Property'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFN" IsSIP="N">S'ValuesOf_proxyIdSet_PropertyInstancesAreSignificantlyDifferent'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="overheadDict" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassName" IsSIP="N">S't_sip'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="propClassObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassProcOps" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassTMAName" IsSIP="N">S'BigAssert'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="propInstancesMerged" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="proxiesKilled" IsSIP="N">N.</Property
  ></ProxyObject

  ><ProxyObject id="o12" proxyId="00135"
    ><Property PAppNm="Vsys" PClass="propClass" IsSIP="Y">S'BigAssert,,c_sip'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMF" IsSIP="N">S'001_PCproxyIdList.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMN" IsSIP="N">S'001_PCproxyIdList'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFN" IsSIP="N">S'Add_proxyIdList_PropToOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFArgString" IsSIP="N">S"'c_sip'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFN" IsSIP="N">S'ContextOf_BIGASSERT_PropertyIsInvalid'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFMF" IsSIP="N">S'001_PCproxyIdList.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFMN" IsSIP="N">S'001_PCproxyIdList'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFN" IsSIP="N">S'MergeProxiesBecause_proxyIdList_PropertyInstancesSpecifySameSubject'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMF" IsSIP="N">S'001_PCproxyIdList.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMN" IsSIP="N">S'001_PCproxyIdList'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFN" IsSIP="N">S'Merge_proxyIdList_PropertyValues'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCDesc" IsSIP="N">S'SIP of this c-proxy; subject is a casting in a relationship.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCValueType" IsSIP="N">S'proxyIdList'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMF" IsSIP="N">S'001_PCproxyIdList.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMN" IsSIP="N">S'001_PCproxyIdList'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFN" IsSIP="N">S'ProxiesOfSubjectIdentifiedBy_proxyIdList_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMF" IsSIP="N">S'001_PCproxyIdList.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMN" IsSIP="N">S'001_PCproxyIdList'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFN" IsSIP="N">S'Remove_proxyIdList_PropFromOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMF" IsSIP="N">S'001_PCproxyIdList.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMN" IsSIP="N">S'001_PCproxyIdList'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFN" IsSIP="N">S'UpdateProxyReferencesIn_proxyIdList_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFN" IsSIP="N">S'ValueIsInvalidFor_c_sip_Property'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMF" IsSIP="N">S'001_PCproxyIdList.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMN" IsSIP="N">S'001_PCproxyIdList'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFN" IsSIP="N">S'ValuesOf_proxyIdList_PropertyInstancesAreSignificantlyDifferent'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="overheadDict" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassName" IsSIP="N">S'c_sip'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="propClassObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassProcOps" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassTMAName" IsSIP="N">S'BigAssert'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="propInstancesMerged" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="proxiesKilled" IsSIP="N">N.</Property
  ></ProxyObject

  ><ProxyObject id="o13" proxyId="00136"
    ><Property PAppNm="Vsys" PClass="propClass" IsSIP="Y">S'BigAssert,,r_type'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFN" IsSIP="N">S'Add_proxyIdSet_PropToOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFArgString" IsSIP="N">S"'r_type'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFN" IsSIP="N">S'ContextOf_BIGASSERT_PropertyIsInvalid'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFN" IsSIP="N">S'Merge_proxyIdSet_PropertyValues'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCDesc" IsSIP="N">S'Refers to the t-proxy whose subject is the relationship type in which the subject of this r-proxy is one of the roles.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCValueType" IsSIP="N">S'proxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFN" IsSIP="N">S'ProxiesOfSubjectIdentifiedBy_proxyIdSet_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFN" IsSIP="N">S'Remove_proxyIdSet_PropFromOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFN" IsSIP="N">S'UpdateProxyReferencesIn_proxyIdSet_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFN" IsSIP="N">S'ValueIsInvalidFor_r_type_Property'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFN" IsSIP="N">S'ValuesOf_proxyIdSet_PropertyInstancesAreSignificantlyDifferent'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="overheadDict" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassName" IsSIP="N">S'r_type'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="propClassObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassProcOps" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassTMAName" IsSIP="N">S'BigAssert'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o14" proxyId="00137"
    ><Property PAppNm="Vsys" PClass="propClass" IsSIP="Y">S'BigAssert,,r_castings'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFN" IsSIP="N">S'Add_proxyIdSet_PropToOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFArgString" IsSIP="N">S"'r_castings'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFN" IsSIP="N">S'ContextOf_BIGASSERT_PropertyIsInvalid'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFN" IsSIP="N">S'Merge_proxyIdSet_PropertyValues'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCDesc" IsSIP="N">S'Refers to the c-proxies whose subjects are the castings in which the subject of this r-proxy is the role.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCValueType" IsSIP="N">S'proxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFN" IsSIP="N">S'ProxiesOfSubjectIdentifiedBy_proxyIdSet_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFN" IsSIP="N">S'Remove_proxyIdSet_PropFromOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFN" IsSIP="N">S'UpdateProxyReferencesIn_proxyIdSet_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFN" IsSIP="N">S'ValueIsInvalidFor_r_castings_Property'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFN" IsSIP="N">S'ValuesOf_proxyIdSet_PropertyInstancesAreSignificantlyDifferent'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="overheadDict" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassName" IsSIP="N">S'r_castings'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="propClassObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassProcOps" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassTMAName" IsSIP="N">S'BigAssert'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o15" proxyId="00138"
    ><Property PAppNm="Vsys" PClass="propClass" IsSIP="Y">S'BigAssert,,x_castings'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFN" IsSIP="N">S'Add_proxyIdSet_PropToOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFN" IsSIP="N">S'Merge_proxyIdSet_PropertyValues'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCDesc" IsSIP="N">S'Refers to the c-proxies (castings) in which the subject of this proxy is the role player.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCValueType" IsSIP="N">S'proxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFN" IsSIP="N">S'ProxiesOfSubjectIdentifiedBy_proxyIdSet_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFN" IsSIP="N">S'Remove_proxyIdSet_PropFromOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFN" IsSIP="N">S'UpdateProxyReferencesIn_proxyIdSet_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFN" IsSIP="N">S'ValueIsInvalidFor_x_castings_Property'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFN" IsSIP="N">S'ValuesOf_proxyIdSet_PropertyInstancesAreSignificantlyDifferent'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="overheadDict" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassName" IsSIP="N">S'x_castings'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="propClassObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassProcOps" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassTMAName" IsSIP="N">S'BigAssert'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o16" proxyId="00139"
    ><Property PAppNm="Vsys" PClass="propClass" IsSIP="Y">S'BigAssert,,t_assertions'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFN" IsSIP="N">S'Add_proxyIdSet_PropToOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFArgString" IsSIP="N">S"'t_assertions'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFN" IsSIP="N">S'ContextOf_BIGASSERT_PropertyIsInvalid'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFN" IsSIP="N">S'Merge_proxyIdSet_PropertyValues'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCDesc" IsSIP="N">S'Refers to the a-proxies whose subjects are the relationships that are instances of the relationship type that is the subject of this t-proxy.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCValueType" IsSIP="N">S'proxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFN" IsSIP="N">S'ProxiesOfSubjectIdentifiedBy_proxyIdSet_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFN" IsSIP="N">S'Remove_proxyIdSet_PropFromOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFN" IsSIP="N">S'UpdateProxyReferencesIn_proxyIdSet_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFN" IsSIP="N">S'ValueIsInvalidFor_t_assertions_Property'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFN" IsSIP="N">S'ValuesOf_proxyIdSet_PropertyInstancesAreSignificantlyDifferent'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="overheadDict" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassName" IsSIP="N">S't_assertions'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="propClassObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassProcOps" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassTMAName" IsSIP="N">S'BigAssert'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o17" proxyId="00140"
    ><Property PAppNm="Vsys" PClass="propClass" IsSIP="Y">S'BigAssert,,a_type'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFN" IsSIP="N">S'Add_proxyIdSet_PropToOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFArgString" IsSIP="N">S"'a_type'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFN" IsSIP="N">S'ContextOf_BIGASSERT_PropertyIsInvalid'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFN" IsSIP="N">S'Merge_proxyIdSet_PropertyValues'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCDesc" IsSIP="N">S'Refers to the t-proxy whose subject is the relationship type of which the subject of this a-proxy is an instance.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCValueType" IsSIP="N">S'proxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFN" IsSIP="N">S'ProxiesOfSubjectIdentifiedBy_proxyIdSet_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFN" IsSIP="N">S'Remove_proxyIdSet_PropFromOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFN" IsSIP="N">S'UpdateProxyReferencesIn_proxyIdSet_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFN" IsSIP="N">S'ValueIsInvalidFor_a_type_Property'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFN" IsSIP="N">S'ValuesOf_proxyIdSet_PropertyInstancesAreSignificantlyDifferent'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="overheadDict" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassName" IsSIP="N">S'a_type'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="propClassObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassProcOps" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassTMAName" IsSIP="N">S'BigAssert'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o18" proxyId="00141"
    ><Property PAppNm="Vsys" PClass="propClass" IsSIP="Y">S'BigAssert,,a_castings'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFN" IsSIP="N">S'Add_proxyIdSet_PropToOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFArgString" IsSIP="N">S"'a_castings'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFN" IsSIP="N">S'ContextOf_BIGASSERT_PropertyIsInvalid'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFN" IsSIP="N">S'Merge_proxyIdSet_PropertyValues'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCDesc" IsSIP="N">S'Refers to the c-proxies whose subjects are the castings in which the subject of this a-proxy is the relationship.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCValueType" IsSIP="N">S'proxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFN" IsSIP="N">S'ProxiesOfSubjectIdentifiedBy_proxyIdSet_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFN" IsSIP="N">S'Remove_proxyIdSet_PropFromOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFN" IsSIP="N">S'UpdateProxyReferencesIn_proxyIdSet_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFN" IsSIP="N">S'ValueIsInvalidFor_a_castings_Property'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFN" IsSIP="N">S'ValuesOf_proxyIdSet_PropertyInstancesAreSignificantlyDifferent'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="overheadDict" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassName" IsSIP="N">S'a_castings'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="propClassObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassProcOps" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassTMAName" IsSIP="N">S'BigAssert'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o19" proxyId="00142"
    ><Property PAppNm="Vsys" PClass="confRule" IsSIP="Y">S'BigAssert,,inferFrom_a_sip_'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleDesc" IsSIP="N">S'From each a_sip property, confers a_type, a_castings, c_sip, r_type, r_castings, t_sip, t_assertions, and x_castings properties.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleName" IsSIP="N">S'inferFrom_a_sip_'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleProcOps" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleTMAName" IsSIP="N">S'BigAssert'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleTrigRoles" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleValSrcRoles" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFArgString" IsSIP="N">S"assertionModel = 'BigAssert'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFMF" IsSIP="N">S'001_conferralRules.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFMN" IsSIP="N">S'001_conferralRules'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFN" IsSIP="N">S'inferFrom_a_sip_'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o20" proxyId="00143"
    ><Property PAppNm="Vsys" PClass="confRule" IsSIP="Y">S'BigAssert,,bridge_TRA_assert_a_sip_to_BigAssert_a_sip'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleDesc" IsSIP="N">S'For each a_sip property in the TMA named in the bridgeFromTMAName keyword argument, confers an a_sip property in this TMA.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleName" IsSIP="N">S'bridge_TRA_assert_a_sip_to_BigAssert_a_sip'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleProcOps" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleTMAName" IsSIP="N">S'BigAssert'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleTrigRoles" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleValSrcRoles" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFArgString" IsSIP="N">S"bridgeFromTMAName = 'TRA_assert',                                 bridgeFromTMAModel = 'TRA_assert',                                 bridgeToTMAModel = 'BigAssert'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFMF" IsSIP="N">S'002_conferralRules.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFMN" IsSIP="N">S'002_conferralRules'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFN" IsSIP="N">S'bridgeAcross_a_sip_Models'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o21" proxyId="00144"
    ><Property PAppNm="Vsys" PClass="confRule" IsSIP="Y">S'BigAssert,,bridge_A_assert_a_sip_to_BigAssert_a_sip'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleDesc" IsSIP="N">S'For each a_sip property in the TMA named in the bridgeFromTMAName keyword argument, confers an a_sip property in this TMA.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleName" IsSIP="N">S'bridge_A_assert_a_sip_to_BigAssert_a_sip'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleProcOps" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleTMAName" IsSIP="N">S'BigAssert'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleTrigRoles" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleValSrcRoles" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFArgString" IsSIP="N">S"bridgeFromTMAName = 'A_assert',                                 bridgeFromTMAModel = 'A_assert',                                 bridgeToTMAModel = 'BigAssert',                                 bridgeToR_ProxyPropertyName = 'role name',                                 bridgeToR_ProxyTMAName = 'Roles'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFMF" IsSIP="N">S'002_conferralRules.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFMN" IsSIP="N">S'002_conferralRules'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFN" IsSIP="N">S'bridgeAcross_a_sip_Models'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o22" proxyId="00145"
    ><Property PAppNm="Vsys" PClass="confRule" IsSIP="Y">S'BigAssert,,bridgeFromU_assert'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleDesc" IsSIP="N">S'For each U_assert,,x_LrnRrnRrp property in the TMA named in the bridgeFromTMAName keyword argument, confers an a_sip property in this TMA.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleName" IsSIP="N">S'bridgeFromU_assert'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleProcOps" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleTMAName" IsSIP="N">S'BigAssert'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleTrigRoles" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleValSrcRoles" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFArgString" IsSIP="N">S"bridgeFromTMAName = 'U_assert',                                 bridgeToTMAModel = 'BigAssert',                                 roleNamePropertyClassName = 'role name',                                 rolesTMAName = 'Roles'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFMF" IsSIP="N">S'002_conferralRules.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFMN" IsSIP="N">S'002_conferralRules'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFN" IsSIP="N">S'bridgeFromU_assert'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o23" proxyId="00146"
    ><Property PAppNm="Vsys" PClass="confRule" IsSIP="Y">S'BigAssert,,bridgeAcross_t_sip_Models'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleDesc" IsSIP="N">S'For each t_sip property in the TMA named in the bridgeFromTMAName keyword argument, confers a t_sip property in this TMA.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleName" IsSIP="N">S'bridgeAcross_t_sip_Models'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleProcOps" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleTMAName" IsSIP="N">S'BigAssert'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleTrigRoles" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleValSrcRoles" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFArgString" IsSIP="N">S"bridgeFromTMAName = 'TRA_assert'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFMF" IsSIP="N">S'002_conferralRules.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFMN" IsSIP="N">S'002_conferralRules'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFN" IsSIP="N">S'bridgeAcross_t_sip_Models'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o24" proxyId="00147"
    ><Property PAppNm="Vsys" PClass="TMAName" IsSIP="Y">S'TRA_assert'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="TMAConfFile" IsSIP="N">S'tmaconf.xml'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="TMADesc" IsSIP="N">S'TMA for assertions that reify types, roles, and relationships (assertions), but not castings.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="TMAObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRules" IsSIP="N">(dp1%0aS'inferFrom_a_sip_'%0ap2%0aNsS'bridgeAcross_t_sip_Models'%0ap3%0aNsS'bridge_BigAssert_a_sip_to_TRA_assert_a_sip'%0ap4%0aNsS'bridge_A_assert_a_sip_to_TRA_assert_a_sip'%0ap5%0aNs.</Property
    ><Property PAppNm="Vsys" PClass="propClasses" IsSIP="N">(dp1%0aS't_sip'%0ap2%0aNsS'a_sip'%0ap3%0aNsS't_assertions'%0ap4%0aNsS'r_type'%0ap5%0aNsS'x_roles'%0ap6%0aNsS'r_rolePlayers'%0ap7%0aNsS'a_type'%0ap8%0aNs.</Property
    ><Property PAppNm="Vsys" PClass="pythonModules" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="valueTypes" IsSIP="N">(dp1%0aS'proxyIdSet'%0ap2%0aNsS'setOfProxyRefTuples'%0ap3%0aNs.</Property
  ></ProxyObject

  ><ProxyObject id="o25" proxyId="00148"
    ><Property PAppNm="Vsys" PClass="valueType" IsSIP="Y">S'TRA_assert,,setOfProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFMF" IsSIP="N">S'001_VTsetOfProxyRefTuples.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFMN" IsSIP="N">S'001_VTsetOfProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFN" IsSIP="N">S'InstanceOf_setOfProxyRefTuples_ValueTypeToXMLContentString'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="VTDesc" IsSIP="N">S'Value type for a_sip class.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="VTName" IsSIP="N">S'setOfProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="VTTMAName" IsSIP="N">S'TRA_assert'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__F" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FMF" IsSIP="N">S'001_VTsetOfProxyRefTuples.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FMN" IsSIP="N">S'001_VTsetOfProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FN" IsSIP="N">S'ValueIsNotOfType_setOfProxyRefTuples_'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFMF" IsSIP="N">S'001_VTsetOfProxyRefTuples.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFMN" IsSIP="N">S'001_VTsetOfProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFN" IsSIP="N">S'XMLContentStringToInstanceOf_setOfProxyRefTuples_ValueType'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o26" proxyId="00149"
    ><Property PAppNm="Vsys" PClass="valueType" IsSIP="Y">S'TRA_assert,,proxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFMF" IsSIP="N">S'001_VTproxyIdList.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFMN" IsSIP="N">S'001_VTproxyIdList'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFN" IsSIP="N">S'InstanceOf_proxyIdList_ValueTypeToXMLContentString'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="VTDesc" IsSIP="N">S'General-purpose set-of-subject-proxies value type.  (Same valuetype implementation as proxyIdList.)'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="VTName" IsSIP="N">S'proxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="VTTMAName" IsSIP="N">S'TRA_assert'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__F" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FArgString" IsSIP="N">S'propertyClassName = propertyClass.propertyClassName'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FMF" IsSIP="N">S'001_VTproxyIdList.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FMN" IsSIP="N">S'001_VTproxyIdList'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FN" IsSIP="N">S'ValueIsNotOfType_proxyIdList_'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFMF" IsSIP="N">S'001_VTproxyIdList.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFMN" IsSIP="N">S'001_VTproxyIdList'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFN" IsSIP="N">S'XMLContentStringToInstanceOf_proxyIdList_ValueType'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o27" proxyId="00150"
    ><Property PAppNm="Vsys" PClass="propClass" IsSIP="Y">S'TRA_assert,,a_sip'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMF" IsSIP="N">S'001_PCsetOfProxyRefTuples.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMN" IsSIP="N">S'001_PCsetOfProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFN" IsSIP="N">S'Add_setOfProxyRefTuples_PropToOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFArgString" IsSIP="N">S"'a_sip'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFMF" IsSIP="N">S'002_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFMN" IsSIP="N">S'002_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFN" IsSIP="N">S'ContextOf_TRA_assert_PropertyIsInvalid'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFMF" IsSIP="N">S'001_PCsetOfProxyRefTuples.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFMN" IsSIP="N">S'001_PCsetOfProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFN" IsSIP="N">S'MergeProxiesBecause_setOfProxyRefTuples_PropertyInstancesSpecifySameSubject'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMF" IsSIP="N">S'001_PCsetOfProxyRefTuples.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMN" IsSIP="N">S'001_PCsetOfProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFN" IsSIP="N">S'Merge_setOfProxyRefTuples_PropertyValues'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCDesc" IsSIP="N">S'SIP of this a-proxy; subject is a relationship.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCValueType" IsSIP="N">S'setOfProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMF" IsSIP="N">S'001_PCsetOfProxyRefTuples.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMN" IsSIP="N">S'001_PCsetOfProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFN" IsSIP="N">S'ProxiesOfSubjectIdentifiedBy_setOfProxyRefTuples_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMF" IsSIP="N">S'001_PCsetOfProxyRefTuples.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMN" IsSIP="N">S'001_PCsetOfProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFN" IsSIP="N">S'Remove_setOfProxyRefTuples_PropFromOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMF" IsSIP="N">S'001_PCsetOfProxyRefTuples.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMN" IsSIP="N">S'001_PCsetOfProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFN" IsSIP="N">S'UpdateProxyReferencesIn_setOfProxyRefTuples_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFArgString" IsSIP="N">S"r_proxy_allowed_properties = [ 'r_type', 'r_rolePlayers', 'x_roles']"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFN" IsSIP="N">S'ValueIsInvalidFor_a_sip_Property'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMF" IsSIP="N">S'001_PCsetOfProxyRefTuples.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMN" IsSIP="N">S'001_PCsetOfProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFN" IsSIP="N">S'ValuesOf_setOfProxyRefTuples_PropertyInstancesAreSignificantlyDifferent'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="overheadDict" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassName" IsSIP="N">S'a_sip'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="propClassObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassProcOps" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassTMAName" IsSIP="N">S'TRA_assert'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="propInstancesMerged" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="proxiesKilled" IsSIP="N">N.</Property
  ></ProxyObject

  ><ProxyObject id="o28" proxyId="00151"
    ><Property PAppNm="Vsys" PClass="propClass" IsSIP="Y">S'TRA_assert,,t_sip'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFN" IsSIP="N">S'Add_proxyIdSet_PropToOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFArgString" IsSIP="N">S"'t_sip'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFMF" IsSIP="N">S'002_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFMN" IsSIP="N">S'002_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFN" IsSIP="N">S'ContextOf_TRA_assert_PropertyIsInvalid'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFN" IsSIP="N">S'MergeProxiesBecause_proxyIdSet_PropertyInstancesSpecifySameSubject'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFN" IsSIP="N">S'Merge_proxyIdSet_PropertyValues'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCDesc" IsSIP="N">S'SIP of this t-proxy; subject is a relationship type.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCValueType" IsSIP="N">S'proxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFN" IsSIP="N">S'ProxiesOfSubjectIdentifiedBy_proxyIdSet_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFN" IsSIP="N">S'Remove_proxyIdSet_PropFromOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFN" IsSIP="N">S'UpdateProxyReferencesIn_proxyIdSet_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFArgString" IsSIP="N">S"r_proxy_allowed_properties = [ 'r_type', 'r_rolePlayers', 'x_roles']"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFN" IsSIP="N">S'ValueIsInvalidFor_t_sip_Property'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFN" IsSIP="N">S'ValuesOf_proxyIdSet_PropertyInstancesAreSignificantlyDifferent'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="overheadDict" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassName" IsSIP="N">S't_sip'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="propClassObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassProcOps" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassTMAName" IsSIP="N">S'TRA_assert'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="propInstancesMerged" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="proxiesKilled" IsSIP="N">N.</Property
  ></ProxyObject

  ><ProxyObject id="o29" proxyId="00152"
    ><Property PAppNm="Vsys" PClass="propClass" IsSIP="Y">S'TRA_assert,,r_type'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFN" IsSIP="N">S'Add_proxyIdSet_PropToOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFArgString" IsSIP="N">S"'r_type'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFMF" IsSIP="N">S'002_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFMN" IsSIP="N">S'002_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFN" IsSIP="N">S'ContextOf_TRA_assert_PropertyIsInvalid'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFN" IsSIP="N">S'Merge_proxyIdSet_PropertyValues'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCDesc" IsSIP="N">S'Refers to the t-proxy whose subject is the relationship type in which the subject of this r-proxy is one of the roles.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCValueType" IsSIP="N">S'proxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFN" IsSIP="N">S'ProxiesOfSubjectIdentifiedBy_proxyIdSet_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFN" IsSIP="N">S'Remove_proxyIdSet_PropFromOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFN" IsSIP="N">S'UpdateProxyReferencesIn_proxyIdSet_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFN" IsSIP="N">S'ValueIsInvalidFor_r_type_Property'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFN" IsSIP="N">S'ValuesOf_proxyIdSet_PropertyInstancesAreSignificantlyDifferent'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="overheadDict" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassName" IsSIP="N">S'r_type'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="propClassObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassProcOps" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassTMAName" IsSIP="N">S'TRA_assert'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o30" proxyId="00153"
    ><Property PAppNm="Vsys" PClass="propClass" IsSIP="Y">S'TRA_assert,,r_rolePlayers'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFN" IsSIP="N">S'Add_proxyIdSet_PropToOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFArgString" IsSIP="N">S"'r_rolePlayers'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFMF" IsSIP="N">S'002_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFMN" IsSIP="N">S'002_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFN" IsSIP="N">S'ContextOf_TRA_assert_PropertyIsInvalid'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFN" IsSIP="N">S'Merge_proxyIdSet_PropertyValues'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCDesc" IsSIP="N">S'Refers to the x-proxies whose subjects are the roleplayers of the role that is the subject of this r-proxy.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCValueType" IsSIP="N">S'proxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFN" IsSIP="N">S'ProxiesOfSubjectIdentifiedBy_proxyIdSet_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFN" IsSIP="N">S'Remove_proxyIdSet_PropFromOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFN" IsSIP="N">S'UpdateProxyReferencesIn_proxyIdSet_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMF" IsSIP="N">S'002_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMN" IsSIP="N">S'002_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFN" IsSIP="N">S'ValueIsInvalidFor_r_rolePlayers_Property'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFN" IsSIP="N">S'ValuesOf_proxyIdSet_PropertyInstancesAreSignificantlyDifferent'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="overheadDict" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassName" IsSIP="N">S'r_rolePlayers'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="propClassObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassProcOps" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassTMAName" IsSIP="N">S'TRA_assert'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o31" proxyId="00154"
    ><Property PAppNm="Vsys" PClass="propClass" IsSIP="Y">S'TRA_assert,,x_roles'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMF" IsSIP="N">S'001_PCsetOfProxyRefTuples.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMN" IsSIP="N">S'001_PCsetOfProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFN" IsSIP="N">S'Add_setOfProxyRefTuples_PropToOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMF" IsSIP="N">S'001_PCsetOfProxyRefTuples.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMN" IsSIP="N">S'001_PCsetOfProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFN" IsSIP="N">S'Merge_setOfProxyRefTuples_PropertyValues'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCDesc" IsSIP="N">S'Refers to a set of r-proxy/a-proxy pairs that specify the roles/assertions in which the subject of this proxy is the role player.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCValueType" IsSIP="N">S'setOfProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMF" IsSIP="N">S'001_PCsetOfProxyRefTuples.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMN" IsSIP="N">S'001_PCsetOfProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFN" IsSIP="N">S'ProxiesOfSubjectIdentifiedBy_setOfProxyRefTuples_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMF" IsSIP="N">S'001_PCsetOfProxyRefTuples.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMN" IsSIP="N">S'001_PCsetOfProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFN" IsSIP="N">S'Remove_setOfProxyRefTuples_PropFromOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMF" IsSIP="N">S'001_PCsetOfProxyRefTuples.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMN" IsSIP="N">S'001_PCsetOfProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFN" IsSIP="N">S'UpdateProxyReferencesIn_setOfProxyRefTuples_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFArgString" IsSIP="N">S"r_proxy_allowed_properties = [ 'r_type', 'r_rolePlayers', 'x_roles'], a_proxy_allowed_properties = [ 'a_type', 'a_sip', 'x_roles']"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMF" IsSIP="N">S'002_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMN" IsSIP="N">S'002_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFN" IsSIP="N">S'ValueIsInvalidFor_x_roles_Property'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMF" IsSIP="N">S'001_PCsetOfProxyRefTuples.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMN" IsSIP="N">S'001_PCsetOfProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFN" IsSIP="N">S'ValuesOf_setOfProxyRefTuples_PropertyInstancesAreSignificantlyDifferent'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="overheadDict" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassName" IsSIP="N">S'x_roles'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="propClassObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassProcOps" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassTMAName" IsSIP="N">S'TRA_assert'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o32" proxyId="00155"
    ><Property PAppNm="Vsys" PClass="propClass" IsSIP="Y">S'TRA_assert,,t_assertions'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFN" IsSIP="N">S'Add_proxyIdSet_PropToOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFArgString" IsSIP="N">S"'t_assertions'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFMF" IsSIP="N">S'002_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFMN" IsSIP="N">S'002_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFN" IsSIP="N">S'ContextOf_TRA_assert_PropertyIsInvalid'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFN" IsSIP="N">S'Merge_proxyIdSet_PropertyValues'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCDesc" IsSIP="N">S'Refers to the a-proxies whose subjects are the relationships that are instances of the relationship type that is the subject of this t-proxy.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCValueType" IsSIP="N">S'proxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFN" IsSIP="N">S'ProxiesOfSubjectIdentifiedBy_proxyIdSet_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFN" IsSIP="N">S'Remove_proxyIdSet_PropFromOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFN" IsSIP="N">S'UpdateProxyReferencesIn_proxyIdSet_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFN" IsSIP="N">S'ValueIsInvalidFor_t_assertions_Property'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFN" IsSIP="N">S'ValuesOf_proxyIdSet_PropertyInstancesAreSignificantlyDifferent'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="overheadDict" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassName" IsSIP="N">S't_assertions'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="propClassObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassProcOps" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassTMAName" IsSIP="N">S'TRA_assert'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o33" proxyId="00156"
    ><Property PAppNm="Vsys" PClass="propClass" IsSIP="Y">S'TRA_assert,,a_type'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFN" IsSIP="N">S'Add_proxyIdSet_PropToOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFArgString" IsSIP="N">S"'a_type'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFMF" IsSIP="N">S'002_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFMN" IsSIP="N">S'002_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ContextOf__PropertyIsInvalidFN" IsSIP="N">S'ContextOf_TRA_assert_PropertyIsInvalid'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFN" IsSIP="N">S'Merge_proxyIdSet_PropertyValues'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCDesc" IsSIP="N">S'Refers to the t-proxy whose subject is the relationship type of which the subject of this a-proxy is an instance.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCValueType" IsSIP="N">S'proxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFN" IsSIP="N">S'ProxiesOfSubjectIdentifiedBy_proxyIdSet_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFN" IsSIP="N">S'Remove_proxyIdSet_PropFromOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFN" IsSIP="N">S'UpdateProxyReferencesIn_proxyIdSet_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFN" IsSIP="N">S'ValueIsInvalidFor_a_type_Property'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFN" IsSIP="N">S'ValuesOf_proxyIdSet_PropertyInstancesAreSignificantlyDifferent'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="overheadDict" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassName" IsSIP="N">S'a_type'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="propClassObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassProcOps" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassTMAName" IsSIP="N">S'TRA_assert'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o34" proxyId="00157"
    ><Property PAppNm="Vsys" PClass="confRule" IsSIP="Y">S'TRA_assert,,inferFrom_a_sip_'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleDesc" IsSIP="N">S'From each a_sip property, confers a_type, r_type, r_rolePlayers, t_sip, t_assertions, and x_roles properties.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleName" IsSIP="N">S'inferFrom_a_sip_'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleProcOps" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleTMAName" IsSIP="N">S'TRA_assert'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleTrigRoles" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleValSrcRoles" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFArgString" IsSIP="N">S"assertionModel = 'TRA_assert'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFMF" IsSIP="N">S'001_conferralRules.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFMN" IsSIP="N">S'001_conferralRules'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFN" IsSIP="N">S'inferFrom_a_sip_'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o35" proxyId="00158"
    ><Property PAppNm="Vsys" PClass="confRule" IsSIP="Y">S'TRA_assert,,bridge_A_assert_a_sip_to_TRA_assert_a_sip'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleDesc" IsSIP="N">S'For each a_sip property in the TMA named in the bridgeFromTMAName keyword argument, confers an a_sip property in this TMA.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleName" IsSIP="N">S'bridge_A_assert_a_sip_to_TRA_assert_a_sip'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleProcOps" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleTMAName" IsSIP="N">S'TRA_assert'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleTrigRoles" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleValSrcRoles" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFArgString" IsSIP="N">S"bridgeFromTMAName = 'A_assert',                                 bridgeFromTMAModel = 'A_assert',                                 bridgeToTMAModel = 'TRA_assert',                                 bridgeToR_ProxyPropertyName = 'role name',                                 bridgeToR_ProxyTMAName = 'Roles'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFMF" IsSIP="N">S'001_conferralRules.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFMN" IsSIP="N">S'001_conferralRules'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFN" IsSIP="N">S'bridgeAcross_a_sip_Models'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o36" proxyId="00159"
    ><Property PAppNm="Vsys" PClass="confRule" IsSIP="Y">S'TRA_assert,,bridge_BigAssert_a_sip_to_TRA_assert_a_sip'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleDesc" IsSIP="N">S'For each a_sip property in the TMA named in the bridgeFromTMAName keyword argument, confers an a_sip property in this TMA.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleName" IsSIP="N">S'bridge_BigAssert_a_sip_to_TRA_assert_a_sip'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleProcOps" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleTMAName" IsSIP="N">S'TRA_assert'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleTrigRoles" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleValSrcRoles" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFArgString" IsSIP="N">S"bridgeFromTMAName = 'BigAssert',                                 bridgeFromTMAModel = 'BigAssert',                                 bridgeToTMAModel = 'TRA_assert'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFMF" IsSIP="N">S'001_conferralRules.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFMN" IsSIP="N">S'001_conferralRules'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFN" IsSIP="N">S'bridgeAcross_a_sip_Models'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o37" proxyId="00160"
    ><Property PAppNm="Vsys" PClass="confRule" IsSIP="Y">S'TRA_assert,,bridgeAcross_t_sip_Models'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleDesc" IsSIP="N">S'For each t_sip property in the TMA named in the bridgeFromTMAName keyword argument, confers a t_sip property in this TMA.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleName" IsSIP="N">S'bridgeAcross_t_sip_Models'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleProcOps" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleTMAName" IsSIP="N">S'TRA_assert'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleTrigRoles" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleValSrcRoles" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFArgString" IsSIP="N">S"bridgeFromTMAName = 'BigAssert'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFMF" IsSIP="N">S'001_conferralRules.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFMN" IsSIP="N">S'001_conferralRules'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFN" IsSIP="N">S'bridgeAcross_t_sip_Models'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o38" proxyId="00161"
    ><Property PAppNm="Vsys" PClass="TMAName" IsSIP="Y">S'A_assert'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="TMAConfFile" IsSIP="N">S'tmaconf.xml'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="TMADesc" IsSIP="N">S'TMA for assertions that reify relationships (assertions), but not castings, roles, or assertion types.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="TMAObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRules" IsSIP="N">(dp1%0aS'inferFrom_a_sip_'%0ap2%0aNsS'bridge_BigAssert_a_sip_to_A_assert_a_sip'%0ap3%0aNsS'bridge_TRA_assert_a_sip_to_BigAssert_a_sip'%0ap4%0aNs.</Property
    ><Property PAppNm="Vsys" PClass="propClasses" IsSIP="N">(dp1%0aS'a_sip'%0ap2%0aNsS'x_roles'%0ap3%0aNs.</Property
    ><Property PAppNm="Vsys" PClass="pythonModules" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="valueTypes" IsSIP="N">(dp1%0aS'setOfString_ProxyRefTuples'%0ap2%0aNs.</Property
  ></ProxyObject

  ><ProxyObject id="o39" proxyId="00162"
    ><Property PAppNm="Vsys" PClass="valueType" IsSIP="Y">S'A_assert,,setOfString_ProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFMF" IsSIP="N">S'001_VTsetOfString_ProxyRefTuples.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFMN" IsSIP="N">S'001_VTsetOfString_ProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFN" IsSIP="N">S'InstanceOf_setOfString_ProxyRefTuples_ValueTypeToXMLContentString'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="VTDesc" IsSIP="N">S'Value type for a_sip class.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="VTName" IsSIP="N">S'setOfString_ProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="VTTMAName" IsSIP="N">S'A_assert'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__F" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FMF" IsSIP="N">S'001_VTsetOfString_ProxyRefTuples.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FMN" IsSIP="N">S'001_VTsetOfString_ProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FN" IsSIP="N">S'ValueIsNotOfType_setOfString_ProxyRefTuples_'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFMF" IsSIP="N">S'001_VTsetOfString_ProxyRefTuples.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFMN" IsSIP="N">S'001_VTsetOfString_ProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFN" IsSIP="N">S'XMLContentStringToInstanceOf_setOfString_ProxyRefTuples_ValueType'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o40" proxyId="00163"
    ><Property PAppNm="Vsys" PClass="propClass" IsSIP="Y">S'A_assert,,a_sip'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMF" IsSIP="N">S'001_PCsetOfString_ProxyRefTuples.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMN" IsSIP="N">S'001_PCsetOfString_ProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFN" IsSIP="N">S'Add_setOfString_ProxyRefTuples_PropToOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFMF" IsSIP="N">S'001_PCsetOfString_ProxyRefTuples.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFMN" IsSIP="N">S'001_PCsetOfString_ProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFN" IsSIP="N">S'MergeProxiesBecause_setOfString_ProxyRefTuples_PropertyInstancesSpecifySameSubject'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMF" IsSIP="N">S'001_PCsetOfString_ProxyRefTuples.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMN" IsSIP="N">S'001_PCsetOfString_ProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFN" IsSIP="N">S'Merge_setOfString_ProxyRefTuples_PropertyValues'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCDesc" IsSIP="N">S'SIP of this a-proxy; subject is a relationship.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCValueType" IsSIP="N">S'setOfString_ProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMF" IsSIP="N">S'001_PCsetOfString_ProxyRefTuples.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMN" IsSIP="N">S'001_PCsetOfString_ProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFN" IsSIP="N">S'ProxiesOfSubjectIdentifiedBy_setOfString_ProxyRefTuples_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMF" IsSIP="N">S'001_PCsetOfString_ProxyRefTuples.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMN" IsSIP="N">S'001_PCsetOfString_ProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFN" IsSIP="N">S'Remove_setOfString_ProxyRefTuples_PropFromOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMF" IsSIP="N">S'001_PCsetOfString_ProxyRefTuples.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMN" IsSIP="N">S'001_PCsetOfString_ProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFN" IsSIP="N">S'UpdateProxyReferencesIn_setOfString_ProxyRefTuples_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFN" IsSIP="N">S'ValueIsInvalidFor_a_sip_Property'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMF" IsSIP="N">S'001_PCsetOfString_ProxyRefTuples.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMN" IsSIP="N">S'001_PCsetOfString_ProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFN" IsSIP="N">S'ValuesOf_setOfString_ProxyRefTuples_PropertyInstancesAreSignificantlyDifferent'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="overheadDict" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassName" IsSIP="N">S'a_sip'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="propClassObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassProcOps" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassTMAName" IsSIP="N">S'A_assert'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="propInstancesMerged" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="proxiesKilled" IsSIP="N">N.</Property
  ></ProxyObject

  ><ProxyObject id="o41" proxyId="00164"
    ><Property PAppNm="Vsys" PClass="propClass" IsSIP="Y">S'A_assert,,x_roles'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMF" IsSIP="N">S'001_PCsetOfString_ProxyRefTuples.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMN" IsSIP="N">S'001_PCsetOfString_ProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFN" IsSIP="N">S'Add_setOfString_ProxyRefTuples_PropToOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMF" IsSIP="N">S'001_PCsetOfString_ProxyRefTuples.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMN" IsSIP="N">S'001_PCsetOfString_ProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFN" IsSIP="N">S'Merge_setOfString_ProxyRefTuples_PropertyValues'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCDesc" IsSIP="N">S'Rolename/a-proxy-reference pairs that specify the roles/assertions in which the subject of this proxy is the role player.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCValueType" IsSIP="N">S'setOfString_ProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMF" IsSIP="N">S'001_PCsetOfString_ProxyRefTuples.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMN" IsSIP="N">S'001_PCsetOfString_ProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFN" IsSIP="N">S'ProxiesOfSubjectIdentifiedBy_setOfString_ProxyRefTuples_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMF" IsSIP="N">S'001_PCsetOfString_ProxyRefTuples.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMN" IsSIP="N">S'001_PCsetOfString_ProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFN" IsSIP="N">S'Remove_setOfString_ProxyRefTuples_PropFromOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMF" IsSIP="N">S'001_PCsetOfString_ProxyRefTuples.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMN" IsSIP="N">S'001_PCsetOfString_ProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFN" IsSIP="N">S'UpdateProxyReferencesIn_setOfString_ProxyRefTuples_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFArgString" IsSIP="N">S"a_proxy_allowed_properties = [ 'a_sip', 'x_roles']"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMF" IsSIP="N">S'002_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMN" IsSIP="N">S'002_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFN" IsSIP="N">S'ValueIsInvalidFor_x_roles_Property'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMF" IsSIP="N">S'001_PCsetOfString_ProxyRefTuples.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMN" IsSIP="N">S'001_PCsetOfString_ProxyRefTuples'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFN" IsSIP="N">S'ValuesOf_setOfString_ProxyRefTuples_PropertyInstancesAreSignificantlyDifferent'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="overheadDict" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassName" IsSIP="N">S'x_roles'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="propClassObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassProcOps" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassTMAName" IsSIP="N">S'A_assert'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o42" proxyId="00165"
    ><Property PAppNm="Vsys" PClass="confRule" IsSIP="Y">S'A_assert,,inferFrom_a_sip_'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleDesc" IsSIP="N">S'From each a_sip property, confers x_roles properties.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleName" IsSIP="N">S'inferFrom_a_sip_'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleProcOps" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleTMAName" IsSIP="N">S'A_assert'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleTrigRoles" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleValSrcRoles" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFArgString" IsSIP="N">S"assertionModel = 'A_assert'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFMF" IsSIP="N">S'001_conferralRules.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFMN" IsSIP="N">S'001_conferralRules'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFN" IsSIP="N">S'inferFrom_a_sip_'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o43" proxyId="00166"
    ><Property PAppNm="Vsys" PClass="confRule" IsSIP="Y">S'A_assert,,bridge_BigAssert_a_sip_to_A_assert_a_sip'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleDesc" IsSIP="N">S'For each a_sip property in the TMA named in the bridgeFromTMAName keyword argument, confers an a_sip property in this TMA.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleName" IsSIP="N">S'bridge_BigAssert_a_sip_to_A_assert_a_sip'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleProcOps" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleTMAName" IsSIP="N">S'A_assert'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleTrigRoles" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleValSrcRoles" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFArgString" IsSIP="N">S"bridgeFromTMAName = 'BigAssert',                                 bridgeFromTMAModel = 'BigAssert',                                 bridgeToTMAModel = 'A_assert',                                 bridgeFromR_ProxyPropertyName = 'role name',                                 bridgeFromR_ProxyTMAName = 'Roles'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFMF" IsSIP="N">S'001_conferralRules.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFMN" IsSIP="N">S'001_conferralRules'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFN" IsSIP="N">S'bridgeAcross_a_sip_Models'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o44" proxyId="00167"
    ><Property PAppNm="Vsys" PClass="confRule" IsSIP="Y">S'A_assert,,bridge_TRA_assert_a_sip_to_BigAssert_a_sip'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleDesc" IsSIP="N">S'For each a_sip property in the TMA named in the bridgeFromTMAName keyword argument, confers an a_sip property in this TMA.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleName" IsSIP="N">S'bridge_TRA_assert_a_sip_to_BigAssert_a_sip'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleProcOps" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleTMAName" IsSIP="N">S'A_assert'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleTrigRoles" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleValSrcRoles" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFArgString" IsSIP="N">S"bridgeFromTMAName = 'TRA_assert',                                 bridgeFromTMAModel = 'TRA_assert',                                 bridgeToTMAModel = 'A_assert',                                 bridgeFromR_ProxyPropertyName = 'role name',                                 bridgeFromR_ProxyTMAName = 'Roles'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFMF" IsSIP="N">S'001_conferralRules.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFMN" IsSIP="N">S'001_conferralRules'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFN" IsSIP="N">S'bridgeAcross_a_sip_Models'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o45" proxyId="00168"
    ><Property PAppNm="Vsys" PClass="TMAName" IsSIP="Y">S'U_assert'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="TMAConfFile" IsSIP="N">S'tmaconf.xml'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="TMADesc" IsSIP="N">S'TMA for unreified relationships with role names.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="TMAObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRules" IsSIP="N">(dp1%0aS'bridgeFrom_A_assert_modelTo_U_assert'%0ap2%0aNsS'infer_U_assert_properties_from_U_assert_properties'%0ap3%0aNs.</Property
    ><Property PAppNm="Vsys" PClass="propClasses" IsSIP="N">(dp1%0aS'x_LrnRrpRrn'%0ap2%0aNsS'x_RrnRrpLrn'%0ap3%0aNsS'x_RrnLrnRrp'%0ap4%0aNsS'x_RrpRrnLrn'%0ap5%0aNsS'x_LrnRrnRrp'%0ap6%0aNsS'x_RrpLrnRrn'%0ap7%0aNs.</Property
    ><Property PAppNm="Vsys" PClass="pythonModules" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="valueTypes" IsSIP="N">(dp1%0aS'stringKeyDictOfStringKeyDictsWithStringListValues1'%0ap2%0aNsS'stringKeyDictOfStringKeyDictsWithStringListValues3'%0ap3%0aNsS'stringKeyDictOfStringKeyDictsWithStringListValues2'%0ap4%0aNs.</Property
  ></ProxyObject

  ><ProxyObject id="o46" proxyId="00169"
    ><Property PAppNm="Vsys" PClass="valueType" IsSIP="Y">S'U_assert,,stringKeyDictOfStringKeyDictsWithStringListValues1'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFMF" IsSIP="N">S'001_valueTypes.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFMN" IsSIP="N">S'001_valueTypes'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFN" IsSIP="N">S'InstanceOf_stringKeyDictOfStringKeyDictsWithStringListValues_ValueTypeToXMLContentString'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="VTDesc" IsSIP="N">S'Value type for U_Assert properties whose first-level dictionary keys are proxyIds.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="VTName" IsSIP="N">S'stringKeyDictOfStringKeyDictsWithStringListValues1'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="VTTMAName" IsSIP="N">S'U_assert'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__F" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FArgString" IsSIP="N">S"levelAtWhichProxyReferenceAppears = 'first'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FMF" IsSIP="N">S'001_valueTypes.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FMN" IsSIP="N">S'001_valueTypes'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FN" IsSIP="N">S'ValueIsNotOfType_stringKeyDictOfStringKeyDictsWithStringListValues_'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFArgString" IsSIP="N">S"levelAtWhichProxyReferenceAppears = 'first'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFMF" IsSIP="N">S'001_valueTypes.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFMN" IsSIP="N">S'001_valueTypes'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFN" IsSIP="N">S'XMLContentStringToInstanceOf_stringKeyDictOfStringKeyDictsWithStringListValues_ValueType'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o47" proxyId="00170"
    ><Property PAppNm="Vsys" PClass="valueType" IsSIP="Y">S'U_assert,,stringKeyDictOfStringKeyDictsWithStringListValues2'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFMF" IsSIP="N">S'001_valueTypes.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFMN" IsSIP="N">S'001_valueTypes'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFN" IsSIP="N">S'InstanceOf_stringKeyDictOfStringKeyDictsWithStringListValues_ValueTypeToXMLContentString'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="VTDesc" IsSIP="N">S'Value type for U_Assert properties whose second-level dictionary keys are proxyIds.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="VTName" IsSIP="N">S'stringKeyDictOfStringKeyDictsWithStringListValues2'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="VTTMAName" IsSIP="N">S'U_assert'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__F" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FArgString" IsSIP="N">S"levelAtWhichProxyReferenceAppears = 'second'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FMF" IsSIP="N">S'001_valueTypes.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FMN" IsSIP="N">S'001_valueTypes'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FN" IsSIP="N">S'ValueIsNotOfType_stringKeyDictOfStringKeyDictsWithStringListValues_'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFArgString" IsSIP="N">S"levelAtWhichProxyReferenceAppears = 'second'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFMF" IsSIP="N">S'001_valueTypes.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFMN" IsSIP="N">S'001_valueTypes'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFN" IsSIP="N">S'XMLContentStringToInstanceOf_stringKeyDictOfStringKeyDictsWithStringListValues_ValueType'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o48" proxyId="00171"
    ><Property PAppNm="Vsys" PClass="valueType" IsSIP="Y">S'U_assert,,stringKeyDictOfStringKeyDictsWithStringListValues3'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFMF" IsSIP="N">S'001_valueTypes.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFMN" IsSIP="N">S'001_valueTypes'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFN" IsSIP="N">S'InstanceOf_stringKeyDictOfStringKeyDictsWithStringListValues_ValueTypeToXMLContentString'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="VTDesc" IsSIP="N">S'Value type for U_Assert properties whose third-level list items are proxyIds.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="VTName" IsSIP="N">S'stringKeyDictOfStringKeyDictsWithStringListValues3'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="VTTMAName" IsSIP="N">S'U_assert'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__F" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FArgString" IsSIP="N">S"levelAtWhichProxyReferenceAppears = 'third'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FMF" IsSIP="N">S'001_valueTypes.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FMN" IsSIP="N">S'001_valueTypes'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FN" IsSIP="N">S'ValueIsNotOfType_stringKeyDictOfStringKeyDictsWithStringListValues_'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFArgString" IsSIP="N">S"levelAtWhichProxyReferenceAppears = 'third'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFMF" IsSIP="N">S'001_valueTypes.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFMN" IsSIP="N">S'001_valueTypes'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFN" IsSIP="N">S'XMLContentStringToInstanceOf_stringKeyDictOfStringKeyDictsWithStringListValues_ValueType'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o49" proxyId="00172"
    ><Property PAppNm="Vsys" PClass="propClass" IsSIP="Y">S'U_assert,,x_LrnRrnRrp'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFArgString" IsSIP="N">S"levelAtWhichProxyReferenceAppears = 'third'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFN" IsSIP="N">S'Add_U_assert_PropToOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFArgString" IsSIP="N">S'workingValueSourceListOfPropertyInstances = workingValueSourceListOfPropertyInstances, propertyInstanceToMerge = propertyInstanceToMerge'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFN" IsSIP="N">S'Merge_U_assert_PropertyValues'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCDesc" IsSIP="N">S'x_localRoleName_remoteRoleName_remoteRolePlayer (x_LrnRrnRrp)'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCValueType" IsSIP="N">S'stringKeyDictOfStringKeyDictsWithStringListValues3'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMF" IsSIP="N">S'001_defaults.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMN" IsSIP="N">S'001_defaults'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFN" IsSIP="N">S'DefaultProxiesWith__ValueNotSignificantlyDifferentFrom'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFN" IsSIP="N">S'Remove_U_assert_PropFromOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFArgString" IsSIP="N">S"levelAtWhichProxyReferenceAppears = 'third'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFN" IsSIP="N">S'UpdateProxyReferencesIn_U_assert_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFN" IsSIP="N">S'ValueIsInvalidFor_U_assert_Property'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFArgString" IsSIP="N">S'propertyInstance1 = propertyInstance1, propertyInstance2 = propertyInstance2, workingValueSourceListOfPropertyInstances = workingValueSourceListOfPropertyInstances, propertyInstanceToMerge = propertyInstanceToMerge'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFN" IsSIP="N">S'ValuesOf_U_assert_PropertyInstancesAreSignificantlyDifferent'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="overheadDict" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassName" IsSIP="N">S'x_LrnRrnRrp'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="propClassObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassProcOps" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassTMAName" IsSIP="N">S'U_assert'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o50" proxyId="00173"
    ><Property PAppNm="Vsys" PClass="propClass" IsSIP="Y">S'U_assert,,x_LrnRrpRrn'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFArgString" IsSIP="N">S"levelAtWhichProxyReferenceAppears = 'second'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFN" IsSIP="N">S'Add_U_assert_PropToOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFArgString" IsSIP="N">S'workingValueSourceListOfPropertyInstances = workingValueSourceListOfPropertyInstances, propertyInstanceToMerge = propertyInstanceToMerge'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFN" IsSIP="N">S'Merge_U_assert_PropertyValues'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCDesc" IsSIP="N">S'x_localRoleName_remoteRolePlayer_remoteRoleName (x_LrnRrpRrn)'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCValueType" IsSIP="N">S'stringKeyDictOfStringKeyDictsWithStringListValues2'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMF" IsSIP="N">S'001_defaults.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMN" IsSIP="N">S'001_defaults'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFN" IsSIP="N">S'DefaultProxiesWith__ValueNotSignificantlyDifferentFrom'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFN" IsSIP="N">S'Remove_U_assert_PropFromOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFArgString" IsSIP="N">S"levelAtWhichProxyReferenceAppears = 'second'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFN" IsSIP="N">S'UpdateProxyReferencesIn_U_assert_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFN" IsSIP="N">S'ValueIsInvalidFor_U_assert_Property'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFArgString" IsSIP="N">S'propertyInstance1 = propertyInstance1, propertyInstance2 = propertyInstance2, workingValueSourceListOfPropertyInstances = workingValueSourceListOfPropertyInstances, propertyInstanceToMerge = propertyInstanceToMerge'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFN" IsSIP="N">S'ValuesOf_U_assert_PropertyInstancesAreSignificantlyDifferent'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="overheadDict" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassName" IsSIP="N">S'x_LrnRrpRrn'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="propClassObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassProcOps" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassTMAName" IsSIP="N">S'U_assert'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o51" proxyId="00174"
    ><Property PAppNm="Vsys" PClass="propClass" IsSIP="Y">S'U_assert,,x_RrnRrpLrn'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFArgString" IsSIP="N">S"levelAtWhichProxyReferenceAppears = 'second'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFN" IsSIP="N">S'Add_U_assert_PropToOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFArgString" IsSIP="N">S'workingValueSourceListOfPropertyInstances = workingValueSourceListOfPropertyInstances, propertyInstanceToMerge = propertyInstanceToMerge'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFN" IsSIP="N">S'Merge_U_assert_PropertyValues'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCDesc" IsSIP="N">S'x_remoteRoleNames_remoteRolePlayer_localRoleNames (x_RrnRrpLrn)'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCValueType" IsSIP="N">S'stringKeyDictOfStringKeyDictsWithStringListValues2'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMF" IsSIP="N">S'001_defaults.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMN" IsSIP="N">S'001_defaults'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFN" IsSIP="N">S'DefaultProxiesWith__ValueNotSignificantlyDifferentFrom'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFN" IsSIP="N">S'Remove_U_assert_PropFromOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFArgString" IsSIP="N">S"levelAtWhichProxyReferenceAppears = 'second'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFN" IsSIP="N">S'UpdateProxyReferencesIn_U_assert_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFN" IsSIP="N">S'ValueIsInvalidFor_U_assert_Property'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFArgString" IsSIP="N">S'propertyInstance1 = propertyInstance1, propertyInstance2 = propertyInstance2, workingValueSourceListOfPropertyInstances = workingValueSourceListOfPropertyInstances, propertyInstanceToMerge = propertyInstanceToMerge'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFN" IsSIP="N">S'ValuesOf_U_assert_PropertyInstancesAreSignificantlyDifferent'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="overheadDict" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassName" IsSIP="N">S'x_RrnRrpLrn'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="propClassObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassProcOps" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassTMAName" IsSIP="N">S'U_assert'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o52" proxyId="00175"
    ><Property PAppNm="Vsys" PClass="propClass" IsSIP="Y">S'U_assert,,x_RrnLrnRrp'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFArgString" IsSIP="N">S"levelAtWhichProxyReferenceAppears = 'third'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFN" IsSIP="N">S'Add_U_assert_PropToOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFArgString" IsSIP="N">S'workingValueSourceListOfPropertyInstances = workingValueSourceListOfPropertyInstances, propertyInstanceToMerge = propertyInstanceToMerge'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFN" IsSIP="N">S'Merge_U_assert_PropertyValues'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCDesc" IsSIP="N">S'x_remoteRoleNames_localRoleNames_remoteRolePlayer (x_RrnLrnRrp)'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCValueType" IsSIP="N">S'stringKeyDictOfStringKeyDictsWithStringListValues3'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMF" IsSIP="N">S'001_defaults.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMN" IsSIP="N">S'001_defaults'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFN" IsSIP="N">S'DefaultProxiesWith__ValueNotSignificantlyDifferentFrom'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFN" IsSIP="N">S'Remove_U_assert_PropFromOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFArgString" IsSIP="N">S"levelAtWhichProxyReferenceAppears = 'third'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFN" IsSIP="N">S'UpdateProxyReferencesIn_U_assert_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFN" IsSIP="N">S'ValueIsInvalidFor_U_assert_Property'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFArgString" IsSIP="N">S'propertyInstance1 = propertyInstance1, propertyInstance2 = propertyInstance2, workingValueSourceListOfPropertyInstances = workingValueSourceListOfPropertyInstances, propertyInstanceToMerge = propertyInstanceToMerge'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFN" IsSIP="N">S'ValuesOf_U_assert_PropertyInstancesAreSignificantlyDifferent'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="overheadDict" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassName" IsSIP="N">S'x_RrnLrnRrp'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="propClassObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassProcOps" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassTMAName" IsSIP="N">S'U_assert'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o53" proxyId="00176"
    ><Property PAppNm="Vsys" PClass="propClass" IsSIP="Y">S'U_assert,,x_RrpLrnRrn'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFArgString" IsSIP="N">S"levelAtWhichProxyReferenceAppears = 'first'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFN" IsSIP="N">S'Add_U_assert_PropToOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFArgString" IsSIP="N">S'workingValueSourceListOfPropertyInstances = workingValueSourceListOfPropertyInstances, propertyInstanceToMerge = propertyInstanceToMerge'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFN" IsSIP="N">S'Merge_U_assert_PropertyValues'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCDesc" IsSIP="N">S'x_remoteRolePlayer_localRoleNames_remoteRoleNames (x_RrpLrnRrn)'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCValueType" IsSIP="N">S'stringKeyDictOfStringKeyDictsWithStringListValues1'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMF" IsSIP="N">S'001_defaults.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMN" IsSIP="N">S'001_defaults'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFN" IsSIP="N">S'DefaultProxiesWith__ValueNotSignificantlyDifferentFrom'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFN" IsSIP="N">S'Remove_U_assert_PropFromOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFArgString" IsSIP="N">S"levelAtWhichProxyReferenceAppears = 'first'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFN" IsSIP="N">S'UpdateProxyReferencesIn_U_assert_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFN" IsSIP="N">S'ValueIsInvalidFor_U_assert_Property'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFArgString" IsSIP="N">S'propertyInstance1 = propertyInstance1, propertyInstance2 = propertyInstance2, workingValueSourceListOfPropertyInstances = workingValueSourceListOfPropertyInstances, propertyInstanceToMerge = propertyInstanceToMerge'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFN" IsSIP="N">S'ValuesOf_U_assert_PropertyInstancesAreSignificantlyDifferent'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="overheadDict" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassName" IsSIP="N">S'x_RrpLrnRrn'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="propClassObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassProcOps" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassTMAName" IsSIP="N">S'U_assert'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o54" proxyId="00177"
    ><Property PAppNm="Vsys" PClass="propClass" IsSIP="Y">S'U_assert,,x_RrpRrnLrn'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFArgString" IsSIP="N">S"levelAtWhichProxyReferenceAppears = 'first'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFN" IsSIP="N">S'Add_U_assert_PropToOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFArgString" IsSIP="N">S'workingValueSourceListOfPropertyInstances = workingValueSourceListOfPropertyInstances, propertyInstanceToMerge = propertyInstanceToMerge'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFN" IsSIP="N">S'Merge_U_assert_PropertyValues'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCDesc" IsSIP="N">S'x_remoteRolePlayer_remoteRoleNames_localRoleNames (x_RrpRrnLrn)'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCValueType" IsSIP="N">S'stringKeyDictOfStringKeyDictsWithStringListValues1'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMF" IsSIP="N">S'001_defaults.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMN" IsSIP="N">S'001_defaults'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFN" IsSIP="N">S'DefaultProxiesWith__ValueNotSignificantlyDifferentFrom'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFN" IsSIP="N">S'Remove_U_assert_PropFromOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFArgString" IsSIP="N">S"levelAtWhichProxyReferenceAppears = 'first'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFN" IsSIP="N">S'UpdateProxyReferencesIn_U_assert_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFN" IsSIP="N">S'ValueIsInvalidFor_U_assert_Property'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFArgString" IsSIP="N">S'propertyInstance1 = propertyInstance1, propertyInstance2 = propertyInstance2, workingValueSourceListOfPropertyInstances = workingValueSourceListOfPropertyInstances, propertyInstanceToMerge = propertyInstanceToMerge'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFN" IsSIP="N">S'ValuesOf_U_assert_PropertyInstancesAreSignificantlyDifferent'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="overheadDict" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassName" IsSIP="N">S'x_RrpRrnLrn'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="propClassObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassProcOps" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassTMAName" IsSIP="N">S'U_assert'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o55" proxyId="00178"
    ><Property PAppNm="Vsys" PClass="confRule" IsSIP="Y">S'U_assert,,infer_U_assert_properties_from_U_assert_properties'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleDesc" IsSIP="N">S'From each U_assert property, confer all other U_assert properties.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleName" IsSIP="N">S'infer_U_assert_properties_from_U_assert_properties'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleProcOps" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleTMAName" IsSIP="N">S'U_assert'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleTrigRoles" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleValSrcRoles" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFMF" IsSIP="N">S'001_conferralRules.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFMN" IsSIP="N">S'001_conferralRules'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFN" IsSIP="N">S'infer_U_assert_properties_from_U_assert_properties'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o56" proxyId="00179"
    ><Property PAppNm="Vsys" PClass="confRule" IsSIP="Y">S'U_assert,,bridgeFrom_A_assert_modelTo_U_assert'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleDesc" IsSIP="N">S'From each A_assert,,a_sip property, confer an x_LrnRrnRrp property on each of its role players.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleName" IsSIP="N">S'bridgeFrom_A_assert_modelTo_U_assert'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleProcOps" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleTMAName" IsSIP="N">S'U_assert'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="confRuleTrigRoles" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRuleValSrcRoles" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFArgString" IsSIP="N">S"bridgeFromTMAName = 'A_assert',                                rolesTMAName = 'Roles',                                roleNamePropertyClassName = 'role name',                                assertionModel = 'A_assert'"%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFMF" IsSIP="N">S'001_conferralRules.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFMN" IsSIP="N">S'001_conferralRules'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="conferralRuleFN" IsSIP="N">S'bridgeFrom_a_sip_modelTo_U_assert'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o57" proxyId="00180"
    ><Property PAppNm="Vsys" PClass="TMAName" IsSIP="Y">S'JacksTMA'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="TMAConfFile" IsSIP="N">S'tmaconf.xml'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="TMADesc" IsSIP="N">S'Simple demo TMA for Jack Park.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="TMAObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="confRules" IsSIP="N">(dp1%0a.</Property
    ><Property PAppNm="Vsys" PClass="propClasses" IsSIP="N">(dp1%0aS'Shoe Size'%0ap2%0aNsS'Age'%0ap3%0aNsS'Name'%0ap4%0aNsS'Person Name Proxy'%0ap5%0aNsS'shoeSizeObservation'%0ap6%0aNs.</Property
    ><Property PAppNm="Vsys" PClass="pythonModules" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="valueTypes" IsSIP="N">(dp1%0aS'proxyIdList'%0ap2%0aNsS'proxyIdSet'%0ap3%0aNsS'string'%0ap4%0aNs.</Property
  ></ProxyObject

  ><ProxyObject id="o58" proxyId="00181"
    ><Property PAppNm="Vsys" PClass="valueType" IsSIP="Y">S'JacksTMA,,string'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFMF" IsSIP="N">S'001_VTstring.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFMN" IsSIP="N">S'001_VTstring'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFN" IsSIP="N">S'InstanceOf_string_ValueTypeToXMLContentString'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="VTDesc" IsSIP="N">S'General-purpose string value type.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="VTName" IsSIP="N">S'string'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="VTTMAName" IsSIP="N">S'JacksTMA'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__F" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FMF" IsSIP="N">S'001_VTstring.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FMN" IsSIP="N">S'001_VTstring'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FN" IsSIP="N">S'ValueIsNotOfType_string_'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFMF" IsSIP="N">S'001_VTstring.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFMN" IsSIP="N">S'001_VTstring'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFN" IsSIP="N">S'XMLContentStringToInstanceOf_string_ValueType'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o59" proxyId="00182"
    ><Property PAppNm="Vsys" PClass="valueType" IsSIP="Y">S'JacksTMA,,proxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFMF" IsSIP="N">S'001_VTproxyIdList.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFMN" IsSIP="N">S'001_VTproxyIdList'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFN" IsSIP="N">S'InstanceOf_proxyIdList_ValueTypeToXMLContentString'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="VTDesc" IsSIP="N">S'General-purpose set-of-subject-proxies value type.  (Same valuetype implementation as proxyIdList.)'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="VTName" IsSIP="N">S'proxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="VTTMAName" IsSIP="N">S'JacksTMA'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__F" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FArgString" IsSIP="N">S'propertyClassName = propertyClass.propertyClassName'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FMF" IsSIP="N">S'001_VTproxyIdList.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FMN" IsSIP="N">S'001_VTproxyIdList'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FN" IsSIP="N">S'ValueIsNotOfType_proxyIdList_'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFMF" IsSIP="N">S'001_VTproxyIdList.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFMN" IsSIP="N">S'001_VTproxyIdList'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFN" IsSIP="N">S'XMLContentStringToInstanceOf_proxyIdList_ValueType'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o60" proxyId="00183"
    ><Property PAppNm="Vsys" PClass="valueType" IsSIP="Y">S'JacksTMA,,proxyIdList'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFMF" IsSIP="N">S'001_VTproxyIdList.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFMN" IsSIP="N">S'001_VTproxyIdList'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="InstanceOf__ValueTypeToXMLContentStringFN" IsSIP="N">S'InstanceOf_proxyIdList_ValueTypeToXMLContentString'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="VTDesc" IsSIP="N">S'General-purpose proxyIdList value type.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="VTName" IsSIP="N">S'proxyIdList'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="VTTMAName" IsSIP="N">S'JacksTMA'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__F" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FMF" IsSIP="N">S'001_VTproxyIdList.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FMN" IsSIP="N">S'001_VTproxyIdList'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsNotOfType__FN" IsSIP="N">S'ValueIsNotOfType_proxyIdList_'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFMF" IsSIP="N">S'001_VTproxyIdList.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFMN" IsSIP="N">S'001_VTproxyIdList'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="XMLContentStringToInstanceOf__ValueTypeFN" IsSIP="N">S'XMLContentStringToInstanceOf_proxyIdList_ValueType'%0ap1%0a.</Property
  ></ProxyObject

  ><ProxyObject id="o61" proxyId="00184"
    ><Property PAppNm="Vsys" PClass="propClass" IsSIP="Y">S'JacksTMA,,Name'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMF" IsSIP="N">S'001_PCstring.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMN" IsSIP="N">S'001_PCstring'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFN" IsSIP="N">S'Add_string_PropToOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFMF" IsSIP="N">S'001_PCstring.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFMN" IsSIP="N">S'001_PCstring'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFN" IsSIP="N">S'MergeProxiesBecause_string_PropertyInstancesSpecifySameSubject'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMF" IsSIP="N">S'001_PCstring.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMN" IsSIP="N">S'001_PCstring'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFN" IsSIP="N">S'Merge_string_PropertyValues'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCDesc" IsSIP="N">S'Subject is a name, represented by a string.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCValueType" IsSIP="N">S'string'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMF" IsSIP="N">S'001_PCstring.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMN" IsSIP="N">S'001_PCstring'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFN" IsSIP="N">S'ProxiesOfSubjectIdentifiedBy_string_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMF" IsSIP="N">S'001_PCstring.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMN" IsSIP="N">S'001_PCstring'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFN" IsSIP="N">S'Remove_string_PropFromOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMF" IsSIP="N">S'001_PCstring.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMN" IsSIP="N">S'001_PCstring'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFN" IsSIP="N">S'ValuesOf_string_PropertyInstancesAreSignificantlyDifferent'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="overheadDict" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassName" IsSIP="N">S'Name'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="propClassObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassProcOps" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassTMAName" IsSIP="N">S'JacksTMA'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="propInstancesMerged" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="proxiesKilled" IsSIP="N">N.</Property
  ></ProxyObject

  ><ProxyObject id="o62" proxyId="00185"
    ><Property PAppNm="Vsys" PClass="propClass" IsSIP="Y">S'JacksTMA,,Person Name Proxy'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFN" IsSIP="N">S'Add_proxyIdSet_PropToOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFN" IsSIP="N">S'MergeProxiesBecause_proxyIdSet_PropertyInstancesSpecifySameSubject'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFN" IsSIP="N">S'Merge_proxyIdSet_PropertyValues'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCDesc" IsSIP="N">S'Subject is the human being whose name is reified by the referenced proxy.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCValueType" IsSIP="N">S'proxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFN" IsSIP="N">S'ProxiesOfSubjectIdentifiedBy_proxyIdSet_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFN" IsSIP="N">S'Remove_proxyIdSet_PropFromOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFN" IsSIP="N">S'UpdateProxyReferencesIn_proxyIdSet_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFN" IsSIP="N">S'ValueIsInvalidFor_Person_Name_Proxy_Property'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMF" IsSIP="N">S'001_PCproxyIdSet.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMN" IsSIP="N">S'001_PCproxyIdSet'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFN" IsSIP="N">S'ValuesOf_proxyIdSet_PropertyInstancesAreSignificantlyDifferent'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="overheadDict" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassName" IsSIP="N">S'Person Name Proxy'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="propClassObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassProcOps" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassTMAName" IsSIP="N">S'JacksTMA'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="propInstancesMerged" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="proxiesKilled" IsSIP="N">N.</Property
  ></ProxyObject

  ><ProxyObject id="o63" proxyId="00186"
    ><Property PAppNm="Vsys" PClass="propClass" IsSIP="Y">S'JacksTMA,,Shoe Size'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMF" IsSIP="N">S'001_PCstring.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMN" IsSIP="N">S'001_PCstring'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFN" IsSIP="N">S'Add_string_PropToOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFMF" IsSIP="N">S'001_PCstring.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFMN" IsSIP="N">S'001_PCstring'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFN" IsSIP="N">S'MergeProxiesBecause_string_PropertyInstancesSpecifySameSubject'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMF" IsSIP="N">S'001_PCstring.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMN" IsSIP="N">S'001_PCstring'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFN" IsSIP="N">S'Merge_string_PropertyValues'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCDesc" IsSIP="N">S'Subject is a shoe size, represented by a string.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCValueType" IsSIP="N">S'string'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMF" IsSIP="N">S'001_PCstring.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMN" IsSIP="N">S'001_PCstring'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFN" IsSIP="N">S'ProxiesOfSubjectIdentifiedBy_string_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMF" IsSIP="N">S'001_PCstring.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMN" IsSIP="N">S'001_PCstring'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFN" IsSIP="N">S'Remove_string_PropFromOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMF" IsSIP="N">S'001_PCstring.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMN" IsSIP="N">S'001_PCstring'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFN" IsSIP="N">S'ValuesOf_string_PropertyInstancesAreSignificantlyDifferent'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="overheadDict" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassName" IsSIP="N">S'Shoe Size'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="propClassObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassProcOps" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassTMAName" IsSIP="N">S'JacksTMA'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="propInstancesMerged" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="proxiesKilled" IsSIP="N">N.</Property
  ></ProxyObject

  ><ProxyObject id="o64" proxyId="00187"
    ><Property PAppNm="Vsys" PClass="propClass" IsSIP="Y">S'JacksTMA,,Age'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMF" IsSIP="N">S'001_PCstring.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMN" IsSIP="N">S'001_PCstring'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFN" IsSIP="N">S'Add_string_PropToOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFMF" IsSIP="N">S'001_PCstring.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFMN" IsSIP="N">S'001_PCstring'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFN" IsSIP="N">S'MergeProxiesBecause_string_PropertyInstancesSpecifySameSubject'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMF" IsSIP="N">S'001_PCstring.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMN" IsSIP="N">S'001_PCstring'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFN" IsSIP="N">S'Merge_string_PropertyValues'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCDesc" IsSIP="N">S'Subject is an age in years, represented by a string.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCValueType" IsSIP="N">S'string'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMF" IsSIP="N">S'001_PCstring.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMN" IsSIP="N">S'001_PCstring'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFN" IsSIP="N">S'ProxiesOfSubjectIdentifiedBy_string_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMF" IsSIP="N">S'001_PCstring.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMN" IsSIP="N">S'001_PCstring'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFN" IsSIP="N">S'Remove_string_PropFromOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMF" IsSIP="N">S'001_PCstring.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMN" IsSIP="N">S'001_PCstring'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFN" IsSIP="N">S'ValuesOf_string_PropertyInstancesAreSignificantlyDifferent'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="overheadDict" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassName" IsSIP="N">S'Age'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="propClassObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassProcOps" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassTMAName" IsSIP="N">S'JacksTMA'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="propInstancesMerged" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="proxiesKilled" IsSIP="N">N.</Property
  ></ProxyObject

  ><ProxyObject id="o65" proxyId="00188"
    ><Property PAppNm="Vsys" PClass="propClass" IsSIP="Y">S'JacksTMA,,shoeSizeObservation'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMF" IsSIP="N">S'001_PCproxyIdList.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFMN" IsSIP="N">S'001_PCproxyIdList'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Add__PropToOverheadDictFN" IsSIP="N">S'Add_proxyIdList_PropToOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFMF" IsSIP="N">S'001_PCproxyIdList.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFMN" IsSIP="N">S'001_PCproxyIdList'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="MergeProxiesBecause__PropertyInstancesSpecifySameSubjectFN" IsSIP="N">S'MergeProxiesBecause_proxyIdList_PropertyInstancesSpecifySameSubject'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMF" IsSIP="N">S'001_PCproxyIdList.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFMN" IsSIP="N">S'001_PCproxyIdList'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Merge__PropertyValuesFN" IsSIP="N">S'Merge_proxyIdList_PropertyValues'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCDesc" IsSIP="N">S'Subject is the human being whose name is reified by the referenced proxy.'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="PCValueType" IsSIP="N">S'proxyIdList'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMF" IsSIP="N">S'001_PCproxyIdList.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFMN" IsSIP="N">S'001_PCproxyIdList'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ProxiesWith__ValueNotSignificantlyDifferentFromFN" IsSIP="N">S'ProxiesOfSubjectIdentifiedBy_proxyIdList_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMF" IsSIP="N">S'001_PCproxyIdList.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFMN" IsSIP="N">S'001_PCproxyIdList'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="Remove__PropFromOverheadDictFN" IsSIP="N">S'Remove_proxyIdList_PropFromOverheadDict'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMF" IsSIP="N">S'001_PCproxyIdList.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFMN" IsSIP="N">S'001_PCproxyIdList'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="UpdateProxyReferencesIn__ValueFN" IsSIP="N">S'UpdateProxyReferencesIn_proxyIdList_Value'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMF" IsSIP="N">S'001_propertyClasses.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFMN" IsSIP="N">S'001_propertyClasses'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValueIsInvalidFor__PropertyFN" IsSIP="N">S'ValueIsInvalidFor_shoeSizeObservation_Property'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentF" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFArgString" IsSIP="N">S''%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMF" IsSIP="N">S'001_PCproxyIdList.py'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFMN" IsSIP="N">S'001_PCproxyIdList'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="ValuesOf__PropertyInstancesAreSignificantlyDifferentFN" IsSIP="N">S'ValuesOf_proxyIdList_PropertyInstancesAreSignificantlyDifferent'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="overheadDict" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassName" IsSIP="N">S'shoeSizeObservation'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="propClassObj" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassProcOps" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="propClassTMAName" IsSIP="N">S'JacksTMA'%0ap1%0a.</Property
    ><Property PAppNm="Vsys" PClass="propInstancesMerged" IsSIP="N">N.</Property
    ><Property PAppNm="Vsys" PClass="proxiesKilled" IsSIP="N">N.</Property
  ></ProxyObject

  ><ProxyObject id="o66" proxyId="00253"
    ><Property PAppNm="BigAssert" PClass="c_sip" IsSIP="Y">(lp1%0aS'001136'%0ap2%0aaS'001469'%0ap3%0aaS'001166'%0ap4%0aa.</Property
  ></ProxyObject

  ><ProxyObject id="o67" proxyId="00256"
    ><Property PAppNm="BigAssert" PClass="c_sip" IsSIP="Y">(lp1%0aS'001138'%0ap2%0aaS'001469'%0ap3%0aaS'001479'%0ap4%0aa.</Property
  ></ProxyObject

  ><ProxyObject id="o68" proxyId="00261"
    ><Property PAppNm="BigAssert" PClass="c_sip" IsSIP="Y">(lp1%0aS'001458'%0ap2%0aaS'001475'%0ap3%0aaS'001481'%0ap4%0aa.</Property
  ></ProxyObject

  ><ProxyObject id="o69" proxyId="00264"
    ><Property PAppNm="BigAssert" PClass="c_sip" IsSIP="Y">(lp1%0aS'001456'%0ap2%0aaS'001475'%0ap3%0aaS'001482'%0ap4%0aa.</Property
  ></ProxyObject

  ><ProxyObject id="o70" proxyId="00269"
    ><Property PAppNm="BigAssert" PClass="c_sip" IsSIP="Y">(lp1%0aS'001455'%0ap2%0aaS'001471'%0ap3%0aaS'001475'%0ap4%0aa.</Property
  ></ProxyObject

  ><ProxyObject id="o71" proxyId="00272"
    ><Property PAppNm="BigAssert" PClass="c_sip" IsSIP="Y">(lp1%0aS'001457'%0ap2%0aaS'001471'%0ap3%0aaS'001479'%0ap4%0aa.</Property
  ></ProxyObject

  ><ProxyObject id="o72" proxyId="00590"
    ><Property PAppNm="BigAssert" PClass="c_sip" IsSIP="Y">(lp1%0aS'001457'%0ap2%0aaS'001155'%0ap3%0aaS'001169'%0ap4%0aa.</Property
  ></ProxyObject

  ><ProxyObject id="o73" proxyId="00593"
    ><Property PAppNm="BigAssert" PClass="c_sip" IsSIP="Y">(lp1%0aS'001455'%0ap2%0aaS'001155'%0ap3%0aaS'001475'%0ap4%0aa.</Property
  ></ProxyObject

  ><ProxyObject id="o74" proxyId="00598"
    ><Property PAppNm="BigAssert" PClass="c_sip" IsSIP="Y">(lp1%0aS'001136'%0ap2%0aaS'001467'%0ap3%0aaS'001477'%0ap4%0aa.</Property
  ></ProxyObject

  ><ProxyObject id="o75" proxyId="00601"
    ><Property PAppNm="BigAssert" PClass="c_sip" IsSIP="Y">(lp1%0aS'001138'%0ap2%0aaS'001467'%0ap3%0aaS'001480'%0ap4%0aa.</Property
  ></ProxyObject

  ><ProxyObject id="o76" proxyId="00606"
    ><Property PAppNm="BigAssert" PClass="c_sip" IsSIP="Y">(lp1%0aS'001455'%0ap2%0aaS'001484'%0ap3%0aaS'001475'%0ap4%0aa.</Property
  ></ProxyObject

  ><ProxyObject id="o77" proxyId="00609"
    ><Property PAppNm="BigAssert" PClass="c_sip" IsSIP="Y">(lp1%0aS'001457'%0ap2%0aaS'001484'%0ap3%0aaS'001480'%0ap4%0aa.</Property
  ></ProxyObject

  ><ProxyObject id="o78" proxyId="00614"
    ><Property PAppNm="BigAssert" PClass="c_sip" IsSIP="Y">(lp1%0aS'001138'%0ap2%0aaS'001468'%0ap3%0aaS'001169'%0ap4%0aa.</Property
  ></ProxyObject

  ><ProxyObject id="o79" proxyId="00617"
    ><Property PAppNm="BigAssert" PClass="c_sip" IsSIP="Y">(lp1%0aS'001136'%0ap2%0aaS'001468'%0ap3%0aaS'001476'%0ap4%0aa.</Property
  ></ProxyObject

  ><ProxyObject id="o80" proxyId="00622"
    ><Property PAppNm="BigAssert" PClass="c_sip" IsSIP="Y">(lp1%0aS'001136'%0ap2%0aaS'001159'%0ap3%0aaS'001165'%0ap4%0aa.</Property
  ></ProxyObject

  ><ProxyObject id="o81" proxyId="00625"
    ><Property PAppNm="BigAssert" PClass="c_sip" IsSIP="Y">(lp1%0aS'001138'%0ap2%0aaS'001159'%0ap3%0aaS'001478'%0ap4%0aa.</Property
  ></ProxyObject

  ><ProxyObject id="o82" proxyId="001136"
    ><Property PAppNm="Roles" PClass="role name" IsSIP="Y">S'nameOfPerson'%0ap1%0a.</Property
    ><Property PAppNm="BigAssert" PClass="r_castings" IsSIP="N">(lp1%0aS'00253'%0ap2%0aaS'00617'%0ap3%0aaS'00622'%0ap4%0aaS'00598'%0ap5%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="r_type" IsSIP="N">(lp1%0aS'001162'%0ap2%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="r_rolePlayers" IsSIP="N">(lp1%0aS'001166'%0ap2%0aaS'001165'%0ap3%0aaS'001476'%0ap4%0aaS'001477'%0ap5%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="r_type" IsSIP="N">(lp1%0aS'001162'%0ap2%0aa.</Property
  ></ProxyObject

  ><ProxyObject id="o83" proxyId="001138"
    ><Property PAppNm="Roles" PClass="role name" IsSIP="Y">S'namedPerson'%0ap1%0a.</Property
    ><Property PAppNm="BigAssert" PClass="r_castings" IsSIP="N">(lp1%0aS'00614'%0ap2%0aaS'00625'%0ap3%0aaS'00256'%0ap4%0aaS'00601'%0ap5%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="r_type" IsSIP="N">(lp1%0aS'001162'%0ap2%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="r_rolePlayers" IsSIP="N">(lp1%0aS'001478'%0ap2%0aaS'001479'%0ap3%0aaS'001169'%0ap4%0aaS'001480'%0ap5%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="r_type" IsSIP="N">(lp1%0aS'001162'%0ap2%0aa.</Property
  ></ProxyObject

  ><ProxyObject id="o84" proxyId="001151"
    ><Property PAppNm="BigAssert" PClass="t_sip" IsSIP="Y">(lp1%0aS'001456'%0ap2%0aaS'001458'%0ap3%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="t_assertions" IsSIP="N">(lp1%0aS'001475'%0ap2%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="t_sip" IsSIP="Y">(lp1%0aS'001456'%0ap2%0aaS'001458'%0ap3%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="t_assertions" IsSIP="N">(lp1%0aS'001475'%0ap2%0aa.</Property
  ></ProxyObject

  ><ProxyObject id="o85" proxyId="001155"
    ><Property PAppNm="A_assert" PClass="a_sip" IsSIP="Y">(lp1%0a(S'PersonWithFeet'%0ap2%0aS'001169'%0ap3%0atp4%0aa(S'ObservedShoeSize'%0ap5%0aS'001475'%0ap6%0atp7%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="a_sip" IsSIP="Y">(lp1%0a(S'001457'%0ap2%0aS'001169'%0ap3%0atp4%0aa(S'001455'%0ap5%0aS'001475'%0ap6%0atp7%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="a_castings" IsSIP="N">(lp1%0aS'00593'%0ap2%0aaS'00590'%0ap3%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="a_type" IsSIP="N">(lp1%0aS'001473'%0ap2%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="a_sip" IsSIP="Y">(lp1%0a(S'001457'%0ap2%0aS'001169'%0ap3%0atp4%0aa(S'001455'%0ap5%0aS'001475'%0ap6%0atp7%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="a_type" IsSIP="N">(lp1%0aS'001473'%0ap2%0aa.</Property
  ></ProxyObject

  ><ProxyObject id="o86" proxyId="001159"
    ><Property PAppNm="A_assert" PClass="a_sip" IsSIP="Y">(lp1%0a(S'namedPerson'%0ap2%0aS'001478'%0ap3%0atp4%0aa(S'nameOfPerson'%0ap5%0aS'001165'%0ap6%0atp7%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="a_sip" IsSIP="Y">(lp1%0a(S'001136'%0ap2%0aS'001165'%0ap3%0atp4%0aa(S'001138'%0ap5%0aS'001478'%0ap6%0atp7%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="a_castings" IsSIP="N">(lp1%0aS'00625'%0ap2%0aaS'00622'%0ap3%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="a_type" IsSIP="N">(lp1%0aS'001162'%0ap2%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="a_sip" IsSIP="Y">(lp1%0a(S'001136'%0ap2%0aS'001165'%0ap3%0atp4%0aa(S'001138'%0ap5%0aS'001478'%0ap6%0atp7%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="a_type" IsSIP="N">(lp1%0aS'001162'%0ap2%0aa.</Property
  ></ProxyObject

  ><ProxyObject id="o87" proxyId="001162"
    ><Property PAppNm="BigAssert" PClass="t_sip" IsSIP="Y">(lp1%0aS'001138'%0ap2%0aaS'001136'%0ap3%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="t_assertions" IsSIP="N">(lp1%0aS'001467'%0ap2%0aaS'001159'%0ap3%0aaS'001469'%0ap4%0aaS'001468'%0ap5%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="t_sip" IsSIP="Y">(lp1%0aS'001138'%0ap2%0aaS'001136'%0ap3%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="t_assertions" IsSIP="N">(lp1%0aS'001467'%0ap2%0aaS'001159'%0ap3%0aaS'001469'%0ap4%0aaS'001468'%0ap5%0aa.</Property
  ></ProxyObject

  ><ProxyObject id="o88" proxyId="001165"
    ><Property PAppNm="JacksTMA" PClass="Name" IsSIP="Y">S'Ursula'%0ap1%0a.</Property
    ><Property PAppNm="A_assert" PClass="x_roles" IsSIP="N">(lp1%0a(S'nameOfPerson'%0ap2%0aS'001159'%0ap3%0atp4%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="x_castings" IsSIP="N">(lp1%0aS'00622'%0ap2%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="x_roles" IsSIP="N">(lp1%0a(S'001136'%0ap2%0aS'001159'%0ap3%0atp4%0aa.</Property
    ><Property PAppNm="U_assert" PClass="x_LrnRrnRrp" IsSIP="N">(dp1%0aS'nameOfPerson'%0ap2%0a(dp3%0aS'namedPerson'%0ap4%0a(lp5%0aS'001478'%0ap6%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_LrnRrpRrn" IsSIP="N">(dp1%0aS'nameOfPerson'%0ap2%0a(dp3%0aS'001478'%0ap4%0a(lp5%0aS'namedPerson'%0ap6%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrnLrnRrp" IsSIP="N">(dp1%0aS'namedPerson'%0ap2%0a(dp3%0aS'nameOfPerson'%0ap4%0a(lp5%0aS'001478'%0ap6%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrnRrpLrn" IsSIP="N">(dp1%0aS'namedPerson'%0ap2%0a(dp3%0aS'001478'%0ap4%0a(lp5%0aS'nameOfPerson'%0ap6%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrpLrnRrn" IsSIP="N">(dp1%0aS'001478'%0ap2%0a(dp3%0aS'nameOfPerson'%0ap4%0a(lp5%0aS'namedPerson'%0ap6%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrpRrnLrn" IsSIP="N">(dp1%0aS'001478'%0ap2%0a(dp3%0aS'namedPerson'%0ap4%0a(lp5%0aS'nameOfPerson'%0ap6%0aass.</Property
  ></ProxyObject

  ><ProxyObject id="o89" proxyId="001166"
    ><Property PAppNm="JacksTMA" PClass="Name" IsSIP="Y">S'Joe'%0ap1%0a.</Property
    ><Property PAppNm="A_assert" PClass="x_roles" IsSIP="N">(lp1%0a(S'nameOfPerson'%0ap2%0aS'001469'%0ap3%0atp4%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="x_castings" IsSIP="N">(lp1%0aS'00253'%0ap2%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="x_roles" IsSIP="N">(lp1%0a(S'001136'%0ap2%0aS'001469'%0ap3%0atp4%0aa.</Property
    ><Property PAppNm="U_assert" PClass="x_LrnRrnRrp" IsSIP="N">(dp1%0aS'nameOfPerson'%0ap2%0a(dp3%0aS'namedPerson'%0ap4%0a(lp5%0aS'001479'%0ap6%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_LrnRrpRrn" IsSIP="N">(dp1%0aS'nameOfPerson'%0ap2%0a(dp3%0aS'001479'%0ap4%0a(lp5%0aS'namedPerson'%0ap6%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrnLrnRrp" IsSIP="N">(dp1%0aS'namedPerson'%0ap2%0a(dp3%0aS'nameOfPerson'%0ap4%0a(lp5%0aS'001479'%0ap6%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrnRrpLrn" IsSIP="N">(dp1%0aS'namedPerson'%0ap2%0a(dp3%0aS'001479'%0ap4%0a(lp5%0aS'nameOfPerson'%0ap6%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrpLrnRrn" IsSIP="N">(dp1%0aS'001479'%0ap2%0a(dp3%0aS'nameOfPerson'%0ap4%0a(lp5%0aS'namedPerson'%0ap6%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrpRrnLrn" IsSIP="N">(dp1%0aS'001479'%0ap2%0a(dp3%0aS'namedPerson'%0ap4%0a(lp5%0aS'nameOfPerson'%0ap6%0aass.</Property
  ></ProxyObject

  ><ProxyObject id="o90" proxyId="001169"
    ><Property PAppNm="JacksTMA" PClass="Person Name Proxy" IsSIP="Y">(lp1%0aS'001476'%0ap2%0aa.</Property
    ><Property PAppNm="A_assert" PClass="x_roles" IsSIP="N">(lp1%0a(S'namedPerson'%0ap2%0aS'001468'%0ap3%0atp4%0aa(S'PersonWithFeet'%0ap5%0aS'001155'%0ap6%0atp7%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="x_castings" IsSIP="N">(lp1%0aS'00614'%0ap2%0aaS'00590'%0ap3%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="x_roles" IsSIP="N">(lp1%0a(S'001457'%0ap2%0aS'001155'%0ap3%0atp4%0aa(S'001138'%0ap5%0aS'001468'%0ap6%0atp7%0aa.</Property
    ><Property PAppNm="U_assert" PClass="x_LrnRrnRrp" IsSIP="N">(dp1%0aS'namedPerson'%0ap2%0a(dp3%0aS'nameOfPerson'%0ap4%0a(lp5%0aS'001476'%0ap6%0aassS'PersonWithFeet'%0ap7%0a(dp8%0aS'ObservedShoeSize'%0ap9%0a(lp10%0aS'001475'%0ap11%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_LrnRrpRrn" IsSIP="N">(dp1%0aS'namedPerson'%0ap2%0a(dp3%0aS'001476'%0ap4%0a(lp5%0aS'nameOfPerson'%0ap6%0aassS'PersonWithFeet'%0ap7%0a(dp8%0aS'001475'%0ap9%0a(lp10%0aS'ObservedShoeSize'%0ap11%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrnLrnRrp" IsSIP="N">(dp1%0aS'nameOfPerson'%0ap2%0a(dp3%0aS'namedPerson'%0ap4%0a(lp5%0aS'001476'%0ap6%0aassS'ObservedShoeSize'%0ap7%0a(dp8%0aS'PersonWithFeet'%0ap9%0a(lp10%0aS'001475'%0ap11%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrnRrpLrn" IsSIP="N">(dp1%0aS'nameOfPerson'%0ap2%0a(dp3%0aS'001476'%0ap4%0a(lp5%0aS'namedPerson'%0ap6%0aassS'ObservedShoeSize'%0ap7%0a(dp8%0aS'001475'%0ap9%0a(lp10%0aS'PersonWithFeet'%0ap11%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrpLrnRrn" IsSIP="N">(dp1%0aS'001475'%0ap2%0a(dp3%0aS'PersonWithFeet'%0ap4%0a(lp5%0aS'ObservedShoeSize'%0ap6%0aassS'001476'%0ap7%0a(dp8%0aS'namedPerson'%0ap9%0a(lp10%0aS'nameOfPerson'%0ap11%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrpRrnLrn" IsSIP="N">(dp1%0aS'001475'%0ap2%0a(dp3%0aS'ObservedShoeSize'%0ap4%0a(lp5%0aS'PersonWithFeet'%0ap6%0aassS'001476'%0ap7%0a(dp8%0aS'nameOfPerson'%0ap9%0a(lp10%0aS'namedPerson'%0ap11%0aass.</Property
  ></ProxyObject

  ><ProxyObject id="o91" proxyId="001181"
    ><Property PAppNm="BigAssert" PClass="c_sip" IsSIP="Y">(lp1%0aS'001455'%0ap2%0aaS'001472'%0ap3%0aaS'001483'%0ap4%0aa.</Property
  ></ProxyObject

  ><ProxyObject id="o92" proxyId="001184"
    ><Property PAppNm="BigAssert" PClass="c_sip" IsSIP="Y">(lp1%0aS'001457'%0ap2%0aaS'001472'%0ap3%0aaS'001478'%0ap4%0aa.</Property
  ></ProxyObject

  ><ProxyObject id="o93" proxyId="001455"
    ><Property PAppNm="Roles" PClass="role name" IsSIP="Y">S'ObservedShoeSize'%0ap1%0a.</Property
    ><Property PAppNm="BigAssert" PClass="r_castings" IsSIP="N">(lp1%0aS'00593'%0ap2%0aaS'00269'%0ap3%0aaS'00606'%0ap4%0aaS'001181'%0ap5%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="r_type" IsSIP="N">(lp1%0aS'001473'%0ap2%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="r_rolePlayers" IsSIP="N">(lp1%0aS'001483'%0ap2%0aaS'001475'%0ap3%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="r_type" IsSIP="N">(lp1%0aS'001473'%0ap2%0aa.</Property
  ></ProxyObject

  ><ProxyObject id="o94" proxyId="001456"
    ><Property PAppNm="Roles" PClass="role name" IsSIP="Y">S'ageAtShoeSizeObservation'%0ap1%0a.</Property
    ><Property PAppNm="BigAssert" PClass="r_castings" IsSIP="N">(lp1%0aS'00264'%0ap2%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="r_type" IsSIP="N">(lp1%0aS'001151'%0ap2%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="r_rolePlayers" IsSIP="N">(lp1%0aS'001482'%0ap2%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="r_type" IsSIP="N">(lp1%0aS'001151'%0ap2%0aa.</Property
  ></ProxyObject

  ><ProxyObject id="o95" proxyId="001457"
    ><Property PAppNm="Roles" PClass="role name" IsSIP="Y">S'PersonWithFeet'%0ap1%0a.</Property
    ><Property PAppNm="BigAssert" PClass="r_castings" IsSIP="N">(lp1%0aS'001184'%0ap2%0aaS'00609'%0ap3%0aaS'00272'%0ap4%0aaS'00590'%0ap5%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="r_type" IsSIP="N">(lp1%0aS'001473'%0ap2%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="r_rolePlayers" IsSIP="N">(lp1%0aS'001478'%0ap2%0aaS'001480'%0ap3%0aaS'001169'%0ap4%0aaS'001479'%0ap5%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="r_type" IsSIP="N">(lp1%0aS'001473'%0ap2%0aa.</Property
  ></ProxyObject

  ><ProxyObject id="o96" proxyId="001458"
    ><Property PAppNm="Roles" PClass="role name" IsSIP="Y">S'shoeSizeObservation'%0ap1%0a.</Property
    ><Property PAppNm="BigAssert" PClass="r_castings" IsSIP="N">(lp1%0aS'00261'%0ap2%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="r_type" IsSIP="N">(lp1%0aS'001151'%0ap2%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="r_rolePlayers" IsSIP="N">(lp1%0aS'001481'%0ap2%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="r_type" IsSIP="N">(lp1%0aS'001151'%0ap2%0aa.</Property
  ></ProxyObject

  ><ProxyObject id="o97" proxyId="001467"
    ><Property PAppNm="A_assert" PClass="a_sip" IsSIP="Y">(lp1%0a(S'nameOfPerson'%0ap2%0aS'001477'%0ap3%0atp4%0aa(S'namedPerson'%0ap5%0aS'001480'%0ap6%0atp7%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="a_sip" IsSIP="Y">(lp1%0a(S'001138'%0ap2%0aS'001480'%0ap3%0atp4%0aa(S'001136'%0ap5%0aS'001477'%0ap6%0atp7%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="a_castings" IsSIP="N">(lp1%0aS'00601'%0ap2%0aaS'00598'%0ap3%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="a_type" IsSIP="N">(lp1%0aS'001162'%0ap2%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="a_sip" IsSIP="Y">(lp1%0a(S'001138'%0ap2%0aS'001480'%0ap3%0atp4%0aa(S'001136'%0ap5%0aS'001477'%0ap6%0atp7%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="a_type" IsSIP="N">(lp1%0aS'001162'%0ap2%0aa.</Property
  ></ProxyObject

  ><ProxyObject id="o98" proxyId="001468"
    ><Property PAppNm="A_assert" PClass="a_sip" IsSIP="Y">(lp1%0a(S'nameOfPerson'%0ap2%0aS'001476'%0ap3%0atp4%0aa(S'namedPerson'%0ap5%0aS'001169'%0ap6%0atp7%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="a_sip" IsSIP="Y">(lp1%0a(S'001136'%0ap2%0aS'001476'%0ap3%0atp4%0aa(S'001138'%0ap5%0aS'001169'%0ap6%0atp7%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="a_castings" IsSIP="N">(lp1%0aS'00614'%0ap2%0aaS'00617'%0ap3%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="a_type" IsSIP="N">(lp1%0aS'001162'%0ap2%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="a_sip" IsSIP="Y">(lp1%0a(S'001136'%0ap2%0aS'001476'%0ap3%0atp4%0aa(S'001138'%0ap5%0aS'001169'%0ap6%0atp7%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="a_type" IsSIP="N">(lp1%0aS'001162'%0ap2%0aa.</Property
  ></ProxyObject

  ><ProxyObject id="o99" proxyId="001469"
    ><Property PAppNm="A_assert" PClass="a_sip" IsSIP="Y">(lp1%0a(S'namedPerson'%0ap2%0aS'001479'%0ap3%0atp4%0aa(S'nameOfPerson'%0ap5%0aS'001166'%0ap6%0atp7%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="a_sip" IsSIP="Y">(lp1%0a(S'001136'%0ap2%0aS'001166'%0ap3%0atp4%0aa(S'001138'%0ap5%0aS'001479'%0ap6%0atp7%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="a_castings" IsSIP="N">(lp1%0aS'00256'%0ap2%0aaS'00253'%0ap3%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="a_type" IsSIP="N">(lp1%0aS'001162'%0ap2%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="a_sip" IsSIP="Y">(lp1%0a(S'001136'%0ap2%0aS'001166'%0ap3%0atp4%0aa(S'001138'%0ap5%0aS'001479'%0ap6%0atp7%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="a_type" IsSIP="N">(lp1%0aS'001162'%0ap2%0aa.</Property
  ></ProxyObject

  ><ProxyObject id="o100" proxyId="001471"
    ><Property PAppNm="A_assert" PClass="a_sip" IsSIP="Y">(lp1%0a(S'PersonWithFeet'%0ap2%0aS'001479'%0ap3%0atp4%0aa(S'ObservedShoeSize'%0ap5%0aS'001475'%0ap6%0atp7%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="a_sip" IsSIP="Y">(lp1%0a(S'001457'%0ap2%0aS'001479'%0ap3%0atp4%0aa(S'001455'%0ap5%0aS'001475'%0ap6%0atp7%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="a_castings" IsSIP="N">(lp1%0aS'00272'%0ap2%0aaS'00269'%0ap3%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="a_type" IsSIP="N">(lp1%0aS'001473'%0ap2%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="a_sip" IsSIP="Y">(lp1%0a(S'001457'%0ap2%0aS'001479'%0ap3%0atp4%0aa(S'001455'%0ap5%0aS'001475'%0ap6%0atp7%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="a_type" IsSIP="N">(lp1%0aS'001473'%0ap2%0aa.</Property
  ></ProxyObject

  ><ProxyObject id="o101" proxyId="001472"
    ><Property PAppNm="A_assert" PClass="a_sip" IsSIP="Y">(lp1%0a(S'ObservedShoeSize'%0ap2%0aS'001483'%0ap3%0atp4%0aa(S'PersonWithFeet'%0ap5%0aS'001478'%0ap6%0atp7%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="a_sip" IsSIP="Y">(lp1%0a(S'001457'%0ap2%0aS'001478'%0ap3%0atp4%0aa(S'001455'%0ap5%0aS'001483'%0ap6%0atp7%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="a_castings" IsSIP="N">(lp1%0aS'001184'%0ap2%0aaS'001181'%0ap3%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="a_type" IsSIP="N">(lp1%0aS'001473'%0ap2%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="a_sip" IsSIP="Y">(lp1%0a(S'001457'%0ap2%0aS'001478'%0ap3%0atp4%0aa(S'001455'%0ap5%0aS'001483'%0ap6%0atp7%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="a_type" IsSIP="N">(lp1%0aS'001473'%0ap2%0aa.</Property
  ></ProxyObject

  ><ProxyObject id="o102" proxyId="001473"
    ><Property PAppNm="BigAssert" PClass="t_sip" IsSIP="Y">(lp1%0aS'001457'%0ap2%0aaS'001455'%0ap3%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="t_assertions" IsSIP="N">(lp1%0aS'001471'%0ap2%0aaS'001472'%0ap3%0aaS'001484'%0ap4%0aaS'001155'%0ap5%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="t_sip" IsSIP="Y">(lp1%0aS'001457'%0ap2%0aaS'001455'%0ap3%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="t_assertions" IsSIP="N">(lp1%0aS'001471'%0ap2%0aaS'001155'%0ap3%0aaS'001484'%0ap4%0aaS'001472'%0ap5%0aa.</Property
  ></ProxyObject

  ><ProxyObject id="o103" proxyId="001475"
    ><Property PAppNm="A_assert" PClass="a_sip" IsSIP="Y">(lp1%0a(S'ageAtShoeSizeObservation'%0ap2%0aS'001482'%0ap3%0atp4%0aa(S'shoeSizeObservation'%0ap5%0aS'001481'%0ap6%0atp7%0aa.</Property
    ><Property PAppNm="A_assert" PClass="x_roles" IsSIP="N">(lp1%0a(S'ObservedShoeSize'%0ap2%0aS'001471'%0ap3%0atp4%0aa(S'ObservedShoeSize'%0ap5%0aS'001155'%0ap6%0atp7%0aa(S'ObservedShoeSize'%0ap8%0aS'001484'%0ap9%0atp10%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="a_sip" IsSIP="Y">(lp1%0a(S'001456'%0ap2%0aS'001482'%0ap3%0atp4%0aa(S'001458'%0ap5%0aS'001481'%0ap6%0atp7%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="a_castings" IsSIP="N">(lp1%0aS'00264'%0ap2%0aaS'00261'%0ap3%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="a_type" IsSIP="N">(lp1%0aS'001151'%0ap2%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="x_castings" IsSIP="N">(lp1%0aS'00269'%0ap2%0aaS'00593'%0ap3%0aaS'00606'%0ap4%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="a_sip" IsSIP="Y">(lp1%0a(S'001456'%0ap2%0aS'001482'%0ap3%0atp4%0aa(S'001458'%0ap5%0aS'001481'%0ap6%0atp7%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="a_type" IsSIP="N">(lp1%0aS'001151'%0ap2%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="x_roles" IsSIP="N">(lp1%0a(S'001455'%0ap2%0aS'001155'%0ap3%0atp4%0aa(g2%0aS'001471'%0ap5%0atp6%0aa(g2%0aS'001484'%0ap7%0atp8%0aa.</Property
    ><Property PAppNm="U_assert" PClass="x_LrnRrnRrp" IsSIP="N">(dp1%0aS'ObservedShoeSize'%0ap2%0a(dp3%0aS'PersonWithFeet'%0ap4%0a(lp5%0aS'001480'%0ap6%0aaS'001169'%0ap7%0aaS'001479'%0ap8%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_LrnRrpRrn" IsSIP="N">(dp1%0aS'ObservedShoeSize'%0ap2%0a(dp3%0aS'001479'%0ap4%0a(lp5%0aS'PersonWithFeet'%0ap6%0aasS'001169'%0ap7%0a(lp8%0aS'PersonWithFeet'%0ap9%0aasS'001480'%0ap10%0a(lp11%0ag6%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrnLrnRrp" IsSIP="N">(dp1%0aS'PersonWithFeet'%0ap2%0a(dp3%0aS'ObservedShoeSize'%0ap4%0a(lp5%0aS'001480'%0ap6%0aaS'001479'%0ap7%0aaS'001169'%0ap8%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrnRrpLrn" IsSIP="N">(dp1%0aS'PersonWithFeet'%0ap2%0a(dp3%0aS'001479'%0ap4%0a(lp5%0aS'ObservedShoeSize'%0ap6%0aasS'001169'%0ap7%0a(lp8%0aS'ObservedShoeSize'%0ap9%0aasS'001480'%0ap10%0a(lp11%0ag6%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrpLrnRrn" IsSIP="N">(dp1%0aS'001479'%0ap2%0a(dp3%0aS'ObservedShoeSize'%0ap4%0a(lp5%0aS'PersonWithFeet'%0ap6%0aassS'001480'%0ap7%0a(dp8%0ag4%0a(lp9%0ag6%0aassS'001169'%0ap10%0a(dp11%0aS'ObservedShoeSize'%0ap12%0a(lp13%0aS'PersonWithFeet'%0ap14%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrpRrnLrn" IsSIP="N">(dp1%0aS'001479'%0ap2%0a(dp3%0aS'PersonWithFeet'%0ap4%0a(lp5%0aS'ObservedShoeSize'%0ap6%0aassS'001480'%0ap7%0a(dp8%0ag4%0a(lp9%0ag6%0aassS'001169'%0ap10%0a(dp11%0aS'PersonWithFeet'%0ap12%0a(lp13%0aS'ObservedShoeSize'%0ap14%0aass.</Property
  ></ProxyObject

  ><ProxyObject id="o104" proxyId="001476"
    ><Property PAppNm="JacksTMA" PClass="Name" IsSIP="Y">S'Bartholomew'%0ap1%0a.</Property
    ><Property PAppNm="A_assert" PClass="x_roles" IsSIP="N">(lp1%0a(S'nameOfPerson'%0ap2%0aS'001468'%0ap3%0atp4%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="x_castings" IsSIP="N">(lp1%0aS'00617'%0ap2%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="x_roles" IsSIP="N">(lp1%0a(S'001136'%0ap2%0aS'001468'%0ap3%0atp4%0aa.</Property
    ><Property PAppNm="U_assert" PClass="x_LrnRrnRrp" IsSIP="N">(dp1%0aS'nameOfPerson'%0ap2%0a(dp3%0aS'namedPerson'%0ap4%0a(lp5%0aS'001169'%0ap6%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_LrnRrpRrn" IsSIP="N">(dp1%0aS'nameOfPerson'%0ap2%0a(dp3%0aS'001169'%0ap4%0a(lp5%0aS'namedPerson'%0ap6%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrnLrnRrp" IsSIP="N">(dp1%0aS'namedPerson'%0ap2%0a(dp3%0aS'nameOfPerson'%0ap4%0a(lp5%0aS'001169'%0ap6%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrnRrpLrn" IsSIP="N">(dp1%0aS'namedPerson'%0ap2%0a(dp3%0aS'001169'%0ap4%0a(lp5%0aS'nameOfPerson'%0ap6%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrpLrnRrn" IsSIP="N">(dp1%0aS'001169'%0ap2%0a(dp3%0aS'nameOfPerson'%0ap4%0a(lp5%0aS'namedPerson'%0ap6%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrpRrnLrn" IsSIP="N">(dp1%0aS'001169'%0ap2%0a(dp3%0aS'namedPerson'%0ap4%0a(lp5%0aS'nameOfPerson'%0ap6%0aass.</Property
  ></ProxyObject

  ><ProxyObject id="o105" proxyId="001477"
    ><Property PAppNm="JacksTMA" PClass="Name" IsSIP="Y">S'Harry'%0ap1%0a.</Property
    ><Property PAppNm="A_assert" PClass="x_roles" IsSIP="N">(lp1%0a(S'nameOfPerson'%0ap2%0aS'001467'%0ap3%0atp4%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="x_castings" IsSIP="N">(lp1%0aS'00598'%0ap2%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="x_roles" IsSIP="N">(lp1%0a(S'001136'%0ap2%0aS'001467'%0ap3%0atp4%0aa.</Property
    ><Property PAppNm="U_assert" PClass="x_LrnRrnRrp" IsSIP="N">(dp1%0aS'nameOfPerson'%0ap2%0a(dp3%0aS'namedPerson'%0ap4%0a(lp5%0aS'001480'%0ap6%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_LrnRrpRrn" IsSIP="N">(dp1%0aS'nameOfPerson'%0ap2%0a(dp3%0aS'001480'%0ap4%0a(lp5%0aS'namedPerson'%0ap6%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrnLrnRrp" IsSIP="N">(dp1%0aS'namedPerson'%0ap2%0a(dp3%0aS'nameOfPerson'%0ap4%0a(lp5%0aS'001480'%0ap6%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrnRrpLrn" IsSIP="N">(dp1%0aS'namedPerson'%0ap2%0a(dp3%0aS'001480'%0ap4%0a(lp5%0aS'nameOfPerson'%0ap6%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrpLrnRrn" IsSIP="N">(dp1%0aS'001480'%0ap2%0a(dp3%0aS'nameOfPerson'%0ap4%0a(lp5%0aS'namedPerson'%0ap6%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrpRrnLrn" IsSIP="N">(dp1%0aS'001480'%0ap2%0a(dp3%0aS'namedPerson'%0ap4%0a(lp5%0aS'nameOfPerson'%0ap6%0aass.</Property
  ></ProxyObject

  ><ProxyObject id="o106" proxyId="001478"
    ><Property PAppNm="JacksTMA" PClass="Person Name Proxy" IsSIP="Y">(lp1%0aS'001165'%0ap2%0aa.</Property
    ><Property PAppNm="A_assert" PClass="x_roles" IsSIP="N">(lp1%0a(S'PersonWithFeet'%0ap2%0aS'001472'%0ap3%0atp4%0aa(S'namedPerson'%0ap5%0aS'001159'%0ap6%0atp7%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="x_castings" IsSIP="N">(lp1%0aS'001184'%0ap2%0aaS'00625'%0ap3%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="x_roles" IsSIP="N">(lp1%0a(S'001457'%0ap2%0aS'001472'%0ap3%0atp4%0aa(S'001138'%0ap5%0aS'001159'%0ap6%0atp7%0aa.</Property
    ><Property PAppNm="U_assert" PClass="x_LrnRrnRrp" IsSIP="N">(dp1%0aS'namedPerson'%0ap2%0a(dp3%0aS'nameOfPerson'%0ap4%0a(lp5%0aS'001165'%0ap6%0aassS'PersonWithFeet'%0ap7%0a(dp8%0aS'ObservedShoeSize'%0ap9%0a(lp10%0aS'001483'%0ap11%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_LrnRrpRrn" IsSIP="N">(dp1%0aS'namedPerson'%0ap2%0a(dp3%0aS'001165'%0ap4%0a(lp5%0aS'nameOfPerson'%0ap6%0aassS'PersonWithFeet'%0ap7%0a(dp8%0aS'001483'%0ap9%0a(lp10%0aS'ObservedShoeSize'%0ap11%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrnLrnRrp" IsSIP="N">(dp1%0aS'nameOfPerson'%0ap2%0a(dp3%0aS'namedPerson'%0ap4%0a(lp5%0aS'001165'%0ap6%0aassS'ObservedShoeSize'%0ap7%0a(dp8%0aS'PersonWithFeet'%0ap9%0a(lp10%0aS'001483'%0ap11%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrnRrpLrn" IsSIP="N">(dp1%0aS'nameOfPerson'%0ap2%0a(dp3%0aS'001165'%0ap4%0a(lp5%0aS'namedPerson'%0ap6%0aassS'ObservedShoeSize'%0ap7%0a(dp8%0aS'001483'%0ap9%0a(lp10%0aS'PersonWithFeet'%0ap11%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrpLrnRrn" IsSIP="N">(dp1%0aS'001483'%0ap2%0a(dp3%0aS'PersonWithFeet'%0ap4%0a(lp5%0aS'ObservedShoeSize'%0ap6%0aassS'001165'%0ap7%0a(dp8%0aS'namedPerson'%0ap9%0a(lp10%0aS'nameOfPerson'%0ap11%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrpRrnLrn" IsSIP="N">(dp1%0aS'001483'%0ap2%0a(dp3%0aS'ObservedShoeSize'%0ap4%0a(lp5%0aS'PersonWithFeet'%0ap6%0aassS'001165'%0ap7%0a(dp8%0aS'nameOfPerson'%0ap9%0a(lp10%0aS'namedPerson'%0ap11%0aass.</Property
  ></ProxyObject

  ><ProxyObject id="o107" proxyId="001479"
    ><Property PAppNm="JacksTMA" PClass="Person Name Proxy" IsSIP="Y">(lp1%0aS'001166'%0ap2%0aa.</Property
    ><Property PAppNm="A_assert" PClass="x_roles" IsSIP="N">(lp1%0a(S'PersonWithFeet'%0ap2%0aS'001471'%0ap3%0atp4%0aa(S'namedPerson'%0ap5%0aS'001469'%0ap6%0atp7%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="x_castings" IsSIP="N">(lp1%0aS'00256'%0ap2%0aaS'00272'%0ap3%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="x_roles" IsSIP="N">(lp1%0a(S'001138'%0ap2%0aS'001469'%0ap3%0atp4%0aa(S'001457'%0ap5%0aS'001471'%0ap6%0atp7%0aa.</Property
    ><Property PAppNm="U_assert" PClass="x_LrnRrnRrp" IsSIP="N">(dp1%0aS'namedPerson'%0ap2%0a(dp3%0aS'nameOfPerson'%0ap4%0a(lp5%0aS'001166'%0ap6%0aassS'PersonWithFeet'%0ap7%0a(dp8%0aS'ObservedShoeSize'%0ap9%0a(lp10%0aS'001475'%0ap11%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_LrnRrpRrn" IsSIP="N">(dp1%0aS'namedPerson'%0ap2%0a(dp3%0aS'001166'%0ap4%0a(lp5%0aS'nameOfPerson'%0ap6%0aassS'PersonWithFeet'%0ap7%0a(dp8%0aS'001475'%0ap9%0a(lp10%0aS'ObservedShoeSize'%0ap11%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrnLrnRrp" IsSIP="N">(dp1%0aS'nameOfPerson'%0ap2%0a(dp3%0aS'namedPerson'%0ap4%0a(lp5%0aS'001166'%0ap6%0aassS'ObservedShoeSize'%0ap7%0a(dp8%0aS'PersonWithFeet'%0ap9%0a(lp10%0aS'001475'%0ap11%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrnRrpLrn" IsSIP="N">(dp1%0aS'nameOfPerson'%0ap2%0a(dp3%0aS'001166'%0ap4%0a(lp5%0aS'namedPerson'%0ap6%0aassS'ObservedShoeSize'%0ap7%0a(dp8%0aS'001475'%0ap9%0a(lp10%0aS'PersonWithFeet'%0ap11%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrpLrnRrn" IsSIP="N">(dp1%0aS'001166'%0ap2%0a(dp3%0aS'namedPerson'%0ap4%0a(lp5%0aS'nameOfPerson'%0ap6%0aassS'001475'%0ap7%0a(dp8%0aS'PersonWithFeet'%0ap9%0a(lp10%0aS'ObservedShoeSize'%0ap11%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrpRrnLrn" IsSIP="N">(dp1%0aS'001166'%0ap2%0a(dp3%0aS'nameOfPerson'%0ap4%0a(lp5%0aS'namedPerson'%0ap6%0aassS'001475'%0ap7%0a(dp8%0aS'ObservedShoeSize'%0ap9%0a(lp10%0aS'PersonWithFeet'%0ap11%0aass.</Property
  ></ProxyObject

  ><ProxyObject id="o108" proxyId="001480"
    ><Property PAppNm="JacksTMA" PClass="Person Name Proxy" IsSIP="Y">(lp1%0aS'001477'%0ap2%0aa.</Property
    ><Property PAppNm="A_assert" PClass="x_roles" IsSIP="N">(lp1%0a(S'namedPerson'%0ap2%0aS'001467'%0ap3%0atp4%0aa(S'PersonWithFeet'%0ap5%0aS'001484'%0ap6%0atp7%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="x_castings" IsSIP="N">(lp1%0aS'00601'%0ap2%0aaS'00609'%0ap3%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="x_roles" IsSIP="N">(lp1%0a(S'001457'%0ap2%0aS'001484'%0ap3%0atp4%0aa(S'001138'%0ap5%0aS'001467'%0ap6%0atp7%0aa.</Property
    ><Property PAppNm="U_assert" PClass="x_LrnRrnRrp" IsSIP="N">(dp1%0aS'namedPerson'%0ap2%0a(dp3%0aS'nameOfPerson'%0ap4%0a(lp5%0aS'001477'%0ap6%0aassS'PersonWithFeet'%0ap7%0a(dp8%0aS'ObservedShoeSize'%0ap9%0a(lp10%0aS'001475'%0ap11%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_LrnRrpRrn" IsSIP="N">(dp1%0aS'namedPerson'%0ap2%0a(dp3%0aS'001477'%0ap4%0a(lp5%0aS'nameOfPerson'%0ap6%0aassS'PersonWithFeet'%0ap7%0a(dp8%0aS'001475'%0ap9%0a(lp10%0aS'ObservedShoeSize'%0ap11%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrnLrnRrp" IsSIP="N">(dp1%0aS'nameOfPerson'%0ap2%0a(dp3%0aS'namedPerson'%0ap4%0a(lp5%0aS'001477'%0ap6%0aassS'ObservedShoeSize'%0ap7%0a(dp8%0aS'PersonWithFeet'%0ap9%0a(lp10%0aS'001475'%0ap11%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrnRrpLrn" IsSIP="N">(dp1%0aS'nameOfPerson'%0ap2%0a(dp3%0aS'001477'%0ap4%0a(lp5%0aS'namedPerson'%0ap6%0aassS'ObservedShoeSize'%0ap7%0a(dp8%0aS'001475'%0ap9%0a(lp10%0aS'PersonWithFeet'%0ap11%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrpLrnRrn" IsSIP="N">(dp1%0aS'001475'%0ap2%0a(dp3%0aS'PersonWithFeet'%0ap4%0a(lp5%0aS'ObservedShoeSize'%0ap6%0aassS'001477'%0ap7%0a(dp8%0aS'namedPerson'%0ap9%0a(lp10%0aS'nameOfPerson'%0ap11%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrpRrnLrn" IsSIP="N">(dp1%0aS'001475'%0ap2%0a(dp3%0aS'ObservedShoeSize'%0ap4%0a(lp5%0aS'PersonWithFeet'%0ap6%0aassS'001477'%0ap7%0a(dp8%0aS'nameOfPerson'%0ap9%0a(lp10%0aS'namedPerson'%0ap11%0aass.</Property
  ></ProxyObject

  ><ProxyObject id="o109" proxyId="001481"
    ><Property PAppNm="JacksTMA" PClass="Shoe Size" IsSIP="Y">S'6'%0a.</Property
    ><Property PAppNm="A_assert" PClass="x_roles" IsSIP="N">(lp1%0a(S'shoeSizeObservation'%0ap2%0aS'001475'%0ap3%0atp4%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="x_castings" IsSIP="N">(lp1%0aS'00261'%0ap2%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="x_roles" IsSIP="N">(lp1%0a(S'001458'%0ap2%0aS'001475'%0ap3%0atp4%0aa.</Property
    ><Property PAppNm="U_assert" PClass="x_LrnRrnRrp" IsSIP="N">(dp1%0aS'shoeSizeObservation'%0ap2%0a(dp3%0aS'ageAtShoeSizeObservation'%0ap4%0a(lp5%0aS'001482'%0ap6%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_LrnRrpRrn" IsSIP="N">(dp1%0aS'shoeSizeObservation'%0ap2%0a(dp3%0aS'001482'%0ap4%0a(lp5%0aS'ageAtShoeSizeObservation'%0ap6%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrnLrnRrp" IsSIP="N">(dp1%0aS'ageAtShoeSizeObservation'%0ap2%0a(dp3%0aS'shoeSizeObservation'%0ap4%0a(lp5%0aS'001482'%0ap6%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrnRrpLrn" IsSIP="N">(dp1%0aS'ageAtShoeSizeObservation'%0ap2%0a(dp3%0aS'001482'%0ap4%0a(lp5%0aS'shoeSizeObservation'%0ap6%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrpLrnRrn" IsSIP="N">(dp1%0aS'001482'%0ap2%0a(dp3%0aS'shoeSizeObservation'%0ap4%0a(lp5%0aS'ageAtShoeSizeObservation'%0ap6%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrpRrnLrn" IsSIP="N">(dp1%0aS'001482'%0ap2%0a(dp3%0aS'ageAtShoeSizeObservation'%0ap4%0a(lp5%0aS'shoeSizeObservation'%0ap6%0aass.</Property
  ></ProxyObject

  ><ProxyObject id="o110" proxyId="001482"
    ><Property PAppNm="JacksTMA" PClass="Age" IsSIP="Y">S'7'%0a.</Property
    ><Property PAppNm="A_assert" PClass="x_roles" IsSIP="N">(lp1%0a(S'ageAtShoeSizeObservation'%0ap2%0aS'001475'%0ap3%0atp4%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="x_castings" IsSIP="N">(lp1%0aS'00264'%0ap2%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="x_roles" IsSIP="N">(lp1%0a(S'001456'%0ap2%0aS'001475'%0ap3%0atp4%0aa.</Property
    ><Property PAppNm="U_assert" PClass="x_LrnRrnRrp" IsSIP="N">(dp1%0aS'ageAtShoeSizeObservation'%0ap2%0a(dp3%0aS'shoeSizeObservation'%0ap4%0a(lp5%0aS'001481'%0ap6%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_LrnRrpRrn" IsSIP="N">(dp1%0aS'ageAtShoeSizeObservation'%0ap2%0a(dp3%0aS'001481'%0ap4%0a(lp5%0aS'shoeSizeObservation'%0ap6%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrnLrnRrp" IsSIP="N">(dp1%0aS'shoeSizeObservation'%0ap2%0a(dp3%0aS'ageAtShoeSizeObservation'%0ap4%0a(lp5%0aS'001481'%0ap6%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrnRrpLrn" IsSIP="N">(dp1%0aS'shoeSizeObservation'%0ap2%0a(dp3%0aS'001481'%0ap4%0a(lp5%0aS'ageAtShoeSizeObservation'%0ap6%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrpLrnRrn" IsSIP="N">(dp1%0aS'001481'%0ap2%0a(dp3%0aS'ageAtShoeSizeObservation'%0ap4%0a(lp5%0aS'shoeSizeObservation'%0ap6%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrpRrnLrn" IsSIP="N">(dp1%0aS'001481'%0ap2%0a(dp3%0aS'shoeSizeObservation'%0ap4%0a(lp5%0aS'ageAtShoeSizeObservation'%0ap6%0aass.</Property
  ></ProxyObject

  ><ProxyObject id="o111" proxyId="001483"
    ><Property PAppNm="JacksTMA" PClass="shoeSizeObservation" IsSIP="Y">(lp1%0aS'001482'%0ap2%0aaS'001481'%0ap3%0aa.</Property
    ><Property PAppNm="A_assert" PClass="x_roles" IsSIP="N">(lp1%0a(S'ObservedShoeSize'%0ap2%0aS'001472'%0ap3%0atp4%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="x_castings" IsSIP="N">(lp1%0aS'001181'%0ap2%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="x_roles" IsSIP="N">(lp1%0a(S'001455'%0ap2%0aS'001472'%0ap3%0atp4%0aa.</Property
    ><Property PAppNm="U_assert" PClass="x_LrnRrnRrp" IsSIP="N">(dp1%0aS'ObservedShoeSize'%0ap2%0a(dp3%0aS'PersonWithFeet'%0ap4%0a(lp5%0aS'001478'%0ap6%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_LrnRrpRrn" IsSIP="N">(dp1%0aS'ObservedShoeSize'%0ap2%0a(dp3%0aS'001478'%0ap4%0a(lp5%0aS'PersonWithFeet'%0ap6%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrnLrnRrp" IsSIP="N">(dp1%0aS'PersonWithFeet'%0ap2%0a(dp3%0aS'ObservedShoeSize'%0ap4%0a(lp5%0aS'001478'%0ap6%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrnRrpLrn" IsSIP="N">(dp1%0aS'PersonWithFeet'%0ap2%0a(dp3%0aS'001478'%0ap4%0a(lp5%0aS'ObservedShoeSize'%0ap6%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrpLrnRrn" IsSIP="N">(dp1%0aS'001478'%0ap2%0a(dp3%0aS'ObservedShoeSize'%0ap4%0a(lp5%0aS'PersonWithFeet'%0ap6%0aass.</Property
    ><Property PAppNm="U_assert" PClass="x_RrpRrnLrn" IsSIP="N">(dp1%0aS'001478'%0ap2%0a(dp3%0aS'PersonWithFeet'%0ap4%0a(lp5%0aS'ObservedShoeSize'%0ap6%0aass.</Property
  ></ProxyObject

  ><ProxyObject id="o112" proxyId="001484"
    ><Property PAppNm="A_assert" PClass="a_sip" IsSIP="Y">(lp1%0a(S'PersonWithFeet'%0ap2%0aS'001480'%0ap3%0atp4%0aa(S'ObservedShoeSize'%0ap5%0aS'001475'%0ap6%0atp7%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="a_sip" IsSIP="Y">(lp1%0a(S'001457'%0ap2%0aS'001480'%0ap3%0atp4%0aa(S'001455'%0ap5%0aS'001475'%0ap6%0atp7%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="a_castings" IsSIP="N">(lp1%0aS'00609'%0ap2%0aaS'00606'%0ap3%0aa.</Property
    ><Property PAppNm="BigAssert" PClass="a_type" IsSIP="N">(lp1%0aS'001473'%0ap2%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="a_sip" IsSIP="Y">(lp1%0a(S'001457'%0ap2%0aS'001480'%0ap3%0atp4%0aa(S'001455'%0ap5%0aS'001475'%0ap6%0atp7%0aa.</Property
    ><Property PAppNm="TRA_assert" PClass="a_type" IsSIP="N">(lp1%0aS'001473'%0ap2%0aa.</Property
  ></ProxyObject

  ><IoMapsDict>(dp1%0aS'TMAs'%0ap2%0a(dp3%0aS'Roles'%0ap4%0a(dp5%0asS'Vsys'%0ap6%0a(dp7%0asS'TRA_assert'%0ap8%0a(dp9%0asS'BigAssert'%0ap10%0a(dp11%0asS'JacksTMA'%0ap12%0a(dp13%0asS'A_assert'%0ap14%0a(dp15%0asS'U_assert'%0ap16%0a(dp17%0assS'ProxyIds.mem2xml'%0ap18%0a(dp19%0aI1455%0aI93%0asI590%0aI72%0asI593%0aI73%0asI598%0aI74%0asI601%0aI75%0asI606%0aI76%0asI609%0aI77%0asI614%0aI78%0asI617%0aI79%0asI622%0aI80%0asI1136%0aI82%0asI625%0aI81%0asI1138%0aI83%0asI124%0aI1%0asI125%0aI2%0asI126%0aI3%0asI1151%0aI84%0asI128%0aI5%0asI129%0aI6%0asI130%0aI7%0asI131%0aI8%0asI132%0aI9%0asI133%0aI10%0asI134%0aI11%0asI135%0aI12%0asI136%0aI13%0asI137%0aI14%0asI138%0aI15%0asI139%0aI16%0asI140%0aI17%0asI141%0aI18%0asI142%0aI19%0asI143%0aI20%0asI144%0aI21%0asI145%0aI22%0asI146%0aI23%0asI147%0aI24%0asI148%0aI25%0asI149%0aI26%0asI150%0aI27%0asI151%0aI28%0asI152%0aI29%0asI153%0aI30%0asI154%0aI31%0asI155%0aI32%0asI156%0aI33%0asI157%0aI34%0asI158%0aI35%0asI159%0aI36%0asI160%0aI37%0asI161%0aI38%0asI162%0aI39%0asI163%0aI40%0asI164%0aI41%0asI165%0aI42%0asI166%0aI43%0asI167%0aI44%0asI168%0aI45%0asI169%0aI46%0asI170%0aI47%0asI171%0aI48%0asI172%0aI49%0asI173%0aI50%0asI174%0aI51%0asI175%0aI52%0asI176%0aI53%0asI177%0aI54%0asI178%0aI55%0asI179%0aI56%0asI180%0aI57%0asI181%0aI58%0asI182%0aI59%0asI183%0aI60%0asI184%0aI61%0asI185%0aI62%0asI186%0aI63%0asI187%0aI64%0asI188%0aI65%0asI1473%0aI102%0asI127%0aI4%0asI253%0aI66%0asI256%0aI67%0asI261%0aI68%0asI264%0aI69%0asI269%0aI70%0asI272%0aI71%0asI1155%0aI85%0asI1159%0aI86%0asI1162%0aI87%0asI1165%0aI88%0asI1166%0aI89%0asI1169%0aI90%0asI1181%0aI91%0asI1456%0aI94%0asI1457%0aI95%0asI1458%0aI96%0asI1467%0aI97%0asI1468%0aI98%0asI1469%0aI99%0asI1471%0aI100%0asI1472%0aI101%0asI1184%0aI92%0asI1475%0aI103%0asI1476%0aI104%0asI1477%0aI105%0asI1478%0aI106%0asI1479%0aI107%0asI1480%0aI108%0asI1481%0aI109%0asI1482%0aI110%0asI1483%0aI111%0asI1484%0aI112%0assS'ProxyIds.xml2mem'%0ap20%0a(dp21%0aI1%0aI124%0asI2%0aI125%0asI3%0aI126%0asI4%0aI127%0asI5%0aI128%0asI6%0aI129%0asI7%0aI130%0asI8%0aI131%0asI9%0aI132%0asI10%0aI133%0asI11%0aI134%0asI12%0aI135%0asI13%0aI136%0asI14%0aI137%0asI15%0aI138%0asI16%0aI139%0asI17%0aI140%0asI18%0aI141%0asI19%0aI142%0asI20%0aI143%0asI21%0aI144%0asI22%0aI145%0asI23%0aI146%0asI24%0aI147%0asI25%0aI148%0asI26%0aI149%0asI27%0aI150%0asI28%0aI151%0asI29%0aI152%0asI30%0aI153%0asI31%0aI154%0asI32%0aI155%0asI33%0aI156%0asI34%0aI157%0asI35%0aI158%0asI36%0aI159%0asI37%0aI160%0asI38%0aI161%0asI39%0aI162%0asI40%0aI163%0asI41%0aI164%0asI42%0aI165%0asI43%0aI166%0asI44%0aI167%0asI45%0aI168%0asI46%0aI169%0asI47%0aI170%0asI48%0aI171%0asI49%0aI172%0asI50%0aI173%0asI51%0aI174%0asI52%0aI175%0asI53%0aI176%0asI54%0aI177%0asI55%0aI178%0asI56%0aI179%0asI57%0aI180%0asI58%0aI181%0asI59%0aI182%0asI60%0aI183%0asI61%0aI184%0asI62%0aI185%0asI63%0aI186%0asI64%0aI187%0asI65%0aI188%0asI66%0aI253%0asI67%0aI256%0asI68%0aI261%0asI69%0aI264%0asI70%0aI269%0asI71%0aI272%0asI72%0aI590%0asI73%0aI593%0asI74%0aI598%0asI75%0aI601%0asI76%0aI606%0asI77%0aI609%0asI78%0aI614%0asI79%0aI617%0asI80%0aI622%0asI81%0aI625%0asI82%0aI1136%0asI83%0aI1138%0asI84%0aI1151%0asI85%0aI1155%0asI86%0aI1159%0asI87%0aI1162%0asI88%0aI1165%0asI89%0aI1166%0asI90%0aI1169%0asI91%0aI1181%0asI92%0aI1184%0asI93%0aI1455%0asI94%0aI1456%0asI95%0aI1457%0asI96%0aI1458%0asI97%0aI1467%0asI98%0aI1468%0asI99%0aI1469%0asI100%0aI1471%0asI101%0aI1472%0asI102%0aI1473%0asI103%0aI1475%0asI104%0aI1476%0asI105%0aI1477%0asI106%0aI1478%0asI107%0aI1479%0asI108%0aI1480%0asI109%0aI1481%0asI110%0aI1482%0asI111%0aI1483%0asI112%0aI1484%0ass.</IoMapsDict
></VersavantTopicMap>
