packages feed

sbv-14.4: SBVTestSuite/TestSuite/Uninterpreted/EUFLogic.hs

-----------------------------------------------------------------------------
-- |
-- Module    : Documentation.SBV.Examples.Uninterpreted.EUFLogic
-- License   : BSD3
-- Stability : experimental
--
-- Test suite for the EUFLogic example
-----------------------------------------------------------------------------

{-# LANGUAGE DataKinds #-}

{-# OPTIONS_GHC -Wall -Werror #-}

module TestSuite.Uninterpreted.EUFLogic where

import Documentation.SBV.Examples.Uninterpreted.EUFLogic

import Utils.SBVTestFramework

-- Test suite
tests :: TestTree
tests =
  testGroup "Uninterpreted.LargeArgs"
    [ testCase "euflogic-1" $ assertIsSat (interpEUF fourteen)
    , testCase "unint17arg" $ assertIsSat f17Args
    ]

fourteen :: EUFExpr Tp_Bool
fourteen = applyOp (Op_BVEq knownBVWidth)
                   (applyOp f14 0 0 0 0 0 0 0 0 0 0 0 0 0 0)
                   (applyOp (Op_Plus knownBVWidth) a b)
  where
    f14 :: Op '[Tp_BV 8, Tp_BV 8, Tp_BV 8, Tp_BV 8, Tp_BV 8, Tp_BV 8, Tp_BV 8,
                Tp_BV 8, Tp_BV 8, Tp_BV 8, Tp_BV 8, Tp_BV 8, Tp_BV 8, Tp_BV 8]
           (Tp_BV 8)

    f14 = mkUnintOp "f"
    a, b :: EUFExpr (Tp_BV 8)
    a = mkUnintExpr "a"
    b = mkUnintExpr "b"

f17Args :: SWord  1 -> SWord  2 -> SWord  3 -> SWord  4 -> SWord  5 -> SWord  6 -> SWord  7 -> SWord 8
        -> SWord  9 -> SWord 10 -> SWord 11 -> SWord 12 -> SWord 13 -> SWord 14 -> SWord 15 -> SWord 16
        -> SWord 17
        -> SBool
f17Args = uninterpret "f17Args"

{- HLint ignore "Use camelCase" -}