source: doc/partial_proof @ e3c7769

mei_rt2mei_rt2_fix_1
Last change on this file since e3c7769 was e3c7769, checked in by Mei <mei@…>, 12 years ago

1) wrap up java interface with swig/jni/abac linkup
2) java regression tests
3) update doc related to new java implmentation

  • Property mode set to 100644
File size: 2.5 KB
Line 
1
2The four Ws of partial proof
3
4Libabac, by default, would attempt to extract a partial proof
5if the initial fact query can not be proven. If the initial fact
6query is found to be true, no partial proof will be attempted.
7
8A fact query, "Can Coyote buy red rockets from Acme ?", is
9equivalent to attribute query fact,
10
11    "Acme.buy_rocket(red) <-?- Coyote".
12
13When it is presented to YAP prolog db by libabac, it is translated
14into "isMember(pAcme,buy_rocket,red):-pCoyote" for assertion.
15
16If the fact query can not be proven, libabac iterates through a
17sequence of actions in an attempt to discover partial proof
18related to the initial fact query.
19
20We can break down the fact query into a general form,
21
22   whom.what(whatwith) <-?- who
23
24where 'whom' is the issuer principal, 'who' is the principal,
25'what' is the role attribute and 'whatwith' is the parameter of
26the attribute.
27
28In the example fact query, 'whom' is Acme, 'who' is Coyote,
29'what' is buy_rocket and red is assigned to 'whatwith'.
30
31In case, where such a fact can not be proven, one or more W
32terms are allowed to be uninstantiated and see what can be
33proven.
34
35Using the above example, the sequence libabac used to extract
36partial proof is as follows,
37
38case 1: acme.buy_rocket(red) <-?- coyote
39        (Can Coyote buy red rockets from Acme?)
40If no,
41case 2: acme.What(Whatis) <-?- coyote
42        (What with Whatis can Coyote buy from Acme?)
43If no,
44case 2': acme.What() <-?- coyote
45        (What can Coyote buy from Acme?)
46If no,
47case 3: acme.buy_rockets(red) <-?- Who
48        (Who can buy red rockets from Acme?)
49If no,
50case 4: Whom.buy_rockets(red) <-?- coyote
51        (From Whom can Coyote buy red rockets from?)
52If no,
53case 5: Whom.What(Whatwith) <-?- coyote
54        (What with Whatwith can coyote do from Whom?)
55
56'whatwith' is in tandem with 'what', if there is no 'whatwith'
57term, then case 2' is skipped.
58
59Multiple partial proofs can be extracted using next_proof() api
60call just like for fact proofs. It is possible to force libabac to
61iterate through all the partial proof query cases listed above and
62collect all the possible partial proofs. It is likely that there
63will be duplication of proofs. No filtering will be done from libabac
64side since each individual partial proof query is considered to be
65independent from each other.
66
67Note, the return code of abac_context_query() is such that success
68is only returned if the fact query is true. Even when there is a
69returning partial proof, the return code will be false.
70
71
72
73
74   
75
76   
Note: See TracBrowser for help on using the repository browser.