-------------------------------------------------------------------------------- -- Copyright © 2011 National Institute of Aerospace / Galois, Inc. -------------------------------------------------------------------------------- -- | Fault-tolerant voting examples. {-# LANGUAGE RebindableSyntax #-} module VotingExamples ( votingExamples ) where import Language.Copilot -------------------------------------------------------------------------------- vote :: Spec vote = do trigger "maj" true [ arg maj ] trigger "aMaj" true [ arg $ aMajority xs maj ] where maj = majority xs xs = concat (replicate 1 ls) ls = [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z] a = [0] ++ a + 1 :: Stream Word32 b = [0] ++ b + 1 c = [0] ++ c + 1 d = [0] ++ d + 1 e = [1] ++ e + 1 f = [1] ++ f + 1 g = [1] ++ g + 1 h = [1] ++ h + 1 i = [1] ++ i + 1 j = [1] ++ j + 1 k = [1] ++ k + 1 l = [1] ++ l + 1 m = [1] ++ m + 1 n = [1] ++ n + 1 o = [1] ++ o + 1 p = [1] ++ p + 1 q = [1] ++ q + 1 r = [1] ++ r + 1 s = [1] ++ s + 1 t = [1] ++ t + 1 u = [1] ++ u + 1 v = [1] ++ v + 1 w = [1] ++ w + 1 x = [1] ++ x + 1 y = [1] ++ y + 1 z = [1] ++ z + 1 -------------------------------------------------------------------------------- votingExamples :: IO () votingExamples = do interpret 20 vote -- prettyPrint vote