Example #1
0
def paf_invariant(A, B):
    assert len(A) == len(B), "len mismatch"
    N = len(A)
    for i in range(1, 1 + (N-1)//2):
        comp = 2 * (paf(A, i) + paf(B, i) - sum(A) - sum(B)) + N
        if comp != 1: return False
    return True
Example #2
0
def check_paf_invariant(A, B):
    # only check half of sequence due to PAF symmetry
    Accounting.start_task('check_paf_invariant')
    v = len(A)
    for s in range(1, len(A)//2+1):
        Accounting.start_task('check_paf_invariant_step')
        paf_a = paf(A, s)
        paf_b = paf(B, s)
        if not paf_a + paf_b == 2:
            Accounting.finish_task('check_paf_invariant_step')
            Accounting.finish_task('check_paf_invariant')
            return False
        Accounting.finish_task('check_paf_invariant_step')
    Accounting.finish_task('check_paf_invariant')
    return True