Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
Suy diễn tiến
1. 1. Suy dien tien
*Suy dien tien voi logic menh de
-Input:+ Tap luat Rule={r1,r2,r3,…,rm}
+ Gia thiet (GT), ket luan (KL)
-Output: Return “true” neu GT KL
*Method
TD = GT; //TD: tap dich, GT: gia thuyet
T = FILTER(Rule, TD); //loc rule co VT (ve trai) trong TD
While <KL Є/ TD> and <T ≠ ø> do
{
r = Get(T);
TD = TD Ū {q};
//r: left->q
Rule = Rule {r};
// luat nao da dung roi thi bo di
T=FILTER(Rule,TD);
// luu y Rule nao ma loc ra tu TD da xuat hien roi thi khong lay lai
}
If (KL Є TD) then return “true”
Else return false
Vd minh hoa 1: Rule= {r1: a ^ b->c, r2: b->d, r3: a->e, r4: a ^ d ->e, r5: b ^ c->f, r6: e ^ f->g }
KT : a ^ b ->g ?
Giai:
-Input: Tap luat Rule = {r1, r2, r3, r4, r5, r6}
GT: a ^ b
KL: a ^ b->g
-Output: return “true” neu GT->KL
Chay tung buoc thuat toan:
-B0: Rule = {r1, r2, r3, r4, r5, r6}
TD={ab}
// TD= GT
T={r1, r2, r3}
//VT co trong TD [ VT(r1): a ^ b, VT(r2): b, VT(r3): a]
-B1: kiem tra vong lap while <KL Є/ TD> and <T ≠ ø> do true
Edit by h4inguy3n@yahoo.com
2. r={r1};
//[r1: a ^ b->c ], r=Get(T) lay bat ky mot tap luat nao trong T (thu tu lay khong quan trong, nhung tot nhat la lay theo thu tu)
TD={abc};
// TD = TD Ū {q} [TD = TD Ū VP cua r1]
Rule={r2,r3,r4,r5,r6} // Rule = Rule {r};
T={r2,r3,r5}
//VT co trong TD={abc}
-B2: kiem tra vong lap while <KL Є/ TD> and <T ≠ ø> do true
r={r2};
//[r2: b->d], r=Get(T) lay bat ky mot tap luat nao trong T (thu tu lay khong quan trong, nhung tot nhat la lay theo thu tu)
TD={abcd};
// TD = TD Ū {q} [TD = TD Ū VP cua r2]
Rule={r3,r4,r5,r6} // Rule = Rule {r};
T={r3,r4,r5}
//VT co trong TD={abcd}
-B3: kiem tra vong lap while <KL Є/ TD> and <T ≠ ø> do true
r={r3};
//[r3: a->e], r=Get(T) lay bat ky mot tap luat nao trong T (thu tu lay khong quan trong, nhung tot nhat la lay theo thu tu)
TD={abcde};
// TD = TD Ū {q} [TD = TD Ū VP cua r3]
Rule={r4,r5,r6} // Rule = Rule {r};
T={r4,r5}
//VT co trong TD={abcde}
-B4: kiem tra vong lap while <KL Є/ TD> and <T ≠ ø> do true
r={r4};
//[r4: a ^ d->e], r=Get(T) lay bat ky mot tap luat nao trong T (thu tu lay khong quan trong, nhung tot nhat la lay theo thu tu)
TD={abcde};
// TD = TD Ū {q} [TD = TD Ū VP cua r4]
Rule={r5,r6} // Rule = Rule {r};
T={r5}
//VT co trong TD={abcde}
-B5: kiem tra vong lap while <KL Є/ TD> and <T ≠ ø> do true
r={r5};
//[r4: b ^ c->f], r=Get(T) lay bat ky mot tap luat nao trong T (thu tu lay khong quan trong, nhung tot nhat la lay theo thu tu)
TD={abcdef};
// TD = TD Ū {q} [TD = TD Ū VP cua r5]
Rule={r6} // Rule = Rule {r};
T={r6}
//VT co trong TD={abcdef}
-B6: kiem tra vong lap while <KL Є/ TD> and <T ≠ ø> do true
Edit by h4inguy3n@yahoo.com
3. r={r6};
//[r4: e ^ f->g], r=Get(T) lay bat ky mot tap luat nao trong T (thu tu lay khong quan trong, nhung tot nhat la lay theo thu tu)
TD={abcdefg};
// TD = TD Ū {q} [TD = TD Ū VP cua r6]
Rule={ø} // Rule = Rule {r};
T={ø}
//VT co trong TD={abcdefg}
-B7: kiem tra vong lap while <KL Є/ TD> and <T ≠ ø> do false
->kiem tra if <KL Є TD> return “true”
vi du minh hoa 2 (su dung bang):
Rule= {r1: a ^ b->c, r2: a ^ h->d, r3: b ^ c->e, r4: a ^ d ->m, r5: a ^ b->p, r6: p ^ e->m }
KL: 1) a ^ b->m ?
2) a->m ?
Cau 1) GT: a ^ b
KL: a ^ b->m
Buoc
0
1
2
3
4
r
r1
r3
r5
r6
Rule
r1,r2,r3,r4,r5,r6
r2,r3,r4,r5,r6
r2,r4,r5,r6
r2,r4,r6
r2,r4
TD
ab
abc
abce
abcep
abcepm
return “true”
Edit by h4inguy3n@yahoo.com
T(cai nao co roi ko loc lai)
r1,r5
[Loc ra co( r1,r3, r5) nhung ko lay r1 vi buoc r=r1] r3, r5
r5
r6
ø