definition:
|
allVarsInTerm :: Term -> [SVar]
allVarsInTerm (TConst _) = []
allVarsInTerm (TSVar v) = [v]
allVarsInTerm (TComb _ args) = foldr union [] (map allVarsInTerm args)
allVarsInTerm (Forall vs arg) = union (map varOfSV vs) (allVarsInTerm arg)
allVarsInTerm (Exists vs arg) = union (map varOfSV vs) (allVarsInTerm arg)
allVarsInTerm (SMT.Let bs e) =
foldr union (map fst bs) (map allVarsInTerm (e : map snd bs))
allVarsInTerm (Match e ps) =
foldr union [] (map allVarsInTerm (e : map snd ps) ++ map (patVars . fst) ps)
where
patVars (PComb _ vs) = vs
|
demand:
|
argument 1
|
deterministic:
|
deterministic operation
|
documentation:
|
-- All variables occurring in a SMT term.
|
indeterministic:
|
referentially transparent operation
|
infix:
|
no fixity defined
|
iotype:
|
{({TConst}) |-> {[]} || ({TSVar}) |-> {:} || ({TComb}) |-> _ || ({Forall}) |-> _ || ({Exists}) |-> _ || ({Let}) |-> _ || ({Match}) |-> _}
|
name:
|
allVarsInTerm
|
precedence:
|
no precedence defined
|
result-values:
|
_
|
signature:
|
Verify.ESMT.Term -> [Prelude.Int]
|
solution-complete:
|
operation might suspend on free variables
|
terminating:
|
possibly non-terminating
|
totally-defined:
|
reducible on all ground data terms
|