Loading examples/remainder_m3_c1.pp +2 −2 Original line number Diff line number Diff line Loading @@ -112,7 +112,7 @@ "_mod1", "_mod2" ], "predicate": "EXISTS k : 0 * _mod0 + 1 * _mod1 + 2 * _mod2 = 1 + 3 * k", "predicate": "( 0 * _mod0 + 1 * _mod1 + 2 * _mod2 ) % 3 = 1", "trueStates": [ "_mod1", "_modpassivetrue" Loading src/Parser/PP.hs +1 −1 Original line number Diff line number Diff line Loading @@ -84,7 +84,7 @@ prefix name fun = Prefix ( reservedOp name *> return fun ) termOperatorTable :: [[Operator String () Identity (Term String)]] termOperatorTable = [ [ prefix "-" Minus ] , [ binary "*" (:*:) AssocLeft ] , [ binary "*" (:*:) AssocLeft, binary "/" (:/:) AssocLeft, binary "%" (:%:) AssocLeft ] , [ binary "+" (:+:) AssocLeft, binary "-" (:-:) AssocLeft ] ] Loading src/Property.hs +6 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,8 @@ data Term a = | Term a :+: Term a | Term a :-: Term a | Term a :*: Term a | Term a :/: Term a -- integer division truncated toward negative infinity | Term a :%: Term a -- integer modulos, satisfying (x / y)*y + (x % y) = x deriving (Eq) instance (Show a) => Show (Term a) where Loading @@ -32,6 +34,8 @@ instance (Show a) => Show (Term a) where show (t :+: u) = "(" ++ show t ++ " + " ++ show u ++ ")" show (t :-: u) = "(" ++ show t ++ " - " ++ show u ++ ")" show (t :*: u) = show t ++ " * " ++ show u show (t :/: u) = show t ++ " / " ++ show u show (t :%: u) = show t ++ " % " ++ show u instance Functor Term where fmap f (Var x) = Var (f x) Loading @@ -40,6 +44,8 @@ instance Functor Term where fmap f (t :+: u) = fmap f t :+: fmap f u fmap f (t :-: u) = fmap f t :-: fmap f u fmap f (t :*: u) = fmap f t :*: fmap f u fmap f (t :/: u) = fmap f t :/: fmap f u fmap f (t :%: u) = fmap f t :%: fmap f u data Op = Gt | Ge | Eq | Ne | Le | Lt deriving (Eq) Loading src/Solver/Formula.hs +2 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,8 @@ evaluateTerm (Minus t) m = - evaluateTerm t m evaluateTerm (t :+: u) m = evaluateTerm t m + evaluateTerm u m evaluateTerm (t :-: u) m = evaluateTerm t m - evaluateTerm u m evaluateTerm (t :*: u) m = evaluateTerm t m * evaluateTerm u m evaluateTerm (t :/: u) m = (evaluateTerm t m) `sDiv` (evaluateTerm u m) evaluateTerm (t :%: u) m = (evaluateTerm t m) `sMod` (evaluateTerm u m) opToFunction :: Op -> SInteger -> SInteger -> SBool opToFunction Gt = (.>) Loading Loading
examples/remainder_m3_c1.pp +2 −2 Original line number Diff line number Diff line Loading @@ -112,7 +112,7 @@ "_mod1", "_mod2" ], "predicate": "EXISTS k : 0 * _mod0 + 1 * _mod1 + 2 * _mod2 = 1 + 3 * k", "predicate": "( 0 * _mod0 + 1 * _mod1 + 2 * _mod2 ) % 3 = 1", "trueStates": [ "_mod1", "_modpassivetrue" Loading
src/Parser/PP.hs +1 −1 Original line number Diff line number Diff line Loading @@ -84,7 +84,7 @@ prefix name fun = Prefix ( reservedOp name *> return fun ) termOperatorTable :: [[Operator String () Identity (Term String)]] termOperatorTable = [ [ prefix "-" Minus ] , [ binary "*" (:*:) AssocLeft ] , [ binary "*" (:*:) AssocLeft, binary "/" (:/:) AssocLeft, binary "%" (:%:) AssocLeft ] , [ binary "+" (:+:) AssocLeft, binary "-" (:-:) AssocLeft ] ] Loading
src/Property.hs +6 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,8 @@ data Term a = | Term a :+: Term a | Term a :-: Term a | Term a :*: Term a | Term a :/: Term a -- integer division truncated toward negative infinity | Term a :%: Term a -- integer modulos, satisfying (x / y)*y + (x % y) = x deriving (Eq) instance (Show a) => Show (Term a) where Loading @@ -32,6 +34,8 @@ instance (Show a) => Show (Term a) where show (t :+: u) = "(" ++ show t ++ " + " ++ show u ++ ")" show (t :-: u) = "(" ++ show t ++ " - " ++ show u ++ ")" show (t :*: u) = show t ++ " * " ++ show u show (t :/: u) = show t ++ " / " ++ show u show (t :%: u) = show t ++ " % " ++ show u instance Functor Term where fmap f (Var x) = Var (f x) Loading @@ -40,6 +44,8 @@ instance Functor Term where fmap f (t :+: u) = fmap f t :+: fmap f u fmap f (t :-: u) = fmap f t :-: fmap f u fmap f (t :*: u) = fmap f t :*: fmap f u fmap f (t :/: u) = fmap f t :/: fmap f u fmap f (t :%: u) = fmap f t :%: fmap f u data Op = Gt | Ge | Eq | Ne | Le | Lt deriving (Eq) Loading
src/Solver/Formula.hs +2 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,8 @@ evaluateTerm (Minus t) m = - evaluateTerm t m evaluateTerm (t :+: u) m = evaluateTerm t m + evaluateTerm u m evaluateTerm (t :-: u) m = evaluateTerm t m - evaluateTerm u m evaluateTerm (t :*: u) m = evaluateTerm t m * evaluateTerm u m evaluateTerm (t :/: u) m = (evaluateTerm t m) `sDiv` (evaluateTerm u m) evaluateTerm (t :%: u) m = (evaluateTerm t m) `sMod` (evaluateTerm u m) opToFunction :: Op -> SInteger -> SInteger -> SBool opToFunction Gt = (.>) Loading