HTTP: trait includes IIIR, Rational introduces address: Request -> URI penalty: Request, Entity -> Q date: Request -> Time get: Request -> Response object: Response -> Entity date: Response -> Time % could generalize this... vary: Response -> Bool asserts forall req: Request, e: Entity object(get(req)) \in represent(address(req), date(req)); e \in represent(address(req), date(req)) => penalty(req, object(get(req))) <= penalty(req, e); vary(get(req)) = false => represent(address(req), date(req)) = { object(get(req)) }