next
How to prove correctness of an HTTP proxy, cache, API, or theory?

 8.2.1. 200 OK

    The request has succeeded.  The information returned with the
    response is dependent on the method used in the request, for example:

    GET  an entity corresponding to the requested resource is sent in the
       response;

 
prev - next
Central relationship:

 "entity corresponds to resource"

 entity corresponds_to resource   [at current time]

 HTTP exchange: GET URI / 200 entity
   means
entity corresponds_to <URI>


 
prev - next
Content negotiation

 Two entities can correspond to one resource

   E1 speaks_for R
   E2 speaks_for R

 (e.g. French and Spanish)

 
prev - next
Caching is enabled by knowledge of lifetime

 corresponds_during(entity, resource, t1, t2)

   Last-modified: t1
   Expires: t2

   if t1 <= current time < t2 then
      entity corresponds_to resource


 
prev - next
Tool: ABLP logic
 - proving crypto protocols
 - authorization / access control

 Calculus of principals + modal 'says' logic

 A principal P says a statement s.

 "P says s"

   similar to: P authorizes s
               P is responsible for s
               P can be held to s


 
prev - next
ABLP logic summary

Principal: person, server, channel, document, ...

 A speaks_for B
   {A says s} => {B says s}

 A controls s
   {A says s} => s

 A|B  'A quoting B', 'A pretending to be B'
   A|B says s  iff  A says {B says s}

Logic works under 'says'
 if {A says s} and {A says {s implies s'}} then {A says s'}

 
prev - next
HTTP is authoritative for "corresponds to" for http: URIs

In ABLP we say:

  example.com controls {http://example.com/foo corresponds_to E}

      i.e.

  if  example.com says {http://example.com/foo corresponds_to E}
    then   http://example.com/foo corresponds_to E


 
prev - next
Proxying is valid if the proxy proxies correctly

In ABLP we would say:

  proxy.example.com speaks_for example.com

That is,

  if  proxy.example.com speaks_for example.com
  and  proxy.example.com says
	 {example.com says {http://example.com/foo corresponds_to E}}
  then  example.com says {http://example.com/foo corresponds_to E}

  whence  http://example.com/foo corresponds_to E
  because  example.com controls {http://example.com/foo corresponds_to E}


 
prev - next
Redirection (307) - define a new predicate.

 R coincides_with S

     means

 if  E corresponds_to S
   then  E corresponds_to R

 and perhaps similarly for other properties P such as P=describes
 if  P(S)
   then  P(R)

[ STOP HERE ]


 
prev - next
LEAP: What might we do if we treat entities and resources are ABLP
principals?

Controversial axiom:

 if  E corresponds_to R
   then  E speaks_for R

 i.e. if  E says s  then  R says s

(but speaks_for is not *sufficient*)

 
prev - next
Redirection (307)

 R coincides_with S

     means

 S speaks_for R


 
prev - next
Content negotiation

 Two entities can correspond to one resource

   E1 speaks_for R
   E2 speaks_for R

 (e.g. French and Spanish)

 If entities disagree on what they say, the resource is incoherent:

   if E1 says s, and E2 says t, and (s and t) = false
     then R says false


 
prev - next
httpRange-14

The domain of "says" is principals.
Non-principals don't say anything.

Non-principals don't 200:

 E corresponds_to R   (200)
 E speaks_for R

 if  E says s  then   R says s
 if  R doesn't say any s  then E doesn't (mustn't) say any s

 {E says s} is inconsistent with not {R says s}


 
prev - next
httpRange-14

Aboutness isn't sufficient:

   {E is_about R} does not imply {E speaks_for R}

   e.g. one might have
     {s is_about R} and {E speaks_for R}
     but not  {E says s}
     or even  {E says {not s}} !


 
prev - next
What else does x corresponds_to to y imply?

  Limitations on what can be corresponded to?
    E.g. does Pat Hayes's page correspond to Pat?

  Limitations on what subsetting is allowed?
    E.g. does the empty entity correspond to every resource?