% $Id: TTL.html,v 1.1 2003/10/01 07:22:16 connolly Exp $
%    [RFC 1035] Mockapetris, P., "Domain names - implementation and
%    specification", STD 13, RFC 1035, November 1987.
% http://www.faqs.org/rfcs/rfc1035.html
TTL: trait
  includes
    StrictPartialOrder(<, Message),
	% for m1 < m2 read: m1 happened before m2
    % The Scalar sort is usually the integers, representing seconds;
    % but as long as there's  a strict partial order, we don't care
    % whether you use floating points or reals or whatever.
    % Hm... not even sure I need +.
    StrictPartialOrder(<, Scalar),
    AbelianGroup(+ for \circ, Scalar for T)
  introduces
    TTL: Message → Scalar % DNS time to live, HTTP max-age
    fresh: Message, Message, Scalar → Bool
         % for fresh(m1, m2, s) read:
         % m2 was sent within s of when m1 was received
  asserts ∀ m1, m2, m3: Message, s, t: Scalar
    fresh(m1, m2, s) ⇒ m1 < m2;
    s < t ∧ fresh(m1, m2, s) ⇒ fresh(m1, m2, t);
    fresh(m1, m3, s) ∧ m1 < m2 ∧ m2 < m3 ⇒
        fresh(m1, m2, s);
[Index]
HTML generated using lsl2html.