packages feed

cpsa-3.3.0: doc/examples/neq_test.scm

(herald "Inequality constraint test protocol"
   (comment "First skeleton should have a shape,"
            "second, and hird should be dead."))

(defprotocol neqtest basic
  (defrole init
     (vars (n1 n2 text) (k skey))
     (trace
       (send (cat n1 (enc n1 n2 k)))
       (recv n2))
     (non-orig k)
     (uniq-orig n1 n2)
  )
)

;;; With no inequality declaration, a shape
;;; should be found where n1 = n2.
(defskeleton neqtest
   (vars (n1 n2 text) (k skey))
   (defstrand init 2 (n1 n1) (n2 n2) (k k)))

;;; With the inequality declaration that n1 != n2,
;;; no shape should exist.
(defskeleton neqtest
   (vars (n1 n2 text))
   (defstrand init 2 (n1 n1) (n2 n2))
   (neq (n1 n2)))

(defprotocol neqtest2 basic
  (defrole init
     (vars (n1 n2 n3 text) (k skey))
     (trace
       (send (cat n1 (enc n1 n2 n3 k)))
       (recv n2))
     (non-orig k)
     (uniq-orig n1 n2)
  )
)

;;; Here, we use the neqlist declaration to force
;;; deadness, as an alternative.
(defskeleton neqtest2
   (vars (n1 n2 n3 text) (k skey))
   (defstrand init 2 (n1 n1) (n2 n2) (n3 n3) (k k))
   (neqlist ((n1 n2 n3)))
)