# USAGE : cwm --crypto --rdf|--n3  <request> --n3 engine.n3 --think --filter="filter.n3" --rdf
# USAGE : cwm --crypto --rdf http://dig.csail.mit.edu/2005/09/rein/examples/judy-req.rdf --n3 http://dig.csail.mit.edu/2005/09/rein/engine.n3 --think --filter="http://dig.csail.mit.edu/2005/09/rein/filter.n3" --rdf

@keywords is, of, a.

@prefix rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix log: <http://www.w3.org/2000/10/swap/log#> .
@prefix rein: <http://dig.csail.mit.edu/2005/09/rein/network#> .
@prefix : <http://dig.csail.mit.edu/2005/09/rein/engine#>.

@forAll WHO, RESOURCE, ACCESS, G.

# if ( requester access resource) is true in G, request is valid
{  
   G :has :ans.
   G log:includes { [] a rein:Request; rein:resource RESOURCE; rein:access ACCESS; rein:requester [ ACCESS RESOURCE ] }.
} => { [] a rein:Request; rein:resource RESOURCE; rein:access ACCESS; rein:ans rein:Valid; rein:requester [ ACCESS RESOURCE ]. }.

# if ( requester access resource) is not true in G, request is invalid
{   G :has :ans.
   G log:includes { [] a rein:Request; rein:resource RESOURCE; rein:access ACCESS }.
   G log:notIncludes { [] a rein:Request; rein:requester [ ACCESS RESOURCE ] }.
} => { [] a rein:Request; rein:requester WHO; rein:resource RESOURCE; rein:access ACCESS; rein:ans rein:Invalid. }.
#} => { [] a rein:Request; rein:resource RESOURCE; rein:access ACCESS; rein:ans rein:Invalid. }.

#ends
