parser.add_argument('--cfunction', help='name of function')
    args = parser.parse_args()
    return args


if __name__ == '__main__':

    args = parse()
    capp = CApplication(args.path)

    def p(a):
        print(a)

    def q(fn):
        print('Function ' + fn.getname())
        fn.getapi().apiassumptioniter(p)

    def r(f):
        print('File ' + f.getfilename())
        f.fniter(q)

    if not args.cfile is None:
        cfile = capp.getfile(args.cfile)
        if not args.cfunction is None:
            cfunction = cfile.getfunctionbyname(args.cfunction)
            cfunction.getapi().apiassumptioniter(p)
        else:
            cfile.fniter(q)
    else:
        capp.fileiter(r)
    semdir = os.path.join(args.path, 'semantics')
    capp = CApplication(semdir)

    lines = []

    if not args.cfile is None:
        cfile = capp.getfile(args.cfile)
        if cfile is None:
            print('*' * 80)
            print('File ' + args.cfile + ' not found in this application')
            print('Valid filenames for this application are: ')

            def f(cf):
                print(' - ' + cf.getfilename())

            capp.fileiter(f)
            print('*' * 80)
            exit(1)
        if not args.cfunction is None:
            cfun = cfile.getfunctionbyname(args.cfunction)
            if cfun is None:
                print('*' * 80)
                print('Function ' + args.cfunction + ' not found in file ' +
                      cfile.getfilename())
                print('Functions in this file are: ')

                def f(fn):
                    print(' - ' + fn.getname())

                cfile.fniter(f)
                print('*' * 80)
        
    sempath = os.path.join(cpath,'semantics')
    if (not os.path.isdir(sempath)) or args.deletesemantics:
        success = UF.unpack_tar_file(cpath,args.deletesemantics)
        if not success:
            print(UP.semantics_tar_not_found_err_msg(cpath))
            exit(1)

    capp = CApplication(sempath)
    linker = CLinker(capp)
    linker.linkcompinfos()
    linker.linkvarinfos()

    def savexrefs(f):
        capp.indexmanager.savexrefs(capp.getpath(),f.getfilename(),f.getindex())
    capp.fileiter(savexrefs)
    
    linker.saveglobalcompinfos()

    capp = CApplication(sempath)
    am = AnalysisManager(capp,wordsize=32)

    if args.resetsemantics:
        am.reset()

    capp = CApplication(sempath)
    am = AnalysisManager(capp)

    am.create_app_primaryproofobligations()
    am.generate_app_localinvariants(['llvis'])
    am.generate_app_localinvariants(['llvis'])