diff -r 722bf1319be5 -r fd1be45b64bf IOA/example/Receiver.thy --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IOA/example/Receiver.thy Wed Nov 02 11:50:09 1994 +0100 @@ -0,0 +1,81 @@ +Receiver = List + IOA + Action + Multiset + "Lemmas" + + +types + +'m receiver_state += "'m list * bool multiset * 'm packet multiset * bool * bool" +(* messages #replies #received header mode *) + +consts + + receiver_asig :: "'m action signature" + receiver_trans:: "('m action, 'm receiver_state)transition set" + receiver_ioa :: "('m action, 'm receiver_state)ioa" + rq :: "'m receiver_state => 'm list" + rsent :: "'m receiver_state => bool multiset" + rrcvd :: "'m receiver_state => 'm packet multiset" + rbit :: "'m receiver_state => bool" + rsending :: "'m receiver_state => bool" + +rules + +rq_def "rq == fst" +rsent_def "rsent == fst o snd" +rrcvd_def "rrcvd == fst o snd o snd" +rbit_def "rbit == fst o snd o snd o snd" +rsending_def "rsending == snd o snd o snd o snd" + +receiver_asig_def "receiver_asig == \ +\ " + +receiver_trans_def "receiver_trans == \ +\ {tr. let s = fst(tr); \ +\ t = snd(snd(tr)) \ +\ in \ +\ case fst(snd(tr)) \ +\ of \ +\ S_msg(m) => False | \ +\ R_msg(m) => rq(s) = (m # rq(t)) & \ +\ rsent(t)=rsent(s) & \ +\ rrcvd(t)=rrcvd(s) & \ +\ rbit(t)=rbit(s) & \ +\ rsending(t)=rsending(s) | \ +\ S_pkt(pkt) => False | \ +\ R_pkt(pkt) => rq(t) = rq(s) & \ +\ rsent(t) = rsent(s) & \ +\ rrcvd(t) = addm(rrcvd(s),pkt) & \ +\ rbit(t) = rbit(s) & \ +\ rsending(t) = rsending(s) | \ +\ S_ack(b) => b = rbit(s) & \ +\ rq(t) = rq(s) & \ +\ rsent(t) = addm(rsent(s),rbit(s)) & \ +\ rrcvd(t) = rrcvd(s) & \ +\ rbit(t)=rbit(s) & \ +\ rsending(s) & \ +\ rsending(t) | \ +\R_ack(b) => False | \ +\ C_m_s => False | \ +\ C_m_r => count(rsent(s),~rbit(s)) < countm(rrcvd(s),%y.hdr(y)=rbit(s)) & \ +\ rq(t) = rq(s) & \ +\ rsent(t)=rsent(s) & \ +\ rrcvd(t)=rrcvd(s) & \ +\ rbit(t)=rbit(s) & \ +\ rsending(s) & \ +\ ~rsending(t) | \ +\ C_r_s => False | \ +\ C_r_r(m) => count(rsent(s),rbit(s)) <= countm(rrcvd(s),%y.hdr(y)=rbit(s)) & \ +\ count(rsent(s),~rbit(s)) < count(rrcvd(s),) & \ +\ rq(t) = rq(s)@[m] & \ +\ rsent(t)=rsent(s) & \ +\ rrcvd(t)=rrcvd(s) & \ +\ rbit(t) = (~rbit(s)) & \ +\ ~rsending(s) & \ +\ rsending(t)}" + + +receiver_ioa_def "receiver_ioa == \ +\ }, receiver_trans>" + +end