0

Are the below two declarations/commands semantically identical in SMT-LIB language?

(declare-fun a1 () (Array Index Element))
(declare-const a2 (Array Index Element))

With Z3, an assertion applicable to a1 is also applicable to a2 (with no syntactic change). One way this could be possible is by treating the use of a1 (without arguments) as an application of a1. Is this the case in Z3 (or with SMT-LIB language)?

1 Answers1

1

In the current draft proposal for SMT-LIB v2.5, declare-const is defined as:

(declare-const f σ) abbreviates the command (declare-fun f () σ)

where f is function name and σ is a sort symbol. So the second is a macro for the first.

Tim
  • 1,008
  • 5
  • 13