executePred ::
  SharedContext   ->
  JVMCrucibleContext ->
  TypedTerm        {- ^ the term to assert as a postcondition -} ->
  OverrideMatcher CJ.JVM w ()
executePred sc cc tt =
  do s <- OM (use termSub)
     t <- liftIO $ scInstantiateExt sc s (ttTerm tt)
     p <- liftIO $ resolveBoolTerm (cc ^. jccSym) t
     addAssume p

------------------------------------------------------------------------

-- | Map the given substitution over all 'SetupTerm' constructors in
-- the given 'SetupValue'.
executePred ::
  SharedContext   ->
  JVMCrucibleContext ->
  TypedTerm        {- ^ the term to assert as a postcondition -} ->
  OverrideMatcher CJ.JVM w ()
executePred sc cc tt =
  do s <- OM (use termSub)
     t <- liftIO $ scInstantiateExt sc s (ttTerm tt)
     p <- liftIO $ resolveBoolTerm (cc ^. jccSym) t
     addAssume p

------------------------------------------------------------------------

-- | Map the given substitution over all 'SetupTerm' constructors in
-- the given 'SetupValue'.
executePred sc cc tt =
  do s <- OM (use termSub)
     t <- liftIO $ scInstantiateExt sc s (ttTerm tt)
     p <- liftIO $ resolveBoolTerm (cc ^. jccSym) t
     addAssume p

------------------------------------------------------------------------

-- | Map the given substitution over all 'SetupTerm' constructors in
-- the given 'SetupValue'.