def f(index, key):
     return PO.CPOBuffer(self, index, p.tags, args)
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
# ------------------------------------------------------------------------------
import xml.etree.ElementTree as ET

import chc.util.fileutil as UF
import chc.util.IndexedTable as IT

import chc.proof.CPOPredicate as PO

po_predicate_constructors = {
    'ab': lambda x: PO.CPOAllocationBase(*x),
    'b': lambda x: PO.CPOBuffer(*x),
    'c': lambda x: PO.CPOCast(*x),
    'cb': lambda x: PO.CPOCommonBase(*x),
    'cbt': lambda x: PO.CPOCommonBaseType(*x),
    'cls': lambda x: PO.CPOCanLeaveScope(*x),
    'cr': lambda x: PO.CPOControlledResource(*x),
    'cssl': lambda x: PO.CPOSignedToSignedCastLB(*x),
    'cssu': lambda x: PO.CPOSignedToSignedCastUB(*x),
    'csul': lambda x: PO.CPOSignedToUnsignedCastLB(*x),
    'csuu': lambda x: PO.CPOSignedToUnsignedCastUB(*x),
    'cus': lambda x: PO.CPOUnsignedToSignedCast(*x),
    'cuu': lambda x: PO.CPOUnsignedToUnsignedCast(*x),
    'dr': lambda x: PO.CPODistinctRegion(*x),
    'fc': lambda x: PO.CPOFormatCast(*x),
    'ft': lambda x: PO.CPOFormatString(*x),
    'ga': lambda x: PO.CPOGlobalAddress(*x),