(set-info :smt-lib-version 2.6)
(set-logic QF_UF)
(set-info :source |
Generated by: Aman Goel (amangoel@umich.edu), Karem A. Sakallah (karem@umich.edu)
Generated on: 2018-04-06

Generated by the tool Averroes 2 (successor of [1]) which implements safety property
verification on hardware systems.

This SMT problem belongs to a set of SMT problems generated by applying Averroes 2
to benchmarks derived from [2-5].

A total of 412 systems (345 from [2], 19 from [3], 26 from [4], 22 from [5]) were
syntactically converted from their original formats (using [6, 7]), and given to 
Averroes 2 to perform property checking with abstraction (wide bit-vectors -> terms, 
wide operators -> UF) using SMT solvers [8, 9].

[1] Lee S., Sakallah K.A. (2014) Unbounded Scalable Verification Based on Approximate
Property-Directed Reachability and Datapath Abstraction. In: Biere A., Bloem R. (eds)
Computer Aided Verification. CAV 2014. Lecture Notes in Computer Science, vol 8559.
Springer, Cham
[2] http://fmv.jku.at/aiger/index.html#beem
[3] http://www.cs.cmu.edu/~modelcheck/vcegar
[4] http://www.cprover.org/hardware/v2c
[5] http://github.com/aman-goel/verilogbench
[6] http://www.clifford.at/yosys
[7] http://github.com/chengyinwu/V3
[8] http://github.com/Z3Prover/z3
[9] http://github.com/SRI-CSL/yices2

id: h_traffic_light_example
query-maker: "Yices 2"
query-time: 0.001000 ms
query-class: abstract
query-category: oneshot
query-type: regular
status: unsat
|)
(set-info :license "https://creativecommons.org/licenses/by/4.0/")
(set-info :category "industrial")

;
(set-info :status unsat)
(declare-sort utt$2 0)
(declare-sort utt$8 0)
(declare-sort utt$32 0)
(declare-fun y$2 () Bool)
(declare-fun y$5 () Bool)
(declare-fun y$67 () Bool)
(declare-fun y$68 () Bool)
(declare-fun y$76 () Bool)
(declare-fun y$80 () Bool)
(declare-fun y$Counter () utt$8)
(declare-fun y$Light_Sign () utt$2)
(declare-fun y$n0s2 () utt$2)
(declare-fun y$n0s32 () utt$32)
(declare-fun y$n0s8 () utt$8)
(declare-fun y$n1s2 () utt$2)
(declare-fun y$n1s32 () utt$32)
(declare-fun y$n1s8 () utt$8)
(declare-fun y$n255s8 () utt$8)
(declare-fun y$n2s2 () utt$2)
(declare-fun y$n2s32 () utt$32)
(declare-fun y$n63s8 () utt$8)
(declare-fun y$n7s8 () utt$8)
(declare-fun y$prop () Bool)
(assert (distinct y$n0s2 y$n1s2 y$n2s2))
(assert (distinct y$n0s8 y$n63s8 y$n1s8 y$n7s8 y$n255s8))
(assert (distinct y$n0s32 y$n2s32 y$n1s32))
(assert (= y$2 (= y$n0s8 y$Counter)))
(assert (= y$5 (= y$n0s2 y$Light_Sign)))
(assert (= y$prop (not y$76)))
(assert (= y$67 (not (= y$n255s8 y$Counter))))
(assert (= y$68 (= y$prop y$67)))
(assert (= y$80 (and y$2 y$5 y$76 y$68)))
(assert y$80)
(check-sat)
(exit)
