cpsa-3.6.4: tst/comp_test.scm
(herald "Main Example")
(defprotocol main-ex-src basic
(defrole qn
(vars (a b c akey) (i ssn text) (k skey))
(trace
(send (cat i a (enc (enc k b c i (invk a)) b) (enc a b i ssn c)))
(recv (enc "sorry" a b k)))
(uniq-orig k))
(defrole qy
(vars (a b c akey) (i ssn d text) (k skey))
(trace
(send (cat i a (enc (enc k b c i (invk a)) b) (enc a b i ssn c)))
(recv (enc "data" d k)))
(uniq-orig k))
(defrole an
(vars (a b c akey) (i text) (k skey) (x mesg))
(trace
(recv (cat i a (enc (enc k b c i (invk a)) b) x))
(send (enc "sorry" a b k))))
(defrole ay
(vars (a b c akey) (i d text) (k skey) (x mesg))
(trace
(recv (cat i a (enc (enc k b c i (invk a)) b) x))
(send (enc "data" d k)))
(uniq-orig d)))
(defprotocol main-ex-tgt basic
(defrole qn
(vars (a b c akey) (i ssn text) (k skey))
(trace
(send (cat i a (enc (enc k b c i (invk a)) b) (enc a b i ssn c)))
(recv (enc "sorry" a b k)))
(uniq-orig k))
(defrole qy
(vars (a b c akey) (i ssn d text) (k skey))
(trace
(send (cat i a (enc (enc k b c i (invk a)) b) (enc a b i ssn c)))
(recv (enc "data" d k)))
(uniq-orig k))
(defrole an
(vars (a b c akey) (i y n text) (k skey) (x mesg))
(trace
(recv (cat i a (enc (enc k b c i (invk a)) b) x))
(send (enc y n i a x c))
(recv n)
(send (enc "sorry" a b k)))
(uniq-orig y n))
(defrole ay
(vars (a b c akey) (i y n d text) (k skey) (x mesg))
(trace
(recv (cat i a (enc (enc k b c i (invk a)) b) x))
(send (enc y n i a x c))
(recv y)
(send (enc "data" d k)))
(uniq-orig d y n))
(defrole sn
(vars (a b c akey) (i ssn y n text))
(trace
(recv (enc y n i a (enc a b i ssn c) c))
(send n)))
(defrole sy
(vars (a b c akey) (i ssn y n text))
(trace
(recv (enc y n i a (enc a b i ssn c) c))
(send y))))
(defprotocol main-ex-tgt-rule basic
(defrole qn
(vars (a b c akey) (i ssn text) (k skey))
(trace
(send (cat i a (enc (enc k b c i (invk a)) b) (enc a b i ssn c)))
(recv (enc "sorry" a b k)))
(uniq-orig k))
(defrole qy
(vars (a b c akey) (i ssn d text) (k skey))
(trace
(send (cat i a (enc (enc k b c i (invk a)) b) (enc a b i ssn c)))
(recv (enc "data" d k)))
(uniq-orig k))
(defrole an
(vars (a b c akey) (i y n text) (k skey) (x mesg))
(trace
(recv (cat i a (enc (enc k b c i (invk a)) b) x))
(send (enc y n i a x c))
(recv n)
(send (enc "sorry" a b k)))
(uniq-orig y n))
(defrole ay
(vars (a b c akey) (i y n d text) (k skey) (x mesg))
(trace
(recv (cat i a (enc (enc k b c i (invk a)) b) x))
(send (enc y n i a x c))
(recv y)
(send (enc "data" d k)))
(uniq-orig d y n))
(defrole sn
(vars (a b c akey) (i ssn y n text))
(trace
(recv (enc y n i a (enc a b i ssn c) c))
(send n)))
(defrole sy
(vars (a b c akey) (i ssn y n text))
(trace
(recv (enc y n i a (enc a b i ssn c) c))
(send y)))
(defrule src
(forall ((z strd) (i ssn text) (k skey) (a b c akey))
(implies
(and (p "qn" z 2) (p "qn" "i" z i) (p "qn" "ssn" z ssn)
(p "qn" "k" z k) (p "qn" "a" z a) (p "qn" "b" z b)
(p "qn" "c" z c) (non (invk a)) (non (invk b)) (non (invk c))
(uniq k))
(exists ((z-0 strd) (x mesg))
(and (p "an" z-0 4) (p "an" "x" z-0 x)
(p "an" "i" z-0 i) (p "an" "k" z-0 k)
(p "an" "a" z-0 a) (p "an" "b" z-0 b)
(p "an" "c" z-0 c) (prec z 0 z-0 0)
(prec z-0 3 z 1)))))))
(defskeleton main-ex-src
(vars (a b c akey))
(defstrand qn 2 (a a) (b b) (c c))
(non-orig (invk a) (invk b) (invk c))
(comment
(defgoal main-ex-src
(forall ((i ssn text) (k skey) (a b c akey) (z strd))
(implies
(and (p "qn" z 2) (p "qn" "i" z i) (p "qn" "ssn" z ssn)
(p "qn" "k" z k) (p "qn" "a" z a) (p "qn" "b" z b)
(p "qn" "c" z c) (non (invk a)) (non (invk b)) (non (invk c))
(uniq-at k z 0))
(exists ((x mesg) (z-0 strd))
(and (p "an" z-0 2) (p "an" "x" z-0 x) (p "an" "i" z-0 i)
(p "an" "k" z-0 k) (p "an" "a" z-0 a) (p "an" "b" z-0 b)
(p "an" "c" z-0 c) (prec z 0 z-0 0) (prec z-0 1 z 1))))))))
(defskeleton main-ex-src
(vars (a b c akey))
(defstrand qy 2 (a a) (b b) (c c))
(non-orig (invk a) (invk b) (invk c)))
(defskeleton main-ex-tgt
(vars (a b c akey))
(defstrand qn 2 (a a) (b b) (c c))
(non-orig (invk a) (invk b) (invk c)))
(defskeleton main-ex-tgt
(vars (a b c akey))
(defstrand qy 2 (a a) (b b) (c c))
(non-orig (invk a) (invk b) (invk c)))
(defskeleton main-ex-tgt-rule
(vars (a b c akey))
(defstrand qn 2 (a a) (b b) (c c))
(non-orig (invk a) (invk b) (invk c)))